herm-tui 1.11.0-dev.5 → 1.11.0-dev.6
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.
- package/index.js +12 -12
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -7,7 +7,7 @@ var __create=Object.create;var{getPrototypeOf:__getProtoOf,defineProperty:__defP
|
|
|
7
7
|
`);for(namePropDescriptor=RunInRootFrame=0;RunInRootFrame<sampleLines.length&&!sampleLines[RunInRootFrame].includes("DetermineComponentFrameRoot");)RunInRootFrame++;for(;namePropDescriptor<controlLines.length&&!controlLines[namePropDescriptor].includes("DetermineComponentFrameRoot");)namePropDescriptor++;if(RunInRootFrame===sampleLines.length||namePropDescriptor===controlLines.length)for(RunInRootFrame=sampleLines.length-1,namePropDescriptor=controlLines.length-1;1<=RunInRootFrame&&0<=namePropDescriptor&&sampleLines[RunInRootFrame]!==controlLines[namePropDescriptor];)namePropDescriptor--;for(;1<=RunInRootFrame&&0<=namePropDescriptor;RunInRootFrame--,namePropDescriptor--)if(sampleLines[RunInRootFrame]!==controlLines[namePropDescriptor]){if(RunInRootFrame!==1||namePropDescriptor!==1)do if(RunInRootFrame--,namePropDescriptor--,0>namePropDescriptor||sampleLines[RunInRootFrame]!==controlLines[namePropDescriptor]){var frame=`
|
|
8
8
|
`+sampleLines[RunInRootFrame].replace(" at new "," at ");return fn.displayName&&frame.includes("<anonymous>")&&(frame=frame.replace("<anonymous>",fn.displayName)),frame}while(1<=RunInRootFrame&&0<=namePropDescriptor);break}}}finally{reentry=!1,Error.prepareStackTrace=previousPrepareStackTrace}return(previousPrepareStackTrace=fn?fn.displayName||fn.name:"")?describeBuiltInComponentFrame(previousPrepareStackTrace):""}function describeFiber(fiber,childFiber){switch(fiber.tag){case 26:case 27:case 5:return describeBuiltInComponentFrame(fiber.type);case 16:return describeBuiltInComponentFrame("Lazy");case 13:return fiber.child!==childFiber&&childFiber!==null?describeBuiltInComponentFrame("Suspense Fallback"):describeBuiltInComponentFrame("Suspense");case 19:return describeBuiltInComponentFrame("SuspenseList");case 0:case 15:return describeNativeComponentFrame(fiber.type,!1);case 11:return describeNativeComponentFrame(fiber.type.render,!1);case 1:return describeNativeComponentFrame(fiber.type,!0);case 31:return describeBuiltInComponentFrame("Activity");default:return""}}function getStackByFiberInDevAndProd(workInProgress2){try{var info="",previous=null;do info+=describeFiber(workInProgress2,previous),previous=workInProgress2,workInProgress2=workInProgress2.return;while(workInProgress2);return info}catch(x2){return`
|
|
9
9
|
Error generating stack: `+x2.message+`
|
|
10
|
-
`+x2.stack}}function createCapturedValueAtFiber(value,source){if(typeof value==="object"&&value!==null){var existing=CapturedStacks.get(value);if(existing!==void 0)return existing;return source={value,source,stack:getStackByFiberInDevAndProd(source)},CapturedStacks.set(value,source),source}return{value,source,stack:getStackByFiberInDevAndProd(source)}}function pushTreeFork(workInProgress2,totalChildren){forkStack[forkStackIndex++]=treeForkCount,forkStack[forkStackIndex++]=treeForkProvider,treeForkProvider=workInProgress2,treeForkCount=totalChildren}function pushTreeId(workInProgress2,totalChildren,index){idStack[idStackIndex++]=treeContextId,idStack[idStackIndex++]=treeContextOverflow,idStack[idStackIndex++]=treeContextProvider,treeContextProvider=workInProgress2;var baseIdWithLeadingBit=treeContextId;workInProgress2=treeContextOverflow;var baseLength=32-clz32(baseIdWithLeadingBit)-1;baseIdWithLeadingBit&=~(1<<baseLength),index+=1;var length=32-clz32(totalChildren)+baseLength;if(30<length){var numberOfOverflowBits=baseLength-baseLength%5;length=(baseIdWithLeadingBit&(1<<numberOfOverflowBits)-1).toString(32),baseIdWithLeadingBit>>=numberOfOverflowBits,baseLength-=numberOfOverflowBits,treeContextId=1<<32-clz32(totalChildren)+baseLength|index<<baseLength|baseIdWithLeadingBit,treeContextOverflow=length+workInProgress2}else treeContextId=1<<length|index<<baseLength|baseIdWithLeadingBit,treeContextOverflow=workInProgress2}function pushMaterializedTreeId(workInProgress2){workInProgress2.return!==null&&(pushTreeFork(workInProgress2,1),pushTreeId(workInProgress2,1,0))}function popTreeContext(workInProgress2){for(;workInProgress2===treeForkProvider;)treeForkProvider=forkStack[--forkStackIndex],forkStack[forkStackIndex]=null,treeForkCount=forkStack[--forkStackIndex],forkStack[forkStackIndex]=null;for(;workInProgress2===treeContextProvider;)treeContextProvider=idStack[--idStackIndex],idStack[idStackIndex]=null,treeContextOverflow=idStack[--idStackIndex],idStack[idStackIndex]=null,treeContextId=idStack[--idStackIndex],idStack[idStackIndex]=null}function restoreSuspendedTreeContext(workInProgress2,suspendedContext){idStack[idStackIndex++]=treeContextId,idStack[idStackIndex++]=treeContextOverflow,idStack[idStackIndex++]=treeContextProvider,treeContextId=suspendedContext.id,treeContextOverflow=suspendedContext.overflow,treeContextProvider=workInProgress2}function pushHostContainer(fiber,nextRootInstance){push2(rootInstanceStackCursor,nextRootInstance),push2(contextFiberStackCursor,fiber),push2(contextStackCursor,null),fiber=getRootHostContext(nextRootInstance),pop2(contextStackCursor),push2(contextStackCursor,fiber)}function popHostContainer(){pop2(contextStackCursor),pop2(contextFiberStackCursor),pop2(rootInstanceStackCursor)}function pushHostContext(fiber){fiber.memoizedState!==null&&push2(hostTransitionProviderCursor,fiber);var context=contextStackCursor.current,nextContext=getChildHostContext(context,fiber.type);context!==nextContext&&(push2(contextFiberStackCursor,fiber),push2(contextStackCursor,nextContext))}function popHostContext(fiber){contextFiberStackCursor.current===fiber&&(pop2(contextStackCursor),pop2(contextFiberStackCursor)),hostTransitionProviderCursor.current===fiber&&(pop2(hostTransitionProviderCursor),isPrimaryRenderer?HostTransitionContext._currentValue=NotPendingTransition:HostTransitionContext._currentValue2=NotPendingTransition)}function throwOnHydrationMismatch(fiber){var error=Error(formatProdErrorMessage(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw queueHydrationError(createCapturedValueAtFiber(error,fiber)),HydrationMismatchException}function prepareToHydrateHostInstance(fiber,hostContext){if(!supportsHydration)throw Error(formatProdErrorMessage(175));hydrateInstance(fiber.stateNode,fiber.type,fiber.memoizedProps,hostContext,fiber)||throwOnHydrationMismatch(fiber,!0)}function popToNextHostParent(fiber){for(hydrationParentFiber=fiber.return;hydrationParentFiber;)switch(hydrationParentFiber.tag){case 5:case 31:case 13:rootOrSingletonContext=!1;return;case 27:case 3:rootOrSingletonContext=!0;return;default:hydrationParentFiber=hydrationParentFiber.return}}function popHydrationState(fiber){if(!supportsHydration||fiber!==hydrationParentFiber)return!1;if(!isHydrating)return popToNextHostParent(fiber),isHydrating=!0,!1;var tag=fiber.tag;if(supportsSingletons?tag!==3&&tag!==27&&(tag!==5||shouldDeleteUnhydratedTailInstances(fiber.type)&&!shouldSetTextContent(fiber.type,fiber.memoizedProps))&&nextHydratableInstance&&throwOnHydrationMismatch(fiber):tag!==3&&(tag!==5||shouldDeleteUnhydratedTailInstances(fiber.type)&&!shouldSetTextContent(fiber.type,fiber.memoizedProps))&&nextHydratableInstance&&throwOnHydrationMismatch(fiber),popToNextHostParent(fiber),tag===13){if(!supportsHydration)throw Error(formatProdErrorMessage(316));if(fiber=fiber.memoizedState,fiber=fiber!==null?fiber.dehydrated:null,!fiber)throw Error(formatProdErrorMessage(317));nextHydratableInstance=getNextHydratableInstanceAfterSuspenseInstance(fiber)}else if(tag===31){if(fiber=fiber.memoizedState,fiber=fiber!==null?fiber.dehydrated:null,!fiber)throw Error(formatProdErrorMessage(317));nextHydratableInstance=getNextHydratableInstanceAfterActivityInstance(fiber)}else nextHydratableInstance=supportsSingletons&&tag===27?getNextHydratableSiblingAfterSingleton(fiber.type,nextHydratableInstance):hydrationParentFiber?getNextHydratableSibling(fiber.stateNode):null;return!0}function resetHydrationState(){supportsHydration&&(nextHydratableInstance=hydrationParentFiber=null,isHydrating=!1)}function upgradeHydrationErrorsToRecoverable(){var queuedErrors=hydrationErrors;return queuedErrors!==null&&(workInProgressRootRecoverableErrors===null?workInProgressRootRecoverableErrors=queuedErrors:workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors,queuedErrors),hydrationErrors=null),queuedErrors}function queueHydrationError(error){hydrationErrors===null?hydrationErrors=[error]:hydrationErrors.push(error)}function pushProvider(providerFiber,context,nextValue){isPrimaryRenderer?(push2(valueCursor,context._currentValue),context._currentValue=nextValue):(push2(valueCursor,context._currentValue2),context._currentValue2=nextValue)}function popProvider(context){var currentValue=valueCursor.current;isPrimaryRenderer?context._currentValue=currentValue:context._currentValue2=currentValue,pop2(valueCursor)}function scheduleContextWorkOnParentPath(parent,renderLanes2,propagationRoot){for(;parent!==null;){var alternate=parent.alternate;if((parent.childLanes&renderLanes2)!==renderLanes2?(parent.childLanes|=renderLanes2,alternate!==null&&(alternate.childLanes|=renderLanes2)):alternate!==null&&(alternate.childLanes&renderLanes2)!==renderLanes2&&(alternate.childLanes|=renderLanes2),parent===propagationRoot)break;parent=parent.return}}function propagateContextChanges(workInProgress2,contexts,renderLanes2,forcePropagateEntireTree){var fiber=workInProgress2.child;fiber!==null&&(fiber.return=workInProgress2);for(;fiber!==null;){var list=fiber.dependencies;if(list!==null){var nextFiber=fiber.child;list=list.firstContext;a:for(;list!==null;){var dependency=list;list=fiber;for(var i=0;i<contexts.length;i++)if(dependency.context===contexts[i]){list.lanes|=renderLanes2,dependency=list.alternate,dependency!==null&&(dependency.lanes|=renderLanes2),scheduleContextWorkOnParentPath(list.return,renderLanes2,workInProgress2),forcePropagateEntireTree||(nextFiber=null);break a}list=dependency.next}}else if(fiber.tag===18){if(nextFiber=fiber.return,nextFiber===null)throw Error(formatProdErrorMessage(341));nextFiber.lanes|=renderLanes2,list=nextFiber.alternate,list!==null&&(list.lanes|=renderLanes2),scheduleContextWorkOnParentPath(nextFiber,renderLanes2,workInProgress2),nextFiber=null}else nextFiber=fiber.child;if(nextFiber!==null)nextFiber.return=fiber;else for(nextFiber=fiber;nextFiber!==null;){if(nextFiber===workInProgress2){nextFiber=null;break}if(fiber=nextFiber.sibling,fiber!==null){fiber.return=nextFiber.return,nextFiber=fiber;break}nextFiber=nextFiber.return}fiber=nextFiber}}function propagateParentContextChanges(current,workInProgress2,renderLanes2,forcePropagateEntireTree){current=null;for(var parent=workInProgress2,isInsidePropagationBailout=!1;parent!==null;){if(!isInsidePropagationBailout){if((parent.flags&524288)!==0)isInsidePropagationBailout=!0;else if((parent.flags&262144)!==0)break}if(parent.tag===10){var currentParent=parent.alternate;if(currentParent===null)throw Error(formatProdErrorMessage(387));if(currentParent=currentParent.memoizedProps,currentParent!==null){var context=parent.type;objectIs(parent.pendingProps.value,currentParent.value)||(current!==null?current.push(context):current=[context])}}else if(parent===hostTransitionProviderCursor.current){if(currentParent=parent.alternate,currentParent===null)throw Error(formatProdErrorMessage(387));currentParent.memoizedState.memoizedState!==parent.memoizedState.memoizedState&&(current!==null?current.push(HostTransitionContext):current=[HostTransitionContext])}parent=parent.return}current!==null&&propagateContextChanges(workInProgress2,current,renderLanes2,forcePropagateEntireTree),workInProgress2.flags|=262144}function checkIfContextChanged(currentDependencies){for(currentDependencies=currentDependencies.firstContext;currentDependencies!==null;){var context=currentDependencies.context;if(!objectIs(isPrimaryRenderer?context._currentValue:context._currentValue2,currentDependencies.memoizedValue))return!0;currentDependencies=currentDependencies.next}return!1}function prepareToReadContext(workInProgress2){currentlyRenderingFiber$1=workInProgress2,lastContextDependency=null,workInProgress2=workInProgress2.dependencies,workInProgress2!==null&&(workInProgress2.firstContext=null)}function readContext(context){return readContextForConsumer(currentlyRenderingFiber$1,context)}function readContextDuringReconciliation(consumer,context){return currentlyRenderingFiber$1===null&&prepareToReadContext(consumer),readContextForConsumer(consumer,context)}function readContextForConsumer(consumer,context){var value=isPrimaryRenderer?context._currentValue:context._currentValue2;if(context={context,memoizedValue:value,next:null},lastContextDependency===null){if(consumer===null)throw Error(formatProdErrorMessage(308));lastContextDependency=context,consumer.dependencies={lanes:0,firstContext:context},consumer.flags|=524288}else lastContextDependency=lastContextDependency.next=context;return value}function createCache(){return{controller:new AbortControllerLocal,data:new Map,refCount:0}}function releaseCache(cache){cache.refCount--,cache.refCount===0&&scheduleCallback$2(NormalPriority,function(){cache.controller.abort()})}function noop$1(){}function ensureRootIsScheduled(root){root!==lastScheduledRoot&&root.next===null&&(lastScheduledRoot===null?firstScheduledRoot=lastScheduledRoot=root:lastScheduledRoot=lastScheduledRoot.next=root),mightHavePendingSyncWork=!0,didScheduleMicrotask||(didScheduleMicrotask=!0,scheduleImmediateRootScheduleTask())}function flushSyncWorkAcrossRoots_impl(syncTransitionLanes,onlyLegacy){if(!isFlushingWork&&mightHavePendingSyncWork){isFlushingWork=!0;do{var didPerformSomeWork=!1;for(var root=firstScheduledRoot;root!==null;){if(!onlyLegacy)if(syncTransitionLanes!==0){var pendingLanes=root.pendingLanes;if(pendingLanes===0)var JSCompiler_inline_result=0;else{var{suspendedLanes,pingedLanes}=root;JSCompiler_inline_result=(1<<31-clz32(42|syncTransitionLanes)+1)-1,JSCompiler_inline_result&=pendingLanes&~(suspendedLanes&~pingedLanes),JSCompiler_inline_result=JSCompiler_inline_result&201326741?JSCompiler_inline_result&201326741|1:JSCompiler_inline_result?JSCompiler_inline_result|2:0}JSCompiler_inline_result!==0&&(didPerformSomeWork=!0,performSyncWorkOnRoot(root,JSCompiler_inline_result))}else JSCompiler_inline_result=workInProgressRootRenderLanes,JSCompiler_inline_result=getNextLanes(root,root===workInProgressRoot?JSCompiler_inline_result:0,root.cancelPendingCommit!==null||root.timeoutHandle!==noTimeout),(JSCompiler_inline_result&3)===0||checkIfRootIsPrerendering(root,JSCompiler_inline_result)||(didPerformSomeWork=!0,performSyncWorkOnRoot(root,JSCompiler_inline_result));root=root.next}}while(didPerformSomeWork);isFlushingWork=!1}}function processRootScheduleInImmediateTask(){processRootScheduleInMicrotask()}function processRootScheduleInMicrotask(){mightHavePendingSyncWork=didScheduleMicrotask=!1;var syncTransitionLanes=0;currentEventTransitionLane!==0&&shouldAttemptEagerTransition()&&(syncTransitionLanes=currentEventTransitionLane);for(var currentTime=now(),prev=null,root=firstScheduledRoot;root!==null;){var next=root.next,nextLanes=scheduleTaskForRootDuringMicrotask(root,currentTime);if(nextLanes===0)root.next=null,prev===null?firstScheduledRoot=next:prev.next=next,next===null&&(lastScheduledRoot=prev);else if(prev=root,syncTransitionLanes!==0||(nextLanes&3)!==0)mightHavePendingSyncWork=!0;root=next}pendingEffectsStatus!==0&&pendingEffectsStatus!==5||flushSyncWorkAcrossRoots_impl(syncTransitionLanes,!1),currentEventTransitionLane!==0&&(currentEventTransitionLane=0)}function scheduleTaskForRootDuringMicrotask(root,currentTime){for(var{suspendedLanes,pingedLanes,expirationTimes}=root,lanes=root.pendingLanes&-62914561;0<lanes;){var index$3=31-clz32(lanes),lane=1<<index$3,expirationTime=expirationTimes[index$3];if(expirationTime===-1){if((lane&suspendedLanes)===0||(lane&pingedLanes)!==0)expirationTimes[index$3]=computeExpirationTime(lane,currentTime)}else expirationTime<=currentTime&&(root.expiredLanes|=lane);lanes&=~lane}if(currentTime=workInProgressRoot,suspendedLanes=workInProgressRootRenderLanes,suspendedLanes=getNextLanes(root,root===currentTime?suspendedLanes:0,root.cancelPendingCommit!==null||root.timeoutHandle!==noTimeout),pingedLanes=root.callbackNode,suspendedLanes===0||root===currentTime&&(workInProgressSuspendedReason===2||workInProgressSuspendedReason===9)||root.cancelPendingCommit!==null)return pingedLanes!==null&&pingedLanes!==null&&cancelCallback$1(pingedLanes),root.callbackNode=null,root.callbackPriority=0;if((suspendedLanes&3)===0||checkIfRootIsPrerendering(root,suspendedLanes)){if(currentTime=suspendedLanes&-suspendedLanes,currentTime===root.callbackPriority)return currentTime;switch(pingedLanes!==null&&cancelCallback$1(pingedLanes),lanesToEventPriority(suspendedLanes)){case 2:case 8:suspendedLanes=UserBlockingPriority;break;case 32:suspendedLanes=NormalPriority$1;break;case 268435456:suspendedLanes=IdlePriority;break;default:suspendedLanes=NormalPriority$1}return pingedLanes=performWorkOnRootViaSchedulerTask.bind(null,root),suspendedLanes=scheduleCallback$3(suspendedLanes,pingedLanes),root.callbackPriority=currentTime,root.callbackNode=suspendedLanes,currentTime}return pingedLanes!==null&&pingedLanes!==null&&cancelCallback$1(pingedLanes),root.callbackPriority=2,root.callbackNode=null,2}function performWorkOnRootViaSchedulerTask(root,didTimeout){if(pendingEffectsStatus!==0&&pendingEffectsStatus!==5)return root.callbackNode=null,root.callbackPriority=0,null;var originalCallbackNode=root.callbackNode;if(flushPendingEffects()&&root.callbackNode!==originalCallbackNode)return null;var workInProgressRootRenderLanes$jscomp$0=workInProgressRootRenderLanes;if(workInProgressRootRenderLanes$jscomp$0=getNextLanes(root,root===workInProgressRoot?workInProgressRootRenderLanes$jscomp$0:0,root.cancelPendingCommit!==null||root.timeoutHandle!==noTimeout),workInProgressRootRenderLanes$jscomp$0===0)return null;return performWorkOnRoot(root,workInProgressRootRenderLanes$jscomp$0,didTimeout),scheduleTaskForRootDuringMicrotask(root,now()),root.callbackNode!=null&&root.callbackNode===originalCallbackNode?performWorkOnRootViaSchedulerTask.bind(null,root):null}function performSyncWorkOnRoot(root,lanes){if(flushPendingEffects())return null;performWorkOnRoot(root,lanes,!0)}function scheduleImmediateRootScheduleTask(){supportsMicrotasks?scheduleMicrotask(function(){(executionContext&6)!==0?scheduleCallback$3(ImmediatePriority,processRootScheduleInImmediateTask):processRootScheduleInMicrotask()}):scheduleCallback$3(ImmediatePriority,processRootScheduleInImmediateTask)}function requestTransitionLane(){if(currentEventTransitionLane===0){var actionScopeLane=currentEntangledLane;actionScopeLane===0&&(actionScopeLane=nextTransitionUpdateLane,nextTransitionUpdateLane<<=1,(nextTransitionUpdateLane&261888)===0&&(nextTransitionUpdateLane=256)),currentEventTransitionLane=actionScopeLane}return currentEventTransitionLane}function entangleAsyncAction(transition,thenable){if(currentEntangledListeners===null){var entangledListeners=currentEntangledListeners=[];currentEntangledPendingCount=0,currentEntangledLane=requestTransitionLane(),currentEntangledActionThenable={status:"pending",value:void 0,then:function(resolve3){entangledListeners.push(resolve3)}}}return currentEntangledPendingCount++,thenable.then(pingEngtangledActionScope,pingEngtangledActionScope),thenable}function pingEngtangledActionScope(){if(--currentEntangledPendingCount===0&¤tEntangledListeners!==null){currentEntangledActionThenable!==null&&(currentEntangledActionThenable.status="fulfilled");var listeners=currentEntangledListeners;currentEntangledListeners=null,currentEntangledLane=0,currentEntangledActionThenable=null;for(var i=0;i<listeners.length;i++)(0,listeners[i])()}}function chainThenableValue(thenable,result){var listeners=[],thenableWithOverride={status:"pending",value:null,reason:null,then:function(resolve3){listeners.push(resolve3)}};return thenable.then(function(){thenableWithOverride.status="fulfilled",thenableWithOverride.value=result;for(var i=0;i<listeners.length;i++)(0,listeners[i])(result)},function(error){thenableWithOverride.status="rejected",thenableWithOverride.reason=error;for(error=0;error<listeners.length;error++)(0,listeners[error])(void 0)}),thenableWithOverride}function peekCacheFromPool(){var cacheResumedFromPreviousRender=resumedCache.current;return cacheResumedFromPreviousRender!==null?cacheResumedFromPreviousRender:workInProgressRoot.pooledCache}function pushTransition(offscreenWorkInProgress,prevCachePool){prevCachePool===null?push2(resumedCache,resumedCache.current):push2(resumedCache,prevCachePool.pool)}function getSuspendedCache(){var cacheFromPool=peekCacheFromPool();return cacheFromPool===null?null:{parent:isPrimaryRenderer?CacheContext._currentValue:CacheContext._currentValue2,pool:cacheFromPool}}function shallowEqual(objA,objB){if(objectIs(objA,objB))return!0;if(typeof objA!=="object"||objA===null||typeof objB!=="object"||objB===null)return!1;var keysA=Object.keys(objA),keysB=Object.keys(objB);if(keysA.length!==keysB.length)return!1;for(keysB=0;keysB<keysA.length;keysB++){var currentKey=keysA[keysB];if(!hasOwnProperty.call(objB,currentKey)||!objectIs(objA[currentKey],objB[currentKey]))return!1}return!0}function isThenableResolved(thenable){return thenable=thenable.status,thenable==="fulfilled"||thenable==="rejected"}function trackUsedThenable(thenableState2,thenable,index){switch(index=thenableState2[index],index===void 0?thenableState2.push(thenable):index!==thenable&&(thenable.then(noop$1,noop$1),thenable=index),thenable.status){case"fulfilled":return thenable.value;case"rejected":throw thenableState2=thenable.reason,checkIfUseWrappedInAsyncCatch(thenableState2),thenableState2;default:if(typeof thenable.status==="string")thenable.then(noop$1,noop$1);else{if(thenableState2=workInProgressRoot,thenableState2!==null&&100<thenableState2.shellSuspendCounter)throw Error(formatProdErrorMessage(482));thenableState2=thenable,thenableState2.status="pending",thenableState2.then(function(fulfilledValue){if(thenable.status==="pending"){var fulfilledThenable=thenable;fulfilledThenable.status="fulfilled",fulfilledThenable.value=fulfilledValue}},function(error){if(thenable.status==="pending"){var rejectedThenable=thenable;rejectedThenable.status="rejected",rejectedThenable.reason=error}})}switch(thenable.status){case"fulfilled":return thenable.value;case"rejected":throw thenableState2=thenable.reason,checkIfUseWrappedInAsyncCatch(thenableState2),thenableState2}throw suspendedThenable=thenable,SuspenseException}}function resolveLazy(lazyType){try{var init=lazyType._init;return init(lazyType._payload)}catch(x2){if(x2!==null&&typeof x2==="object"&&typeof x2.then==="function")throw suspendedThenable=x2,SuspenseException;throw x2}}function getSuspendedThenable(){if(suspendedThenable===null)throw Error(formatProdErrorMessage(459));var thenable=suspendedThenable;return suspendedThenable=null,thenable}function checkIfUseWrappedInAsyncCatch(rejectedReason){if(rejectedReason===SuspenseException||rejectedReason===SuspenseActionException)throw Error(formatProdErrorMessage(483))}function unwrapThenable(thenable){var index=thenableIndexCounter$1;return thenableIndexCounter$1+=1,thenableState$1===null&&(thenableState$1=[]),trackUsedThenable(thenableState$1,thenable,index)}function coerceRef(workInProgress2,element){element=element.props.ref,workInProgress2.ref=element!==void 0?element:null}function throwOnInvalidObjectTypeImpl(returnFiber,newChild){if(newChild.$$typeof===REACT_LEGACY_ELEMENT_TYPE)throw Error(formatProdErrorMessage(525));throw returnFiber=Object.prototype.toString.call(newChild),Error(formatProdErrorMessage(31,returnFiber==="[object Object]"?"object with keys {"+Object.keys(newChild).join(", ")+"}":returnFiber))}function createChildReconciler(shouldTrackSideEffects){function deleteChild(returnFiber,childToDelete){if(shouldTrackSideEffects){var deletions=returnFiber.deletions;deletions===null?(returnFiber.deletions=[childToDelete],returnFiber.flags|=16):deletions.push(childToDelete)}}function deleteRemainingChildren(returnFiber,currentFirstChild){if(!shouldTrackSideEffects)return null;for(;currentFirstChild!==null;)deleteChild(returnFiber,currentFirstChild),currentFirstChild=currentFirstChild.sibling;return null}function mapRemainingChildren(currentFirstChild){for(var existingChildren=new Map;currentFirstChild!==null;)currentFirstChild.key!==null?existingChildren.set(currentFirstChild.key,currentFirstChild):existingChildren.set(currentFirstChild.index,currentFirstChild),currentFirstChild=currentFirstChild.sibling;return existingChildren}function useFiber(fiber,pendingProps){return fiber=createWorkInProgress(fiber,pendingProps),fiber.index=0,fiber.sibling=null,fiber}function placeChild(newFiber,lastPlacedIndex,newIndex){if(newFiber.index=newIndex,!shouldTrackSideEffects)return newFiber.flags|=1048576,lastPlacedIndex;if(newIndex=newFiber.alternate,newIndex!==null)return newIndex=newIndex.index,newIndex<lastPlacedIndex?(newFiber.flags|=67108866,lastPlacedIndex):newIndex;return newFiber.flags|=67108866,lastPlacedIndex}function placeSingleChild(newFiber){return shouldTrackSideEffects&&newFiber.alternate===null&&(newFiber.flags|=67108866),newFiber}function updateTextNode(returnFiber,current,textContent,lanes){if(current===null||current.tag!==6)return current=createFiberFromText(textContent,returnFiber.mode,lanes),current.return=returnFiber,current;return current=useFiber(current,textContent),current.return=returnFiber,current}function updateElement(returnFiber,current,element,lanes){var elementType=element.type;if(elementType===REACT_FRAGMENT_TYPE2)return updateFragment(returnFiber,current,element.props.children,lanes,element.key);if(current!==null&&(current.elementType===elementType||typeof elementType==="object"&&elementType!==null&&elementType.$$typeof===REACT_LAZY_TYPE&&resolveLazy(elementType)===current.type))return current=useFiber(current,element.props),coerceRef(current,element),current.return=returnFiber,current;return current=createFiberFromTypeAndProps(element.type,element.key,element.props,null,returnFiber.mode,lanes),coerceRef(current,element),current.return=returnFiber,current}function updatePortal(returnFiber,current,portal,lanes){if(current===null||current.tag!==4||current.stateNode.containerInfo!==portal.containerInfo||current.stateNode.implementation!==portal.implementation)return current=createFiberFromPortal(portal,returnFiber.mode,lanes),current.return=returnFiber,current;return current=useFiber(current,portal.children||[]),current.return=returnFiber,current}function updateFragment(returnFiber,current,fragment,lanes,key){if(current===null||current.tag!==7)return current=createFiberFromFragment(fragment,returnFiber.mode,lanes,key),current.return=returnFiber,current;return current=useFiber(current,fragment),current.return=returnFiber,current}function createChild(returnFiber,newChild,lanes){if(typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint")return newChild=createFiberFromText(""+newChild,returnFiber.mode,lanes),newChild.return=returnFiber,newChild;if(typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:return lanes=createFiberFromTypeAndProps(newChild.type,newChild.key,newChild.props,null,returnFiber.mode,lanes),coerceRef(lanes,newChild),lanes.return=returnFiber,lanes;case REACT_PORTAL_TYPE:return newChild=createFiberFromPortal(newChild,returnFiber.mode,lanes),newChild.return=returnFiber,newChild;case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),createChild(returnFiber,newChild,lanes)}if(isArrayImpl(newChild)||getIteratorFn(newChild))return newChild=createFiberFromFragment(newChild,returnFiber.mode,lanes,null),newChild.return=returnFiber,newChild;if(typeof newChild.then==="function")return createChild(returnFiber,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return createChild(returnFiber,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return null}function updateSlot(returnFiber,oldFiber,newChild,lanes){var key=oldFiber!==null?oldFiber.key:null;if(typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint")return key!==null?null:updateTextNode(returnFiber,oldFiber,""+newChild,lanes);if(typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:return newChild.key===key?updateElement(returnFiber,oldFiber,newChild,lanes):null;case REACT_PORTAL_TYPE:return newChild.key===key?updatePortal(returnFiber,oldFiber,newChild,lanes):null;case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),updateSlot(returnFiber,oldFiber,newChild,lanes)}if(isArrayImpl(newChild)||getIteratorFn(newChild))return key!==null?null:updateFragment(returnFiber,oldFiber,newChild,lanes,null);if(typeof newChild.then==="function")return updateSlot(returnFiber,oldFiber,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return updateSlot(returnFiber,oldFiber,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return null}function updateFromMap(existingChildren,returnFiber,newIdx,newChild,lanes){if(typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint")return existingChildren=existingChildren.get(newIdx)||null,updateTextNode(returnFiber,existingChildren,""+newChild,lanes);if(typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:return existingChildren=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null,updateElement(returnFiber,existingChildren,newChild,lanes);case REACT_PORTAL_TYPE:return existingChildren=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null,updatePortal(returnFiber,existingChildren,newChild,lanes);case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),updateFromMap(existingChildren,returnFiber,newIdx,newChild,lanes)}if(isArrayImpl(newChild)||getIteratorFn(newChild))return existingChildren=existingChildren.get(newIdx)||null,updateFragment(returnFiber,existingChildren,newChild,lanes,null);if(typeof newChild.then==="function")return updateFromMap(existingChildren,returnFiber,newIdx,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return updateFromMap(existingChildren,returnFiber,newIdx,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return null}function reconcileChildrenArray(returnFiber,currentFirstChild,newChildren,lanes){for(var resultingFirstChild=null,previousNewFiber=null,oldFiber=currentFirstChild,newIdx=currentFirstChild=0,nextOldFiber=null;oldFiber!==null&&newIdx<newChildren.length;newIdx++){oldFiber.index>newIdx?(nextOldFiber=oldFiber,oldFiber=null):nextOldFiber=oldFiber.sibling;var newFiber=updateSlot(returnFiber,oldFiber,newChildren[newIdx],lanes);if(newFiber===null){oldFiber===null&&(oldFiber=nextOldFiber);break}shouldTrackSideEffects&&oldFiber&&newFiber.alternate===null&&deleteChild(returnFiber,oldFiber),currentFirstChild=placeChild(newFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=newFiber:previousNewFiber.sibling=newFiber,previousNewFiber=newFiber,oldFiber=nextOldFiber}if(newIdx===newChildren.length)return deleteRemainingChildren(returnFiber,oldFiber),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild;if(oldFiber===null){for(;newIdx<newChildren.length;newIdx++)oldFiber=createChild(returnFiber,newChildren[newIdx],lanes),oldFiber!==null&&(currentFirstChild=placeChild(oldFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=oldFiber:previousNewFiber.sibling=oldFiber,previousNewFiber=oldFiber);return isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}for(oldFiber=mapRemainingChildren(oldFiber);newIdx<newChildren.length;newIdx++)nextOldFiber=updateFromMap(oldFiber,returnFiber,newIdx,newChildren[newIdx],lanes),nextOldFiber!==null&&(shouldTrackSideEffects&&nextOldFiber.alternate!==null&&oldFiber.delete(nextOldFiber.key===null?newIdx:nextOldFiber.key),currentFirstChild=placeChild(nextOldFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=nextOldFiber:previousNewFiber.sibling=nextOldFiber,previousNewFiber=nextOldFiber);return shouldTrackSideEffects&&oldFiber.forEach(function(child){return deleteChild(returnFiber,child)}),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}function reconcileChildrenIterator(returnFiber,currentFirstChild,newChildren,lanes){if(newChildren==null)throw Error(formatProdErrorMessage(151));for(var resultingFirstChild=null,previousNewFiber=null,oldFiber=currentFirstChild,newIdx=currentFirstChild=0,nextOldFiber=null,step=newChildren.next();oldFiber!==null&&!step.done;newIdx++,step=newChildren.next()){oldFiber.index>newIdx?(nextOldFiber=oldFiber,oldFiber=null):nextOldFiber=oldFiber.sibling;var newFiber=updateSlot(returnFiber,oldFiber,step.value,lanes);if(newFiber===null){oldFiber===null&&(oldFiber=nextOldFiber);break}shouldTrackSideEffects&&oldFiber&&newFiber.alternate===null&&deleteChild(returnFiber,oldFiber),currentFirstChild=placeChild(newFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=newFiber:previousNewFiber.sibling=newFiber,previousNewFiber=newFiber,oldFiber=nextOldFiber}if(step.done)return deleteRemainingChildren(returnFiber,oldFiber),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild;if(oldFiber===null){for(;!step.done;newIdx++,step=newChildren.next())step=createChild(returnFiber,step.value,lanes),step!==null&&(currentFirstChild=placeChild(step,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=step:previousNewFiber.sibling=step,previousNewFiber=step);return isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}for(oldFiber=mapRemainingChildren(oldFiber);!step.done;newIdx++,step=newChildren.next())step=updateFromMap(oldFiber,returnFiber,newIdx,step.value,lanes),step!==null&&(shouldTrackSideEffects&&step.alternate!==null&&oldFiber.delete(step.key===null?newIdx:step.key),currentFirstChild=placeChild(step,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=step:previousNewFiber.sibling=step,previousNewFiber=step);return shouldTrackSideEffects&&oldFiber.forEach(function(child){return deleteChild(returnFiber,child)}),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}function reconcileChildFibersImpl(returnFiber,currentFirstChild,newChild,lanes){if(typeof newChild==="object"&&newChild!==null&&newChild.type===REACT_FRAGMENT_TYPE2&&newChild.key===null&&(newChild=newChild.props.children),typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:a:{for(var key=newChild.key;currentFirstChild!==null;){if(currentFirstChild.key===key){if(key=newChild.type,key===REACT_FRAGMENT_TYPE2){if(currentFirstChild.tag===7){deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild.props.children),lanes.return=returnFiber,returnFiber=lanes;break a}}else if(currentFirstChild.elementType===key||typeof key==="object"&&key!==null&&key.$$typeof===REACT_LAZY_TYPE&&resolveLazy(key)===currentFirstChild.type){deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild.props),coerceRef(lanes,newChild),lanes.return=returnFiber,returnFiber=lanes;break a}deleteRemainingChildren(returnFiber,currentFirstChild);break}else deleteChild(returnFiber,currentFirstChild);currentFirstChild=currentFirstChild.sibling}newChild.type===REACT_FRAGMENT_TYPE2?(lanes=createFiberFromFragment(newChild.props.children,returnFiber.mode,lanes,newChild.key),lanes.return=returnFiber,returnFiber=lanes):(lanes=createFiberFromTypeAndProps(newChild.type,newChild.key,newChild.props,null,returnFiber.mode,lanes),coerceRef(lanes,newChild),lanes.return=returnFiber,returnFiber=lanes)}return placeSingleChild(returnFiber);case REACT_PORTAL_TYPE:a:{for(key=newChild.key;currentFirstChild!==null;){if(currentFirstChild.key===key)if(currentFirstChild.tag===4&¤tFirstChild.stateNode.containerInfo===newChild.containerInfo&¤tFirstChild.stateNode.implementation===newChild.implementation){deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild.children||[]),lanes.return=returnFiber,returnFiber=lanes;break a}else{deleteRemainingChildren(returnFiber,currentFirstChild);break}else deleteChild(returnFiber,currentFirstChild);currentFirstChild=currentFirstChild.sibling}lanes=createFiberFromPortal(newChild,returnFiber.mode,lanes),lanes.return=returnFiber,returnFiber=lanes}return placeSingleChild(returnFiber);case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),reconcileChildFibersImpl(returnFiber,currentFirstChild,newChild,lanes)}if(isArrayImpl(newChild))return reconcileChildrenArray(returnFiber,currentFirstChild,newChild,lanes);if(getIteratorFn(newChild)){if(key=getIteratorFn(newChild),typeof key!=="function")throw Error(formatProdErrorMessage(150));return newChild=key.call(newChild),reconcileChildrenIterator(returnFiber,currentFirstChild,newChild,lanes)}if(typeof newChild.then==="function")return reconcileChildFibersImpl(returnFiber,currentFirstChild,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return reconcileChildFibersImpl(returnFiber,currentFirstChild,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint"?(newChild=""+newChild,currentFirstChild!==null&¤tFirstChild.tag===6?(deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild),lanes.return=returnFiber,returnFiber=lanes):(deleteRemainingChildren(returnFiber,currentFirstChild),lanes=createFiberFromText(newChild,returnFiber.mode,lanes),lanes.return=returnFiber,returnFiber=lanes),placeSingleChild(returnFiber)):deleteRemainingChildren(returnFiber,currentFirstChild)}return function(returnFiber,currentFirstChild,newChild,lanes){try{thenableIndexCounter$1=0;var firstChildFiber=reconcileChildFibersImpl(returnFiber,currentFirstChild,newChild,lanes);return thenableState$1=null,firstChildFiber}catch(x2){if(x2===SuspenseException||x2===SuspenseActionException)throw x2;var fiber=createFiber(29,x2,null,returnFiber.mode);return fiber.lanes=lanes,fiber.return=returnFiber,fiber}finally{}}}function finishQueueingConcurrentUpdates(){for(var endIndex=concurrentQueuesIndex,i=concurrentlyUpdatedLanes=concurrentQueuesIndex=0;i<endIndex;){var fiber=concurrentQueues[i];concurrentQueues[i++]=null;var queue=concurrentQueues[i];concurrentQueues[i++]=null;var update=concurrentQueues[i];concurrentQueues[i++]=null;var lane=concurrentQueues[i];if(concurrentQueues[i++]=null,queue!==null&&update!==null){var pending=queue.pending;pending===null?update.next=update:(update.next=pending.next,pending.next=update),queue.pending=update}lane!==0&&markUpdateLaneFromFiberToRoot(fiber,update,lane)}}function enqueueUpdate$1(fiber,queue,update,lane){concurrentQueues[concurrentQueuesIndex++]=fiber,concurrentQueues[concurrentQueuesIndex++]=queue,concurrentQueues[concurrentQueuesIndex++]=update,concurrentQueues[concurrentQueuesIndex++]=lane,concurrentlyUpdatedLanes|=lane,fiber.lanes|=lane,fiber=fiber.alternate,fiber!==null&&(fiber.lanes|=lane)}function enqueueConcurrentHookUpdate(fiber,queue,update,lane){return enqueueUpdate$1(fiber,queue,update,lane),getRootForUpdatedFiber(fiber)}function enqueueConcurrentRenderForLane(fiber,lane){return enqueueUpdate$1(fiber,null,null,lane),getRootForUpdatedFiber(fiber)}function markUpdateLaneFromFiberToRoot(sourceFiber,update,lane){sourceFiber.lanes|=lane;var alternate=sourceFiber.alternate;alternate!==null&&(alternate.lanes|=lane);for(var isHidden=!1,parent=sourceFiber.return;parent!==null;)parent.childLanes|=lane,alternate=parent.alternate,alternate!==null&&(alternate.childLanes|=lane),parent.tag===22&&(sourceFiber=parent.stateNode,sourceFiber===null||sourceFiber._visibility&1||(isHidden=!0)),sourceFiber=parent,parent=parent.return;return sourceFiber.tag===3?(parent=sourceFiber.stateNode,isHidden&&update!==null&&(isHidden=31-clz32(lane),sourceFiber=parent.hiddenUpdates,alternate=sourceFiber[isHidden],alternate===null?sourceFiber[isHidden]=[update]:alternate.push(update),update.lane=lane|536870912),parent):null}function getRootForUpdatedFiber(sourceFiber){if(50<nestedUpdateCount)throw nestedUpdateCount=0,rootWithNestedUpdates=null,Error(formatProdErrorMessage(185));for(var parent=sourceFiber.return;parent!==null;)sourceFiber=parent,parent=sourceFiber.return;return sourceFiber.tag===3?sourceFiber.stateNode:null}function initializeUpdateQueue(fiber){fiber.updateQueue={baseState:fiber.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function cloneUpdateQueue(current,workInProgress2){current=current.updateQueue,workInProgress2.updateQueue===current&&(workInProgress2.updateQueue={baseState:current.baseState,firstBaseUpdate:current.firstBaseUpdate,lastBaseUpdate:current.lastBaseUpdate,shared:current.shared,callbacks:null})}function createUpdate(lane){return{lane,tag:0,payload:null,callback:null,next:null}}function enqueueUpdate(fiber,update,lane){var updateQueue=fiber.updateQueue;if(updateQueue===null)return null;if(updateQueue=updateQueue.shared,(executionContext&2)!==0){var pending=updateQueue.pending;return pending===null?update.next=update:(update.next=pending.next,pending.next=update),updateQueue.pending=update,update=getRootForUpdatedFiber(fiber),markUpdateLaneFromFiberToRoot(fiber,null,lane),update}return enqueueUpdate$1(fiber,updateQueue,update,lane),getRootForUpdatedFiber(fiber)}function entangleTransitions(root,fiber,lane){if(fiber=fiber.updateQueue,fiber!==null&&(fiber=fiber.shared,(lane&4194048)!==0)){var queueLanes=fiber.lanes;queueLanes&=root.pendingLanes,lane|=queueLanes,fiber.lanes=lane,markRootEntangled(root,lane)}}function enqueueCapturedUpdate(workInProgress2,capturedUpdate){var{updateQueue:queue,alternate:current}=workInProgress2;if(current!==null&&(current=current.updateQueue,queue===current)){var newFirst=null,newLast=null;if(queue=queue.firstBaseUpdate,queue!==null){do{var clone={lane:queue.lane,tag:queue.tag,payload:queue.payload,callback:null,next:null};newLast===null?newFirst=newLast=clone:newLast=newLast.next=clone,queue=queue.next}while(queue!==null);newLast===null?newFirst=newLast=capturedUpdate:newLast=newLast.next=capturedUpdate}else newFirst=newLast=capturedUpdate;queue={baseState:current.baseState,firstBaseUpdate:newFirst,lastBaseUpdate:newLast,shared:current.shared,callbacks:current.callbacks},workInProgress2.updateQueue=queue;return}workInProgress2=queue.lastBaseUpdate,workInProgress2===null?queue.firstBaseUpdate=capturedUpdate:workInProgress2.next=capturedUpdate,queue.lastBaseUpdate=capturedUpdate}function suspendIfUpdateReadFromEntangledAsyncAction(){if(didReadFromEntangledAsyncAction){var entangledActionThenable=currentEntangledActionThenable;if(entangledActionThenable!==null)throw entangledActionThenable}}function processUpdateQueue(workInProgress$jscomp$0,props,instance$jscomp$0,renderLanes2){didReadFromEntangledAsyncAction=!1;var queue=workInProgress$jscomp$0.updateQueue;hasForceUpdate=!1;var{firstBaseUpdate,lastBaseUpdate}=queue,pendingQueue=queue.shared.pending;if(pendingQueue!==null){queue.shared.pending=null;var lastPendingUpdate=pendingQueue,firstPendingUpdate=lastPendingUpdate.next;lastPendingUpdate.next=null,lastBaseUpdate===null?firstBaseUpdate=firstPendingUpdate:lastBaseUpdate.next=firstPendingUpdate,lastBaseUpdate=lastPendingUpdate;var current=workInProgress$jscomp$0.alternate;current!==null&&(current=current.updateQueue,pendingQueue=current.lastBaseUpdate,pendingQueue!==lastBaseUpdate&&(pendingQueue===null?current.firstBaseUpdate=firstPendingUpdate:pendingQueue.next=firstPendingUpdate,current.lastBaseUpdate=lastPendingUpdate))}if(firstBaseUpdate!==null){var newState=queue.baseState;lastBaseUpdate=0,current=firstPendingUpdate=lastPendingUpdate=null,pendingQueue=firstBaseUpdate;do{var updateLane=pendingQueue.lane&-536870913,isHiddenUpdate=updateLane!==pendingQueue.lane;if(isHiddenUpdate?(workInProgressRootRenderLanes&updateLane)===updateLane:(renderLanes2&updateLane)===updateLane){updateLane!==0&&updateLane===currentEntangledLane&&(didReadFromEntangledAsyncAction=!0),current!==null&&(current=current.next={lane:0,tag:pendingQueue.tag,payload:pendingQueue.payload,callback:null,next:null});a:{var workInProgress2=workInProgress$jscomp$0,update=pendingQueue;updateLane=props;var instance=instance$jscomp$0;switch(update.tag){case 1:if(workInProgress2=update.payload,typeof workInProgress2==="function"){newState=workInProgress2.call(instance,newState,updateLane);break a}newState=workInProgress2;break a;case 3:workInProgress2.flags=workInProgress2.flags&-65537|128;case 0:if(workInProgress2=update.payload,updateLane=typeof workInProgress2==="function"?workInProgress2.call(instance,newState,updateLane):workInProgress2,updateLane===null||updateLane===void 0)break a;newState=assign({},newState,updateLane);break a;case 2:hasForceUpdate=!0}}updateLane=pendingQueue.callback,updateLane!==null&&(workInProgress$jscomp$0.flags|=64,isHiddenUpdate&&(workInProgress$jscomp$0.flags|=8192),isHiddenUpdate=queue.callbacks,isHiddenUpdate===null?queue.callbacks=[updateLane]:isHiddenUpdate.push(updateLane))}else isHiddenUpdate={lane:updateLane,tag:pendingQueue.tag,payload:pendingQueue.payload,callback:pendingQueue.callback,next:null},current===null?(firstPendingUpdate=current=isHiddenUpdate,lastPendingUpdate=newState):current=current.next=isHiddenUpdate,lastBaseUpdate|=updateLane;if(pendingQueue=pendingQueue.next,pendingQueue===null)if(pendingQueue=queue.shared.pending,pendingQueue===null)break;else isHiddenUpdate=pendingQueue,pendingQueue=isHiddenUpdate.next,isHiddenUpdate.next=null,queue.lastBaseUpdate=isHiddenUpdate,queue.shared.pending=null}while(1);current===null&&(lastPendingUpdate=newState),queue.baseState=lastPendingUpdate,queue.firstBaseUpdate=firstPendingUpdate,queue.lastBaseUpdate=current,firstBaseUpdate===null&&(queue.shared.lanes=0),workInProgressRootSkippedLanes|=lastBaseUpdate,workInProgress$jscomp$0.lanes=lastBaseUpdate,workInProgress$jscomp$0.memoizedState=newState}}function callCallback(callback,context){if(typeof callback!=="function")throw Error(formatProdErrorMessage(191,callback));callback.call(context)}function commitCallbacks(updateQueue,context){var callbacks=updateQueue.callbacks;if(callbacks!==null)for(updateQueue.callbacks=null,updateQueue=0;updateQueue<callbacks.length;updateQueue++)callCallback(callbacks[updateQueue],context)}function pushHiddenContext(fiber,context){fiber=entangledRenderLanes,push2(prevEntangledRenderLanesCursor,fiber),push2(currentTreeHiddenStackCursor,context),entangledRenderLanes=fiber|context.baseLanes}function reuseHiddenContextOnStack(){push2(prevEntangledRenderLanesCursor,entangledRenderLanes),push2(currentTreeHiddenStackCursor,currentTreeHiddenStackCursor.current)}function popHiddenContext(){entangledRenderLanes=prevEntangledRenderLanesCursor.current,pop2(currentTreeHiddenStackCursor),pop2(prevEntangledRenderLanesCursor)}function pushPrimaryTreeSuspenseHandler(handler){var current=handler.alternate;push2(suspenseStackCursor,suspenseStackCursor.current&1),push2(suspenseHandlerStackCursor,handler),shellBoundary===null&&(current===null||currentTreeHiddenStackCursor.current!==null?shellBoundary=handler:current.memoizedState!==null&&(shellBoundary=handler))}function pushDehydratedActivitySuspenseHandler(fiber){push2(suspenseStackCursor,suspenseStackCursor.current),push2(suspenseHandlerStackCursor,fiber),shellBoundary===null&&(shellBoundary=fiber)}function pushOffscreenSuspenseHandler(fiber){fiber.tag===22?(push2(suspenseStackCursor,suspenseStackCursor.current),push2(suspenseHandlerStackCursor,fiber),shellBoundary===null&&(shellBoundary=fiber)):reuseSuspenseHandlerOnStack(fiber)}function reuseSuspenseHandlerOnStack(){push2(suspenseStackCursor,suspenseStackCursor.current),push2(suspenseHandlerStackCursor,suspenseHandlerStackCursor.current)}function popSuspenseHandler(fiber){pop2(suspenseHandlerStackCursor),shellBoundary===fiber&&(shellBoundary=null),pop2(suspenseStackCursor)}function findFirstSuspended(row){for(var node=row;node!==null;){if(node.tag===13){var state=node.memoizedState;if(state!==null&&(state=state.dehydrated,state===null||isSuspenseInstancePending(state)||isSuspenseInstanceFallback(state)))return node}else if(node.tag===19&&(node.memoizedProps.revealOrder==="forwards"||node.memoizedProps.revealOrder==="backwards"||node.memoizedProps.revealOrder==="unstable_legacy-backwards"||node.memoizedProps.revealOrder==="together")){if((node.flags&128)!==0)return node}else if(node.child!==null){node.child.return=node,node=node.child;continue}if(node===row)break;for(;node.sibling===null;){if(node.return===null||node.return===row)return null;node=node.return}node.sibling.return=node.return,node=node.sibling}return null}function throwInvalidHookError(){throw Error(formatProdErrorMessage(321))}function areHookInputsEqual(nextDeps,prevDeps){if(prevDeps===null)return!1;for(var i=0;i<prevDeps.length&&i<nextDeps.length;i++)if(!objectIs(nextDeps[i],prevDeps[i]))return!1;return!0}function renderWithHooks(current,workInProgress2,Component,props,secondArg,nextRenderLanes){return renderLanes=nextRenderLanes,currentlyRenderingFiber=workInProgress2,workInProgress2.memoizedState=null,workInProgress2.updateQueue=null,workInProgress2.lanes=0,ReactSharedInternals.H=current===null||current.memoizedState===null?HooksDispatcherOnMount:HooksDispatcherOnUpdate,shouldDoubleInvokeUserFnsInHooksDEV=!1,nextRenderLanes=Component(props,secondArg),shouldDoubleInvokeUserFnsInHooksDEV=!1,didScheduleRenderPhaseUpdateDuringThisPass&&(nextRenderLanes=renderWithHooksAgain(workInProgress2,Component,props,secondArg)),finishRenderingHooks(current),nextRenderLanes}function finishRenderingHooks(current){ReactSharedInternals.H=ContextOnlyDispatcher;var didRenderTooFewHooks=currentHook!==null&¤tHook.next!==null;if(renderLanes=0,workInProgressHook=currentHook=currentlyRenderingFiber=null,didScheduleRenderPhaseUpdate=!1,thenableIndexCounter=0,thenableState=null,didRenderTooFewHooks)throw Error(formatProdErrorMessage(300));current===null||didReceiveUpdate||(current=current.dependencies,current!==null&&checkIfContextChanged(current)&&(didReceiveUpdate=!0))}function renderWithHooksAgain(workInProgress2,Component,props,secondArg){currentlyRenderingFiber=workInProgress2;var numberOfReRenders=0;do{if(didScheduleRenderPhaseUpdateDuringThisPass&&(thenableState=null),thenableIndexCounter=0,didScheduleRenderPhaseUpdateDuringThisPass=!1,25<=numberOfReRenders)throw Error(formatProdErrorMessage(301));if(numberOfReRenders+=1,workInProgressHook=currentHook=null,workInProgress2.updateQueue!=null){var children=workInProgress2.updateQueue;children.lastEffect=null,children.events=null,children.stores=null,children.memoCache!=null&&(children.memoCache.index=0)}ReactSharedInternals.H=HooksDispatcherOnRerender,children=Component(props,secondArg)}while(didScheduleRenderPhaseUpdateDuringThisPass);return children}function TransitionAwareHostComponent(){var dispatcher=ReactSharedInternals.H,maybeThenable=dispatcher.useState()[0];return maybeThenable=typeof maybeThenable.then==="function"?useThenable(maybeThenable):maybeThenable,dispatcher=dispatcher.useState()[0],(currentHook!==null?currentHook.memoizedState:null)!==dispatcher&&(currentlyRenderingFiber.flags|=1024),maybeThenable}function checkDidRenderIdHook(){var didRenderIdHook=localIdCounter!==0;return localIdCounter=0,didRenderIdHook}function bailoutHooks(current,workInProgress2,lanes){workInProgress2.updateQueue=current.updateQueue,workInProgress2.flags&=-2053,current.lanes&=~lanes}function resetHooksOnUnwind(workInProgress2){if(didScheduleRenderPhaseUpdate){for(workInProgress2=workInProgress2.memoizedState;workInProgress2!==null;){var queue=workInProgress2.queue;queue!==null&&(queue.pending=null),workInProgress2=workInProgress2.next}didScheduleRenderPhaseUpdate=!1}renderLanes=0,workInProgressHook=currentHook=currentlyRenderingFiber=null,didScheduleRenderPhaseUpdateDuringThisPass=!1,thenableIndexCounter=localIdCounter=0,thenableState=null}function mountWorkInProgressHook(){var hook={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return workInProgressHook===null?currentlyRenderingFiber.memoizedState=workInProgressHook=hook:workInProgressHook=workInProgressHook.next=hook,workInProgressHook}function updateWorkInProgressHook(){if(currentHook===null){var nextCurrentHook=currentlyRenderingFiber.alternate;nextCurrentHook=nextCurrentHook!==null?nextCurrentHook.memoizedState:null}else nextCurrentHook=currentHook.next;var nextWorkInProgressHook=workInProgressHook===null?currentlyRenderingFiber.memoizedState:workInProgressHook.next;if(nextWorkInProgressHook!==null)workInProgressHook=nextWorkInProgressHook,currentHook=nextCurrentHook;else{if(nextCurrentHook===null){if(currentlyRenderingFiber.alternate===null)throw Error(formatProdErrorMessage(467));throw Error(formatProdErrorMessage(310))}currentHook=nextCurrentHook,nextCurrentHook={memoizedState:currentHook.memoizedState,baseState:currentHook.baseState,baseQueue:currentHook.baseQueue,queue:currentHook.queue,next:null},workInProgressHook===null?currentlyRenderingFiber.memoizedState=workInProgressHook=nextCurrentHook:workInProgressHook=workInProgressHook.next=nextCurrentHook}return workInProgressHook}function createFunctionComponentUpdateQueue(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function useThenable(thenable){var index=thenableIndexCounter;return thenableIndexCounter+=1,thenableState===null&&(thenableState=[]),thenable=trackUsedThenable(thenableState,thenable,index),index=currentlyRenderingFiber,(workInProgressHook===null?index.memoizedState:workInProgressHook.next)===null&&(index=index.alternate,ReactSharedInternals.H=index===null||index.memoizedState===null?HooksDispatcherOnMount:HooksDispatcherOnUpdate),thenable}function use(usable){if(usable!==null&&typeof usable==="object"){if(typeof usable.then==="function")return useThenable(usable);if(usable.$$typeof===REACT_CONTEXT_TYPE)return readContext(usable)}throw Error(formatProdErrorMessage(438,String(usable)))}function useMemoCache(size){var memoCache=null,updateQueue=currentlyRenderingFiber.updateQueue;if(updateQueue!==null&&(memoCache=updateQueue.memoCache),memoCache==null){var current=currentlyRenderingFiber.alternate;current!==null&&(current=current.updateQueue,current!==null&&(current=current.memoCache,current!=null&&(memoCache={data:current.data.map(function(array){return array.slice()}),index:0})))}if(memoCache==null&&(memoCache={data:[],index:0}),updateQueue===null&&(updateQueue=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=updateQueue),updateQueue.memoCache=memoCache,updateQueue=memoCache.data[memoCache.index],updateQueue===void 0)for(updateQueue=memoCache.data[memoCache.index]=Array(size),current=0;current<size;current++)updateQueue[current]=REACT_MEMO_CACHE_SENTINEL;return memoCache.index++,updateQueue}function basicStateReducer(state,action){return typeof action==="function"?action(state):action}function updateReducer(reducer){var hook=updateWorkInProgressHook();return updateReducerImpl(hook,currentHook,reducer)}function updateReducerImpl(hook,current,reducer){var queue=hook.queue;if(queue===null)throw Error(formatProdErrorMessage(311));queue.lastRenderedReducer=reducer;var baseQueue=hook.baseQueue,pendingQueue=queue.pending;if(pendingQueue!==null){if(baseQueue!==null){var baseFirst=baseQueue.next;baseQueue.next=pendingQueue.next,pendingQueue.next=baseFirst}current.baseQueue=baseQueue=pendingQueue,queue.pending=null}if(pendingQueue=hook.baseState,baseQueue===null)hook.memoizedState=pendingQueue;else{current=baseQueue.next;var newBaseQueueFirst=baseFirst=null,newBaseQueueLast=null,update=current,didReadFromEntangledAsyncAction$51=!1;do{var updateLane=update.lane&-536870913;if(updateLane!==update.lane?(workInProgressRootRenderLanes&updateLane)===updateLane:(renderLanes&updateLane)===updateLane){var revertLane=update.revertLane;if(revertLane===0)newBaseQueueLast!==null&&(newBaseQueueLast=newBaseQueueLast.next={lane:0,revertLane:0,gesture:null,action:update.action,hasEagerState:update.hasEagerState,eagerState:update.eagerState,next:null}),updateLane===currentEntangledLane&&(didReadFromEntangledAsyncAction$51=!0);else if((renderLanes&revertLane)===revertLane){update=update.next,revertLane===currentEntangledLane&&(didReadFromEntangledAsyncAction$51=!0);continue}else updateLane={lane:0,revertLane:update.revertLane,gesture:null,action:update.action,hasEagerState:update.hasEagerState,eagerState:update.eagerState,next:null},newBaseQueueLast===null?(newBaseQueueFirst=newBaseQueueLast=updateLane,baseFirst=pendingQueue):newBaseQueueLast=newBaseQueueLast.next=updateLane,currentlyRenderingFiber.lanes|=revertLane,workInProgressRootSkippedLanes|=revertLane;updateLane=update.action,shouldDoubleInvokeUserFnsInHooksDEV&&reducer(pendingQueue,updateLane),pendingQueue=update.hasEagerState?update.eagerState:reducer(pendingQueue,updateLane)}else revertLane={lane:updateLane,revertLane:update.revertLane,gesture:update.gesture,action:update.action,hasEagerState:update.hasEagerState,eagerState:update.eagerState,next:null},newBaseQueueLast===null?(newBaseQueueFirst=newBaseQueueLast=revertLane,baseFirst=pendingQueue):newBaseQueueLast=newBaseQueueLast.next=revertLane,currentlyRenderingFiber.lanes|=updateLane,workInProgressRootSkippedLanes|=updateLane;update=update.next}while(update!==null&&update!==current);if(newBaseQueueLast===null?baseFirst=pendingQueue:newBaseQueueLast.next=newBaseQueueFirst,!objectIs(pendingQueue,hook.memoizedState)&&(didReceiveUpdate=!0,didReadFromEntangledAsyncAction$51&&(reducer=currentEntangledActionThenable,reducer!==null)))throw reducer;hook.memoizedState=pendingQueue,hook.baseState=baseFirst,hook.baseQueue=newBaseQueueLast,queue.lastRenderedState=pendingQueue}return baseQueue===null&&(queue.lanes=0),[hook.memoizedState,queue.dispatch]}function rerenderReducer(reducer){var hook=updateWorkInProgressHook(),queue=hook.queue;if(queue===null)throw Error(formatProdErrorMessage(311));queue.lastRenderedReducer=reducer;var{dispatch,pending:lastRenderPhaseUpdate}=queue,newState=hook.memoizedState;if(lastRenderPhaseUpdate!==null){queue.pending=null;var update=lastRenderPhaseUpdate=lastRenderPhaseUpdate.next;do newState=reducer(newState,update.action),update=update.next;while(update!==lastRenderPhaseUpdate);objectIs(newState,hook.memoizedState)||(didReceiveUpdate=!0),hook.memoizedState=newState,hook.baseQueue===null&&(hook.baseState=newState),queue.lastRenderedState=newState}return[newState,dispatch]}function updateSyncExternalStore(subscribe,getSnapshot,getServerSnapshot){var fiber=currentlyRenderingFiber,hook=updateWorkInProgressHook(),isHydrating$jscomp$0=isHydrating;if(isHydrating$jscomp$0){if(getServerSnapshot===void 0)throw Error(formatProdErrorMessage(407));getServerSnapshot=getServerSnapshot()}else getServerSnapshot=getSnapshot();var snapshotChanged=!objectIs((currentHook||hook).memoizedState,getServerSnapshot);if(snapshotChanged&&(hook.memoizedState=getServerSnapshot,didReceiveUpdate=!0),hook=hook.queue,updateEffect(subscribeToStore.bind(null,fiber,hook,subscribe),[subscribe]),hook.getSnapshot!==getSnapshot||snapshotChanged||workInProgressHook!==null&&workInProgressHook.memoizedState.tag&1){if(fiber.flags|=2048,pushSimpleEffect(9,{destroy:void 0},updateStoreInstance.bind(null,fiber,hook,getServerSnapshot,getSnapshot),null),workInProgressRoot===null)throw Error(formatProdErrorMessage(349));isHydrating$jscomp$0||(renderLanes&127)!==0||pushStoreConsistencyCheck(fiber,getSnapshot,getServerSnapshot)}return getServerSnapshot}function pushStoreConsistencyCheck(fiber,getSnapshot,renderedSnapshot){fiber.flags|=16384,fiber={getSnapshot,value:renderedSnapshot},getSnapshot=currentlyRenderingFiber.updateQueue,getSnapshot===null?(getSnapshot=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=getSnapshot,getSnapshot.stores=[fiber]):(renderedSnapshot=getSnapshot.stores,renderedSnapshot===null?getSnapshot.stores=[fiber]:renderedSnapshot.push(fiber))}function updateStoreInstance(fiber,inst,nextSnapshot,getSnapshot){inst.value=nextSnapshot,inst.getSnapshot=getSnapshot,checkIfSnapshotChanged(inst)&&forceStoreRerender(fiber)}function subscribeToStore(fiber,inst,subscribe){return subscribe(function(){checkIfSnapshotChanged(inst)&&forceStoreRerender(fiber)})}function checkIfSnapshotChanged(inst){var latestGetSnapshot=inst.getSnapshot;inst=inst.value;try{var nextValue=latestGetSnapshot();return!objectIs(inst,nextValue)}catch(error){return!0}}function forceStoreRerender(fiber){var root=enqueueConcurrentRenderForLane(fiber,2);root!==null&&scheduleUpdateOnFiber(root,fiber,2)}function mountStateImpl(initialState){var hook=mountWorkInProgressHook();if(typeof initialState==="function"){var initialStateInitializer=initialState;if(initialState=initialStateInitializer(),shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{initialStateInitializer()}finally{setIsStrictModeForDevtools(!1)}}}return hook.memoizedState=hook.baseState=initialState,hook.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:initialState},hook}function updateOptimisticImpl(hook,current,passthrough,reducer){return hook.baseState=passthrough,updateReducerImpl(hook,currentHook,typeof reducer==="function"?reducer:basicStateReducer)}function dispatchActionState(fiber,actionQueue,setPendingState,setState,payload){if(isRenderPhaseUpdate(fiber))throw Error(formatProdErrorMessage(485));if(fiber=actionQueue.action,fiber!==null){var actionNode={payload,action:fiber,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(listener){actionNode.listeners.push(listener)}};ReactSharedInternals.T!==null?setPendingState(!0):actionNode.isTransition=!1,setState(actionNode),setPendingState=actionQueue.pending,setPendingState===null?(actionNode.next=actionQueue.pending=actionNode,runActionStateAction(actionQueue,actionNode)):(actionNode.next=setPendingState.next,actionQueue.pending=setPendingState.next=actionNode)}}function runActionStateAction(actionQueue,node){var{action,payload}=node,prevState=actionQueue.state;if(node.isTransition){var prevTransition=ReactSharedInternals.T,currentTransition={};ReactSharedInternals.T=currentTransition;try{var returnValue=action(prevState,payload),onStartTransitionFinish=ReactSharedInternals.S;onStartTransitionFinish!==null&&onStartTransitionFinish(currentTransition,returnValue),handleActionReturnValue(actionQueue,node,returnValue)}catch(error){onActionError(actionQueue,node,error)}finally{prevTransition!==null&¤tTransition.types!==null&&(prevTransition.types=currentTransition.types),ReactSharedInternals.T=prevTransition}}else try{prevTransition=action(prevState,payload),handleActionReturnValue(actionQueue,node,prevTransition)}catch(error$55){onActionError(actionQueue,node,error$55)}}function handleActionReturnValue(actionQueue,node,returnValue){returnValue!==null&&typeof returnValue==="object"&&typeof returnValue.then==="function"?returnValue.then(function(nextState){onActionSuccess(actionQueue,node,nextState)},function(error){return onActionError(actionQueue,node,error)}):onActionSuccess(actionQueue,node,returnValue)}function onActionSuccess(actionQueue,actionNode,nextState){actionNode.status="fulfilled",actionNode.value=nextState,notifyActionListeners(actionNode),actionQueue.state=nextState,actionNode=actionQueue.pending,actionNode!==null&&(nextState=actionNode.next,nextState===actionNode?actionQueue.pending=null:(nextState=nextState.next,actionNode.next=nextState,runActionStateAction(actionQueue,nextState)))}function onActionError(actionQueue,actionNode,error){var last=actionQueue.pending;if(actionQueue.pending=null,last!==null){last=last.next;do actionNode.status="rejected",actionNode.reason=error,notifyActionListeners(actionNode),actionNode=actionNode.next;while(actionNode!==last)}actionQueue.action=null}function notifyActionListeners(actionNode){actionNode=actionNode.listeners;for(var i=0;i<actionNode.length;i++)(0,actionNode[i])()}function actionStateReducer(oldState,newState){return newState}function mountActionState(action,initialStateProp){if(isHydrating){var ssrFormState=workInProgressRoot.formState;if(ssrFormState!==null){a:{var JSCompiler_inline_result=currentlyRenderingFiber;if(isHydrating){if(nextHydratableInstance){var markerInstance=canHydrateFormStateMarker(nextHydratableInstance,rootOrSingletonContext);if(markerInstance){nextHydratableInstance=getNextHydratableSibling(markerInstance),JSCompiler_inline_result=isFormStateMarkerMatching(markerInstance);break a}}throwOnHydrationMismatch(JSCompiler_inline_result)}JSCompiler_inline_result=!1}JSCompiler_inline_result&&(initialStateProp=ssrFormState[0])}}ssrFormState=mountWorkInProgressHook(),ssrFormState.memoizedState=ssrFormState.baseState=initialStateProp,JSCompiler_inline_result={pending:null,lanes:0,dispatch:null,lastRenderedReducer:actionStateReducer,lastRenderedState:initialStateProp},ssrFormState.queue=JSCompiler_inline_result,ssrFormState=dispatchSetState.bind(null,currentlyRenderingFiber,JSCompiler_inline_result),JSCompiler_inline_result.dispatch=ssrFormState,JSCompiler_inline_result=mountStateImpl(!1);var setPendingState=dispatchOptimisticSetState.bind(null,currentlyRenderingFiber,!1,JSCompiler_inline_result.queue);return JSCompiler_inline_result=mountWorkInProgressHook(),markerInstance={state:initialStateProp,dispatch:null,action,pending:null},JSCompiler_inline_result.queue=markerInstance,ssrFormState=dispatchActionState.bind(null,currentlyRenderingFiber,markerInstance,setPendingState,ssrFormState),markerInstance.dispatch=ssrFormState,JSCompiler_inline_result.memoizedState=action,[initialStateProp,ssrFormState,!1]}function updateActionState(action){var stateHook=updateWorkInProgressHook();return updateActionStateImpl(stateHook,currentHook,action)}function updateActionStateImpl(stateHook,currentStateHook,action){if(currentStateHook=updateReducerImpl(stateHook,currentStateHook,actionStateReducer)[0],stateHook=updateReducer(basicStateReducer)[0],typeof currentStateHook==="object"&¤tStateHook!==null&&typeof currentStateHook.then==="function")try{var state=useThenable(currentStateHook)}catch(x2){if(x2===SuspenseException)throw SuspenseActionException;throw x2}else state=currentStateHook;currentStateHook=updateWorkInProgressHook();var actionQueue=currentStateHook.queue,dispatch=actionQueue.dispatch;return action!==currentStateHook.memoizedState&&(currentlyRenderingFiber.flags|=2048,pushSimpleEffect(9,{destroy:void 0},actionStateActionEffect.bind(null,actionQueue,action),null)),[state,dispatch,stateHook]}function actionStateActionEffect(actionQueue,action){actionQueue.action=action}function rerenderActionState(action){var stateHook=updateWorkInProgressHook(),currentStateHook=currentHook;if(currentStateHook!==null)return updateActionStateImpl(stateHook,currentStateHook,action);updateWorkInProgressHook(),stateHook=stateHook.memoizedState,currentStateHook=updateWorkInProgressHook();var dispatch=currentStateHook.queue.dispatch;return currentStateHook.memoizedState=action,[stateHook,dispatch,!1]}function pushSimpleEffect(tag,inst,create,deps){return tag={tag,create,deps,inst,next:null},inst=currentlyRenderingFiber.updateQueue,inst===null&&(inst=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=inst),create=inst.lastEffect,create===null?inst.lastEffect=tag.next=tag:(deps=create.next,create.next=tag,tag.next=deps,inst.lastEffect=tag),tag}function updateRef(){return updateWorkInProgressHook().memoizedState}function mountEffectImpl(fiberFlags,hookFlags,create,deps){var hook=mountWorkInProgressHook();currentlyRenderingFiber.flags|=fiberFlags,hook.memoizedState=pushSimpleEffect(1|hookFlags,{destroy:void 0},create,deps===void 0?null:deps)}function updateEffectImpl(fiberFlags,hookFlags,create,deps){var hook=updateWorkInProgressHook();deps=deps===void 0?null:deps;var inst=hook.memoizedState.inst;currentHook!==null&&deps!==null&&areHookInputsEqual(deps,currentHook.memoizedState.deps)?hook.memoizedState=pushSimpleEffect(hookFlags,inst,create,deps):(currentlyRenderingFiber.flags|=fiberFlags,hook.memoizedState=pushSimpleEffect(1|hookFlags,inst,create,deps))}function mountEffect(create,deps){mountEffectImpl(8390656,8,create,deps)}function updateEffect(create,deps){updateEffectImpl(2048,8,create,deps)}function useEffectEventImpl(payload){currentlyRenderingFiber.flags|=4;var componentUpdateQueue=currentlyRenderingFiber.updateQueue;if(componentUpdateQueue===null)componentUpdateQueue=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=componentUpdateQueue,componentUpdateQueue.events=[payload];else{var events=componentUpdateQueue.events;events===null?componentUpdateQueue.events=[payload]:events.push(payload)}}function updateEvent(callback){var ref=updateWorkInProgressHook().memoizedState;return useEffectEventImpl({ref,nextImpl:callback}),function(){if((executionContext&2)!==0)throw Error(formatProdErrorMessage(440));return ref.impl.apply(void 0,arguments)}}function updateInsertionEffect(create,deps){return updateEffectImpl(4,2,create,deps)}function updateLayoutEffect(create,deps){return updateEffectImpl(4,4,create,deps)}function imperativeHandleEffect(create,ref){if(typeof ref==="function"){create=create();var refCleanup=ref(create);return function(){typeof refCleanup==="function"?refCleanup():ref(null)}}if(ref!==null&&ref!==void 0)return create=create(),ref.current=create,function(){ref.current=null}}function updateImperativeHandle(ref,create,deps){deps=deps!==null&&deps!==void 0?deps.concat([ref]):null,updateEffectImpl(4,4,imperativeHandleEffect.bind(null,create,ref),deps)}function mountDebugValue(){}function updateCallback(callback,deps){var hook=updateWorkInProgressHook();deps=deps===void 0?null:deps;var prevState=hook.memoizedState;if(deps!==null&&areHookInputsEqual(deps,prevState[1]))return prevState[0];return hook.memoizedState=[callback,deps],callback}function updateMemo(nextCreate,deps){var hook=updateWorkInProgressHook();deps=deps===void 0?null:deps;var prevState=hook.memoizedState;if(deps!==null&&areHookInputsEqual(deps,prevState[1]))return prevState[0];if(prevState=nextCreate(),shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{nextCreate()}finally{setIsStrictModeForDevtools(!1)}}return hook.memoizedState=[prevState,deps],prevState}function mountDeferredValueImpl(hook,value,initialValue){if(initialValue===void 0||(renderLanes&1073741824)!==0&&(workInProgressRootRenderLanes&261930)===0)return hook.memoizedState=value;return hook.memoizedState=initialValue,hook=requestDeferredLane(),currentlyRenderingFiber.lanes|=hook,workInProgressRootSkippedLanes|=hook,initialValue}function updateDeferredValueImpl(hook,prevValue,value,initialValue){if(objectIs(value,prevValue))return value;if(currentTreeHiddenStackCursor.current!==null)return hook=mountDeferredValueImpl(hook,value,initialValue),objectIs(hook,prevValue)||(didReceiveUpdate=!0),hook;if((renderLanes&42)===0||(renderLanes&1073741824)!==0&&(workInProgressRootRenderLanes&261930)===0)return didReceiveUpdate=!0,hook.memoizedState=value;return hook=requestDeferredLane(),currentlyRenderingFiber.lanes|=hook,workInProgressRootSkippedLanes|=hook,prevValue}function startTransition(fiber,queue,pendingState,finishedState,callback){var previousPriority=getCurrentUpdatePriority();setCurrentUpdatePriority(previousPriority!==0&&8>previousPriority?previousPriority:8);var prevTransition=ReactSharedInternals.T,currentTransition={};ReactSharedInternals.T=currentTransition,dispatchOptimisticSetState(fiber,!1,queue,pendingState);try{var returnValue=callback(),onStartTransitionFinish=ReactSharedInternals.S;if(onStartTransitionFinish!==null&&onStartTransitionFinish(currentTransition,returnValue),returnValue!==null&&typeof returnValue==="object"&&typeof returnValue.then==="function"){var thenableForFinishedState=chainThenableValue(returnValue,finishedState);dispatchSetStateInternal(fiber,queue,thenableForFinishedState,requestUpdateLane(fiber))}else dispatchSetStateInternal(fiber,queue,finishedState,requestUpdateLane(fiber))}catch(error){dispatchSetStateInternal(fiber,queue,{then:function(){},status:"rejected",reason:error},requestUpdateLane())}finally{setCurrentUpdatePriority(previousPriority),prevTransition!==null&¤tTransition.types!==null&&(prevTransition.types=currentTransition.types),ReactSharedInternals.T=prevTransition}}function ensureFormComponentIsStateful(formFiber){var existingStateHook=formFiber.memoizedState;if(existingStateHook!==null)return existingStateHook;existingStateHook={memoizedState:NotPendingTransition,baseState:NotPendingTransition,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:NotPendingTransition},next:null};var initialResetState={};return existingStateHook.next={memoizedState:initialResetState,baseState:initialResetState,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:initialResetState},next:null},formFiber.memoizedState=existingStateHook,formFiber=formFiber.alternate,formFiber!==null&&(formFiber.memoizedState=existingStateHook),existingStateHook}function useHostTransitionStatus(){return readContext(HostTransitionContext)}function updateId(){return updateWorkInProgressHook().memoizedState}function updateRefresh(){return updateWorkInProgressHook().memoizedState}function refreshCache(fiber){for(var provider=fiber.return;provider!==null;){switch(provider.tag){case 24:case 3:var lane=requestUpdateLane();fiber=createUpdate(lane);var root=enqueueUpdate(provider,fiber,lane);root!==null&&(scheduleUpdateOnFiber(root,provider,lane),entangleTransitions(root,provider,lane)),provider={cache:createCache()},fiber.payload=provider;return}provider=provider.return}}function dispatchReducerAction(fiber,queue,action){var lane=requestUpdateLane();action={lane,revertLane:0,gesture:null,action,hasEagerState:!1,eagerState:null,next:null},isRenderPhaseUpdate(fiber)?enqueueRenderPhaseUpdate(queue,action):(action=enqueueConcurrentHookUpdate(fiber,queue,action,lane),action!==null&&(scheduleUpdateOnFiber(action,fiber,lane),entangleTransitionUpdate(action,queue,lane)))}function dispatchSetState(fiber,queue,action){var lane=requestUpdateLane();dispatchSetStateInternal(fiber,queue,action,lane)}function dispatchSetStateInternal(fiber,queue,action,lane){var update={lane,revertLane:0,gesture:null,action,hasEagerState:!1,eagerState:null,next:null};if(isRenderPhaseUpdate(fiber))enqueueRenderPhaseUpdate(queue,update);else{var alternate=fiber.alternate;if(fiber.lanes===0&&(alternate===null||alternate.lanes===0)&&(alternate=queue.lastRenderedReducer,alternate!==null))try{var currentState=queue.lastRenderedState,eagerState=alternate(currentState,action);if(update.hasEagerState=!0,update.eagerState=eagerState,objectIs(eagerState,currentState))return enqueueUpdate$1(fiber,queue,update,0),workInProgressRoot===null&&finishQueueingConcurrentUpdates(),!1}catch(error){}finally{}if(action=enqueueConcurrentHookUpdate(fiber,queue,update,lane),action!==null)return scheduleUpdateOnFiber(action,fiber,lane),entangleTransitionUpdate(action,queue,lane),!0}return!1}function dispatchOptimisticSetState(fiber,throwIfDuringRender,queue,action){if(action={lane:2,revertLane:requestTransitionLane(),gesture:null,action,hasEagerState:!1,eagerState:null,next:null},isRenderPhaseUpdate(fiber)){if(throwIfDuringRender)throw Error(formatProdErrorMessage(479))}else throwIfDuringRender=enqueueConcurrentHookUpdate(fiber,queue,action,2),throwIfDuringRender!==null&&scheduleUpdateOnFiber(throwIfDuringRender,fiber,2)}function isRenderPhaseUpdate(fiber){var alternate=fiber.alternate;return fiber===currentlyRenderingFiber||alternate!==null&&alternate===currentlyRenderingFiber}function enqueueRenderPhaseUpdate(queue,update){didScheduleRenderPhaseUpdateDuringThisPass=didScheduleRenderPhaseUpdate=!0;var pending=queue.pending;pending===null?update.next=update:(update.next=pending.next,pending.next=update),queue.pending=update}function entangleTransitionUpdate(root,queue,lane){if((lane&4194048)!==0){var queueLanes=queue.lanes;queueLanes&=root.pendingLanes,lane|=queueLanes,queue.lanes=lane,markRootEntangled(root,lane)}}function applyDerivedStateFromProps(workInProgress2,ctor,getDerivedStateFromProps,nextProps){ctor=workInProgress2.memoizedState,getDerivedStateFromProps=getDerivedStateFromProps(nextProps,ctor),getDerivedStateFromProps=getDerivedStateFromProps===null||getDerivedStateFromProps===void 0?ctor:assign({},ctor,getDerivedStateFromProps),workInProgress2.memoizedState=getDerivedStateFromProps,workInProgress2.lanes===0&&(workInProgress2.updateQueue.baseState=getDerivedStateFromProps)}function checkShouldComponentUpdate(workInProgress2,ctor,oldProps,newProps,oldState,newState,nextContext){return workInProgress2=workInProgress2.stateNode,typeof workInProgress2.shouldComponentUpdate==="function"?workInProgress2.shouldComponentUpdate(newProps,newState,nextContext):ctor.prototype&&ctor.prototype.isPureReactComponent?!shallowEqual(oldProps,newProps)||!shallowEqual(oldState,newState):!0}function callComponentWillReceiveProps(workInProgress2,instance,newProps,nextContext){workInProgress2=instance.state,typeof instance.componentWillReceiveProps==="function"&&instance.componentWillReceiveProps(newProps,nextContext),typeof instance.UNSAFE_componentWillReceiveProps==="function"&&instance.UNSAFE_componentWillReceiveProps(newProps,nextContext),instance.state!==workInProgress2&&classComponentUpdater.enqueueReplaceState(instance,instance.state,null)}function resolveClassComponentProps(Component,baseProps){var newProps=baseProps;if("ref"in baseProps){newProps={};for(var propName in baseProps)propName!=="ref"&&(newProps[propName]=baseProps[propName])}if(Component=Component.defaultProps){newProps===baseProps&&(newProps=assign({},newProps));for(var propName$57 in Component)newProps[propName$57]===void 0&&(newProps[propName$57]=Component[propName$57])}return newProps}function logUncaughtError(root,errorInfo){try{var onUncaughtError=root.onUncaughtError;onUncaughtError(errorInfo.value,{componentStack:errorInfo.stack})}catch(e){setTimeout(function(){throw e})}}function logCaughtError(root,boundary,errorInfo){try{var onCaughtError=root.onCaughtError;onCaughtError(errorInfo.value,{componentStack:errorInfo.stack,errorBoundary:boundary.tag===1?boundary.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function createRootErrorUpdate(root,errorInfo,lane){return lane=createUpdate(lane),lane.tag=3,lane.payload={element:null},lane.callback=function(){logUncaughtError(root,errorInfo)},lane}function createClassErrorUpdate(lane){return lane=createUpdate(lane),lane.tag=3,lane}function initializeClassErrorUpdate(update,root,fiber,errorInfo){var getDerivedStateFromError=fiber.type.getDerivedStateFromError;if(typeof getDerivedStateFromError==="function"){var error=errorInfo.value;update.payload=function(){return getDerivedStateFromError(error)},update.callback=function(){logCaughtError(root,fiber,errorInfo)}}var inst=fiber.stateNode;inst!==null&&typeof inst.componentDidCatch==="function"&&(update.callback=function(){logCaughtError(root,fiber,errorInfo),typeof getDerivedStateFromError!=="function"&&(legacyErrorBoundariesThatAlreadyFailed===null?legacyErrorBoundariesThatAlreadyFailed=new Set([this]):legacyErrorBoundariesThatAlreadyFailed.add(this));var stack=errorInfo.stack;this.componentDidCatch(errorInfo.value,{componentStack:stack!==null?stack:""})})}function throwException(root,returnFiber,sourceFiber,value,rootRenderLanes){if(sourceFiber.flags|=32768,value!==null&&typeof value==="object"&&typeof value.then==="function"){if(returnFiber=sourceFiber.alternate,returnFiber!==null&&propagateParentContextChanges(returnFiber,sourceFiber,rootRenderLanes,!0),sourceFiber=suspenseHandlerStackCursor.current,sourceFiber!==null){switch(sourceFiber.tag){case 31:case 13:return shellBoundary===null?renderDidSuspendDelayIfPossible():sourceFiber.alternate===null&&workInProgressRootExitStatus===0&&(workInProgressRootExitStatus=3),sourceFiber.flags&=-257,sourceFiber.flags|=65536,sourceFiber.lanes=rootRenderLanes,value===noopSuspenseyCommitThenable?sourceFiber.flags|=16384:(returnFiber=sourceFiber.updateQueue,returnFiber===null?sourceFiber.updateQueue=new Set([value]):returnFiber.add(value),attachPingListener(root,value,rootRenderLanes)),!1;case 22:return sourceFiber.flags|=65536,value===noopSuspenseyCommitThenable?sourceFiber.flags|=16384:(returnFiber=sourceFiber.updateQueue,returnFiber===null?(returnFiber={transitions:null,markerInstances:null,retryQueue:new Set([value])},sourceFiber.updateQueue=returnFiber):(sourceFiber=returnFiber.retryQueue,sourceFiber===null?returnFiber.retryQueue=new Set([value]):sourceFiber.add(value)),attachPingListener(root,value,rootRenderLanes)),!1}throw Error(formatProdErrorMessage(435,sourceFiber.tag))}return attachPingListener(root,value,rootRenderLanes),renderDidSuspendDelayIfPossible(),!1}if(isHydrating)return returnFiber=suspenseHandlerStackCursor.current,returnFiber!==null?((returnFiber.flags&65536)===0&&(returnFiber.flags|=256),returnFiber.flags|=65536,returnFiber.lanes=rootRenderLanes,value!==HydrationMismatchException&&(root=Error(formatProdErrorMessage(422),{cause:value}),queueHydrationError(createCapturedValueAtFiber(root,sourceFiber)))):(value!==HydrationMismatchException&&(returnFiber=Error(formatProdErrorMessage(423),{cause:value}),queueHydrationError(createCapturedValueAtFiber(returnFiber,sourceFiber))),root=root.current.alternate,root.flags|=65536,rootRenderLanes&=-rootRenderLanes,root.lanes|=rootRenderLanes,value=createCapturedValueAtFiber(value,sourceFiber),rootRenderLanes=createRootErrorUpdate(root.stateNode,value,rootRenderLanes),enqueueCapturedUpdate(root,rootRenderLanes),workInProgressRootExitStatus!==4&&(workInProgressRootExitStatus=2)),!1;var wrapperError=Error(formatProdErrorMessage(520),{cause:value});if(wrapperError=createCapturedValueAtFiber(wrapperError,sourceFiber),workInProgressRootConcurrentErrors===null?workInProgressRootConcurrentErrors=[wrapperError]:workInProgressRootConcurrentErrors.push(wrapperError),workInProgressRootExitStatus!==4&&(workInProgressRootExitStatus=2),returnFiber===null)return!0;value=createCapturedValueAtFiber(value,sourceFiber),sourceFiber=returnFiber;do{switch(sourceFiber.tag){case 3:return sourceFiber.flags|=65536,root=rootRenderLanes&-rootRenderLanes,sourceFiber.lanes|=root,root=createRootErrorUpdate(sourceFiber.stateNode,value,root),enqueueCapturedUpdate(sourceFiber,root),!1;case 1:if(returnFiber=sourceFiber.type,wrapperError=sourceFiber.stateNode,(sourceFiber.flags&128)===0&&(typeof returnFiber.getDerivedStateFromError==="function"||wrapperError!==null&&typeof wrapperError.componentDidCatch==="function"&&(legacyErrorBoundariesThatAlreadyFailed===null||!legacyErrorBoundariesThatAlreadyFailed.has(wrapperError))))return sourceFiber.flags|=65536,rootRenderLanes&=-rootRenderLanes,sourceFiber.lanes|=rootRenderLanes,rootRenderLanes=createClassErrorUpdate(rootRenderLanes),initializeClassErrorUpdate(rootRenderLanes,root,sourceFiber,value),enqueueCapturedUpdate(sourceFiber,rootRenderLanes),!1}sourceFiber=sourceFiber.return}while(sourceFiber!==null);return!1}function reconcileChildren(current,workInProgress2,nextChildren,renderLanes2){workInProgress2.child=current===null?mountChildFibers(workInProgress2,null,nextChildren,renderLanes2):reconcileChildFibers(workInProgress2,current.child,nextChildren,renderLanes2)}function updateForwardRef(current,workInProgress2,Component,nextProps,renderLanes2){Component=Component.render;var ref=workInProgress2.ref;if("ref"in nextProps){var propsWithoutRef={};for(var key in nextProps)key!=="ref"&&(propsWithoutRef[key]=nextProps[key])}else propsWithoutRef=nextProps;if(prepareToReadContext(workInProgress2),nextProps=renderWithHooks(current,workInProgress2,Component,propsWithoutRef,ref,renderLanes2),key=checkDidRenderIdHook(),current!==null&&!didReceiveUpdate)return bailoutHooks(current,workInProgress2,renderLanes2),bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);return isHydrating&&key&&pushMaterializedTreeId(workInProgress2),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,nextProps,renderLanes2),workInProgress2.child}function updateMemoComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(current===null){var type=Component.type;if(typeof type==="function"&&!shouldConstruct(type)&&type.defaultProps===void 0&&Component.compare===null)return workInProgress2.tag=15,workInProgress2.type=type,updateSimpleMemoComponent(current,workInProgress2,type,nextProps,renderLanes2);return current=createFiberFromTypeAndProps(Component.type,null,nextProps,workInProgress2,workInProgress2.mode,renderLanes2),current.ref=workInProgress2.ref,current.return=workInProgress2,workInProgress2.child=current}if(type=current.child,!checkScheduledUpdateOrContext(current,renderLanes2)){var prevProps=type.memoizedProps;if(Component=Component.compare,Component=Component!==null?Component:shallowEqual,Component(prevProps,nextProps)&¤t.ref===workInProgress2.ref)return bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2)}return workInProgress2.flags|=1,current=createWorkInProgress(type,nextProps),current.ref=workInProgress2.ref,current.return=workInProgress2,workInProgress2.child=current}function updateSimpleMemoComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(current!==null){var prevProps=current.memoizedProps;if(shallowEqual(prevProps,nextProps)&¤t.ref===workInProgress2.ref)if(didReceiveUpdate=!1,workInProgress2.pendingProps=nextProps=prevProps,checkScheduledUpdateOrContext(current,renderLanes2))(current.flags&131072)!==0&&(didReceiveUpdate=!0);else return workInProgress2.lanes=current.lanes,bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2)}return updateFunctionComponent(current,workInProgress2,Component,nextProps,renderLanes2)}function updateOffscreenComponent(current,workInProgress2,renderLanes2,nextProps){var nextChildren=nextProps.children,prevState=current!==null?current.memoizedState:null;if(current===null&&workInProgress2.stateNode===null&&(workInProgress2.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),nextProps.mode==="hidden"){if((workInProgress2.flags&128)!==0){if(prevState=prevState!==null?prevState.baseLanes|renderLanes2:renderLanes2,current!==null){nextProps=workInProgress2.child=current.child;for(nextChildren=0;nextProps!==null;)nextChildren=nextChildren|nextProps.lanes|nextProps.childLanes,nextProps=nextProps.sibling;nextProps=nextChildren&~prevState}else nextProps=0,workInProgress2.child=null;return deferHiddenOffscreenComponent(current,workInProgress2,prevState,renderLanes2,nextProps)}if((renderLanes2&536870912)!==0)workInProgress2.memoizedState={baseLanes:0,cachePool:null},current!==null&&pushTransition(workInProgress2,prevState!==null?prevState.cachePool:null),prevState!==null?pushHiddenContext(workInProgress2,prevState):reuseHiddenContextOnStack(),pushOffscreenSuspenseHandler(workInProgress2);else return nextProps=workInProgress2.lanes=536870912,deferHiddenOffscreenComponent(current,workInProgress2,prevState!==null?prevState.baseLanes|renderLanes2:renderLanes2,renderLanes2,nextProps)}else prevState!==null?(pushTransition(workInProgress2,prevState.cachePool),pushHiddenContext(workInProgress2,prevState),reuseSuspenseHandlerOnStack(workInProgress2),workInProgress2.memoizedState=null):(current!==null&&pushTransition(workInProgress2,null),reuseHiddenContextOnStack(),reuseSuspenseHandlerOnStack(workInProgress2));return reconcileChildren(current,workInProgress2,nextChildren,renderLanes2),workInProgress2.child}function bailoutOffscreenComponent(current,workInProgress2){return current!==null&¤t.tag===22||workInProgress2.stateNode!==null||(workInProgress2.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),workInProgress2.sibling}function deferHiddenOffscreenComponent(current,workInProgress2,nextBaseLanes,renderLanes2,remainingChildLanes){var JSCompiler_inline_result=peekCacheFromPool();return JSCompiler_inline_result=JSCompiler_inline_result===null?null:{parent:isPrimaryRenderer?CacheContext._currentValue:CacheContext._currentValue2,pool:JSCompiler_inline_result},workInProgress2.memoizedState={baseLanes:nextBaseLanes,cachePool:JSCompiler_inline_result},current!==null&&pushTransition(workInProgress2,null),reuseHiddenContextOnStack(),pushOffscreenSuspenseHandler(workInProgress2),current!==null&&propagateParentContextChanges(current,workInProgress2,renderLanes2,!0),workInProgress2.childLanes=remainingChildLanes,null}function mountActivityChildren(workInProgress2,nextProps){return nextProps=mountWorkInProgressOffscreenFiber({mode:nextProps.mode,children:nextProps.children},workInProgress2.mode),nextProps.ref=workInProgress2.ref,workInProgress2.child=nextProps,nextProps.return=workInProgress2,nextProps}function retryActivityComponentWithoutHydrating(current,workInProgress2,renderLanes2){return reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),current=mountActivityChildren(workInProgress2,workInProgress2.pendingProps),current.flags|=2,popSuspenseHandler(workInProgress2),workInProgress2.memoizedState=null,current}function updateActivityComponent(current,workInProgress2,renderLanes2){var nextProps=workInProgress2.pendingProps,didSuspend=(workInProgress2.flags&128)!==0;if(workInProgress2.flags&=-129,current===null){if(isHydrating){if(nextProps.mode==="hidden")return current=mountActivityChildren(workInProgress2,nextProps),workInProgress2.lanes=536870912,bailoutOffscreenComponent(null,current);if(pushDehydratedActivitySuspenseHandler(workInProgress2),(current=nextHydratableInstance)?(current=canHydrateActivityInstance(current,rootOrSingletonContext),current!==null&&(workInProgress2.memoizedState={dehydrated:current,treeContext:treeContextProvider!==null?{id:treeContextId,overflow:treeContextOverflow}:null,retryLane:536870912,hydrationErrors:null},renderLanes2=createFiberFromDehydratedFragment(current),renderLanes2.return=workInProgress2,workInProgress2.child=renderLanes2,hydrationParentFiber=workInProgress2,nextHydratableInstance=null)):current=null,current===null)throw throwOnHydrationMismatch(workInProgress2);return workInProgress2.lanes=536870912,null}return mountActivityChildren(workInProgress2,nextProps)}var prevState=current.memoizedState;if(prevState!==null){var dehydrated=prevState.dehydrated;if(pushDehydratedActivitySuspenseHandler(workInProgress2),didSuspend)if(workInProgress2.flags&256)workInProgress2.flags&=-257,workInProgress2=retryActivityComponentWithoutHydrating(current,workInProgress2,renderLanes2);else if(workInProgress2.memoizedState!==null)workInProgress2.child=current.child,workInProgress2.flags|=128,workInProgress2=null;else throw Error(formatProdErrorMessage(558));else if(didReceiveUpdate||propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),didSuspend=(renderLanes2¤t.childLanes)!==0,didReceiveUpdate||didSuspend){if(nextProps=workInProgressRoot,nextProps!==null&&(dehydrated=getBumpedLaneForHydration(nextProps,renderLanes2),dehydrated!==0&&dehydrated!==prevState.retryLane))throw prevState.retryLane=dehydrated,enqueueConcurrentRenderForLane(current,dehydrated),scheduleUpdateOnFiber(nextProps,current,dehydrated),SelectiveHydrationException;renderDidSuspendDelayIfPossible(),workInProgress2=retryActivityComponentWithoutHydrating(current,workInProgress2,renderLanes2)}else current=prevState.treeContext,supportsHydration&&(nextHydratableInstance=getFirstHydratableChildWithinActivityInstance(dehydrated),hydrationParentFiber=workInProgress2,isHydrating=!0,hydrationErrors=null,rootOrSingletonContext=!1,current!==null&&restoreSuspendedTreeContext(workInProgress2,current)),workInProgress2=mountActivityChildren(workInProgress2,nextProps),workInProgress2.flags|=4096;return workInProgress2}return current=createWorkInProgress(current.child,{mode:nextProps.mode,children:nextProps.children}),current.ref=workInProgress2.ref,workInProgress2.child=current,current.return=workInProgress2,current}function markRef(current,workInProgress2){var ref=workInProgress2.ref;if(ref===null)current!==null&¤t.ref!==null&&(workInProgress2.flags|=4194816);else{if(typeof ref!=="function"&&typeof ref!=="object")throw Error(formatProdErrorMessage(284));if(current===null||current.ref!==ref)workInProgress2.flags|=4194816}}function updateFunctionComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(prepareToReadContext(workInProgress2),Component=renderWithHooks(current,workInProgress2,Component,nextProps,void 0,renderLanes2),nextProps=checkDidRenderIdHook(),current!==null&&!didReceiveUpdate)return bailoutHooks(current,workInProgress2,renderLanes2),bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);return isHydrating&&nextProps&&pushMaterializedTreeId(workInProgress2),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,Component,renderLanes2),workInProgress2.child}function replayFunctionComponent(current,workInProgress2,nextProps,Component,secondArg,renderLanes2){if(prepareToReadContext(workInProgress2),workInProgress2.updateQueue=null,nextProps=renderWithHooksAgain(workInProgress2,Component,nextProps,secondArg),finishRenderingHooks(current),Component=checkDidRenderIdHook(),current!==null&&!didReceiveUpdate)return bailoutHooks(current,workInProgress2,renderLanes2),bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);return isHydrating&&Component&&pushMaterializedTreeId(workInProgress2),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,nextProps,renderLanes2),workInProgress2.child}function updateClassComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(prepareToReadContext(workInProgress2),workInProgress2.stateNode===null){var context=emptyContextObject,contextType=Component.contextType;typeof contextType==="object"&&contextType!==null&&(context=readContext(contextType)),context=new Component(nextProps,context),workInProgress2.memoizedState=context.state!==null&&context.state!==void 0?context.state:null,context.updater=classComponentUpdater,workInProgress2.stateNode=context,context._reactInternals=workInProgress2,context=workInProgress2.stateNode,context.props=nextProps,context.state=workInProgress2.memoizedState,context.refs={},initializeUpdateQueue(workInProgress2),contextType=Component.contextType,context.context=typeof contextType==="object"&&contextType!==null?readContext(contextType):emptyContextObject,context.state=workInProgress2.memoizedState,contextType=Component.getDerivedStateFromProps,typeof contextType==="function"&&(applyDerivedStateFromProps(workInProgress2,Component,contextType,nextProps),context.state=workInProgress2.memoizedState),typeof Component.getDerivedStateFromProps==="function"||typeof context.getSnapshotBeforeUpdate==="function"||typeof context.UNSAFE_componentWillMount!=="function"&&typeof context.componentWillMount!=="function"||(contextType=context.state,typeof context.componentWillMount==="function"&&context.componentWillMount(),typeof context.UNSAFE_componentWillMount==="function"&&context.UNSAFE_componentWillMount(),contextType!==context.state&&classComponentUpdater.enqueueReplaceState(context,context.state,null),processUpdateQueue(workInProgress2,nextProps,context,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction(),context.state=workInProgress2.memoizedState),typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308),nextProps=!0}else if(current===null){context=workInProgress2.stateNode;var unresolvedOldProps=workInProgress2.memoizedProps,oldProps=resolveClassComponentProps(Component,unresolvedOldProps);context.props=oldProps;var oldContext=context.context,contextType$jscomp$0=Component.contextType;contextType=emptyContextObject,typeof contextType$jscomp$0==="object"&&contextType$jscomp$0!==null&&(contextType=readContext(contextType$jscomp$0));var getDerivedStateFromProps=Component.getDerivedStateFromProps;contextType$jscomp$0=typeof getDerivedStateFromProps==="function"||typeof context.getSnapshotBeforeUpdate==="function",unresolvedOldProps=workInProgress2.pendingProps!==unresolvedOldProps,contextType$jscomp$0||typeof context.UNSAFE_componentWillReceiveProps!=="function"&&typeof context.componentWillReceiveProps!=="function"||(unresolvedOldProps||oldContext!==contextType)&&callComponentWillReceiveProps(workInProgress2,context,nextProps,contextType),hasForceUpdate=!1;var oldState=workInProgress2.memoizedState;context.state=oldState,processUpdateQueue(workInProgress2,nextProps,context,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction(),oldContext=workInProgress2.memoizedState,unresolvedOldProps||oldState!==oldContext||hasForceUpdate?(typeof getDerivedStateFromProps==="function"&&(applyDerivedStateFromProps(workInProgress2,Component,getDerivedStateFromProps,nextProps),oldContext=workInProgress2.memoizedState),(oldProps=hasForceUpdate||checkShouldComponentUpdate(workInProgress2,Component,oldProps,nextProps,oldState,oldContext,contextType))?(contextType$jscomp$0||typeof context.UNSAFE_componentWillMount!=="function"&&typeof context.componentWillMount!=="function"||(typeof context.componentWillMount==="function"&&context.componentWillMount(),typeof context.UNSAFE_componentWillMount==="function"&&context.UNSAFE_componentWillMount()),typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308)):(typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308),workInProgress2.memoizedProps=nextProps,workInProgress2.memoizedState=oldContext),context.props=nextProps,context.state=oldContext,context.context=contextType,nextProps=oldProps):(typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308),nextProps=!1)}else{context=workInProgress2.stateNode,cloneUpdateQueue(current,workInProgress2),contextType=workInProgress2.memoizedProps,contextType$jscomp$0=resolveClassComponentProps(Component,contextType),context.props=contextType$jscomp$0,getDerivedStateFromProps=workInProgress2.pendingProps,oldState=context.context,oldContext=Component.contextType,oldProps=emptyContextObject,typeof oldContext==="object"&&oldContext!==null&&(oldProps=readContext(oldContext)),unresolvedOldProps=Component.getDerivedStateFromProps,(oldContext=typeof unresolvedOldProps==="function"||typeof context.getSnapshotBeforeUpdate==="function")||typeof context.UNSAFE_componentWillReceiveProps!=="function"&&typeof context.componentWillReceiveProps!=="function"||(contextType!==getDerivedStateFromProps||oldState!==oldProps)&&callComponentWillReceiveProps(workInProgress2,context,nextProps,oldProps),hasForceUpdate=!1,oldState=workInProgress2.memoizedState,context.state=oldState,processUpdateQueue(workInProgress2,nextProps,context,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction();var newState=workInProgress2.memoizedState;contextType!==getDerivedStateFromProps||oldState!==newState||hasForceUpdate||current!==null&¤t.dependencies!==null&&checkIfContextChanged(current.dependencies)?(typeof unresolvedOldProps==="function"&&(applyDerivedStateFromProps(workInProgress2,Component,unresolvedOldProps,nextProps),newState=workInProgress2.memoizedState),(contextType$jscomp$0=hasForceUpdate||checkShouldComponentUpdate(workInProgress2,Component,contextType$jscomp$0,nextProps,oldState,newState,oldProps)||current!==null&¤t.dependencies!==null&&checkIfContextChanged(current.dependencies))?(oldContext||typeof context.UNSAFE_componentWillUpdate!=="function"&&typeof context.componentWillUpdate!=="function"||(typeof context.componentWillUpdate==="function"&&context.componentWillUpdate(nextProps,newState,oldProps),typeof context.UNSAFE_componentWillUpdate==="function"&&context.UNSAFE_componentWillUpdate(nextProps,newState,oldProps)),typeof context.componentDidUpdate==="function"&&(workInProgress2.flags|=4),typeof context.getSnapshotBeforeUpdate==="function"&&(workInProgress2.flags|=1024)):(typeof context.componentDidUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=4),typeof context.getSnapshotBeforeUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=1024),workInProgress2.memoizedProps=nextProps,workInProgress2.memoizedState=newState),context.props=nextProps,context.state=newState,context.context=oldProps,nextProps=contextType$jscomp$0):(typeof context.componentDidUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=4),typeof context.getSnapshotBeforeUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=1024),nextProps=!1)}return context=nextProps,markRef(current,workInProgress2),nextProps=(workInProgress2.flags&128)!==0,context||nextProps?(context=workInProgress2.stateNode,Component=nextProps&&typeof Component.getDerivedStateFromError!=="function"?null:context.render(),workInProgress2.flags|=1,current!==null&&nextProps?(workInProgress2.child=reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),workInProgress2.child=reconcileChildFibers(workInProgress2,null,Component,renderLanes2)):reconcileChildren(current,workInProgress2,Component,renderLanes2),workInProgress2.memoizedState=context.state,current=workInProgress2.child):current=bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2),current}function mountHostRootWithoutHydrating(current,workInProgress2,nextChildren,renderLanes2){return resetHydrationState(),workInProgress2.flags|=256,reconcileChildren(current,workInProgress2,nextChildren,renderLanes2),workInProgress2.child}function mountSuspenseOffscreenState(renderLanes2){return{baseLanes:renderLanes2,cachePool:getSuspendedCache()}}function getRemainingWorkInPrimaryTree(current,primaryTreeDidDefer,renderLanes2){return current=current!==null?current.childLanes&~renderLanes2:0,primaryTreeDidDefer&&(current|=workInProgressDeferredLane),current}function updateSuspenseComponent(current,workInProgress2,renderLanes2){var nextProps=workInProgress2.pendingProps,showFallback=!1,didSuspend=(workInProgress2.flags&128)!==0,JSCompiler_temp;if((JSCompiler_temp=didSuspend)||(JSCompiler_temp=current!==null&¤t.memoizedState===null?!1:(suspenseStackCursor.current&2)!==0),JSCompiler_temp&&(showFallback=!0,workInProgress2.flags&=-129),JSCompiler_temp=(workInProgress2.flags&32)!==0,workInProgress2.flags&=-33,current===null){if(isHydrating){if(showFallback?pushPrimaryTreeSuspenseHandler(workInProgress2):reuseSuspenseHandlerOnStack(workInProgress2),(current=nextHydratableInstance)?(current=canHydrateSuspenseInstance(current,rootOrSingletonContext),current!==null&&(workInProgress2.memoizedState={dehydrated:current,treeContext:treeContextProvider!==null?{id:treeContextId,overflow:treeContextOverflow}:null,retryLane:536870912,hydrationErrors:null},renderLanes2=createFiberFromDehydratedFragment(current),renderLanes2.return=workInProgress2,workInProgress2.child=renderLanes2,hydrationParentFiber=workInProgress2,nextHydratableInstance=null)):current=null,current===null)throw throwOnHydrationMismatch(workInProgress2);return isSuspenseInstanceFallback(current)?workInProgress2.lanes=32:workInProgress2.lanes=536870912,null}var nextPrimaryChildren=nextProps.children;if(nextProps=nextProps.fallback,showFallback)return reuseSuspenseHandlerOnStack(workInProgress2),showFallback=workInProgress2.mode,nextPrimaryChildren=mountWorkInProgressOffscreenFiber({mode:"hidden",children:nextPrimaryChildren},showFallback),nextProps=createFiberFromFragment(nextProps,showFallback,renderLanes2,null),nextPrimaryChildren.return=workInProgress2,nextProps.return=workInProgress2,nextPrimaryChildren.sibling=nextProps,workInProgress2.child=nextPrimaryChildren,nextProps=workInProgress2.child,nextProps.memoizedState=mountSuspenseOffscreenState(renderLanes2),nextProps.childLanes=getRemainingWorkInPrimaryTree(current,JSCompiler_temp,renderLanes2),workInProgress2.memoizedState=SUSPENDED_MARKER,bailoutOffscreenComponent(null,nextProps);return pushPrimaryTreeSuspenseHandler(workInProgress2),mountSuspensePrimaryChildren(workInProgress2,nextPrimaryChildren)}var prevState=current.memoizedState;if(prevState!==null&&(nextPrimaryChildren=prevState.dehydrated,nextPrimaryChildren!==null)){if(didSuspend)workInProgress2.flags&256?(pushPrimaryTreeSuspenseHandler(workInProgress2),workInProgress2.flags&=-257,workInProgress2=retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2)):workInProgress2.memoizedState!==null?(reuseSuspenseHandlerOnStack(workInProgress2),workInProgress2.child=current.child,workInProgress2.flags|=128,workInProgress2=null):(reuseSuspenseHandlerOnStack(workInProgress2),nextPrimaryChildren=nextProps.fallback,showFallback=workInProgress2.mode,nextProps=mountWorkInProgressOffscreenFiber({mode:"visible",children:nextProps.children},showFallback),nextPrimaryChildren=createFiberFromFragment(nextPrimaryChildren,showFallback,renderLanes2,null),nextPrimaryChildren.flags|=2,nextProps.return=workInProgress2,nextPrimaryChildren.return=workInProgress2,nextProps.sibling=nextPrimaryChildren,workInProgress2.child=nextProps,reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),nextProps=workInProgress2.child,nextProps.memoizedState=mountSuspenseOffscreenState(renderLanes2),nextProps.childLanes=getRemainingWorkInPrimaryTree(current,JSCompiler_temp,renderLanes2),workInProgress2.memoizedState=SUSPENDED_MARKER,workInProgress2=bailoutOffscreenComponent(null,nextProps));else if(pushPrimaryTreeSuspenseHandler(workInProgress2),isSuspenseInstanceFallback(nextPrimaryChildren))JSCompiler_temp=getSuspenseInstanceFallbackErrorDetails(nextPrimaryChildren).digest,nextProps=Error(formatProdErrorMessage(419)),nextProps.stack="",nextProps.digest=JSCompiler_temp,queueHydrationError({value:nextProps,source:null,stack:null}),workInProgress2=retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2);else if(didReceiveUpdate||propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),JSCompiler_temp=(renderLanes2¤t.childLanes)!==0,didReceiveUpdate||JSCompiler_temp){if(JSCompiler_temp=workInProgressRoot,JSCompiler_temp!==null&&(nextProps=getBumpedLaneForHydration(JSCompiler_temp,renderLanes2),nextProps!==0&&nextProps!==prevState.retryLane))throw prevState.retryLane=nextProps,enqueueConcurrentRenderForLane(current,nextProps),scheduleUpdateOnFiber(JSCompiler_temp,current,nextProps),SelectiveHydrationException;isSuspenseInstancePending(nextPrimaryChildren)||renderDidSuspendDelayIfPossible(),workInProgress2=retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2)}else isSuspenseInstancePending(nextPrimaryChildren)?(workInProgress2.flags|=192,workInProgress2.child=current.child,workInProgress2=null):(current=prevState.treeContext,supportsHydration&&(nextHydratableInstance=getFirstHydratableChildWithinSuspenseInstance(nextPrimaryChildren),hydrationParentFiber=workInProgress2,isHydrating=!0,hydrationErrors=null,rootOrSingletonContext=!1,current!==null&&restoreSuspendedTreeContext(workInProgress2,current)),workInProgress2=mountSuspensePrimaryChildren(workInProgress2,nextProps.children),workInProgress2.flags|=4096);return workInProgress2}if(showFallback)return reuseSuspenseHandlerOnStack(workInProgress2),nextPrimaryChildren=nextProps.fallback,showFallback=workInProgress2.mode,prevState=current.child,didSuspend=prevState.sibling,nextProps=createWorkInProgress(prevState,{mode:"hidden",children:nextProps.children}),nextProps.subtreeFlags=prevState.subtreeFlags&65011712,didSuspend!==null?nextPrimaryChildren=createWorkInProgress(didSuspend,nextPrimaryChildren):(nextPrimaryChildren=createFiberFromFragment(nextPrimaryChildren,showFallback,renderLanes2,null),nextPrimaryChildren.flags|=2),nextPrimaryChildren.return=workInProgress2,nextProps.return=workInProgress2,nextProps.sibling=nextPrimaryChildren,workInProgress2.child=nextProps,bailoutOffscreenComponent(null,nextProps),nextProps=workInProgress2.child,nextPrimaryChildren=current.child.memoizedState,nextPrimaryChildren===null?nextPrimaryChildren=mountSuspenseOffscreenState(renderLanes2):(showFallback=nextPrimaryChildren.cachePool,showFallback!==null?(prevState=isPrimaryRenderer?CacheContext._currentValue:CacheContext._currentValue2,showFallback=showFallback.parent!==prevState?{parent:prevState,pool:prevState}:showFallback):showFallback=getSuspendedCache(),nextPrimaryChildren={baseLanes:nextPrimaryChildren.baseLanes|renderLanes2,cachePool:showFallback}),nextProps.memoizedState=nextPrimaryChildren,nextProps.childLanes=getRemainingWorkInPrimaryTree(current,JSCompiler_temp,renderLanes2),workInProgress2.memoizedState=SUSPENDED_MARKER,bailoutOffscreenComponent(current.child,nextProps);return pushPrimaryTreeSuspenseHandler(workInProgress2),renderLanes2=current.child,current=renderLanes2.sibling,renderLanes2=createWorkInProgress(renderLanes2,{mode:"visible",children:nextProps.children}),renderLanes2.return=workInProgress2,renderLanes2.sibling=null,current!==null&&(JSCompiler_temp=workInProgress2.deletions,JSCompiler_temp===null?(workInProgress2.deletions=[current],workInProgress2.flags|=16):JSCompiler_temp.push(current)),workInProgress2.child=renderLanes2,workInProgress2.memoizedState=null,renderLanes2}function mountSuspensePrimaryChildren(workInProgress2,primaryChildren){return primaryChildren=mountWorkInProgressOffscreenFiber({mode:"visible",children:primaryChildren},workInProgress2.mode),primaryChildren.return=workInProgress2,workInProgress2.child=primaryChildren}function mountWorkInProgressOffscreenFiber(offscreenProps,mode){return offscreenProps=createFiber(22,offscreenProps,null,mode),offscreenProps.lanes=0,offscreenProps}function retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2){return reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),current=mountSuspensePrimaryChildren(workInProgress2,workInProgress2.pendingProps.children),current.flags|=2,workInProgress2.memoizedState=null,current}function scheduleSuspenseWorkOnFiber(fiber,renderLanes2,propagationRoot){fiber.lanes|=renderLanes2;var alternate=fiber.alternate;alternate!==null&&(alternate.lanes|=renderLanes2),scheduleContextWorkOnParentPath(fiber.return,renderLanes2,propagationRoot)}function initSuspenseListRenderState(workInProgress2,isBackwards,tail,lastContentRow,tailMode,treeForkCount2){var renderState=workInProgress2.memoizedState;renderState===null?workInProgress2.memoizedState={isBackwards,rendering:null,renderingStartTime:0,last:lastContentRow,tail,tailMode,treeForkCount:treeForkCount2}:(renderState.isBackwards=isBackwards,renderState.rendering=null,renderState.renderingStartTime=0,renderState.last=lastContentRow,renderState.tail=tail,renderState.tailMode=tailMode,renderState.treeForkCount=treeForkCount2)}function updateSuspenseListComponent(current,workInProgress2,renderLanes2){var nextProps=workInProgress2.pendingProps,revealOrder=nextProps.revealOrder,tailMode=nextProps.tail;nextProps=nextProps.children;var suspenseContext=suspenseStackCursor.current,shouldForceFallback=(suspenseContext&2)!==0;if(shouldForceFallback?(suspenseContext=suspenseContext&1|2,workInProgress2.flags|=128):suspenseContext&=1,push2(suspenseStackCursor,suspenseContext),reconcileChildren(current,workInProgress2,nextProps,renderLanes2),nextProps=isHydrating?treeForkCount:0,!shouldForceFallback&¤t!==null&&(current.flags&128)!==0)a:for(current=workInProgress2.child;current!==null;){if(current.tag===13)current.memoizedState!==null&&scheduleSuspenseWorkOnFiber(current,renderLanes2,workInProgress2);else if(current.tag===19)scheduleSuspenseWorkOnFiber(current,renderLanes2,workInProgress2);else if(current.child!==null){current.child.return=current,current=current.child;continue}if(current===workInProgress2)break a;for(;current.sibling===null;){if(current.return===null||current.return===workInProgress2)break a;current=current.return}current.sibling.return=current.return,current=current.sibling}switch(revealOrder){case"forwards":renderLanes2=workInProgress2.child;for(revealOrder=null;renderLanes2!==null;)current=renderLanes2.alternate,current!==null&&findFirstSuspended(current)===null&&(revealOrder=renderLanes2),renderLanes2=renderLanes2.sibling;renderLanes2=revealOrder,renderLanes2===null?(revealOrder=workInProgress2.child,workInProgress2.child=null):(revealOrder=renderLanes2.sibling,renderLanes2.sibling=null),initSuspenseListRenderState(workInProgress2,!1,revealOrder,renderLanes2,tailMode,nextProps);break;case"backwards":case"unstable_legacy-backwards":renderLanes2=null,revealOrder=workInProgress2.child;for(workInProgress2.child=null;revealOrder!==null;){if(current=revealOrder.alternate,current!==null&&findFirstSuspended(current)===null){workInProgress2.child=revealOrder;break}current=revealOrder.sibling,revealOrder.sibling=renderLanes2,renderLanes2=revealOrder,revealOrder=current}initSuspenseListRenderState(workInProgress2,!0,renderLanes2,null,tailMode,nextProps);break;case"together":initSuspenseListRenderState(workInProgress2,!1,null,null,void 0,nextProps);break;default:workInProgress2.memoizedState=null}return workInProgress2.child}function bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2){if(current!==null&&(workInProgress2.dependencies=current.dependencies),workInProgressRootSkippedLanes|=workInProgress2.lanes,(renderLanes2&workInProgress2.childLanes)===0)if(current!==null){if(propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),(renderLanes2&workInProgress2.childLanes)===0)return null}else return null;if(current!==null&&workInProgress2.child!==current.child)throw Error(formatProdErrorMessage(153));if(workInProgress2.child!==null){current=workInProgress2.child,renderLanes2=createWorkInProgress(current,current.pendingProps),workInProgress2.child=renderLanes2;for(renderLanes2.return=workInProgress2;current.sibling!==null;)current=current.sibling,renderLanes2=renderLanes2.sibling=createWorkInProgress(current,current.pendingProps),renderLanes2.return=workInProgress2;renderLanes2.sibling=null}return workInProgress2.child}function checkScheduledUpdateOrContext(current,renderLanes2){if((current.lanes&renderLanes2)!==0)return!0;return current=current.dependencies,current!==null&&checkIfContextChanged(current)?!0:!1}function attemptEarlyBailoutIfNoScheduledUpdate(current,workInProgress2,renderLanes2){switch(workInProgress2.tag){case 3:pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo),pushProvider(workInProgress2,CacheContext,current.memoizedState.cache),resetHydrationState();break;case 27:case 5:pushHostContext(workInProgress2);break;case 4:pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo);break;case 10:pushProvider(workInProgress2,workInProgress2.type,workInProgress2.memoizedProps.value);break;case 31:if(workInProgress2.memoizedState!==null)return workInProgress2.flags|=128,pushDehydratedActivitySuspenseHandler(workInProgress2),null;break;case 13:var state$82=workInProgress2.memoizedState;if(state$82!==null){if(state$82.dehydrated!==null)return pushPrimaryTreeSuspenseHandler(workInProgress2),workInProgress2.flags|=128,null;if((renderLanes2&workInProgress2.child.childLanes)!==0)return updateSuspenseComponent(current,workInProgress2,renderLanes2);return pushPrimaryTreeSuspenseHandler(workInProgress2),current=bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2),current!==null?current.sibling:null}pushPrimaryTreeSuspenseHandler(workInProgress2);break;case 19:var didSuspendBefore=(current.flags&128)!==0;if(state$82=(renderLanes2&workInProgress2.childLanes)!==0,state$82||(propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),state$82=(renderLanes2&workInProgress2.childLanes)!==0),didSuspendBefore){if(state$82)return updateSuspenseListComponent(current,workInProgress2,renderLanes2);workInProgress2.flags|=128}if(didSuspendBefore=workInProgress2.memoizedState,didSuspendBefore!==null&&(didSuspendBefore.rendering=null,didSuspendBefore.tail=null,didSuspendBefore.lastEffect=null),push2(suspenseStackCursor,suspenseStackCursor.current),state$82)break;else return null;case 22:return workInProgress2.lanes=0,updateOffscreenComponent(current,workInProgress2,renderLanes2,workInProgress2.pendingProps);case 24:pushProvider(workInProgress2,CacheContext,current.memoizedState.cache)}return bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2)}function beginWork(current,workInProgress2,renderLanes2){if(current!==null)if(current.memoizedProps!==workInProgress2.pendingProps)didReceiveUpdate=!0;else{if(!checkScheduledUpdateOrContext(current,renderLanes2)&&(workInProgress2.flags&128)===0)return didReceiveUpdate=!1,attemptEarlyBailoutIfNoScheduledUpdate(current,workInProgress2,renderLanes2);didReceiveUpdate=(current.flags&131072)!==0?!0:!1}else didReceiveUpdate=!1,isHydrating&&(workInProgress2.flags&1048576)!==0&&pushTreeId(workInProgress2,treeForkCount,workInProgress2.index);switch(workInProgress2.lanes=0,workInProgress2.tag){case 16:a:{var props=workInProgress2.pendingProps;if(current=resolveLazy(workInProgress2.elementType),workInProgress2.type=current,typeof current==="function")shouldConstruct(current)?(props=resolveClassComponentProps(current,props),workInProgress2.tag=1,workInProgress2=updateClassComponent(null,workInProgress2,current,props,renderLanes2)):(workInProgress2.tag=0,workInProgress2=updateFunctionComponent(null,workInProgress2,current,props,renderLanes2));else{if(current!==void 0&¤t!==null){var $$typeof=current.$$typeof;if($$typeof===REACT_FORWARD_REF_TYPE){workInProgress2.tag=11,workInProgress2=updateForwardRef(null,workInProgress2,current,props,renderLanes2);break a}else if($$typeof===REACT_MEMO_TYPE){workInProgress2.tag=14,workInProgress2=updateMemoComponent(null,workInProgress2,current,props,renderLanes2);break a}}throw workInProgress2=getComponentNameFromType(current)||current,Error(formatProdErrorMessage(306,workInProgress2,""))}}return workInProgress2;case 0:return updateFunctionComponent(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 1:return props=workInProgress2.type,$$typeof=resolveClassComponentProps(props,workInProgress2.pendingProps),updateClassComponent(current,workInProgress2,props,$$typeof,renderLanes2);case 3:a:{if(pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo),current===null)throw Error(formatProdErrorMessage(387));var nextProps=workInProgress2.pendingProps;$$typeof=workInProgress2.memoizedState,props=$$typeof.element,cloneUpdateQueue(current,workInProgress2),processUpdateQueue(workInProgress2,nextProps,null,renderLanes2);var nextState=workInProgress2.memoizedState;if(nextProps=nextState.cache,pushProvider(workInProgress2,CacheContext,nextProps),nextProps!==$$typeof.cache&&propagateContextChanges(workInProgress2,[CacheContext],renderLanes2,!0),suspendIfUpdateReadFromEntangledAsyncAction(),nextProps=nextState.element,supportsHydration&&$$typeof.isDehydrated)if($$typeof={element:nextProps,isDehydrated:!1,cache:nextState.cache},workInProgress2.updateQueue.baseState=$$typeof,workInProgress2.memoizedState=$$typeof,workInProgress2.flags&256){workInProgress2=mountHostRootWithoutHydrating(current,workInProgress2,nextProps,renderLanes2);break a}else if(nextProps!==props){props=createCapturedValueAtFiber(Error(formatProdErrorMessage(424)),workInProgress2),queueHydrationError(props),workInProgress2=mountHostRootWithoutHydrating(current,workInProgress2,nextProps,renderLanes2);break a}else for(supportsHydration&&(nextHydratableInstance=getFirstHydratableChildWithinContainer(workInProgress2.stateNode.containerInfo),hydrationParentFiber=workInProgress2,isHydrating=!0,hydrationErrors=null,rootOrSingletonContext=!0),renderLanes2=mountChildFibers(workInProgress2,null,nextProps,renderLanes2),workInProgress2.child=renderLanes2;renderLanes2;)renderLanes2.flags=renderLanes2.flags&-3|4096,renderLanes2=renderLanes2.sibling;else{if(resetHydrationState(),nextProps===props){workInProgress2=bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);break a}reconcileChildren(current,workInProgress2,nextProps,renderLanes2)}workInProgress2=workInProgress2.child}return workInProgress2;case 26:if(supportsResources)return markRef(current,workInProgress2),current===null?(renderLanes2=getResource(workInProgress2.type,null,workInProgress2.pendingProps,null))?workInProgress2.memoizedState=renderLanes2:isHydrating||(workInProgress2.stateNode=createHoistableInstance(workInProgress2.type,workInProgress2.pendingProps,rootInstanceStackCursor.current,workInProgress2)):workInProgress2.memoizedState=getResource(workInProgress2.type,current.memoizedProps,workInProgress2.pendingProps,current.memoizedState),null;case 27:if(supportsSingletons)return pushHostContext(workInProgress2),current===null&&supportsSingletons&&isHydrating&&(props=workInProgress2.stateNode=resolveSingletonInstance(workInProgress2.type,workInProgress2.pendingProps,rootInstanceStackCursor.current,contextStackCursor.current,!1),hydrationParentFiber=workInProgress2,rootOrSingletonContext=!0,nextHydratableInstance=getFirstHydratableChildWithinSingleton(workInProgress2.type,props,nextHydratableInstance)),reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),markRef(current,workInProgress2),current===null&&(workInProgress2.flags|=4194304),workInProgress2.child;case 5:if(current===null&&isHydrating){if(validateHydratableInstance(workInProgress2.type,workInProgress2.pendingProps,contextStackCursor.current),$$typeof=props=nextHydratableInstance)props=canHydrateInstance(props,workInProgress2.type,workInProgress2.pendingProps,rootOrSingletonContext),props!==null?(workInProgress2.stateNode=props,hydrationParentFiber=workInProgress2,nextHydratableInstance=getFirstHydratableChild(props),rootOrSingletonContext=!1,$$typeof=!0):$$typeof=!1;$$typeof||throwOnHydrationMismatch(workInProgress2)}return pushHostContext(workInProgress2),$$typeof=workInProgress2.type,nextProps=workInProgress2.pendingProps,nextState=current!==null?current.memoizedProps:null,props=nextProps.children,shouldSetTextContent($$typeof,nextProps)?props=null:nextState!==null&&shouldSetTextContent($$typeof,nextState)&&(workInProgress2.flags|=32),workInProgress2.memoizedState!==null&&($$typeof=renderWithHooks(current,workInProgress2,TransitionAwareHostComponent,null,null,renderLanes2),isPrimaryRenderer?HostTransitionContext._currentValue=$$typeof:HostTransitionContext._currentValue2=$$typeof),markRef(current,workInProgress2),reconcileChildren(current,workInProgress2,props,renderLanes2),workInProgress2.child;case 6:if(current===null&&isHydrating){if(validateHydratableTextInstance(workInProgress2.pendingProps,contextStackCursor.current),current=renderLanes2=nextHydratableInstance)renderLanes2=canHydrateTextInstance(renderLanes2,workInProgress2.pendingProps,rootOrSingletonContext),renderLanes2!==null?(workInProgress2.stateNode=renderLanes2,hydrationParentFiber=workInProgress2,nextHydratableInstance=null,current=!0):current=!1;current||throwOnHydrationMismatch(workInProgress2)}return null;case 13:return updateSuspenseComponent(current,workInProgress2,renderLanes2);case 4:return pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo),props=workInProgress2.pendingProps,current===null?workInProgress2.child=reconcileChildFibers(workInProgress2,null,props,renderLanes2):reconcileChildren(current,workInProgress2,props,renderLanes2),workInProgress2.child;case 11:return updateForwardRef(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 7:return reconcileChildren(current,workInProgress2,workInProgress2.pendingProps,renderLanes2),workInProgress2.child;case 8:return reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),workInProgress2.child;case 12:return reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),workInProgress2.child;case 10:return props=workInProgress2.pendingProps,pushProvider(workInProgress2,workInProgress2.type,props.value),reconcileChildren(current,workInProgress2,props.children,renderLanes2),workInProgress2.child;case 9:return $$typeof=workInProgress2.type._context,props=workInProgress2.pendingProps.children,prepareToReadContext(workInProgress2),$$typeof=readContext($$typeof),props=props($$typeof),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,props,renderLanes2),workInProgress2.child;case 14:return updateMemoComponent(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 15:return updateSimpleMemoComponent(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 19:return updateSuspenseListComponent(current,workInProgress2,renderLanes2);case 31:return updateActivityComponent(current,workInProgress2,renderLanes2);case 22:return updateOffscreenComponent(current,workInProgress2,renderLanes2,workInProgress2.pendingProps);case 24:return prepareToReadContext(workInProgress2),props=readContext(CacheContext),current===null?($$typeof=peekCacheFromPool(),$$typeof===null&&($$typeof=workInProgressRoot,nextProps=createCache(),$$typeof.pooledCache=nextProps,nextProps.refCount++,nextProps!==null&&($$typeof.pooledCacheLanes|=renderLanes2),$$typeof=nextProps),workInProgress2.memoizedState={parent:props,cache:$$typeof},initializeUpdateQueue(workInProgress2),pushProvider(workInProgress2,CacheContext,$$typeof)):((current.lanes&renderLanes2)!==0&&(cloneUpdateQueue(current,workInProgress2),processUpdateQueue(workInProgress2,null,null,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction()),$$typeof=current.memoizedState,nextProps=workInProgress2.memoizedState,$$typeof.parent!==props?($$typeof={parent:props,cache:props},workInProgress2.memoizedState=$$typeof,workInProgress2.lanes===0&&(workInProgress2.memoizedState=workInProgress2.updateQueue.baseState=$$typeof),pushProvider(workInProgress2,CacheContext,props)):(props=nextProps.cache,pushProvider(workInProgress2,CacheContext,props),props!==$$typeof.cache&&propagateContextChanges(workInProgress2,[CacheContext],renderLanes2,!0))),reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),workInProgress2.child;case 29:throw workInProgress2.pendingProps}throw Error(formatProdErrorMessage(156,workInProgress2.tag))}function markUpdate(workInProgress2){workInProgress2.flags|=4}function markCloned(workInProgress2){supportsPersistence&&(workInProgress2.flags|=8)}function doesRequireClone(current,completedWork){if(current!==null&¤t.child===completedWork.child)return!1;if((completedWork.flags&16)!==0)return!0;for(current=completedWork.child;current!==null;){if((current.flags&8218)!==0||(current.subtreeFlags&8218)!==0)return!0;current=current.sibling}return!1}function appendAllChildren(parent,workInProgress2,needsVisibilityToggle,isHidden){if(supportsMutation)for(needsVisibilityToggle=workInProgress2.child;needsVisibilityToggle!==null;){if(needsVisibilityToggle.tag===5||needsVisibilityToggle.tag===6)appendInitialChild(parent,needsVisibilityToggle.stateNode);else if(!(needsVisibilityToggle.tag===4||supportsSingletons&&needsVisibilityToggle.tag===27)&&needsVisibilityToggle.child!==null){needsVisibilityToggle.child.return=needsVisibilityToggle,needsVisibilityToggle=needsVisibilityToggle.child;continue}if(needsVisibilityToggle===workInProgress2)break;for(;needsVisibilityToggle.sibling===null;){if(needsVisibilityToggle.return===null||needsVisibilityToggle.return===workInProgress2)return;needsVisibilityToggle=needsVisibilityToggle.return}needsVisibilityToggle.sibling.return=needsVisibilityToggle.return,needsVisibilityToggle=needsVisibilityToggle.sibling}else if(supportsPersistence)for(var node$85=workInProgress2.child;node$85!==null;){if(node$85.tag===5){var instance=node$85.stateNode;needsVisibilityToggle&&isHidden&&(instance=cloneHiddenInstance(instance,node$85.type,node$85.memoizedProps)),appendInitialChild(parent,instance)}else if(node$85.tag===6)instance=node$85.stateNode,needsVisibilityToggle&&isHidden&&(instance=cloneHiddenTextInstance(instance,node$85.memoizedProps)),appendInitialChild(parent,instance);else if(node$85.tag!==4){if(node$85.tag===22&&node$85.memoizedState!==null)instance=node$85.child,instance!==null&&(instance.return=node$85),appendAllChildren(parent,node$85,!0,!0);else if(node$85.child!==null){node$85.child.return=node$85,node$85=node$85.child;continue}}if(node$85===workInProgress2)break;for(;node$85.sibling===null;){if(node$85.return===null||node$85.return===workInProgress2)return;node$85=node$85.return}node$85.sibling.return=node$85.return,node$85=node$85.sibling}}function appendAllChildrenToContainer(containerChildSet,workInProgress2,needsVisibilityToggle,isHidden){var hasOffscreenComponentChild=!1;if(supportsPersistence)for(var node=workInProgress2.child;node!==null;){if(node.tag===5){var instance=node.stateNode;needsVisibilityToggle&&isHidden&&(instance=cloneHiddenInstance(instance,node.type,node.memoizedProps)),appendChildToContainerChildSet(containerChildSet,instance)}else if(node.tag===6)instance=node.stateNode,needsVisibilityToggle&&isHidden&&(instance=cloneHiddenTextInstance(instance,node.memoizedProps)),appendChildToContainerChildSet(containerChildSet,instance);else if(node.tag!==4){if(node.tag===22&&node.memoizedState!==null)hasOffscreenComponentChild=node.child,hasOffscreenComponentChild!==null&&(hasOffscreenComponentChild.return=node),appendAllChildrenToContainer(containerChildSet,node,!0,!0),hasOffscreenComponentChild=!0;else if(node.child!==null){node.child.return=node,node=node.child;continue}}if(node===workInProgress2)break;for(;node.sibling===null;){if(node.return===null||node.return===workInProgress2)return hasOffscreenComponentChild;node=node.return}node.sibling.return=node.return,node=node.sibling}return hasOffscreenComponentChild}function updateHostContainer(current,workInProgress2){if(supportsPersistence&&doesRequireClone(current,workInProgress2)){current=workInProgress2.stateNode;var container=current.containerInfo,newChildSet=createContainerChildSet();appendAllChildrenToContainer(newChildSet,workInProgress2,!1,!1),current.pendingChildren=newChildSet,markUpdate(workInProgress2),finalizeContainerChildren(container,newChildSet)}}function updateHostComponent(current,workInProgress2,type,newProps){if(supportsMutation)current.memoizedProps!==newProps&&markUpdate(workInProgress2);else if(supportsPersistence){var{stateNode:currentInstance,memoizedProps:oldProps$88}=current;if((current=doesRequireClone(current,workInProgress2))||oldProps$88!==newProps){var currentHostContext=contextStackCursor.current;oldProps$88=cloneInstance(currentInstance,type,oldProps$88,newProps,!current,null),oldProps$88===currentInstance?workInProgress2.stateNode=currentInstance:(markCloned(workInProgress2),finalizeInitialChildren(oldProps$88,type,newProps,currentHostContext)&&markUpdate(workInProgress2),workInProgress2.stateNode=oldProps$88,current&&appendAllChildren(oldProps$88,workInProgress2,!1,!1))}else workInProgress2.stateNode=currentInstance}}function preloadInstanceAndSuspendIfNeeded(workInProgress2,type,oldProps,newProps,renderLanes2){if((workInProgress2.mode&32)!==0&&(oldProps===null?maySuspendCommit(type,newProps):maySuspendCommitOnUpdate(type,oldProps,newProps))){if(workInProgress2.flags|=16777216,(renderLanes2&335544128)===renderLanes2||maySuspendCommitInSyncRender(type,newProps))if(preloadInstance(workInProgress2.stateNode,type,newProps))workInProgress2.flags|=8192;else if(shouldRemainOnPreviousScreen())workInProgress2.flags|=8192;else throw suspendedThenable=noopSuspenseyCommitThenable,SuspenseyCommitException}else workInProgress2.flags&=-16777217}function preloadResourceAndSuspendIfNeeded(workInProgress2,resource){if(mayResourceSuspendCommit(resource)){if(workInProgress2.flags|=16777216,!preloadResource(resource))if(shouldRemainOnPreviousScreen())workInProgress2.flags|=8192;else throw suspendedThenable=noopSuspenseyCommitThenable,SuspenseyCommitException}else workInProgress2.flags&=-16777217}function scheduleRetryEffect(workInProgress2,retryQueue){retryQueue!==null&&(workInProgress2.flags|=4),workInProgress2.flags&16384&&(retryQueue=workInProgress2.tag!==22?claimNextRetryLane():536870912,workInProgress2.lanes|=retryQueue,workInProgressSuspendedRetryLanes|=retryQueue)}function cutOffTailIfNeeded(renderState,hasRenderedATailFallback){if(!isHydrating)switch(renderState.tailMode){case"hidden":hasRenderedATailFallback=renderState.tail;for(var lastTailNode=null;hasRenderedATailFallback!==null;)hasRenderedATailFallback.alternate!==null&&(lastTailNode=hasRenderedATailFallback),hasRenderedATailFallback=hasRenderedATailFallback.sibling;lastTailNode===null?renderState.tail=null:lastTailNode.sibling=null;break;case"collapsed":lastTailNode=renderState.tail;for(var lastTailNode$90=null;lastTailNode!==null;)lastTailNode.alternate!==null&&(lastTailNode$90=lastTailNode),lastTailNode=lastTailNode.sibling;lastTailNode$90===null?hasRenderedATailFallback||renderState.tail===null?renderState.tail=null:renderState.tail.sibling=null:lastTailNode$90.sibling=null}}function bubbleProperties(completedWork){var didBailout=completedWork.alternate!==null&&completedWork.alternate.child===completedWork.child,newChildLanes=0,subtreeFlags=0;if(didBailout)for(var child$91=completedWork.child;child$91!==null;)newChildLanes|=child$91.lanes|child$91.childLanes,subtreeFlags|=child$91.subtreeFlags&65011712,subtreeFlags|=child$91.flags&65011712,child$91.return=completedWork,child$91=child$91.sibling;else for(child$91=completedWork.child;child$91!==null;)newChildLanes|=child$91.lanes|child$91.childLanes,subtreeFlags|=child$91.subtreeFlags,subtreeFlags|=child$91.flags,child$91.return=completedWork,child$91=child$91.sibling;return completedWork.subtreeFlags|=subtreeFlags,completedWork.childLanes=newChildLanes,didBailout}function completeWork(current,workInProgress2,renderLanes2){var newProps=workInProgress2.pendingProps;switch(popTreeContext(workInProgress2),workInProgress2.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return bubbleProperties(workInProgress2),null;case 1:return bubbleProperties(workInProgress2),null;case 3:if(renderLanes2=workInProgress2.stateNode,newProps=null,current!==null&&(newProps=current.memoizedState.cache),workInProgress2.memoizedState.cache!==newProps&&(workInProgress2.flags|=2048),popProvider(CacheContext),popHostContainer(),renderLanes2.pendingContext&&(renderLanes2.context=renderLanes2.pendingContext,renderLanes2.pendingContext=null),current===null||current.child===null)popHydrationState(workInProgress2)?markUpdate(workInProgress2):current===null||current.memoizedState.isDehydrated&&(workInProgress2.flags&256)===0||(workInProgress2.flags|=1024,upgradeHydrationErrorsToRecoverable());return updateHostContainer(current,workInProgress2),bubbleProperties(workInProgress2),null;case 26:if(supportsResources){var{type,memoizedState:nextResource}=workInProgress2;return current===null?(markUpdate(workInProgress2),nextResource!==null?(bubbleProperties(workInProgress2),preloadResourceAndSuspendIfNeeded(workInProgress2,nextResource)):(bubbleProperties(workInProgress2),preloadInstanceAndSuspendIfNeeded(workInProgress2,type,null,newProps,renderLanes2))):nextResource?nextResource!==current.memoizedState?(markUpdate(workInProgress2),bubbleProperties(workInProgress2),preloadResourceAndSuspendIfNeeded(workInProgress2,nextResource)):(bubbleProperties(workInProgress2),workInProgress2.flags&=-16777217):(nextResource=current.memoizedProps,supportsMutation?nextResource!==newProps&&markUpdate(workInProgress2):updateHostComponent(current,workInProgress2,type,newProps),bubbleProperties(workInProgress2),preloadInstanceAndSuspendIfNeeded(workInProgress2,type,nextResource,newProps,renderLanes2)),null}case 27:if(supportsSingletons){if(popHostContext(workInProgress2),renderLanes2=rootInstanceStackCursor.current,type=workInProgress2.type,current!==null&&workInProgress2.stateNode!=null)supportsMutation?current.memoizedProps!==newProps&&markUpdate(workInProgress2):updateHostComponent(current,workInProgress2,type,newProps);else{if(!newProps){if(workInProgress2.stateNode===null)throw Error(formatProdErrorMessage(166));return bubbleProperties(workInProgress2),null}current=contextStackCursor.current,popHydrationState(workInProgress2)?prepareToHydrateHostInstance(workInProgress2,current):(current=resolveSingletonInstance(type,newProps,renderLanes2,current,!0),workInProgress2.stateNode=current,markUpdate(workInProgress2))}return bubbleProperties(workInProgress2),null}case 5:if(popHostContext(workInProgress2),type=workInProgress2.type,current!==null&&workInProgress2.stateNode!=null)updateHostComponent(current,workInProgress2,type,newProps);else{if(!newProps){if(workInProgress2.stateNode===null)throw Error(formatProdErrorMessage(166));return bubbleProperties(workInProgress2),null}if(nextResource=contextStackCursor.current,popHydrationState(workInProgress2))prepareToHydrateHostInstance(workInProgress2,nextResource),finalizeHydratedChildren(workInProgress2.stateNode,type,newProps,nextResource)&&(workInProgress2.flags|=64);else{var instance$101=createInstance(type,newProps,rootInstanceStackCursor.current,nextResource,workInProgress2);markCloned(workInProgress2),appendAllChildren(instance$101,workInProgress2,!1,!1),workInProgress2.stateNode=instance$101,finalizeInitialChildren(instance$101,type,newProps,nextResource)&&markUpdate(workInProgress2)}}return bubbleProperties(workInProgress2),preloadInstanceAndSuspendIfNeeded(workInProgress2,workInProgress2.type,current===null?null:current.memoizedProps,workInProgress2.pendingProps,renderLanes2),null;case 6:if(current&&workInProgress2.stateNode!=null)renderLanes2=current.memoizedProps,supportsMutation?renderLanes2!==newProps&&markUpdate(workInProgress2):supportsPersistence&&(renderLanes2!==newProps?(current=rootInstanceStackCursor.current,renderLanes2=contextStackCursor.current,markCloned(workInProgress2),workInProgress2.stateNode=createTextInstance(newProps,current,renderLanes2,workInProgress2)):workInProgress2.stateNode=current.stateNode);else{if(typeof newProps!=="string"&&workInProgress2.stateNode===null)throw Error(formatProdErrorMessage(166));if(current=rootInstanceStackCursor.current,renderLanes2=contextStackCursor.current,popHydrationState(workInProgress2)){if(!supportsHydration)throw Error(formatProdErrorMessage(176));if(current=workInProgress2.stateNode,renderLanes2=workInProgress2.memoizedProps,newProps=null,type=hydrationParentFiber,type!==null)switch(type.tag){case 27:case 5:newProps=type.memoizedProps}hydrateTextInstance(current,renderLanes2,workInProgress2,newProps)||throwOnHydrationMismatch(workInProgress2,!0)}else markCloned(workInProgress2),workInProgress2.stateNode=createTextInstance(newProps,current,renderLanes2,workInProgress2)}return bubbleProperties(workInProgress2),null;case 31:if(renderLanes2=workInProgress2.memoizedState,current===null||current.memoizedState!==null){if(newProps=popHydrationState(workInProgress2),renderLanes2!==null){if(current===null){if(!newProps)throw Error(formatProdErrorMessage(318));if(!supportsHydration)throw Error(formatProdErrorMessage(556));if(current=workInProgress2.memoizedState,current=current!==null?current.dehydrated:null,!current)throw Error(formatProdErrorMessage(557));hydrateActivityInstance(current,workInProgress2)}else resetHydrationState(),(workInProgress2.flags&128)===0&&(workInProgress2.memoizedState=null),workInProgress2.flags|=4;bubbleProperties(workInProgress2),current=!1}else renderLanes2=upgradeHydrationErrorsToRecoverable(),current!==null&¤t.memoizedState!==null&&(current.memoizedState.hydrationErrors=renderLanes2),current=!0;if(!current){if(workInProgress2.flags&256)return popSuspenseHandler(workInProgress2),workInProgress2;return popSuspenseHandler(workInProgress2),null}if((workInProgress2.flags&128)!==0)throw Error(formatProdErrorMessage(558))}return bubbleProperties(workInProgress2),null;case 13:if(newProps=workInProgress2.memoizedState,current===null||current.memoizedState!==null&¤t.memoizedState.dehydrated!==null){if(type=popHydrationState(workInProgress2),newProps!==null&&newProps.dehydrated!==null){if(current===null){if(!type)throw Error(formatProdErrorMessage(318));if(!supportsHydration)throw Error(formatProdErrorMessage(344));if(type=workInProgress2.memoizedState,type=type!==null?type.dehydrated:null,!type)throw Error(formatProdErrorMessage(317));hydrateSuspenseInstance(type,workInProgress2)}else resetHydrationState(),(workInProgress2.flags&128)===0&&(workInProgress2.memoizedState=null),workInProgress2.flags|=4;bubbleProperties(workInProgress2),type=!1}else type=upgradeHydrationErrorsToRecoverable(),current!==null&¤t.memoizedState!==null&&(current.memoizedState.hydrationErrors=type),type=!0;if(!type){if(workInProgress2.flags&256)return popSuspenseHandler(workInProgress2),workInProgress2;return popSuspenseHandler(workInProgress2),null}}if(popSuspenseHandler(workInProgress2),(workInProgress2.flags&128)!==0)return workInProgress2.lanes=renderLanes2,workInProgress2;return renderLanes2=newProps!==null,current=current!==null&¤t.memoizedState!==null,renderLanes2&&(newProps=workInProgress2.child,type=null,newProps.alternate!==null&&newProps.alternate.memoizedState!==null&&newProps.alternate.memoizedState.cachePool!==null&&(type=newProps.alternate.memoizedState.cachePool.pool),nextResource=null,newProps.memoizedState!==null&&newProps.memoizedState.cachePool!==null&&(nextResource=newProps.memoizedState.cachePool.pool),nextResource!==type&&(newProps.flags|=2048)),renderLanes2!==current&&renderLanes2&&(workInProgress2.child.flags|=8192),scheduleRetryEffect(workInProgress2,workInProgress2.updateQueue),bubbleProperties(workInProgress2),null;case 4:return popHostContainer(),updateHostContainer(current,workInProgress2),current===null&&preparePortalMount(workInProgress2.stateNode.containerInfo),bubbleProperties(workInProgress2),null;case 10:return popProvider(workInProgress2.type),bubbleProperties(workInProgress2),null;case 19:if(pop2(suspenseStackCursor),newProps=workInProgress2.memoizedState,newProps===null)return bubbleProperties(workInProgress2),null;if(type=(workInProgress2.flags&128)!==0,nextResource=newProps.rendering,nextResource===null)if(type)cutOffTailIfNeeded(newProps,!1);else{if(workInProgressRootExitStatus!==0||current!==null&&(current.flags&128)!==0)for(current=workInProgress2.child;current!==null;){if(nextResource=findFirstSuspended(current),nextResource!==null){workInProgress2.flags|=128,cutOffTailIfNeeded(newProps,!1),current=nextResource.updateQueue,workInProgress2.updateQueue=current,scheduleRetryEffect(workInProgress2,current),workInProgress2.subtreeFlags=0,current=renderLanes2;for(renderLanes2=workInProgress2.child;renderLanes2!==null;)resetWorkInProgress(renderLanes2,current),renderLanes2=renderLanes2.sibling;return push2(suspenseStackCursor,suspenseStackCursor.current&1|2),isHydrating&&pushTreeFork(workInProgress2,newProps.treeForkCount),workInProgress2.child}current=current.sibling}newProps.tail!==null&&now()>workInProgressRootRenderTargetTime&&(workInProgress2.flags|=128,type=!0,cutOffTailIfNeeded(newProps,!1),workInProgress2.lanes=4194304)}else{if(!type)if(current=findFirstSuspended(nextResource),current!==null){if(workInProgress2.flags|=128,type=!0,current=current.updateQueue,workInProgress2.updateQueue=current,scheduleRetryEffect(workInProgress2,current),cutOffTailIfNeeded(newProps,!0),newProps.tail===null&&newProps.tailMode==="hidden"&&!nextResource.alternate&&!isHydrating)return bubbleProperties(workInProgress2),null}else 2*now()-newProps.renderingStartTime>workInProgressRootRenderTargetTime&&renderLanes2!==536870912&&(workInProgress2.flags|=128,type=!0,cutOffTailIfNeeded(newProps,!1),workInProgress2.lanes=4194304);newProps.isBackwards?(nextResource.sibling=workInProgress2.child,workInProgress2.child=nextResource):(current=newProps.last,current!==null?current.sibling=nextResource:workInProgress2.child=nextResource,newProps.last=nextResource)}if(newProps.tail!==null)return current=newProps.tail,newProps.rendering=current,newProps.tail=current.sibling,newProps.renderingStartTime=now(),current.sibling=null,renderLanes2=suspenseStackCursor.current,push2(suspenseStackCursor,type?renderLanes2&1|2:renderLanes2&1),isHydrating&&pushTreeFork(workInProgress2,newProps.treeForkCount),current;return bubbleProperties(workInProgress2),null;case 22:case 23:return popSuspenseHandler(workInProgress2),popHiddenContext(),newProps=workInProgress2.memoizedState!==null,current!==null?current.memoizedState!==null!==newProps&&(workInProgress2.flags|=8192):newProps&&(workInProgress2.flags|=8192),newProps?(renderLanes2&536870912)!==0&&(workInProgress2.flags&128)===0&&(bubbleProperties(workInProgress2),workInProgress2.subtreeFlags&6&&(workInProgress2.flags|=8192)):bubbleProperties(workInProgress2),renderLanes2=workInProgress2.updateQueue,renderLanes2!==null&&scheduleRetryEffect(workInProgress2,renderLanes2.retryQueue),renderLanes2=null,current!==null&¤t.memoizedState!==null&¤t.memoizedState.cachePool!==null&&(renderLanes2=current.memoizedState.cachePool.pool),newProps=null,workInProgress2.memoizedState!==null&&workInProgress2.memoizedState.cachePool!==null&&(newProps=workInProgress2.memoizedState.cachePool.pool),newProps!==renderLanes2&&(workInProgress2.flags|=2048),current!==null&&pop2(resumedCache),null;case 24:return renderLanes2=null,current!==null&&(renderLanes2=current.memoizedState.cache),workInProgress2.memoizedState.cache!==renderLanes2&&(workInProgress2.flags|=2048),popProvider(CacheContext),bubbleProperties(workInProgress2),null;case 25:return null;case 30:return null}throw Error(formatProdErrorMessage(156,workInProgress2.tag))}function unwindWork(current,workInProgress2){switch(popTreeContext(workInProgress2),workInProgress2.tag){case 1:return current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 3:return popProvider(CacheContext),popHostContainer(),current=workInProgress2.flags,(current&65536)!==0&&(current&128)===0?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 26:case 27:case 5:return popHostContext(workInProgress2),null;case 31:if(workInProgress2.memoizedState!==null){if(popSuspenseHandler(workInProgress2),workInProgress2.alternate===null)throw Error(formatProdErrorMessage(340));resetHydrationState()}return current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 13:if(popSuspenseHandler(workInProgress2),current=workInProgress2.memoizedState,current!==null&¤t.dehydrated!==null){if(workInProgress2.alternate===null)throw Error(formatProdErrorMessage(340));resetHydrationState()}return current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 19:return pop2(suspenseStackCursor),null;case 4:return popHostContainer(),null;case 10:return popProvider(workInProgress2.type),null;case 22:case 23:return popSuspenseHandler(workInProgress2),popHiddenContext(),current!==null&&pop2(resumedCache),current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 24:return popProvider(CacheContext),null;case 25:return null;default:return null}}function unwindInterruptedWork(current,interruptedWork){switch(popTreeContext(interruptedWork),interruptedWork.tag){case 3:popProvider(CacheContext),popHostContainer();break;case 26:case 27:case 5:popHostContext(interruptedWork);break;case 4:popHostContainer();break;case 31:interruptedWork.memoizedState!==null&&popSuspenseHandler(interruptedWork);break;case 13:popSuspenseHandler(interruptedWork);break;case 19:pop2(suspenseStackCursor);break;case 10:popProvider(interruptedWork.type);break;case 22:case 23:popSuspenseHandler(interruptedWork),popHiddenContext(),current!==null&&pop2(resumedCache);break;case 24:popProvider(CacheContext)}}function commitHookEffectListMount(flags,finishedWork){try{var updateQueue=finishedWork.updateQueue,lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;updateQueue=firstEffect;do{if((updateQueue.tag&flags)===flags){lastEffect=void 0;var{create,inst}=updateQueue;lastEffect=create(),inst.destroy=lastEffect}updateQueue=updateQueue.next}while(updateQueue!==firstEffect)}}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitHookEffectListUnmount(flags,finishedWork,nearestMountedAncestor$jscomp$0){try{var updateQueue=finishedWork.updateQueue,lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;updateQueue=firstEffect;do{if((updateQueue.tag&flags)===flags){var inst=updateQueue.inst,destroy=inst.destroy;if(destroy!==void 0){inst.destroy=void 0,lastEffect=finishedWork;var nearestMountedAncestor=nearestMountedAncestor$jscomp$0,destroy_=destroy;try{destroy_()}catch(error){captureCommitPhaseError(lastEffect,nearestMountedAncestor,error)}}}updateQueue=updateQueue.next}while(updateQueue!==firstEffect)}}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitClassCallbacks(finishedWork){var updateQueue=finishedWork.updateQueue;if(updateQueue!==null){var instance=finishedWork.stateNode;try{commitCallbacks(updateQueue,instance)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}function safelyCallComponentWillUnmount(current,nearestMountedAncestor,instance){instance.props=resolveClassComponentProps(current.type,current.memoizedProps),instance.state=current.memoizedState;try{instance.componentWillUnmount()}catch(error){captureCommitPhaseError(current,nearestMountedAncestor,error)}}function safelyAttachRef(current,nearestMountedAncestor){try{var ref=current.ref;if(ref!==null){switch(current.tag){case 26:case 27:case 5:var instanceToUse=getPublicInstance(current.stateNode);break;case 30:instanceToUse=current.stateNode;break;default:instanceToUse=current.stateNode}typeof ref==="function"?current.refCleanup=ref(instanceToUse):ref.current=instanceToUse}}catch(error){captureCommitPhaseError(current,nearestMountedAncestor,error)}}function safelyDetachRef(current,nearestMountedAncestor){var{ref,refCleanup}=current;if(ref!==null)if(typeof refCleanup==="function")try{refCleanup()}catch(error){captureCommitPhaseError(current,nearestMountedAncestor,error)}finally{current.refCleanup=null,current=current.alternate,current!=null&&(current.refCleanup=null)}else if(typeof ref==="function")try{ref(null)}catch(error$124){captureCommitPhaseError(current,nearestMountedAncestor,error$124)}else ref.current=null}function commitHostMount(finishedWork){var{type,memoizedProps:props,stateNode:instance}=finishedWork;try{commitMount(instance,type,props,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitHostUpdate(finishedWork,newProps,oldProps){try{commitUpdate(finishedWork.stateNode,finishedWork.type,oldProps,newProps,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function isHostParent(fiber){return fiber.tag===5||fiber.tag===3||(supportsResources?fiber.tag===26:!1)||(supportsSingletons?fiber.tag===27&&isSingletonScope(fiber.type):!1)||fiber.tag===4}function getHostSibling(fiber){a:for(;;){for(;fiber.sibling===null;){if(fiber.return===null||isHostParent(fiber.return))return null;fiber=fiber.return}fiber.sibling.return=fiber.return;for(fiber=fiber.sibling;fiber.tag!==5&&fiber.tag!==6&&fiber.tag!==18;){if(supportsSingletons&&fiber.tag===27&&isSingletonScope(fiber.type))continue a;if(fiber.flags&2)continue a;if(fiber.child===null||fiber.tag===4)continue a;else fiber.child.return=fiber,fiber=fiber.child}if(!(fiber.flags&2))return fiber.stateNode}}function insertOrAppendPlacementNodeIntoContainer(node,before,parent){var tag=node.tag;if(tag===5||tag===6)node=node.stateNode,before?insertInContainerBefore(parent,node,before):appendChildToContainer(parent,node);else if(tag!==4&&(supportsSingletons&&tag===27&&isSingletonScope(node.type)&&(parent=node.stateNode,before=null),node=node.child,node!==null))for(insertOrAppendPlacementNodeIntoContainer(node,before,parent),node=node.sibling;node!==null;)insertOrAppendPlacementNodeIntoContainer(node,before,parent),node=node.sibling}function insertOrAppendPlacementNode(node,before,parent){var tag=node.tag;if(tag===5||tag===6)node=node.stateNode,before?insertBefore(parent,node,before):appendChild(parent,node);else if(tag!==4&&(supportsSingletons&&tag===27&&isSingletonScope(node.type)&&(parent=node.stateNode),node=node.child,node!==null))for(insertOrAppendPlacementNode(node,before,parent),node=node.sibling;node!==null;)insertOrAppendPlacementNode(node,before,parent),node=node.sibling}function commitHostPortalContainerChildren(portal,finishedWork,pendingChildren){portal=portal.containerInfo;try{replaceContainerChildren(portal,pendingChildren)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitHostSingletonAcquisition(finishedWork){var{stateNode:singleton2,memoizedProps:props}=finishedWork;try{acquireSingletonInstance(finishedWork.type,props,singleton2,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitBeforeMutationEffects(root,firstChild){prepareForCommit(root.containerInfo);for(nextEffect=firstChild;nextEffect!==null;)if(root=nextEffect,firstChild=root.child,(root.subtreeFlags&1028)!==0&&firstChild!==null)firstChild.return=root,nextEffect=firstChild;else for(;nextEffect!==null;){root=nextEffect;var current=root.alternate;switch(firstChild=root.flags,root.tag){case 0:if((firstChild&4)!==0&&(firstChild=root.updateQueue,firstChild=firstChild!==null?firstChild.events:null,firstChild!==null))for(var ii=0;ii<firstChild.length;ii++){var _eventPayloads$ii=firstChild[ii];_eventPayloads$ii.ref.impl=_eventPayloads$ii.nextImpl}break;case 11:case 15:break;case 1:if((firstChild&1024)!==0&¤t!==null){firstChild=void 0,ii=root,_eventPayloads$ii=current.memoizedProps,current=current.memoizedState;var instance=ii.stateNode;try{var resolvedPrevProps=resolveClassComponentProps(ii.type,_eventPayloads$ii);firstChild=instance.getSnapshotBeforeUpdate(resolvedPrevProps,current),instance.__reactInternalSnapshotBeforeUpdate=firstChild}catch(error){captureCommitPhaseError(ii,ii.return,error)}}break;case 3:(firstChild&1024)!==0&&supportsMutation&&clearContainer(root.stateNode.containerInfo);break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((firstChild&1024)!==0)throw Error(formatProdErrorMessage(163))}if(firstChild=root.sibling,firstChild!==null){firstChild.return=root.return,nextEffect=firstChild;break}nextEffect=root.return}}function commitLayoutEffectOnFiber(finishedRoot,current,finishedWork){var flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4&&commitHookEffectListMount(5,finishedWork);break;case 1:if(recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4)if(finishedRoot=finishedWork.stateNode,current===null)try{finishedRoot.componentDidMount()}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}else{var prevProps=resolveClassComponentProps(finishedWork.type,current.memoizedProps);current=current.memoizedState;try{finishedRoot.componentDidUpdate(prevProps,current,finishedRoot.__reactInternalSnapshotBeforeUpdate)}catch(error$123){captureCommitPhaseError(finishedWork,finishedWork.return,error$123)}}flags&64&&commitClassCallbacks(finishedWork),flags&512&&safelyAttachRef(finishedWork,finishedWork.return);break;case 3:if(recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&64&&(flags=finishedWork.updateQueue,flags!==null)){if(finishedRoot=null,finishedWork.child!==null)switch(finishedWork.child.tag){case 27:case 5:finishedRoot=getPublicInstance(finishedWork.child.stateNode);break;case 1:finishedRoot=finishedWork.child.stateNode}try{commitCallbacks(flags,finishedRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}break;case 27:supportsSingletons&¤t===null&&flags&4&&commitHostSingletonAcquisition(finishedWork);case 26:case 5:if(recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),current===null){if(flags&4)commitHostMount(finishedWork);else if(flags&64){finishedRoot=finishedWork.type,current=finishedWork.memoizedProps,prevProps=finishedWork.stateNode;try{commitHydratedInstance(prevProps,finishedRoot,current,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}flags&512&&safelyAttachRef(finishedWork,finishedWork.return);break;case 12:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork);break;case 31:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4&&commitActivityHydrationCallbacks(finishedRoot,finishedWork);break;case 13:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4&&commitSuspenseHydrationCallbacks(finishedRoot,finishedWork),flags&64&&(flags=finishedWork.memoizedState,flags!==null&&(flags=flags.dehydrated,flags!==null&&(finishedWork=retryDehydratedSuspenseBoundary.bind(null,finishedWork),registerSuspenseInstanceRetry(flags,finishedWork))));break;case 22:if(flags=finishedWork.memoizedState!==null||offscreenSubtreeIsHidden,!flags){current=current!==null&¤t.memoizedState!==null||offscreenSubtreeWasHidden,prevProps=offscreenSubtreeIsHidden;var prevOffscreenSubtreeWasHidden=offscreenSubtreeWasHidden;offscreenSubtreeIsHidden=flags,(offscreenSubtreeWasHidden=current)&&!prevOffscreenSubtreeWasHidden?recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,(finishedWork.subtreeFlags&8772)!==0):recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),offscreenSubtreeIsHidden=prevProps,offscreenSubtreeWasHidden=prevOffscreenSubtreeWasHidden}break;case 30:break;default:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork)}}function detachFiberAfterEffects(fiber){var alternate=fiber.alternate;alternate!==null&&(fiber.alternate=null,detachFiberAfterEffects(alternate)),fiber.child=null,fiber.deletions=null,fiber.sibling=null,fiber.tag===5&&(alternate=fiber.stateNode,alternate!==null&&detachDeletedInstance(alternate)),fiber.stateNode=null,fiber.return=null,fiber.dependencies=null,fiber.memoizedProps=null,fiber.memoizedState=null,fiber.pendingProps=null,fiber.stateNode=null,fiber.updateQueue=null}function recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,parent){for(parent=parent.child;parent!==null;)commitDeletionEffectsOnFiber(finishedRoot,nearestMountedAncestor,parent),parent=parent.sibling}function commitDeletionEffectsOnFiber(finishedRoot,nearestMountedAncestor,deletedFiber){if(injectedHook&&typeof injectedHook.onCommitFiberUnmount==="function")try{injectedHook.onCommitFiberUnmount(rendererID,deletedFiber)}catch(err){}switch(deletedFiber.tag){case 26:if(supportsResources){offscreenSubtreeWasHidden||safelyDetachRef(deletedFiber,nearestMountedAncestor),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),deletedFiber.memoizedState?releaseResource(deletedFiber.memoizedState):deletedFiber.stateNode&&unmountHoistable(deletedFiber.stateNode);break}case 27:if(supportsSingletons){offscreenSubtreeWasHidden||safelyDetachRef(deletedFiber,nearestMountedAncestor);var prevHostParent=hostParent,prevHostParentIsContainer=hostParentIsContainer;isSingletonScope(deletedFiber.type)&&(hostParent=deletedFiber.stateNode,hostParentIsContainer=!1),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),releaseSingletonInstance(deletedFiber.stateNode),hostParent=prevHostParent,hostParentIsContainer=prevHostParentIsContainer;break}case 5:offscreenSubtreeWasHidden||safelyDetachRef(deletedFiber,nearestMountedAncestor);case 6:if(supportsMutation){if(prevHostParent=hostParent,prevHostParentIsContainer=hostParentIsContainer,hostParent=null,recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),hostParent=prevHostParent,hostParentIsContainer=prevHostParentIsContainer,hostParent!==null)if(hostParentIsContainer)try{removeChildFromContainer(hostParent,deletedFiber.stateNode)}catch(error){captureCommitPhaseError(deletedFiber,nearestMountedAncestor,error)}else try{removeChild(hostParent,deletedFiber.stateNode)}catch(error){captureCommitPhaseError(deletedFiber,nearestMountedAncestor,error)}}else recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 18:supportsMutation&&hostParent!==null&&(hostParentIsContainer?clearSuspenseBoundaryFromContainer(hostParent,deletedFiber.stateNode):clearSuspenseBoundary(hostParent,deletedFiber.stateNode));break;case 4:supportsMutation?(prevHostParent=hostParent,prevHostParentIsContainer=hostParentIsContainer,hostParent=deletedFiber.stateNode.containerInfo,hostParentIsContainer=!0,recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),hostParent=prevHostParent,hostParentIsContainer=prevHostParentIsContainer):(supportsPersistence&&commitHostPortalContainerChildren(deletedFiber.stateNode,deletedFiber,createContainerChildSet()),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber));break;case 0:case 11:case 14:case 15:commitHookEffectListUnmount(2,deletedFiber,nearestMountedAncestor),offscreenSubtreeWasHidden||commitHookEffectListUnmount(4,deletedFiber,nearestMountedAncestor),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 1:offscreenSubtreeWasHidden||(safelyDetachRef(deletedFiber,nearestMountedAncestor),prevHostParent=deletedFiber.stateNode,typeof prevHostParent.componentWillUnmount==="function"&&safelyCallComponentWillUnmount(deletedFiber,nearestMountedAncestor,prevHostParent)),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 21:recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 22:offscreenSubtreeWasHidden=(prevHostParent=offscreenSubtreeWasHidden)||deletedFiber.memoizedState!==null,recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),offscreenSubtreeWasHidden=prevHostParent;break;default:recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber)}}function commitActivityHydrationCallbacks(finishedRoot,finishedWork){if(supportsHydration&&finishedWork.memoizedState===null&&(finishedRoot=finishedWork.alternate,finishedRoot!==null&&(finishedRoot=finishedRoot.memoizedState,finishedRoot!==null))){finishedRoot=finishedRoot.dehydrated;try{commitHydratedActivityInstance(finishedRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}function commitSuspenseHydrationCallbacks(finishedRoot,finishedWork){if(supportsHydration&&finishedWork.memoizedState===null&&(finishedRoot=finishedWork.alternate,finishedRoot!==null&&(finishedRoot=finishedRoot.memoizedState,finishedRoot!==null&&(finishedRoot=finishedRoot.dehydrated,finishedRoot!==null))))try{commitHydratedSuspenseInstance(finishedRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function getRetryCache(finishedWork){switch(finishedWork.tag){case 31:case 13:case 19:var retryCache=finishedWork.stateNode;return retryCache===null&&(retryCache=finishedWork.stateNode=new PossiblyWeakSet),retryCache;case 22:return finishedWork=finishedWork.stateNode,retryCache=finishedWork._retryCache,retryCache===null&&(retryCache=finishedWork._retryCache=new PossiblyWeakSet),retryCache;default:throw Error(formatProdErrorMessage(435,finishedWork.tag))}}function attachSuspenseRetryListeners(finishedWork,wakeables){var retryCache=getRetryCache(finishedWork);wakeables.forEach(function(wakeable){if(!retryCache.has(wakeable)){retryCache.add(wakeable);var retry=resolveRetryWakeable.bind(null,finishedWork,wakeable);wakeable.then(retry,retry)}})}function recursivelyTraverseMutationEffects(root$jscomp$0,parentFiber){var deletions=parentFiber.deletions;if(deletions!==null)for(var i=0;i<deletions.length;i++){var childToDelete=deletions[i],root=root$jscomp$0,returnFiber=parentFiber;if(supportsMutation){var parent=returnFiber;a:for(;parent!==null;){switch(parent.tag){case 27:if(supportsSingletons){if(isSingletonScope(parent.type)){hostParent=parent.stateNode,hostParentIsContainer=!1;break a}break}case 5:hostParent=parent.stateNode,hostParentIsContainer=!1;break a;case 3:case 4:hostParent=parent.stateNode.containerInfo,hostParentIsContainer=!0;break a}parent=parent.return}if(hostParent===null)throw Error(formatProdErrorMessage(160));commitDeletionEffectsOnFiber(root,returnFiber,childToDelete),hostParent=null,hostParentIsContainer=!1}else commitDeletionEffectsOnFiber(root,returnFiber,childToDelete);root=childToDelete.alternate,root!==null&&(root.return=null),childToDelete.return=null}if(parentFiber.subtreeFlags&13886)for(parentFiber=parentFiber.child;parentFiber!==null;)commitMutationEffectsOnFiber(parentFiber,root$jscomp$0),parentFiber=parentFiber.sibling}function commitMutationEffectsOnFiber(finishedWork,root){var{alternate:current,flags}=finishedWork;switch(finishedWork.tag){case 0:case 11:case 14:case 15:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&(commitHookEffectListUnmount(3,finishedWork,finishedWork.return),commitHookEffectListMount(3,finishedWork),commitHookEffectListUnmount(5,finishedWork,finishedWork.return));break;case 1:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),flags&64&&offscreenSubtreeIsHidden&&(finishedWork=finishedWork.updateQueue,finishedWork!==null&&(flags=finishedWork.callbacks,flags!==null&&(current=finishedWork.shared.hiddenCallbacks,finishedWork.shared.hiddenCallbacks=current===null?flags:current.concat(flags))));break;case 26:if(supportsResources){var hoistableRoot=currentHoistableRoot;if(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),flags&4){flags=current!==null?current.memoizedState:null;var newResource=finishedWork.memoizedState;current===null?newResource===null?finishedWork.stateNode===null?finishedWork.stateNode=hydrateHoistable(hoistableRoot,finishedWork.type,finishedWork.memoizedProps,finishedWork):mountHoistable(hoistableRoot,finishedWork.type,finishedWork.stateNode):finishedWork.stateNode=acquireResource(hoistableRoot,newResource,finishedWork.memoizedProps):flags!==newResource?(flags===null?current.stateNode!==null&&unmountHoistable(current.stateNode):releaseResource(flags),newResource===null?mountHoistable(hoistableRoot,finishedWork.type,finishedWork.stateNode):acquireResource(hoistableRoot,newResource,finishedWork.memoizedProps)):newResource===null&&finishedWork.stateNode!==null&&commitHostUpdate(finishedWork,finishedWork.memoizedProps,current.memoizedProps)}break}case 27:if(supportsSingletons){recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),current!==null&&flags&4&&commitHostUpdate(finishedWork,finishedWork.memoizedProps,current.memoizedProps);break}case 5:if(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),supportsMutation){if(finishedWork.flags&32){hoistableRoot=finishedWork.stateNode;try{resetTextContent(hoistableRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}flags&4&&finishedWork.stateNode!=null&&(hoistableRoot=finishedWork.memoizedProps,commitHostUpdate(finishedWork,hoistableRoot,current!==null?current.memoizedProps:hoistableRoot)),flags&1024&&(needsFormReset=!0)}else supportsPersistence&&finishedWork.alternate!==null&&(finishedWork.alternate.stateNode=finishedWork.stateNode);break;case 6:if(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&supportsMutation){if(finishedWork.stateNode===null)throw Error(formatProdErrorMessage(162));flags=finishedWork.memoizedProps,current=current!==null?current.memoizedProps:flags,hoistableRoot=finishedWork.stateNode;try{commitTextUpdate(hoistableRoot,current,flags)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}break;case 3:if(supportsResources?(prepareToCommitHoistables(),hoistableRoot=currentHoistableRoot,currentHoistableRoot=getHoistableRoot(root.containerInfo),recursivelyTraverseMutationEffects(root,finishedWork),currentHoistableRoot=hoistableRoot):recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4){if(supportsMutation&&supportsHydration&¤t!==null&¤t.memoizedState.isDehydrated)try{commitHydratedContainer(root.containerInfo)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}if(supportsPersistence){flags=root.containerInfo,current=root.pendingChildren;try{replaceContainerChildren(flags,current)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}needsFormReset&&(needsFormReset=!1,recursivelyResetForms(finishedWork));break;case 4:supportsResources?(current=currentHoistableRoot,currentHoistableRoot=getHoistableRoot(finishedWork.stateNode.containerInfo),recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),currentHoistableRoot=current):(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork)),flags&4&&supportsPersistence&&commitHostPortalContainerChildren(finishedWork.stateNode,finishedWork,finishedWork.stateNode.pendingChildren);break;case 12:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork);break;case 31:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(finishedWork.updateQueue=null,attachSuspenseRetryListeners(finishedWork,flags)));break;case 13:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),finishedWork.child.flags&8192&&finishedWork.memoizedState!==null!==(current!==null&¤t.memoizedState!==null)&&(globalMostRecentFallbackTime=now()),flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(finishedWork.updateQueue=null,attachSuspenseRetryListeners(finishedWork,flags)));break;case 22:hoistableRoot=finishedWork.memoizedState!==null;var wasHidden=current!==null&¤t.memoizedState!==null,prevOffscreenSubtreeIsHidden=offscreenSubtreeIsHidden,prevOffscreenSubtreeWasHidden=offscreenSubtreeWasHidden;if(offscreenSubtreeIsHidden=prevOffscreenSubtreeIsHidden||hoistableRoot,offscreenSubtreeWasHidden=prevOffscreenSubtreeWasHidden||wasHidden,recursivelyTraverseMutationEffects(root,finishedWork),offscreenSubtreeWasHidden=prevOffscreenSubtreeWasHidden,offscreenSubtreeIsHidden=prevOffscreenSubtreeIsHidden,commitReconciliationEffects(finishedWork),flags&8192&&(root=finishedWork.stateNode,root._visibility=hoistableRoot?root._visibility&-2:root._visibility|1,hoistableRoot&&(current===null||wasHidden||offscreenSubtreeIsHidden||offscreenSubtreeWasHidden||recursivelyTraverseDisappearLayoutEffects(finishedWork)),supportsMutation)){a:if(current=null,supportsMutation)for(root=finishedWork;;){if(root.tag===5||supportsResources&&root.tag===26){if(current===null){wasHidden=current=root;try{newResource=wasHidden.stateNode,hoistableRoot?hideInstance(newResource):unhideInstance(wasHidden.stateNode,wasHidden.memoizedProps)}catch(error){captureCommitPhaseError(wasHidden,wasHidden.return,error)}}}else if(root.tag===6){if(current===null){wasHidden=root;try{var instance=wasHidden.stateNode;hoistableRoot?hideTextInstance(instance):unhideTextInstance(instance,wasHidden.memoizedProps)}catch(error){captureCommitPhaseError(wasHidden,wasHidden.return,error)}}}else if(root.tag===18){if(current===null){wasHidden=root;try{var instance$jscomp$0=wasHidden.stateNode;hoistableRoot?hideDehydratedBoundary(instance$jscomp$0):unhideDehydratedBoundary(wasHidden.stateNode)}catch(error){captureCommitPhaseError(wasHidden,wasHidden.return,error)}}}else if((root.tag!==22&&root.tag!==23||root.memoizedState===null||root===finishedWork)&&root.child!==null){root.child.return=root,root=root.child;continue}if(root===finishedWork)break a;for(;root.sibling===null;){if(root.return===null||root.return===finishedWork)break a;current===root&&(current=null),root=root.return}current===root&&(current=null),root.sibling.return=root.return,root=root.sibling}}flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(current=flags.retryQueue,current!==null&&(flags.retryQueue=null,attachSuspenseRetryListeners(finishedWork,current))));break;case 19:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(finishedWork.updateQueue=null,attachSuspenseRetryListeners(finishedWork,flags)));break;case 30:break;case 21:break;default:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork)}}function commitReconciliationEffects(finishedWork){var flags=finishedWork.flags;if(flags&2){try{for(var hostParentFiber,parentFiber=finishedWork.return;parentFiber!==null;){if(isHostParent(parentFiber)){hostParentFiber=parentFiber;break}parentFiber=parentFiber.return}if(supportsMutation){if(hostParentFiber==null)throw Error(formatProdErrorMessage(160));switch(hostParentFiber.tag){case 27:if(supportsSingletons){var parent=hostParentFiber.stateNode,before=getHostSibling(finishedWork);insertOrAppendPlacementNode(finishedWork,before,parent);break}case 5:var parent$125=hostParentFiber.stateNode;hostParentFiber.flags&32&&(resetTextContent(parent$125),hostParentFiber.flags&=-33);var before$126=getHostSibling(finishedWork);insertOrAppendPlacementNode(finishedWork,before$126,parent$125);break;case 3:case 4:var parent$127=hostParentFiber.stateNode.containerInfo,before$128=getHostSibling(finishedWork);insertOrAppendPlacementNodeIntoContainer(finishedWork,before$128,parent$127);break;default:throw Error(formatProdErrorMessage(161))}}}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}finishedWork.flags&=-3}flags&4096&&(finishedWork.flags&=-4097)}function recursivelyResetForms(parentFiber){if(parentFiber.subtreeFlags&1024)for(parentFiber=parentFiber.child;parentFiber!==null;){var fiber=parentFiber;recursivelyResetForms(fiber),fiber.tag===5&&fiber.flags&1024&&resetFormInstance(fiber.stateNode),parentFiber=parentFiber.sibling}}function recursivelyTraverseLayoutEffects(root,parentFiber){if(parentFiber.subtreeFlags&8772)for(parentFiber=parentFiber.child;parentFiber!==null;)commitLayoutEffectOnFiber(root,parentFiber.alternate,parentFiber),parentFiber=parentFiber.sibling}function recursivelyTraverseDisappearLayoutEffects(parentFiber){for(parentFiber=parentFiber.child;parentFiber!==null;){var finishedWork=parentFiber;switch(finishedWork.tag){case 0:case 11:case 14:case 15:commitHookEffectListUnmount(4,finishedWork,finishedWork.return),recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 1:safelyDetachRef(finishedWork,finishedWork.return);var instance=finishedWork.stateNode;typeof instance.componentWillUnmount==="function"&&safelyCallComponentWillUnmount(finishedWork,finishedWork.return,instance),recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 27:supportsSingletons&&releaseSingletonInstance(finishedWork.stateNode);case 26:case 5:safelyDetachRef(finishedWork,finishedWork.return),recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 22:finishedWork.memoizedState===null&&recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 30:recursivelyTraverseDisappearLayoutEffects(finishedWork);break;default:recursivelyTraverseDisappearLayoutEffects(finishedWork)}parentFiber=parentFiber.sibling}}function recursivelyTraverseReappearLayoutEffects(finishedRoot$jscomp$0,parentFiber,includeWorkInProgressEffects){includeWorkInProgressEffects=includeWorkInProgressEffects&&(parentFiber.subtreeFlags&8772)!==0;for(parentFiber=parentFiber.child;parentFiber!==null;){var current=parentFiber.alternate,finishedRoot=finishedRoot$jscomp$0,finishedWork=parentFiber,flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),commitHookEffectListMount(4,finishedWork);break;case 1:if(recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),current=finishedWork,finishedRoot=current.stateNode,typeof finishedRoot.componentDidMount==="function")try{finishedRoot.componentDidMount()}catch(error){captureCommitPhaseError(current,current.return,error)}if(current=finishedWork,finishedRoot=current.updateQueue,finishedRoot!==null){var instance=current.stateNode;try{var hiddenCallbacks=finishedRoot.shared.hiddenCallbacks;if(hiddenCallbacks!==null)for(finishedRoot.shared.hiddenCallbacks=null,finishedRoot=0;finishedRoot<hiddenCallbacks.length;finishedRoot++)callCallback(hiddenCallbacks[finishedRoot],instance)}catch(error){captureCommitPhaseError(current,current.return,error)}}includeWorkInProgressEffects&&flags&64&&commitClassCallbacks(finishedWork),safelyAttachRef(finishedWork,finishedWork.return);break;case 27:supportsSingletons&&commitHostSingletonAcquisition(finishedWork);case 26:case 5:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),includeWorkInProgressEffects&¤t===null&&flags&4&&commitHostMount(finishedWork),safelyAttachRef(finishedWork,finishedWork.return);break;case 12:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects);break;case 31:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),includeWorkInProgressEffects&&flags&4&&commitActivityHydrationCallbacks(finishedRoot,finishedWork);break;case 13:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),includeWorkInProgressEffects&&flags&4&&commitSuspenseHydrationCallbacks(finishedRoot,finishedWork);break;case 22:finishedWork.memoizedState===null&&recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),safelyAttachRef(finishedWork,finishedWork.return);break;case 30:break;default:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects)}parentFiber=parentFiber.sibling}}function commitOffscreenPassiveMountEffects(current,finishedWork){var previousCache=null;current!==null&¤t.memoizedState!==null&¤t.memoizedState.cachePool!==null&&(previousCache=current.memoizedState.cachePool.pool),current=null,finishedWork.memoizedState!==null&&finishedWork.memoizedState.cachePool!==null&&(current=finishedWork.memoizedState.cachePool.pool),current!==previousCache&&(current!=null&¤t.refCount++,previousCache!=null&&releaseCache(previousCache))}function commitCachePassiveMountEffect(current,finishedWork){current=null,finishedWork.alternate!==null&&(current=finishedWork.alternate.memoizedState.cache),finishedWork=finishedWork.memoizedState.cache,finishedWork!==current&&(finishedWork.refCount++,current!=null&&releaseCache(current))}function recursivelyTraversePassiveMountEffects(root,parentFiber,committedLanes,committedTransitions){if(parentFiber.subtreeFlags&10256)for(parentFiber=parentFiber.child;parentFiber!==null;)commitPassiveMountOnFiber(root,parentFiber,committedLanes,committedTransitions),parentFiber=parentFiber.sibling}function commitPassiveMountOnFiber(finishedRoot,finishedWork,committedLanes,committedTransitions){var flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),flags&2048&&commitHookEffectListMount(9,finishedWork);break;case 1:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 3:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),flags&2048&&(finishedRoot=null,finishedWork.alternate!==null&&(finishedRoot=finishedWork.alternate.memoizedState.cache),finishedWork=finishedWork.memoizedState.cache,finishedWork!==finishedRoot&&(finishedWork.refCount++,finishedRoot!=null&&releaseCache(finishedRoot)));break;case 12:if(flags&2048){recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),finishedRoot=finishedWork.stateNode;try{var _finishedWork$memoize2=finishedWork.memoizedProps,id=_finishedWork$memoize2.id,onPostCommit=_finishedWork$memoize2.onPostCommit;typeof onPostCommit==="function"&&onPostCommit(id,finishedWork.alternate===null?"mount":"update",finishedRoot.passiveEffectDuration,-0)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}else recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 31:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 13:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 23:break;case 22:_finishedWork$memoize2=finishedWork.stateNode,id=finishedWork.alternate,finishedWork.memoizedState!==null?_finishedWork$memoize2._visibility&2?recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions):recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork):_finishedWork$memoize2._visibility&2?recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions):(_finishedWork$memoize2._visibility|=2,recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,(finishedWork.subtreeFlags&10256)!==0||!1)),flags&2048&&commitOffscreenPassiveMountEffects(id,finishedWork);break;case 24:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),flags&2048&&commitCachePassiveMountEffect(finishedWork.alternate,finishedWork);break;default:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions)}}function recursivelyTraverseReconnectPassiveEffects(finishedRoot$jscomp$0,parentFiber,committedLanes$jscomp$0,committedTransitions$jscomp$0,includeWorkInProgressEffects){includeWorkInProgressEffects=includeWorkInProgressEffects&&((parentFiber.subtreeFlags&10256)!==0||!1);for(parentFiber=parentFiber.child;parentFiber!==null;){var finishedRoot=finishedRoot$jscomp$0,finishedWork=parentFiber,committedLanes=committedLanes$jscomp$0,committedTransitions=committedTransitions$jscomp$0,flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects),commitHookEffectListMount(8,finishedWork);break;case 23:break;case 22:var instance=finishedWork.stateNode;finishedWork.memoizedState!==null?instance._visibility&2?recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects):recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork):(instance._visibility|=2,recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects)),includeWorkInProgressEffects&&flags&2048&&commitOffscreenPassiveMountEffects(finishedWork.alternate,finishedWork);break;case 24:recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects),includeWorkInProgressEffects&&flags&2048&&commitCachePassiveMountEffect(finishedWork.alternate,finishedWork);break;default:recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects)}parentFiber=parentFiber.sibling}}function recursivelyTraverseAtomicPassiveEffects(finishedRoot$jscomp$0,parentFiber){if(parentFiber.subtreeFlags&10256)for(parentFiber=parentFiber.child;parentFiber!==null;){var finishedRoot=finishedRoot$jscomp$0,finishedWork=parentFiber,flags=finishedWork.flags;switch(finishedWork.tag){case 22:recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork),flags&2048&&commitOffscreenPassiveMountEffects(finishedWork.alternate,finishedWork);break;case 24:recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork),flags&2048&&commitCachePassiveMountEffect(finishedWork.alternate,finishedWork);break;default:recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork)}parentFiber=parentFiber.sibling}}function recursivelyAccumulateSuspenseyCommit(parentFiber,committedLanes,suspendedState){if(parentFiber.subtreeFlags&suspenseyCommitFlag)for(parentFiber=parentFiber.child;parentFiber!==null;)accumulateSuspenseyCommitOnFiber(parentFiber,committedLanes,suspendedState),parentFiber=parentFiber.sibling}function accumulateSuspenseyCommitOnFiber(fiber,committedLanes,suspendedState){switch(fiber.tag){case 26:if(recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),fiber.flags&suspenseyCommitFlag)if(fiber.memoizedState!==null)suspendResource(suspendedState,currentHoistableRoot,fiber.memoizedState,fiber.memoizedProps);else{var{stateNode:instance,type}=fiber;fiber=fiber.memoizedProps,((committedLanes&335544128)===committedLanes||maySuspendCommitInSyncRender(type,fiber))&&suspendInstance(suspendedState,instance,type,fiber)}break;case 5:recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),fiber.flags&suspenseyCommitFlag&&(instance=fiber.stateNode,type=fiber.type,fiber=fiber.memoizedProps,((committedLanes&335544128)===committedLanes||maySuspendCommitInSyncRender(type,fiber))&&suspendInstance(suspendedState,instance,type,fiber));break;case 3:case 4:supportsResources?(instance=currentHoistableRoot,currentHoistableRoot=getHoistableRoot(fiber.stateNode.containerInfo),recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),currentHoistableRoot=instance):recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState);break;case 22:fiber.memoizedState===null&&(instance=fiber.alternate,instance!==null&&instance.memoizedState!==null?(instance=suspenseyCommitFlag,suspenseyCommitFlag=16777216,recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),suspenseyCommitFlag=instance):recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState));break;default:recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState)}}function detachAlternateSiblings(parentFiber){var previousFiber=parentFiber.alternate;if(previousFiber!==null&&(parentFiber=previousFiber.child,parentFiber!==null)){previousFiber.child=null;do previousFiber=parentFiber.sibling,parentFiber.sibling=null,parentFiber=previousFiber;while(parentFiber!==null)}}function recursivelyTraversePassiveUnmountEffects(parentFiber){var deletions=parentFiber.deletions;if((parentFiber.flags&16)!==0){if(deletions!==null)for(var i=0;i<deletions.length;i++){var childToDelete=deletions[i];nextEffect=childToDelete,commitPassiveUnmountEffectsInsideOfDeletedTree_begin(childToDelete,parentFiber)}detachAlternateSiblings(parentFiber)}if(parentFiber.subtreeFlags&10256)for(parentFiber=parentFiber.child;parentFiber!==null;)commitPassiveUnmountOnFiber(parentFiber),parentFiber=parentFiber.sibling}function commitPassiveUnmountOnFiber(finishedWork){switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraversePassiveUnmountEffects(finishedWork),finishedWork.flags&2048&&commitHookEffectListUnmount(9,finishedWork,finishedWork.return);break;case 3:recursivelyTraversePassiveUnmountEffects(finishedWork);break;case 12:recursivelyTraversePassiveUnmountEffects(finishedWork);break;case 22:var instance=finishedWork.stateNode;finishedWork.memoizedState!==null&&instance._visibility&2&&(finishedWork.return===null||finishedWork.return.tag!==13)?(instance._visibility&=-3,recursivelyTraverseDisconnectPassiveEffects(finishedWork)):recursivelyTraversePassiveUnmountEffects(finishedWork);break;default:recursivelyTraversePassiveUnmountEffects(finishedWork)}}function recursivelyTraverseDisconnectPassiveEffects(parentFiber){var deletions=parentFiber.deletions;if((parentFiber.flags&16)!==0){if(deletions!==null)for(var i=0;i<deletions.length;i++){var childToDelete=deletions[i];nextEffect=childToDelete,commitPassiveUnmountEffectsInsideOfDeletedTree_begin(childToDelete,parentFiber)}detachAlternateSiblings(parentFiber)}for(parentFiber=parentFiber.child;parentFiber!==null;){switch(deletions=parentFiber,deletions.tag){case 0:case 11:case 15:commitHookEffectListUnmount(8,deletions,deletions.return),recursivelyTraverseDisconnectPassiveEffects(deletions);break;case 22:i=deletions.stateNode,i._visibility&2&&(i._visibility&=-3,recursivelyTraverseDisconnectPassiveEffects(deletions));break;default:recursivelyTraverseDisconnectPassiveEffects(deletions)}parentFiber=parentFiber.sibling}}function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot,nearestMountedAncestor){for(;nextEffect!==null;){var fiber=nextEffect;switch(fiber.tag){case 0:case 11:case 15:commitHookEffectListUnmount(8,fiber,nearestMountedAncestor);break;case 23:case 22:if(fiber.memoizedState!==null&&fiber.memoizedState.cachePool!==null){var cache=fiber.memoizedState.cachePool.pool;cache!=null&&cache.refCount++}break;case 24:releaseCache(fiber.memoizedState.cache)}if(cache=fiber.child,cache!==null)cache.return=fiber,nextEffect=cache;else a:for(fiber=deletedSubtreeRoot;nextEffect!==null;){cache=nextEffect;var{sibling,return:returnFiber}=cache;if(detachFiberAfterEffects(cache),cache===fiber){nextEffect=null;break a}if(sibling!==null){sibling.return=returnFiber,nextEffect=sibling;break a}nextEffect=returnFiber}}}function findFiberRootForHostRoot(hostRoot){var maybeFiber=getInstanceFromNode(hostRoot);if(maybeFiber!=null){if(typeof maybeFiber.memoizedProps["data-testname"]!=="string")throw Error(formatProdErrorMessage(364));return maybeFiber}if(hostRoot=findFiberRoot(hostRoot),hostRoot===null)throw Error(formatProdErrorMessage(362));return hostRoot.stateNode.current}function matchSelector(fiber$jscomp$0,selector){var tag=fiber$jscomp$0.tag;switch(selector.$$typeof){case COMPONENT_TYPE:if(fiber$jscomp$0.type===selector.value)return!0;break;case HAS_PSEUDO_CLASS_TYPE:a:{selector=selector.value,fiber$jscomp$0=[fiber$jscomp$0,0];for(tag=0;tag<fiber$jscomp$0.length;){var fiber=fiber$jscomp$0[tag++],tag$jscomp$0=fiber.tag,selectorIndex=fiber$jscomp$0[tag++],selector$jscomp$0=selector[selectorIndex];if(tag$jscomp$0!==5&&tag$jscomp$0!==26&&tag$jscomp$0!==27||!isHiddenSubtree(fiber)){for(;selector$jscomp$0!=null&&matchSelector(fiber,selector$jscomp$0);)selectorIndex++,selector$jscomp$0=selector[selectorIndex];if(selectorIndex===selector.length){selector=!0;break a}else for(fiber=fiber.child;fiber!==null;)fiber$jscomp$0.push(fiber,selectorIndex),fiber=fiber.sibling}}selector=!1}return selector;case ROLE_TYPE:if((tag===5||tag===26||tag===27)&&matchAccessibilityRole(fiber$jscomp$0.stateNode,selector.value))return!0;break;case TEXT_TYPE:if(tag===5||tag===6||tag===26||tag===27){if(fiber$jscomp$0=getTextContent(fiber$jscomp$0),fiber$jscomp$0!==null&&0<=fiber$jscomp$0.indexOf(selector.value))return!0}break;case TEST_NAME_TYPE:if(tag===5||tag===26||tag===27){if(fiber$jscomp$0=fiber$jscomp$0.memoizedProps["data-testname"],typeof fiber$jscomp$0==="string"&&fiber$jscomp$0.toLowerCase()===selector.value.toLowerCase())return!0}break;default:throw Error(formatProdErrorMessage(365))}return!1}function selectorToString(selector){switch(selector.$$typeof){case COMPONENT_TYPE:return"<"+(getComponentNameFromType(selector.value)||"Unknown")+">";case HAS_PSEUDO_CLASS_TYPE:return":has("+(selectorToString(selector)||"")+")";case ROLE_TYPE:return'[role="'+selector.value+'"]';case TEXT_TYPE:return'"'+selector.value+'"';case TEST_NAME_TYPE:return'[data-testname="'+selector.value+'"]';default:throw Error(formatProdErrorMessage(365))}}function findPaths(root,selectors){var matchingFibers=[];root=[root,0];for(var index=0;index<root.length;){var fiber=root[index++],tag=fiber.tag,selectorIndex=root[index++],selector=selectors[selectorIndex];if(tag!==5&&tag!==26&&tag!==27||!isHiddenSubtree(fiber)){for(;selector!=null&&matchSelector(fiber,selector);)selectorIndex++,selector=selectors[selectorIndex];if(selectorIndex===selectors.length)matchingFibers.push(fiber);else for(fiber=fiber.child;fiber!==null;)root.push(fiber,selectorIndex),fiber=fiber.sibling}}return matchingFibers}function findAllNodes(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));hostRoot=findFiberRootForHostRoot(hostRoot),hostRoot=findPaths(hostRoot,selectors),selectors=[],hostRoot=Array.from(hostRoot);for(var index=0;index<hostRoot.length;){var node=hostRoot[index++],tag=node.tag;if(tag===5||tag===26||tag===27)isHiddenSubtree(node)||selectors.push(node.stateNode);else for(node=node.child;node!==null;)hostRoot.push(node),node=node.sibling}return selectors}function requestUpdateLane(){return(executionContext&2)!==0&&workInProgressRootRenderLanes!==0?workInProgressRootRenderLanes&-workInProgressRootRenderLanes:ReactSharedInternals.T!==null?requestTransitionLane():resolveUpdatePriority()}function requestDeferredLane(){if(workInProgressDeferredLane===0)if((workInProgressRootRenderLanes&536870912)===0||isHydrating){var lane=nextTransitionDeferredLane;nextTransitionDeferredLane<<=1,(nextTransitionDeferredLane&3932160)===0&&(nextTransitionDeferredLane=262144),workInProgressDeferredLane=lane}else workInProgressDeferredLane=536870912;return lane=suspenseHandlerStackCursor.current,lane!==null&&(lane.flags|=32),workInProgressDeferredLane}function scheduleUpdateOnFiber(root,fiber,lane){if(root===workInProgressRoot&&(workInProgressSuspendedReason===2||workInProgressSuspendedReason===9)||root.cancelPendingCommit!==null)prepareFreshStack(root,0),markRootSuspended(root,workInProgressRootRenderLanes,workInProgressDeferredLane,!1);if(markRootUpdated$1(root,lane),(executionContext&2)===0||root!==workInProgressRoot)root===workInProgressRoot&&((executionContext&2)===0&&(workInProgressRootInterleavedUpdatedLanes|=lane),workInProgressRootExitStatus===4&&markRootSuspended(root,workInProgressRootRenderLanes,workInProgressDeferredLane,!1)),ensureRootIsScheduled(root)}function performWorkOnRoot(root$jscomp$0,lanes,forceSync){if((executionContext&6)!==0)throw Error(formatProdErrorMessage(327));var shouldTimeSlice=!forceSync&&(lanes&127)===0&&(lanes&root$jscomp$0.expiredLanes)===0||checkIfRootIsPrerendering(root$jscomp$0,lanes),exitStatus=shouldTimeSlice?renderRootConcurrent(root$jscomp$0,lanes):renderRootSync(root$jscomp$0,lanes,!0),renderWasConcurrent=shouldTimeSlice;do{if(exitStatus===0){workInProgressRootIsPrerendering&&!shouldTimeSlice&&markRootSuspended(root$jscomp$0,lanes,0,!1);break}else{if(forceSync=root$jscomp$0.current.alternate,renderWasConcurrent&&!isRenderConsistentWithExternalStores(forceSync)){exitStatus=renderRootSync(root$jscomp$0,lanes,!1),renderWasConcurrent=!1;continue}if(exitStatus===2){if(renderWasConcurrent=lanes,root$jscomp$0.errorRecoveryDisabledLanes&renderWasConcurrent)var JSCompiler_inline_result=0;else JSCompiler_inline_result=root$jscomp$0.pendingLanes&-536870913,JSCompiler_inline_result=JSCompiler_inline_result!==0?JSCompiler_inline_result:JSCompiler_inline_result&536870912?536870912:0;if(JSCompiler_inline_result!==0){lanes=JSCompiler_inline_result;a:{var root=root$jscomp$0;exitStatus=workInProgressRootConcurrentErrors;var wasRootDehydrated=supportsHydration&&root.current.memoizedState.isDehydrated;if(wasRootDehydrated&&(prepareFreshStack(root,JSCompiler_inline_result).flags|=256),JSCompiler_inline_result=renderRootSync(root,JSCompiler_inline_result,!1),JSCompiler_inline_result!==2){if(workInProgressRootDidAttachPingListener&&!wasRootDehydrated){root.errorRecoveryDisabledLanes|=renderWasConcurrent,workInProgressRootInterleavedUpdatedLanes|=renderWasConcurrent,exitStatus=4;break a}renderWasConcurrent=workInProgressRootRecoverableErrors,workInProgressRootRecoverableErrors=exitStatus,renderWasConcurrent!==null&&(workInProgressRootRecoverableErrors===null?workInProgressRootRecoverableErrors=renderWasConcurrent:workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors,renderWasConcurrent))}exitStatus=JSCompiler_inline_result}if(renderWasConcurrent=!1,exitStatus!==2)continue}}if(exitStatus===1){prepareFreshStack(root$jscomp$0,0),markRootSuspended(root$jscomp$0,lanes,0,!0);break}a:{switch(shouldTimeSlice=root$jscomp$0,renderWasConcurrent=exitStatus,renderWasConcurrent){case 0:case 1:throw Error(formatProdErrorMessage(345));case 4:if((lanes&4194048)!==lanes)break;case 6:markRootSuspended(shouldTimeSlice,lanes,workInProgressDeferredLane,!workInProgressRootDidSkipSuspendedSiblings);break a;case 2:workInProgressRootRecoverableErrors=null;break;case 3:case 5:break;default:throw Error(formatProdErrorMessage(329))}if((lanes&62914560)===lanes&&(exitStatus=globalMostRecentFallbackTime+300-now(),10<exitStatus)){if(markRootSuspended(shouldTimeSlice,lanes,workInProgressDeferredLane,!workInProgressRootDidSkipSuspendedSiblings),getNextLanes(shouldTimeSlice,0,!0)!==0)break a;pendingEffectsLanes=lanes,shouldTimeSlice.timeoutHandle=scheduleTimeout(commitRootWhenReady.bind(null,shouldTimeSlice,forceSync,workInProgressRootRecoverableErrors,workInProgressTransitions,workInProgressRootDidIncludeRecursiveRenderUpdate,lanes,workInProgressDeferredLane,workInProgressRootInterleavedUpdatedLanes,workInProgressSuspendedRetryLanes,workInProgressRootDidSkipSuspendedSiblings,renderWasConcurrent,"Throttled",-0,0),exitStatus);break a}commitRootWhenReady(shouldTimeSlice,forceSync,workInProgressRootRecoverableErrors,workInProgressTransitions,workInProgressRootDidIncludeRecursiveRenderUpdate,lanes,workInProgressDeferredLane,workInProgressRootInterleavedUpdatedLanes,workInProgressSuspendedRetryLanes,workInProgressRootDidSkipSuspendedSiblings,renderWasConcurrent,null,-0,0)}}break}while(1);ensureRootIsScheduled(root$jscomp$0)}function commitRootWhenReady(root,finishedWork,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,lanes,spawnedLane,updatedLanes,suspendedRetryLanes,didSkipSuspendedSiblings,exitStatus,suspendedCommitReason,completedRenderStartTime,completedRenderEndTime){if(root.timeoutHandle=noTimeout,suspendedCommitReason=finishedWork.subtreeFlags,suspendedCommitReason&8192||(suspendedCommitReason&16785408)===16785408){suspendedCommitReason=startSuspendingCommit(),accumulateSuspenseyCommitOnFiber(finishedWork,lanes,suspendedCommitReason);var timeoutOffset=(lanes&62914560)===lanes?globalMostRecentFallbackTime-now():(lanes&4194048)===lanes?globalMostRecentTransitionTime-now():0;if(timeoutOffset=waitForCommitToBeReady(suspendedCommitReason,timeoutOffset),timeoutOffset!==null){pendingEffectsLanes=lanes,root.cancelPendingCommit=timeoutOffset(commitRoot.bind(null,root,finishedWork,lanes,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes,exitStatus,suspendedCommitReason,null,completedRenderStartTime,completedRenderEndTime)),markRootSuspended(root,lanes,spawnedLane,!didSkipSuspendedSiblings);return}}commitRoot(root,finishedWork,lanes,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes)}function isRenderConsistentWithExternalStores(finishedWork){for(var node=finishedWork;;){var tag=node.tag;if((tag===0||tag===11||tag===15)&&node.flags&16384&&(tag=node.updateQueue,tag!==null&&(tag=tag.stores,tag!==null)))for(var i=0;i<tag.length;i++){var check=tag[i],getSnapshot=check.getSnapshot;check=check.value;try{if(!objectIs(getSnapshot(),check))return!1}catch(error){return!1}}if(tag=node.child,node.subtreeFlags&16384&&tag!==null)tag.return=node,node=tag;else{if(node===finishedWork)break;for(;node.sibling===null;){if(node.return===null||node.return===finishedWork)return!0;node=node.return}node.sibling.return=node.return,node=node.sibling}}return!0}function markRootSuspended(root,suspendedLanes,spawnedLane,didAttemptEntireTree){suspendedLanes&=~workInProgressRootPingedLanes,suspendedLanes&=~workInProgressRootInterleavedUpdatedLanes,root.suspendedLanes|=suspendedLanes,root.pingedLanes&=~suspendedLanes,didAttemptEntireTree&&(root.warmLanes|=suspendedLanes),didAttemptEntireTree=root.expirationTimes;for(var lanes=suspendedLanes;0<lanes;){var index$4=31-clz32(lanes),lane=1<<index$4;didAttemptEntireTree[index$4]=-1,lanes&=~lane}spawnedLane!==0&&markSpawnedDeferredLane(root,spawnedLane,suspendedLanes)}function flushSyncWork(){return(executionContext&6)===0?(flushSyncWorkAcrossRoots_impl(0,!1),!1):!0}function resetWorkInProgressStack(){if(workInProgress!==null){if(workInProgressSuspendedReason===0)var interruptedWork=workInProgress.return;else interruptedWork=workInProgress,lastContextDependency=currentlyRenderingFiber$1=null,resetHooksOnUnwind(interruptedWork),thenableState$1=null,thenableIndexCounter$1=0,interruptedWork=workInProgress;for(;interruptedWork!==null;)unwindInterruptedWork(interruptedWork.alternate,interruptedWork),interruptedWork=interruptedWork.return;workInProgress=null}}function prepareFreshStack(root,lanes){var timeoutHandle=root.timeoutHandle;timeoutHandle!==noTimeout&&(root.timeoutHandle=noTimeout,cancelTimeout(timeoutHandle)),timeoutHandle=root.cancelPendingCommit,timeoutHandle!==null&&(root.cancelPendingCommit=null,timeoutHandle()),pendingEffectsLanes=0,resetWorkInProgressStack(),workInProgressRoot=root,workInProgress=timeoutHandle=createWorkInProgress(root.current,null),workInProgressRootRenderLanes=lanes,workInProgressSuspendedReason=0,workInProgressThrownValue=null,workInProgressRootDidSkipSuspendedSiblings=!1,workInProgressRootIsPrerendering=checkIfRootIsPrerendering(root,lanes),workInProgressRootDidAttachPingListener=!1,workInProgressSuspendedRetryLanes=workInProgressDeferredLane=workInProgressRootPingedLanes=workInProgressRootInterleavedUpdatedLanes=workInProgressRootSkippedLanes=workInProgressRootExitStatus=0,workInProgressRootRecoverableErrors=workInProgressRootConcurrentErrors=null,workInProgressRootDidIncludeRecursiveRenderUpdate=!1,(lanes&8)!==0&&(lanes|=lanes&32);var allEntangledLanes=root.entangledLanes;if(allEntangledLanes!==0)for(root=root.entanglements,allEntangledLanes&=lanes;0<allEntangledLanes;){var index$2=31-clz32(allEntangledLanes),lane=1<<index$2;lanes|=root[index$2],allEntangledLanes&=~lane}return entangledRenderLanes=lanes,finishQueueingConcurrentUpdates(),timeoutHandle}function handleThrow(root,thrownValue){currentlyRenderingFiber=null,ReactSharedInternals.H=ContextOnlyDispatcher,thrownValue===SuspenseException||thrownValue===SuspenseActionException?(thrownValue=getSuspendedThenable(),workInProgressSuspendedReason=3):thrownValue===SuspenseyCommitException?(thrownValue=getSuspendedThenable(),workInProgressSuspendedReason=4):workInProgressSuspendedReason=thrownValue===SelectiveHydrationException?8:thrownValue!==null&&typeof thrownValue==="object"&&typeof thrownValue.then==="function"?6:1,workInProgressThrownValue=thrownValue,workInProgress===null&&(workInProgressRootExitStatus=1,logUncaughtError(root,createCapturedValueAtFiber(thrownValue,root.current)))}function shouldRemainOnPreviousScreen(){var handler=suspenseHandlerStackCursor.current;return handler===null?!0:(workInProgressRootRenderLanes&4194048)===workInProgressRootRenderLanes?shellBoundary===null?!0:!1:(workInProgressRootRenderLanes&62914560)===workInProgressRootRenderLanes||(workInProgressRootRenderLanes&536870912)!==0?handler===shellBoundary:!1}function pushDispatcher(){var prevDispatcher=ReactSharedInternals.H;return ReactSharedInternals.H=ContextOnlyDispatcher,prevDispatcher===null?ContextOnlyDispatcher:prevDispatcher}function pushAsyncDispatcher(){var prevAsyncDispatcher=ReactSharedInternals.A;return ReactSharedInternals.A=DefaultAsyncDispatcher,prevAsyncDispatcher}function renderDidSuspendDelayIfPossible(){workInProgressRootExitStatus=4,workInProgressRootDidSkipSuspendedSiblings||(workInProgressRootRenderLanes&4194048)!==workInProgressRootRenderLanes&&suspenseHandlerStackCursor.current!==null||(workInProgressRootIsPrerendering=!0),(workInProgressRootSkippedLanes&134217727)===0&&(workInProgressRootInterleavedUpdatedLanes&134217727)===0||workInProgressRoot===null||markRootSuspended(workInProgressRoot,workInProgressRootRenderLanes,workInProgressDeferredLane,!1)}function renderRootSync(root,lanes,shouldYieldForPrerendering){var prevExecutionContext=executionContext;executionContext|=2;var prevDispatcher=pushDispatcher(),prevAsyncDispatcher=pushAsyncDispatcher();if(workInProgressRoot!==root||workInProgressRootRenderLanes!==lanes)workInProgressTransitions=null,prepareFreshStack(root,lanes);lanes=!1;var exitStatus=workInProgressRootExitStatus;a:do try{if(workInProgressSuspendedReason!==0&&workInProgress!==null){var unitOfWork=workInProgress,thrownValue=workInProgressThrownValue;switch(workInProgressSuspendedReason){case 8:resetWorkInProgressStack(),exitStatus=6;break a;case 3:case 2:case 9:case 6:suspenseHandlerStackCursor.current===null&&(lanes=!0);var reason=workInProgressSuspendedReason;if(workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,unitOfWork,thrownValue,reason),shouldYieldForPrerendering&&workInProgressRootIsPrerendering){exitStatus=0;break a}break;default:reason=workInProgressSuspendedReason,workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,unitOfWork,thrownValue,reason)}}workLoopSync(),exitStatus=workInProgressRootExitStatus;break}catch(thrownValue$152){handleThrow(root,thrownValue$152)}while(1);return lanes&&root.shellSuspendCounter++,lastContextDependency=currentlyRenderingFiber$1=null,executionContext=prevExecutionContext,ReactSharedInternals.H=prevDispatcher,ReactSharedInternals.A=prevAsyncDispatcher,workInProgress===null&&(workInProgressRoot=null,workInProgressRootRenderLanes=0,finishQueueingConcurrentUpdates()),exitStatus}function workLoopSync(){for(;workInProgress!==null;)performUnitOfWork(workInProgress)}function renderRootConcurrent(root,lanes){var prevExecutionContext=executionContext;executionContext|=2;var prevDispatcher=pushDispatcher(),prevAsyncDispatcher=pushAsyncDispatcher();workInProgressRoot!==root||workInProgressRootRenderLanes!==lanes?(workInProgressTransitions=null,workInProgressRootRenderTargetTime=now()+500,prepareFreshStack(root,lanes)):workInProgressRootIsPrerendering=checkIfRootIsPrerendering(root,lanes);a:do try{if(workInProgressSuspendedReason!==0&&workInProgress!==null){lanes=workInProgress;var thrownValue=workInProgressThrownValue;b:switch(workInProgressSuspendedReason){case 1:workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,1);break;case 2:case 9:if(isThenableResolved(thrownValue)){workInProgressSuspendedReason=0,workInProgressThrownValue=null,replaySuspendedUnitOfWork(lanes);break}lanes=function(){workInProgressSuspendedReason!==2&&workInProgressSuspendedReason!==9||workInProgressRoot!==root||(workInProgressSuspendedReason=7),ensureRootIsScheduled(root)},thrownValue.then(lanes,lanes);break a;case 3:workInProgressSuspendedReason=7;break a;case 4:workInProgressSuspendedReason=5;break a;case 7:isThenableResolved(thrownValue)?(workInProgressSuspendedReason=0,workInProgressThrownValue=null,replaySuspendedUnitOfWork(lanes)):(workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,7));break;case 5:var resource=null;switch(workInProgress.tag){case 26:resource=workInProgress.memoizedState;case 5:case 27:var hostFiber=workInProgress,type=hostFiber.type,props=hostFiber.pendingProps;if(resource?preloadResource(resource):preloadInstance(hostFiber.stateNode,type,props)){workInProgressSuspendedReason=0,workInProgressThrownValue=null;var sibling=hostFiber.sibling;if(sibling!==null)workInProgress=sibling;else{var returnFiber=hostFiber.return;returnFiber!==null?(workInProgress=returnFiber,completeUnitOfWork(returnFiber)):workInProgress=null}break b}}workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,5);break;case 6:workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,6);break;case 8:resetWorkInProgressStack(),workInProgressRootExitStatus=6;break a;default:throw Error(formatProdErrorMessage(462))}}workLoopConcurrentByScheduler();break}catch(thrownValue$154){handleThrow(root,thrownValue$154)}while(1);if(lastContextDependency=currentlyRenderingFiber$1=null,ReactSharedInternals.H=prevDispatcher,ReactSharedInternals.A=prevAsyncDispatcher,executionContext=prevExecutionContext,workInProgress!==null)return 0;return workInProgressRoot=null,workInProgressRootRenderLanes=0,finishQueueingConcurrentUpdates(),workInProgressRootExitStatus}function workLoopConcurrentByScheduler(){for(;workInProgress!==null&&!shouldYield();)performUnitOfWork(workInProgress)}function performUnitOfWork(unitOfWork){var next=beginWork(unitOfWork.alternate,unitOfWork,entangledRenderLanes);unitOfWork.memoizedProps=unitOfWork.pendingProps,next===null?completeUnitOfWork(unitOfWork):workInProgress=next}function replaySuspendedUnitOfWork(unitOfWork){var next=unitOfWork,current=next.alternate;switch(next.tag){case 15:case 0:next=replayFunctionComponent(current,next,next.pendingProps,next.type,void 0,workInProgressRootRenderLanes);break;case 11:next=replayFunctionComponent(current,next,next.pendingProps,next.type.render,next.ref,workInProgressRootRenderLanes);break;case 5:resetHooksOnUnwind(next);default:unwindInterruptedWork(current,next),next=workInProgress=resetWorkInProgress(next,entangledRenderLanes),next=beginWork(current,next,entangledRenderLanes)}unitOfWork.memoizedProps=unitOfWork.pendingProps,next===null?completeUnitOfWork(unitOfWork):workInProgress=next}function throwAndUnwindWorkLoop(root,unitOfWork,thrownValue,suspendedReason){lastContextDependency=currentlyRenderingFiber$1=null,resetHooksOnUnwind(unitOfWork),thenableState$1=null,thenableIndexCounter$1=0;var returnFiber=unitOfWork.return;try{if(throwException(root,returnFiber,unitOfWork,thrownValue,workInProgressRootRenderLanes)){workInProgressRootExitStatus=1,logUncaughtError(root,createCapturedValueAtFiber(thrownValue,root.current)),workInProgress=null;return}}catch(error){if(returnFiber!==null)throw workInProgress=returnFiber,error;workInProgressRootExitStatus=1,logUncaughtError(root,createCapturedValueAtFiber(thrownValue,root.current)),workInProgress=null;return}if(unitOfWork.flags&32768){if(isHydrating||suspendedReason===1)root=!0;else if(workInProgressRootIsPrerendering||(workInProgressRootRenderLanes&536870912)!==0)root=!1;else if(workInProgressRootDidSkipSuspendedSiblings=root=!0,suspendedReason===2||suspendedReason===9||suspendedReason===3||suspendedReason===6)suspendedReason=suspenseHandlerStackCursor.current,suspendedReason!==null&&suspendedReason.tag===13&&(suspendedReason.flags|=16384);unwindUnitOfWork(unitOfWork,root)}else completeUnitOfWork(unitOfWork)}function completeUnitOfWork(unitOfWork){var completedWork=unitOfWork;do{if((completedWork.flags&32768)!==0){unwindUnitOfWork(completedWork,workInProgressRootDidSkipSuspendedSiblings);return}unitOfWork=completedWork.return;var next=completeWork(completedWork.alternate,completedWork,entangledRenderLanes);if(next!==null){workInProgress=next;return}if(completedWork=completedWork.sibling,completedWork!==null){workInProgress=completedWork;return}workInProgress=completedWork=unitOfWork}while(completedWork!==null);workInProgressRootExitStatus===0&&(workInProgressRootExitStatus=5)}function unwindUnitOfWork(unitOfWork,skipSiblings){do{var next=unwindWork(unitOfWork.alternate,unitOfWork);if(next!==null){next.flags&=32767,workInProgress=next;return}if(next=unitOfWork.return,next!==null&&(next.flags|=32768,next.subtreeFlags=0,next.deletions=null),!skipSiblings&&(unitOfWork=unitOfWork.sibling,unitOfWork!==null)){workInProgress=unitOfWork;return}workInProgress=unitOfWork=next}while(unitOfWork!==null);workInProgressRootExitStatus=6,workInProgress=null}function commitRoot(root,finishedWork,lanes,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes){root.cancelPendingCommit=null;do flushPendingEffects();while(pendingEffectsStatus!==0);if((executionContext&6)!==0)throw Error(formatProdErrorMessage(327));if(finishedWork!==null){if(finishedWork===root.current)throw Error(formatProdErrorMessage(177));if(didIncludeRenderPhaseUpdate=finishedWork.lanes|finishedWork.childLanes,didIncludeRenderPhaseUpdate|=concurrentlyUpdatedLanes,markRootFinished(root,lanes,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes),root===workInProgressRoot&&(workInProgress=workInProgressRoot=null,workInProgressRootRenderLanes=0),pendingFinishedWork=finishedWork,pendingEffectsRoot=root,pendingEffectsLanes=lanes,pendingEffectsRemainingLanes=didIncludeRenderPhaseUpdate,pendingPassiveTransitions=transitions,pendingRecoverableErrors=recoverableErrors,(finishedWork.subtreeFlags&10256)!==0||(finishedWork.flags&10256)!==0?(root.callbackNode=null,root.callbackPriority=0,scheduleCallback(NormalPriority$1,function(){return flushPassiveEffects(),null})):(root.callbackNode=null,root.callbackPriority=0),recoverableErrors=(finishedWork.flags&13878)!==0,(finishedWork.subtreeFlags&13878)!==0||recoverableErrors){recoverableErrors=ReactSharedInternals.T,ReactSharedInternals.T=null,transitions=getCurrentUpdatePriority(),setCurrentUpdatePriority(2),spawnedLane=executionContext,executionContext|=4;try{commitBeforeMutationEffects(root,finishedWork,lanes)}finally{executionContext=spawnedLane,setCurrentUpdatePriority(transitions),ReactSharedInternals.T=recoverableErrors}}pendingEffectsStatus=1,flushMutationEffects(),flushLayoutEffects(),flushSpawnedWork()}}function flushMutationEffects(){if(pendingEffectsStatus===1){pendingEffectsStatus=0;var root=pendingEffectsRoot,finishedWork=pendingFinishedWork,rootMutationHasEffect=(finishedWork.flags&13878)!==0;if((finishedWork.subtreeFlags&13878)!==0||rootMutationHasEffect){rootMutationHasEffect=ReactSharedInternals.T,ReactSharedInternals.T=null;var previousPriority=getCurrentUpdatePriority();setCurrentUpdatePriority(2);var prevExecutionContext=executionContext;executionContext|=4;try{commitMutationEffectsOnFiber(finishedWork,root),resetAfterCommit(root.containerInfo)}finally{executionContext=prevExecutionContext,setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=rootMutationHasEffect}}root.current=finishedWork,pendingEffectsStatus=2}}function flushLayoutEffects(){if(pendingEffectsStatus===2){pendingEffectsStatus=0;var root=pendingEffectsRoot,finishedWork=pendingFinishedWork,rootHasLayoutEffect=(finishedWork.flags&8772)!==0;if((finishedWork.subtreeFlags&8772)!==0||rootHasLayoutEffect){rootHasLayoutEffect=ReactSharedInternals.T,ReactSharedInternals.T=null;var previousPriority=getCurrentUpdatePriority();setCurrentUpdatePriority(2);var prevExecutionContext=executionContext;executionContext|=4;try{commitLayoutEffectOnFiber(root,finishedWork.alternate,finishedWork)}finally{executionContext=prevExecutionContext,setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=rootHasLayoutEffect}}pendingEffectsStatus=3}}function flushSpawnedWork(){if(pendingEffectsStatus===4||pendingEffectsStatus===3){pendingEffectsStatus=0,requestPaint();var root=pendingEffectsRoot,finishedWork=pendingFinishedWork,lanes=pendingEffectsLanes,recoverableErrors=pendingRecoverableErrors;(finishedWork.subtreeFlags&10256)!==0||(finishedWork.flags&10256)!==0?pendingEffectsStatus=5:(pendingEffectsStatus=0,pendingFinishedWork=pendingEffectsRoot=null,releaseRootPooledCache(root,root.pendingLanes));var remainingLanes=root.pendingLanes;if(remainingLanes===0&&(legacyErrorBoundariesThatAlreadyFailed=null),lanesToEventPriority(lanes),finishedWork=finishedWork.stateNode,injectedHook&&typeof injectedHook.onCommitFiberRoot==="function")try{injectedHook.onCommitFiberRoot(rendererID,finishedWork,void 0,(finishedWork.current.flags&128)===128)}catch(err){}if(recoverableErrors!==null){finishedWork=ReactSharedInternals.T,remainingLanes=getCurrentUpdatePriority(),setCurrentUpdatePriority(2),ReactSharedInternals.T=null;try{for(var onRecoverableError=root.onRecoverableError,i=0;i<recoverableErrors.length;i++){var recoverableError=recoverableErrors[i];onRecoverableError(recoverableError.value,{componentStack:recoverableError.stack})}}finally{ReactSharedInternals.T=finishedWork,setCurrentUpdatePriority(remainingLanes)}}(pendingEffectsLanes&3)!==0&&flushPendingEffects(),ensureRootIsScheduled(root),remainingLanes=root.pendingLanes,(lanes&261930)!==0&&(remainingLanes&42)!==0?root===rootWithNestedUpdates?nestedUpdateCount++:(nestedUpdateCount=0,rootWithNestedUpdates=root):nestedUpdateCount=0,supportsHydration&&flushHydrationEvents(),flushSyncWorkAcrossRoots_impl(0,!1)}}function releaseRootPooledCache(root,remainingLanes){(root.pooledCacheLanes&=remainingLanes)===0&&(remainingLanes=root.pooledCache,remainingLanes!=null&&(root.pooledCache=null,releaseCache(remainingLanes)))}function flushPendingEffects(){return flushMutationEffects(),flushLayoutEffects(),flushSpawnedWork(),flushPassiveEffects()}function flushPassiveEffects(){if(pendingEffectsStatus!==5)return!1;var root=pendingEffectsRoot,remainingLanes=pendingEffectsRemainingLanes;pendingEffectsRemainingLanes=0;var renderPriority=lanesToEventPriority(pendingEffectsLanes),priority=32>renderPriority?32:renderPriority;renderPriority=ReactSharedInternals.T;var previousPriority=getCurrentUpdatePriority();try{setCurrentUpdatePriority(priority),ReactSharedInternals.T=null,priority=pendingPassiveTransitions,pendingPassiveTransitions=null;var root$jscomp$0=pendingEffectsRoot,lanes=pendingEffectsLanes;if(pendingEffectsStatus=0,pendingFinishedWork=pendingEffectsRoot=null,pendingEffectsLanes=0,(executionContext&6)!==0)throw Error(formatProdErrorMessage(331));var prevExecutionContext=executionContext;if(executionContext|=4,commitPassiveUnmountOnFiber(root$jscomp$0.current),commitPassiveMountOnFiber(root$jscomp$0,root$jscomp$0.current,lanes,priority),executionContext=prevExecutionContext,flushSyncWorkAcrossRoots_impl(0,!1),injectedHook&&typeof injectedHook.onPostCommitFiberRoot==="function")try{injectedHook.onPostCommitFiberRoot(rendererID,root$jscomp$0)}catch(err){}return!0}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=renderPriority,releaseRootPooledCache(root,remainingLanes)}}function captureCommitPhaseErrorOnRoot(rootFiber,sourceFiber,error){sourceFiber=createCapturedValueAtFiber(error,sourceFiber),sourceFiber=createRootErrorUpdate(rootFiber.stateNode,sourceFiber,2),rootFiber=enqueueUpdate(rootFiber,sourceFiber,2),rootFiber!==null&&(markRootUpdated$1(rootFiber,2),ensureRootIsScheduled(rootFiber))}function captureCommitPhaseError(sourceFiber,nearestMountedAncestor,error){if(sourceFiber.tag===3)captureCommitPhaseErrorOnRoot(sourceFiber,sourceFiber,error);else for(;nearestMountedAncestor!==null;){if(nearestMountedAncestor.tag===3){captureCommitPhaseErrorOnRoot(nearestMountedAncestor,sourceFiber,error);break}else if(nearestMountedAncestor.tag===1){var instance=nearestMountedAncestor.stateNode;if(typeof nearestMountedAncestor.type.getDerivedStateFromError==="function"||typeof instance.componentDidCatch==="function"&&(legacyErrorBoundariesThatAlreadyFailed===null||!legacyErrorBoundariesThatAlreadyFailed.has(instance))){sourceFiber=createCapturedValueAtFiber(error,sourceFiber),error=createClassErrorUpdate(2),instance=enqueueUpdate(nearestMountedAncestor,error,2),instance!==null&&(initializeClassErrorUpdate(error,instance,nearestMountedAncestor,sourceFiber),markRootUpdated$1(instance,2),ensureRootIsScheduled(instance));break}}nearestMountedAncestor=nearestMountedAncestor.return}}function attachPingListener(root,wakeable,lanes){var pingCache=root.pingCache;if(pingCache===null){pingCache=root.pingCache=new PossiblyWeakMap;var threadIDs=new Set;pingCache.set(wakeable,threadIDs)}else threadIDs=pingCache.get(wakeable),threadIDs===void 0&&(threadIDs=new Set,pingCache.set(wakeable,threadIDs));threadIDs.has(lanes)||(workInProgressRootDidAttachPingListener=!0,threadIDs.add(lanes),root=pingSuspendedRoot.bind(null,root,wakeable,lanes),wakeable.then(root,root))}function pingSuspendedRoot(root,wakeable,pingedLanes){var pingCache=root.pingCache;pingCache!==null&&pingCache.delete(wakeable),root.pingedLanes|=root.suspendedLanes&pingedLanes,root.warmLanes&=~pingedLanes,workInProgressRoot===root&&(workInProgressRootRenderLanes&pingedLanes)===pingedLanes&&(workInProgressRootExitStatus===4||workInProgressRootExitStatus===3&&(workInProgressRootRenderLanes&62914560)===workInProgressRootRenderLanes&&300>now()-globalMostRecentFallbackTime?(executionContext&2)===0&&prepareFreshStack(root,0):workInProgressRootPingedLanes|=pingedLanes,workInProgressSuspendedRetryLanes===workInProgressRootRenderLanes&&(workInProgressSuspendedRetryLanes=0)),ensureRootIsScheduled(root)}function retryTimedOutBoundary(boundaryFiber,retryLane){retryLane===0&&(retryLane=claimNextRetryLane()),boundaryFiber=enqueueConcurrentRenderForLane(boundaryFiber,retryLane),boundaryFiber!==null&&(markRootUpdated$1(boundaryFiber,retryLane),ensureRootIsScheduled(boundaryFiber))}function retryDehydratedSuspenseBoundary(boundaryFiber){var suspenseState=boundaryFiber.memoizedState,retryLane=0;suspenseState!==null&&(retryLane=suspenseState.retryLane),retryTimedOutBoundary(boundaryFiber,retryLane)}function resolveRetryWakeable(boundaryFiber,wakeable){var retryLane=0;switch(boundaryFiber.tag){case 31:case 13:var{stateNode:retryCache,memoizedState:suspenseState}=boundaryFiber;suspenseState!==null&&(retryLane=suspenseState.retryLane);break;case 19:retryCache=boundaryFiber.stateNode;break;case 22:retryCache=boundaryFiber.stateNode._retryCache;break;default:throw Error(formatProdErrorMessage(314))}retryCache!==null&&retryCache.delete(wakeable),retryTimedOutBoundary(boundaryFiber,retryLane)}function scheduleCallback(priorityLevel,callback){return scheduleCallback$3(priorityLevel,callback)}function FiberNode(tag,pendingProps,key,mode){this.tag=tag,this.key=key,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=pendingProps,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=mode,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function shouldConstruct(Component){return Component=Component.prototype,!(!Component||!Component.isReactComponent)}function createWorkInProgress(current,pendingProps){var workInProgress2=current.alternate;return workInProgress2===null?(workInProgress2=createFiber(current.tag,pendingProps,current.key,current.mode),workInProgress2.elementType=current.elementType,workInProgress2.type=current.type,workInProgress2.stateNode=current.stateNode,workInProgress2.alternate=current,current.alternate=workInProgress2):(workInProgress2.pendingProps=pendingProps,workInProgress2.type=current.type,workInProgress2.flags=0,workInProgress2.subtreeFlags=0,workInProgress2.deletions=null),workInProgress2.flags=current.flags&65011712,workInProgress2.childLanes=current.childLanes,workInProgress2.lanes=current.lanes,workInProgress2.child=current.child,workInProgress2.memoizedProps=current.memoizedProps,workInProgress2.memoizedState=current.memoizedState,workInProgress2.updateQueue=current.updateQueue,pendingProps=current.dependencies,workInProgress2.dependencies=pendingProps===null?null:{lanes:pendingProps.lanes,firstContext:pendingProps.firstContext},workInProgress2.sibling=current.sibling,workInProgress2.index=current.index,workInProgress2.ref=current.ref,workInProgress2.refCleanup=current.refCleanup,workInProgress2}function resetWorkInProgress(workInProgress2,renderLanes2){workInProgress2.flags&=65011714;var current=workInProgress2.alternate;return current===null?(workInProgress2.childLanes=0,workInProgress2.lanes=renderLanes2,workInProgress2.child=null,workInProgress2.subtreeFlags=0,workInProgress2.memoizedProps=null,workInProgress2.memoizedState=null,workInProgress2.updateQueue=null,workInProgress2.dependencies=null,workInProgress2.stateNode=null):(workInProgress2.childLanes=current.childLanes,workInProgress2.lanes=current.lanes,workInProgress2.child=current.child,workInProgress2.subtreeFlags=0,workInProgress2.deletions=null,workInProgress2.memoizedProps=current.memoizedProps,workInProgress2.memoizedState=current.memoizedState,workInProgress2.updateQueue=current.updateQueue,workInProgress2.type=current.type,renderLanes2=current.dependencies,workInProgress2.dependencies=renderLanes2===null?null:{lanes:renderLanes2.lanes,firstContext:renderLanes2.firstContext}),workInProgress2}function createFiberFromTypeAndProps(type,key,pendingProps,owner,mode,lanes){var fiberTag=0;if(owner=type,typeof type==="function")shouldConstruct(type)&&(fiberTag=1);else if(typeof type==="string")fiberTag=supportsResources&&supportsSingletons?isHostHoistableType(type,pendingProps,contextStackCursor.current)?26:isHostSingletonType(type)?27:5:supportsResources?isHostHoistableType(type,pendingProps,contextStackCursor.current)?26:5:supportsSingletons?isHostSingletonType(type)?27:5:5;else a:switch(type){case REACT_ACTIVITY_TYPE:return type=createFiber(31,pendingProps,key,mode),type.elementType=REACT_ACTIVITY_TYPE,type.lanes=lanes,type;case REACT_FRAGMENT_TYPE2:return createFiberFromFragment(pendingProps.children,mode,lanes,key);case REACT_STRICT_MODE_TYPE:fiberTag=8,mode|=24;break;case REACT_PROFILER_TYPE:return type=createFiber(12,pendingProps,key,mode|2),type.elementType=REACT_PROFILER_TYPE,type.lanes=lanes,type;case REACT_SUSPENSE_TYPE:return type=createFiber(13,pendingProps,key,mode),type.elementType=REACT_SUSPENSE_TYPE,type.lanes=lanes,type;case REACT_SUSPENSE_LIST_TYPE:return type=createFiber(19,pendingProps,key,mode),type.elementType=REACT_SUSPENSE_LIST_TYPE,type.lanes=lanes,type;default:if(typeof type==="object"&&type!==null)switch(type.$$typeof){case REACT_CONTEXT_TYPE:fiberTag=10;break a;case REACT_CONSUMER_TYPE:fiberTag=9;break a;case REACT_FORWARD_REF_TYPE:fiberTag=11;break a;case REACT_MEMO_TYPE:fiberTag=14;break a;case REACT_LAZY_TYPE:fiberTag=16,owner=null;break a}fiberTag=29,pendingProps=Error(formatProdErrorMessage(130,type===null?"null":typeof type,"")),owner=null}return key=createFiber(fiberTag,pendingProps,key,mode),key.elementType=type,key.type=owner,key.lanes=lanes,key}function createFiberFromFragment(elements,mode,lanes,key){return elements=createFiber(7,elements,key,mode),elements.lanes=lanes,elements}function createFiberFromText(content,mode,lanes){return content=createFiber(6,content,null,mode),content.lanes=lanes,content}function createFiberFromDehydratedFragment(dehydratedNode){var fiber=createFiber(18,null,null,0);return fiber.stateNode=dehydratedNode,fiber}function createFiberFromPortal(portal,mode,lanes){return mode=createFiber(4,portal.children!==null?portal.children:[],portal.key,mode),mode.lanes=lanes,mode.stateNode={containerInfo:portal.containerInfo,pendingChildren:null,implementation:portal.implementation},mode}function FiberRootNode(containerInfo,tag,hydrate,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator,formState){this.tag=1,this.containerInfo=containerInfo,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=noTimeout,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=createLaneMap(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=createLaneMap(0),this.hiddenUpdates=createLaneMap(null),this.identifierPrefix=identifierPrefix,this.onUncaughtError=onUncaughtError,this.onCaughtError=onCaughtError,this.onRecoverableError=onRecoverableError,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=formState,this.incompleteTransitions=new Map}function createFiberRoot(containerInfo,tag,hydrate,initialChildren,hydrationCallbacks,isStrictMode,identifierPrefix,formState,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator){return containerInfo=new FiberRootNode(containerInfo,tag,hydrate,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator,formState),tag=1,isStrictMode===!0&&(tag|=24),isStrictMode=createFiber(3,null,null,tag),containerInfo.current=isStrictMode,isStrictMode.stateNode=containerInfo,tag=createCache(),tag.refCount++,containerInfo.pooledCache=tag,tag.refCount++,isStrictMode.memoizedState={element:initialChildren,isDehydrated:hydrate,cache:tag},initializeUpdateQueue(isStrictMode),containerInfo}function getContextForSubtree(parentComponent){if(!parentComponent)return emptyContextObject;return parentComponent=emptyContextObject,parentComponent}function findHostInstance(component){var fiber=component._reactInternals;if(fiber===void 0){if(typeof component.render==="function")throw Error(formatProdErrorMessage(188));throw component=Object.keys(component).join(","),Error(formatProdErrorMessage(268,component))}return component=findCurrentFiberUsingSlowPath(fiber),component=component!==null?findCurrentHostFiberImpl(component):null,component===null?null:getPublicInstance(component.stateNode)}function updateContainerImpl(rootFiber,lane,element,container,parentComponent,callback){parentComponent=getContextForSubtree(parentComponent),container.context===null?container.context=parentComponent:container.pendingContext=parentComponent,container=createUpdate(lane),container.payload={element},callback=callback===void 0?null:callback,callback!==null&&(container.callback=callback),element=enqueueUpdate(rootFiber,container,lane),element!==null&&(scheduleUpdateOnFiber(element,rootFiber,lane),entangleTransitions(element,rootFiber,lane))}function markRetryLaneImpl(fiber,retryLane){if(fiber=fiber.memoizedState,fiber!==null&&fiber.dehydrated!==null){var a=fiber.retryLane;fiber.retryLane=a!==0&&a<retryLane?a:retryLane}}function markRetryLaneIfNotHydrated(fiber,retryLane){markRetryLaneImpl(fiber,retryLane),(fiber=fiber.alternate)&&markRetryLaneImpl(fiber,retryLane)}var exports2={},assign=Object.assign,REACT_LEGACY_ELEMENT_TYPE=Symbol.for("react.element"),REACT_ELEMENT_TYPE2=Symbol.for("react.transitional.element"),REACT_PORTAL_TYPE=Symbol.for("react.portal"),REACT_FRAGMENT_TYPE2=Symbol.for("react.fragment"),REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode"),REACT_PROFILER_TYPE=Symbol.for("react.profiler"),REACT_CONSUMER_TYPE=Symbol.for("react.consumer"),REACT_CONTEXT_TYPE=Symbol.for("react.context"),REACT_FORWARD_REF_TYPE=Symbol.for("react.forward_ref"),REACT_SUSPENSE_TYPE=Symbol.for("react.suspense"),REACT_SUSPENSE_LIST_TYPE=Symbol.for("react.suspense_list"),REACT_MEMO_TYPE=Symbol.for("react.memo"),REACT_LAZY_TYPE=Symbol.for("react.lazy"),REACT_ACTIVITY_TYPE=Symbol.for("react.activity"),REACT_MEMO_CACHE_SENTINEL=Symbol.for("react.memo_cache_sentinel"),MAYBE_ITERATOR_SYMBOL=Symbol.iterator,REACT_CLIENT_REFERENCE=Symbol.for("react.client.reference"),isArrayImpl=Array.isArray,ReactSharedInternals=React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,rendererVersion=$$$config.rendererVersion,rendererPackageName=$$$config.rendererPackageName,extraDevToolsConfig=$$$config.extraDevToolsConfig,getPublicInstance=$$$config.getPublicInstance,getRootHostContext=$$$config.getRootHostContext,getChildHostContext=$$$config.getChildHostContext,prepareForCommit=$$$config.prepareForCommit,resetAfterCommit=$$$config.resetAfterCommit,createInstance=$$$config.createInstance;$$$config.cloneMutableInstance;var{appendInitialChild,finalizeInitialChildren,shouldSetTextContent,createTextInstance}=$$$config;$$$config.cloneMutableTextInstance;var{scheduleTimeout,cancelTimeout,noTimeout,isPrimaryRenderer}=$$$config;$$$config.warnsIfNotActing;var{supportsMutation,supportsPersistence,supportsHydration,getInstanceFromNode}=$$$config;$$$config.beforeActiveInstanceBlur;var preparePortalMount=$$$config.preparePortalMount;$$$config.prepareScopeUpdate,$$$config.getInstanceFromScope;var{setCurrentUpdatePriority,getCurrentUpdatePriority,resolveUpdatePriority}=$$$config;$$$config.trackSchedulerEvent,$$$config.resolveEventType,$$$config.resolveEventTimeStamp;var{shouldAttemptEagerTransition,detachDeletedInstance}=$$$config;$$$config.requestPostPaintCallback;var{maySuspendCommit,maySuspendCommitOnUpdate,maySuspendCommitInSyncRender,preloadInstance,startSuspendingCommit,suspendInstance}=$$$config;$$$config.suspendOnActiveViewTransition;var waitForCommitToBeReady=$$$config.waitForCommitToBeReady;$$$config.getSuspendedCommitReason;var{NotPendingTransition,HostTransitionContext,resetFormInstance}=$$$config;$$$config.bindToConsole;var{supportsMicrotasks,scheduleMicrotask,supportsTestSelectors,findFiberRoot,getBoundingRect,getTextContent,isHiddenSubtree,matchAccessibilityRole,setFocusIfFocusable,setupIntersectionObserver,appendChild,appendChildToContainer,commitTextUpdate,commitMount,commitUpdate,insertBefore,insertInContainerBefore,removeChild,removeChildFromContainer,resetTextContent,hideInstance,hideTextInstance,unhideInstance,unhideTextInstance}=$$$config;$$$config.cancelViewTransitionName,$$$config.cancelRootViewTransitionName,$$$config.restoreRootViewTransitionName,$$$config.cloneRootViewTransitionContainer,$$$config.removeRootViewTransitionClone,$$$config.measureClonedInstance,$$$config.hasInstanceChanged,$$$config.hasInstanceAffectedParent,$$$config.startViewTransition,$$$config.startGestureTransition,$$$config.stopViewTransition,$$$config.getCurrentGestureOffset,$$$config.createViewTransitionInstance;var clearContainer=$$$config.clearContainer;$$$config.createFragmentInstance,$$$config.updateFragmentInstanceFiber,$$$config.commitNewChildToFragmentInstance,$$$config.deleteChildFromFragmentInstance;var{cloneInstance,createContainerChildSet,appendChildToContainerChildSet,finalizeContainerChildren,replaceContainerChildren,cloneHiddenInstance,cloneHiddenTextInstance,isSuspenseInstancePending,isSuspenseInstanceFallback,getSuspenseInstanceFallbackErrorDetails,registerSuspenseInstanceRetry,canHydrateFormStateMarker,isFormStateMarkerMatching,getNextHydratableSibling,getNextHydratableSiblingAfterSingleton,getFirstHydratableChild,getFirstHydratableChildWithinContainer,getFirstHydratableChildWithinActivityInstance,getFirstHydratableChildWithinSuspenseInstance,getFirstHydratableChildWithinSingleton,canHydrateInstance,canHydrateTextInstance,canHydrateActivityInstance,canHydrateSuspenseInstance,hydrateInstance,hydrateTextInstance,hydrateActivityInstance,hydrateSuspenseInstance,getNextHydratableInstanceAfterActivityInstance,getNextHydratableInstanceAfterSuspenseInstance,commitHydratedInstance,commitHydratedContainer,commitHydratedActivityInstance,commitHydratedSuspenseInstance,finalizeHydratedChildren,flushHydrationEvents}=$$$config;$$$config.clearActivityBoundary;var clearSuspenseBoundary=$$$config.clearSuspenseBoundary;$$$config.clearActivityBoundaryFromContainer;var{clearSuspenseBoundaryFromContainer,hideDehydratedBoundary,unhideDehydratedBoundary,shouldDeleteUnhydratedTailInstances}=$$$config;$$$config.diffHydratedPropsForDevWarnings,$$$config.diffHydratedTextForDevWarnings,$$$config.describeHydratableInstanceForDevWarnings;var{validateHydratableInstance,validateHydratableTextInstance,supportsResources,isHostHoistableType,getHoistableRoot,getResource,acquireResource,releaseResource,hydrateHoistable,mountHoistable,unmountHoistable,createHoistableInstance,prepareToCommitHoistables,mayResourceSuspendCommit,preloadResource,suspendResource,supportsSingletons,resolveSingletonInstance,acquireSingletonInstance,releaseSingletonInstance,isHostSingletonType,isSingletonScope}=$$$config,valueStack=[],index$jscomp$0=-1,emptyContextObject={},clz32=Math.clz32?Math.clz32:clz32Fallback,log$1=Math.log,LN2=Math.LN2,nextTransitionUpdateLane=256,nextTransitionDeferredLane=262144,nextRetryLane=4194304,scheduleCallback$3=$unstable_scheduleCallback,cancelCallback$1=$unstable_cancelCallback,shouldYield=$unstable_shouldYield,requestPaint=$unstable_requestPaint,now=$unstable_now,ImmediatePriority=$unstable_ImmediatePriority,UserBlockingPriority=$unstable_UserBlockingPriority,NormalPriority$1=$unstable_NormalPriority,IdlePriority=$unstable_IdlePriority,log2=void 0,unstable_setDisableYieldValue2=void 0,rendererID=null,injectedHook=null,objectIs=typeof Object.is==="function"?Object.is:is,reportGlobalError=typeof reportError==="function"?reportError:function(error){if(typeof window==="object"&&typeof window.ErrorEvent==="function"){var event=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof error==="object"&&error!==null&&typeof error.message==="string"?String(error.message):String(error),error});if(!window.dispatchEvent(event))return}else if(typeof process==="object"&&typeof process.emit==="function"){process.emit("uncaughtException",error);return}console.error(error)},hasOwnProperty=Object.prototype.hasOwnProperty,prefix,suffix2,reentry=!1,CapturedStacks=new WeakMap,forkStack=[],forkStackIndex=0,treeForkProvider=null,treeForkCount=0,idStack=[],idStackIndex=0,treeContextProvider=null,treeContextId=1,treeContextOverflow="",contextStackCursor=createCursor(null),contextFiberStackCursor=createCursor(null),rootInstanceStackCursor=createCursor(null),hostTransitionProviderCursor=createCursor(null),hydrationParentFiber=null,nextHydratableInstance=null,isHydrating=!1,hydrationErrors=null,rootOrSingletonContext=!1,HydrationMismatchException=Error(formatProdErrorMessage(519)),valueCursor=createCursor(null),currentlyRenderingFiber$1=null,lastContextDependency=null,AbortControllerLocal=typeof AbortController<"u"?AbortController:function(){var listeners=[],signal=this.signal={aborted:!1,addEventListener:function(type,listener){listeners.push(listener)}};this.abort=function(){signal.aborted=!0,listeners.forEach(function(listener){return listener()})}},scheduleCallback$2=$unstable_scheduleCallback,NormalPriority=$unstable_NormalPriority,CacheContext={$$typeof:REACT_CONTEXT_TYPE,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0},firstScheduledRoot=null,lastScheduledRoot=null,didScheduleMicrotask=!1,mightHavePendingSyncWork=!1,isFlushingWork=!1,currentEventTransitionLane=0,currentEntangledListeners=null,currentEntangledPendingCount=0,currentEntangledLane=0,currentEntangledActionThenable=null,prevOnStartTransitionFinish=ReactSharedInternals.S;ReactSharedInternals.S=function(transition,returnValue){globalMostRecentTransitionTime=now(),typeof returnValue==="object"&&returnValue!==null&&typeof returnValue.then==="function"&&entangleAsyncAction(transition,returnValue),prevOnStartTransitionFinish!==null&&prevOnStartTransitionFinish(transition,returnValue)};var resumedCache=createCursor(null),SuspenseException=Error(formatProdErrorMessage(460)),SuspenseyCommitException=Error(formatProdErrorMessage(474)),SuspenseActionException=Error(formatProdErrorMessage(542)),noopSuspenseyCommitThenable={then:function(){}},suspendedThenable=null,thenableState$1=null,thenableIndexCounter$1=0,reconcileChildFibers=createChildReconciler(!0),mountChildFibers=createChildReconciler(!1),concurrentQueues=[],concurrentQueuesIndex=0,concurrentlyUpdatedLanes=0,hasForceUpdate=!1,didReadFromEntangledAsyncAction=!1,currentTreeHiddenStackCursor=createCursor(null),prevEntangledRenderLanesCursor=createCursor(0),suspenseHandlerStackCursor=createCursor(null),shellBoundary=null,suspenseStackCursor=createCursor(0),renderLanes=0,currentlyRenderingFiber=null,currentHook=null,workInProgressHook=null,didScheduleRenderPhaseUpdate=!1,didScheduleRenderPhaseUpdateDuringThisPass=!1,shouldDoubleInvokeUserFnsInHooksDEV=!1,localIdCounter=0,thenableIndexCounter=0,thenableState=null,globalClientIdCounter=0,ContextOnlyDispatcher={readContext,use,useCallback:throwInvalidHookError,useContext:throwInvalidHookError,useEffect:throwInvalidHookError,useImperativeHandle:throwInvalidHookError,useLayoutEffect:throwInvalidHookError,useInsertionEffect:throwInvalidHookError,useMemo:throwInvalidHookError,useReducer:throwInvalidHookError,useRef:throwInvalidHookError,useState:throwInvalidHookError,useDebugValue:throwInvalidHookError,useDeferredValue:throwInvalidHookError,useTransition:throwInvalidHookError,useSyncExternalStore:throwInvalidHookError,useId:throwInvalidHookError,useHostTransitionStatus:throwInvalidHookError,useFormState:throwInvalidHookError,useActionState:throwInvalidHookError,useOptimistic:throwInvalidHookError,useMemoCache:throwInvalidHookError,useCacheRefresh:throwInvalidHookError};ContextOnlyDispatcher.useEffectEvent=throwInvalidHookError;var HooksDispatcherOnMount={readContext,use,useCallback:function(callback,deps){return mountWorkInProgressHook().memoizedState=[callback,deps===void 0?null:deps],callback},useContext:readContext,useEffect:mountEffect,useImperativeHandle:function(ref,create,deps){deps=deps!==null&&deps!==void 0?deps.concat([ref]):null,mountEffectImpl(4194308,4,imperativeHandleEffect.bind(null,create,ref),deps)},useLayoutEffect:function(create,deps){return mountEffectImpl(4194308,4,create,deps)},useInsertionEffect:function(create,deps){mountEffectImpl(4,2,create,deps)},useMemo:function(nextCreate,deps){var hook=mountWorkInProgressHook();deps=deps===void 0?null:deps;var nextValue=nextCreate();if(shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{nextCreate()}finally{setIsStrictModeForDevtools(!1)}}return hook.memoizedState=[nextValue,deps],nextValue},useReducer:function(reducer,initialArg,init){var hook=mountWorkInProgressHook();if(init!==void 0){var initialState=init(initialArg);if(shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{init(initialArg)}finally{setIsStrictModeForDevtools(!1)}}}else initialState=initialArg;return hook.memoizedState=hook.baseState=initialState,reducer={pending:null,lanes:0,dispatch:null,lastRenderedReducer:reducer,lastRenderedState:initialState},hook.queue=reducer,reducer=reducer.dispatch=dispatchReducerAction.bind(null,currentlyRenderingFiber,reducer),[hook.memoizedState,reducer]},useRef:function(initialValue){var hook=mountWorkInProgressHook();return initialValue={current:initialValue},hook.memoizedState=initialValue},useState:function(initialState){initialState=mountStateImpl(initialState);var queue=initialState.queue,dispatch=dispatchSetState.bind(null,currentlyRenderingFiber,queue);return queue.dispatch=dispatch,[initialState.memoizedState,dispatch]},useDebugValue:mountDebugValue,useDeferredValue:function(value,initialValue){var hook=mountWorkInProgressHook();return mountDeferredValueImpl(hook,value,initialValue)},useTransition:function(){var stateHook=mountStateImpl(!1);return stateHook=startTransition.bind(null,currentlyRenderingFiber,stateHook.queue,!0,!1),mountWorkInProgressHook().memoizedState=stateHook,[!1,stateHook]},useSyncExternalStore:function(subscribe,getSnapshot,getServerSnapshot){var fiber=currentlyRenderingFiber,hook=mountWorkInProgressHook();if(isHydrating){if(getServerSnapshot===void 0)throw Error(formatProdErrorMessage(407));getServerSnapshot=getServerSnapshot()}else{if(getServerSnapshot=getSnapshot(),workInProgressRoot===null)throw Error(formatProdErrorMessage(349));(workInProgressRootRenderLanes&127)!==0||pushStoreConsistencyCheck(fiber,getSnapshot,getServerSnapshot)}hook.memoizedState=getServerSnapshot;var inst={value:getServerSnapshot,getSnapshot};return hook.queue=inst,mountEffect(subscribeToStore.bind(null,fiber,inst,subscribe),[subscribe]),fiber.flags|=2048,pushSimpleEffect(9,{destroy:void 0},updateStoreInstance.bind(null,fiber,inst,getServerSnapshot,getSnapshot),null),getServerSnapshot},useId:function(){var hook=mountWorkInProgressHook(),identifierPrefix=workInProgressRoot.identifierPrefix;if(isHydrating){var JSCompiler_inline_result=treeContextOverflow,idWithLeadingBit=treeContextId;JSCompiler_inline_result=(idWithLeadingBit&~(1<<32-clz32(idWithLeadingBit)-1)).toString(32)+JSCompiler_inline_result,identifierPrefix="_"+identifierPrefix+"R_"+JSCompiler_inline_result,JSCompiler_inline_result=localIdCounter++,0<JSCompiler_inline_result&&(identifierPrefix+="H"+JSCompiler_inline_result.toString(32)),identifierPrefix+="_"}else JSCompiler_inline_result=globalClientIdCounter++,identifierPrefix="_"+identifierPrefix+"r_"+JSCompiler_inline_result.toString(32)+"_";return hook.memoizedState=identifierPrefix},useHostTransitionStatus,useFormState:mountActionState,useActionState:mountActionState,useOptimistic:function(passthrough){var hook=mountWorkInProgressHook();hook.memoizedState=hook.baseState=passthrough;var queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return hook.queue=queue,hook=dispatchOptimisticSetState.bind(null,currentlyRenderingFiber,!0,queue),queue.dispatch=hook,[passthrough,hook]},useMemoCache,useCacheRefresh:function(){return mountWorkInProgressHook().memoizedState=refreshCache.bind(null,currentlyRenderingFiber)},useEffectEvent:function(callback){var hook=mountWorkInProgressHook(),ref={impl:callback};return hook.memoizedState=ref,function(){if((executionContext&2)!==0)throw Error(formatProdErrorMessage(440));return ref.impl.apply(void 0,arguments)}}},HooksDispatcherOnUpdate={readContext,use,useCallback:updateCallback,useContext:readContext,useEffect:updateEffect,useImperativeHandle:updateImperativeHandle,useInsertionEffect:updateInsertionEffect,useLayoutEffect:updateLayoutEffect,useMemo:updateMemo,useReducer:updateReducer,useRef:updateRef,useState:function(){return updateReducer(basicStateReducer)},useDebugValue:mountDebugValue,useDeferredValue:function(value,initialValue){var hook=updateWorkInProgressHook();return updateDeferredValueImpl(hook,currentHook.memoizedState,value,initialValue)},useTransition:function(){var booleanOrThenable=updateReducer(basicStateReducer)[0],start=updateWorkInProgressHook().memoizedState;return[typeof booleanOrThenable==="boolean"?booleanOrThenable:useThenable(booleanOrThenable),start]},useSyncExternalStore:updateSyncExternalStore,useId:updateId,useHostTransitionStatus,useFormState:updateActionState,useActionState:updateActionState,useOptimistic:function(passthrough,reducer){var hook=updateWorkInProgressHook();return updateOptimisticImpl(hook,currentHook,passthrough,reducer)},useMemoCache,useCacheRefresh:updateRefresh};HooksDispatcherOnUpdate.useEffectEvent=updateEvent;var HooksDispatcherOnRerender={readContext,use,useCallback:updateCallback,useContext:readContext,useEffect:updateEffect,useImperativeHandle:updateImperativeHandle,useInsertionEffect:updateInsertionEffect,useLayoutEffect:updateLayoutEffect,useMemo:updateMemo,useReducer:rerenderReducer,useRef:updateRef,useState:function(){return rerenderReducer(basicStateReducer)},useDebugValue:mountDebugValue,useDeferredValue:function(value,initialValue){var hook=updateWorkInProgressHook();return currentHook===null?mountDeferredValueImpl(hook,value,initialValue):updateDeferredValueImpl(hook,currentHook.memoizedState,value,initialValue)},useTransition:function(){var booleanOrThenable=rerenderReducer(basicStateReducer)[0],start=updateWorkInProgressHook().memoizedState;return[typeof booleanOrThenable==="boolean"?booleanOrThenable:useThenable(booleanOrThenable),start]},useSyncExternalStore:updateSyncExternalStore,useId:updateId,useHostTransitionStatus,useFormState:rerenderActionState,useActionState:rerenderActionState,useOptimistic:function(passthrough,reducer){var hook=updateWorkInProgressHook();if(currentHook!==null)return updateOptimisticImpl(hook,currentHook,passthrough,reducer);return hook.baseState=passthrough,[passthrough,hook.queue.dispatch]},useMemoCache,useCacheRefresh:updateRefresh};HooksDispatcherOnRerender.useEffectEvent=updateEvent;var classComponentUpdater={enqueueSetState:function(inst,payload,callback){inst=inst._reactInternals;var lane=requestUpdateLane(),update=createUpdate(lane);update.payload=payload,callback!==void 0&&callback!==null&&(update.callback=callback),payload=enqueueUpdate(inst,update,lane),payload!==null&&(scheduleUpdateOnFiber(payload,inst,lane),entangleTransitions(payload,inst,lane))},enqueueReplaceState:function(inst,payload,callback){inst=inst._reactInternals;var lane=requestUpdateLane(),update=createUpdate(lane);update.tag=1,update.payload=payload,callback!==void 0&&callback!==null&&(update.callback=callback),payload=enqueueUpdate(inst,update,lane),payload!==null&&(scheduleUpdateOnFiber(payload,inst,lane),entangleTransitions(payload,inst,lane))},enqueueForceUpdate:function(inst,callback){inst=inst._reactInternals;var lane=requestUpdateLane(),update=createUpdate(lane);update.tag=2,callback!==void 0&&callback!==null&&(update.callback=callback),callback=enqueueUpdate(inst,update,lane),callback!==null&&(scheduleUpdateOnFiber(callback,inst,lane),entangleTransitions(callback,inst,lane))}},SelectiveHydrationException=Error(formatProdErrorMessage(461)),didReceiveUpdate=!1,SUSPENDED_MARKER={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null},offscreenSubtreeIsHidden=!1,offscreenSubtreeWasHidden=!1,needsFormReset=!1,PossiblyWeakSet=typeof WeakSet==="function"?WeakSet:Set,nextEffect=null,hostParent=null,hostParentIsContainer=!1,currentHoistableRoot=null,suspenseyCommitFlag=8192,DefaultAsyncDispatcher={getCacheForType:function(resourceType){var cache=readContext(CacheContext),cacheForType=cache.data.get(resourceType);return cacheForType===void 0&&(cacheForType=resourceType(),cache.data.set(resourceType,cacheForType)),cacheForType},cacheSignal:function(){return readContext(CacheContext).controller.signal}},COMPONENT_TYPE=0,HAS_PSEUDO_CLASS_TYPE=1,ROLE_TYPE=2,TEST_NAME_TYPE=3,TEXT_TYPE=4;if(typeof Symbol==="function"&&Symbol.for){var symbolFor=Symbol.for;COMPONENT_TYPE=symbolFor("selector.component"),HAS_PSEUDO_CLASS_TYPE=symbolFor("selector.has_pseudo_class"),ROLE_TYPE=symbolFor("selector.role"),TEST_NAME_TYPE=symbolFor("selector.test_id"),TEXT_TYPE=symbolFor("selector.text")}var PossiblyWeakMap=typeof WeakMap==="function"?WeakMap:Map,executionContext=0,workInProgressRoot=null,workInProgress=null,workInProgressRootRenderLanes=0,workInProgressSuspendedReason=0,workInProgressThrownValue=null,workInProgressRootDidSkipSuspendedSiblings=!1,workInProgressRootIsPrerendering=!1,workInProgressRootDidAttachPingListener=!1,entangledRenderLanes=0,workInProgressRootExitStatus=0,workInProgressRootSkippedLanes=0,workInProgressRootInterleavedUpdatedLanes=0,workInProgressRootPingedLanes=0,workInProgressDeferredLane=0,workInProgressSuspendedRetryLanes=0,workInProgressRootConcurrentErrors=null,workInProgressRootRecoverableErrors=null,workInProgressRootDidIncludeRecursiveRenderUpdate=!1,globalMostRecentFallbackTime=0,globalMostRecentTransitionTime=0,workInProgressRootRenderTargetTime=1/0,workInProgressTransitions=null,legacyErrorBoundariesThatAlreadyFailed=null,pendingEffectsStatus=0,pendingEffectsRoot=null,pendingFinishedWork=null,pendingEffectsLanes=0,pendingEffectsRemainingLanes=0,pendingPassiveTransitions=null,pendingRecoverableErrors=null,nestedUpdateCount=0,rootWithNestedUpdates=null;return exports2.attemptContinuousHydration=function(fiber){if(fiber.tag===13||fiber.tag===31){var root=enqueueConcurrentRenderForLane(fiber,67108864);root!==null&&scheduleUpdateOnFiber(root,fiber,67108864),markRetryLaneIfNotHydrated(fiber,67108864)}},exports2.attemptHydrationAtCurrentPriority=function(fiber){if(fiber.tag===13||fiber.tag===31){var lane=requestUpdateLane();lane=getBumpedLaneForHydrationByLane(lane);var root=enqueueConcurrentRenderForLane(fiber,lane);root!==null&&scheduleUpdateOnFiber(root,fiber,lane),markRetryLaneIfNotHydrated(fiber,lane)}},exports2.attemptSynchronousHydration=function(fiber){switch(fiber.tag){case 3:if(fiber=fiber.stateNode,fiber.current.memoizedState.isDehydrated){var lanes=getHighestPriorityLanes(fiber.pendingLanes);if(lanes!==0){fiber.pendingLanes|=2;for(fiber.entangledLanes|=2;lanes;){var lane=1<<31-clz32(lanes);fiber.entanglements[1]|=lane,lanes&=~lane}ensureRootIsScheduled(fiber),(executionContext&6)===0&&(workInProgressRootRenderTargetTime=now()+500,flushSyncWorkAcrossRoots_impl(0,!1))}}break;case 31:case 13:lanes=enqueueConcurrentRenderForLane(fiber,2),lanes!==null&&scheduleUpdateOnFiber(lanes,fiber,2),flushSyncWork(),markRetryLaneIfNotHydrated(fiber,2)}},exports2.batchedUpdates=function(fn,a){return fn(a)},exports2.createComponentSelector=function(component){return{$$typeof:COMPONENT_TYPE,value:component}},exports2.createContainer=function(containerInfo,tag,hydrationCallbacks,isStrictMode,concurrentUpdatesByDefaultOverride,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator){return createFiberRoot(containerInfo,tag,!1,null,hydrationCallbacks,isStrictMode,identifierPrefix,null,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator)},exports2.createHasPseudoClassSelector=function(selectors){return{$$typeof:HAS_PSEUDO_CLASS_TYPE,value:selectors}},exports2.createHydrationContainer=function(initialChildren,callback,containerInfo,tag,hydrationCallbacks,isStrictMode,concurrentUpdatesByDefaultOverride,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator,transitionCallbacks,formState){return initialChildren=createFiberRoot(containerInfo,tag,!0,initialChildren,hydrationCallbacks,isStrictMode,identifierPrefix,formState,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator),initialChildren.context=getContextForSubtree(null),containerInfo=initialChildren.current,tag=requestUpdateLane(),tag=getBumpedLaneForHydrationByLane(tag),hydrationCallbacks=createUpdate(tag),hydrationCallbacks.callback=callback!==void 0&&callback!==null?callback:null,enqueueUpdate(containerInfo,hydrationCallbacks,tag),callback=tag,initialChildren.current.lanes=callback,markRootUpdated$1(initialChildren,callback),ensureRootIsScheduled(initialChildren),initialChildren},exports2.createPortal=function(children,containerInfo,implementation){var key=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:REACT_PORTAL_TYPE,key:key==null?null:""+key,children,containerInfo,implementation}},exports2.createRoleSelector=function(role){return{$$typeof:ROLE_TYPE,value:role}},exports2.createTestNameSelector=function(id){return{$$typeof:TEST_NAME_TYPE,value:id}},exports2.createTextSelector=function(text){return{$$typeof:TEXT_TYPE,value:text}},exports2.defaultOnCaughtError=function(error){console.error(error)},exports2.defaultOnRecoverableError=function(error){reportGlobalError(error)},exports2.defaultOnUncaughtError=function(error){reportGlobalError(error)},exports2.deferredUpdates=function(fn){var prevTransition=ReactSharedInternals.T,previousPriority=getCurrentUpdatePriority();try{return setCurrentUpdatePriority(32),ReactSharedInternals.T=null,fn()}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=prevTransition}},exports2.discreteUpdates=function(fn,a,b2,c,d2){var prevTransition=ReactSharedInternals.T,previousPriority=getCurrentUpdatePriority();try{return setCurrentUpdatePriority(2),ReactSharedInternals.T=null,fn(a,b2,c,d2)}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=prevTransition,executionContext===0&&(workInProgressRootRenderTargetTime=now()+500)}},exports2.findAllNodes=findAllNodes,exports2.findBoundingRects=function(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));selectors=findAllNodes(hostRoot,selectors),hostRoot=[];for(var i=0;i<selectors.length;i++)hostRoot.push(getBoundingRect(selectors[i]));for(selectors=hostRoot.length-1;0<selectors;selectors--){i=hostRoot[selectors];for(var targetLeft=i.x,targetRight=targetLeft+i.width,targetTop=i.y,targetBottom=targetTop+i.height,j2=selectors-1;0<=j2;j2--)if(selectors!==j2){var otherRect=hostRoot[j2],otherLeft=otherRect.x,otherRight=otherLeft+otherRect.width,otherTop=otherRect.y,otherBottom=otherTop+otherRect.height;if(targetLeft>=otherLeft&&targetTop>=otherTop&&targetRight<=otherRight&&targetBottom<=otherBottom){hostRoot.splice(selectors,1);break}else if(!(targetLeft!==otherLeft||i.width!==otherRect.width||otherBottom<targetTop||otherTop>targetBottom)){otherTop>targetTop&&(otherRect.height+=otherTop-targetTop,otherRect.y=targetTop),otherBottom<targetBottom&&(otherRect.height=targetBottom-otherTop),hostRoot.splice(selectors,1);break}else if(!(targetTop!==otherTop||i.height!==otherRect.height||otherRight<targetLeft||otherLeft>targetRight)){otherLeft>targetLeft&&(otherRect.width+=otherLeft-targetLeft,otherRect.x=targetLeft),otherRight<targetRight&&(otherRect.width=targetRight-otherLeft),hostRoot.splice(selectors,1);break}}}return hostRoot},exports2.findHostInstance=findHostInstance,exports2.findHostInstanceWithNoPortals=function(fiber){return fiber=findCurrentFiberUsingSlowPath(fiber),fiber=fiber!==null?findCurrentHostFiberWithNoPortalsImpl(fiber):null,fiber===null?null:getPublicInstance(fiber.stateNode)},exports2.findHostInstanceWithWarning=function(component){return findHostInstance(component)},exports2.flushPassiveEffects=flushPendingEffects,exports2.flushSyncFromReconciler=function(fn){var prevExecutionContext=executionContext;executionContext|=1;var prevTransition=ReactSharedInternals.T,previousPriority=getCurrentUpdatePriority();try{if(setCurrentUpdatePriority(2),ReactSharedInternals.T=null,fn)return fn()}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=prevTransition,executionContext=prevExecutionContext,(executionContext&6)===0&&flushSyncWorkAcrossRoots_impl(0,!1)}},exports2.flushSyncWork=flushSyncWork,exports2.focusWithin=function(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));hostRoot=findFiberRootForHostRoot(hostRoot),selectors=findPaths(hostRoot,selectors),selectors=Array.from(selectors);for(hostRoot=0;hostRoot<selectors.length;){var fiber=selectors[hostRoot++],tag=fiber.tag;if(!isHiddenSubtree(fiber)){if((tag===5||tag===26||tag===27)&&setFocusIfFocusable(fiber.stateNode))return!0;for(fiber=fiber.child;fiber!==null;)selectors.push(fiber),fiber=fiber.sibling}}return!1},exports2.getFindAllNodesFailureDescription=function(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));var maxSelectorIndex=0,matchedNames=[];hostRoot=[findFiberRootForHostRoot(hostRoot),0];for(var index=0;index<hostRoot.length;){var fiber=hostRoot[index++],tag=fiber.tag,selectorIndex=hostRoot[index++],selector=selectors[selectorIndex];if(tag!==5&&tag!==26&&tag!==27||!isHiddenSubtree(fiber)){if(matchSelector(fiber,selector)&&(matchedNames.push(selectorToString(selector)),selectorIndex++,selectorIndex>maxSelectorIndex&&(maxSelectorIndex=selectorIndex)),selectorIndex<selectors.length)for(fiber=fiber.child;fiber!==null;)hostRoot.push(fiber,selectorIndex),fiber=fiber.sibling}}if(maxSelectorIndex<selectors.length){for(hostRoot=[];maxSelectorIndex<selectors.length;maxSelectorIndex++)hostRoot.push(selectorToString(selectors[maxSelectorIndex]));return`findAllNodes was able to match part of the selector:
|
|
10
|
+
`+x2.stack}}function createCapturedValueAtFiber(value,source){if(typeof value==="object"&&value!==null){var existing=CapturedStacks.get(value);if(existing!==void 0)return existing;return source={value,source,stack:getStackByFiberInDevAndProd(source)},CapturedStacks.set(value,source),source}return{value,source,stack:getStackByFiberInDevAndProd(source)}}function pushTreeFork(workInProgress2,totalChildren){forkStack[forkStackIndex++]=treeForkCount,forkStack[forkStackIndex++]=treeForkProvider,treeForkProvider=workInProgress2,treeForkCount=totalChildren}function pushTreeId(workInProgress2,totalChildren,index){idStack[idStackIndex++]=treeContextId,idStack[idStackIndex++]=treeContextOverflow,idStack[idStackIndex++]=treeContextProvider,treeContextProvider=workInProgress2;var baseIdWithLeadingBit=treeContextId;workInProgress2=treeContextOverflow;var baseLength=32-clz32(baseIdWithLeadingBit)-1;baseIdWithLeadingBit&=~(1<<baseLength),index+=1;var length=32-clz32(totalChildren)+baseLength;if(30<length){var numberOfOverflowBits=baseLength-baseLength%5;length=(baseIdWithLeadingBit&(1<<numberOfOverflowBits)-1).toString(32),baseIdWithLeadingBit>>=numberOfOverflowBits,baseLength-=numberOfOverflowBits,treeContextId=1<<32-clz32(totalChildren)+baseLength|index<<baseLength|baseIdWithLeadingBit,treeContextOverflow=length+workInProgress2}else treeContextId=1<<length|index<<baseLength|baseIdWithLeadingBit,treeContextOverflow=workInProgress2}function pushMaterializedTreeId(workInProgress2){workInProgress2.return!==null&&(pushTreeFork(workInProgress2,1),pushTreeId(workInProgress2,1,0))}function popTreeContext(workInProgress2){for(;workInProgress2===treeForkProvider;)treeForkProvider=forkStack[--forkStackIndex],forkStack[forkStackIndex]=null,treeForkCount=forkStack[--forkStackIndex],forkStack[forkStackIndex]=null;for(;workInProgress2===treeContextProvider;)treeContextProvider=idStack[--idStackIndex],idStack[idStackIndex]=null,treeContextOverflow=idStack[--idStackIndex],idStack[idStackIndex]=null,treeContextId=idStack[--idStackIndex],idStack[idStackIndex]=null}function restoreSuspendedTreeContext(workInProgress2,suspendedContext){idStack[idStackIndex++]=treeContextId,idStack[idStackIndex++]=treeContextOverflow,idStack[idStackIndex++]=treeContextProvider,treeContextId=suspendedContext.id,treeContextOverflow=suspendedContext.overflow,treeContextProvider=workInProgress2}function pushHostContainer(fiber,nextRootInstance){push2(rootInstanceStackCursor,nextRootInstance),push2(contextFiberStackCursor,fiber),push2(contextStackCursor,null),fiber=getRootHostContext(nextRootInstance),pop2(contextStackCursor),push2(contextStackCursor,fiber)}function popHostContainer(){pop2(contextStackCursor),pop2(contextFiberStackCursor),pop2(rootInstanceStackCursor)}function pushHostContext(fiber){fiber.memoizedState!==null&&push2(hostTransitionProviderCursor,fiber);var context=contextStackCursor.current,nextContext=getChildHostContext(context,fiber.type);context!==nextContext&&(push2(contextFiberStackCursor,fiber),push2(contextStackCursor,nextContext))}function popHostContext(fiber){contextFiberStackCursor.current===fiber&&(pop2(contextStackCursor),pop2(contextFiberStackCursor)),hostTransitionProviderCursor.current===fiber&&(pop2(hostTransitionProviderCursor),isPrimaryRenderer?HostTransitionContext._currentValue=NotPendingTransition:HostTransitionContext._currentValue2=NotPendingTransition)}function throwOnHydrationMismatch(fiber){var error=Error(formatProdErrorMessage(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw queueHydrationError(createCapturedValueAtFiber(error,fiber)),HydrationMismatchException}function prepareToHydrateHostInstance(fiber,hostContext){if(!supportsHydration)throw Error(formatProdErrorMessage(175));hydrateInstance(fiber.stateNode,fiber.type,fiber.memoizedProps,hostContext,fiber)||throwOnHydrationMismatch(fiber,!0)}function popToNextHostParent(fiber){for(hydrationParentFiber=fiber.return;hydrationParentFiber;)switch(hydrationParentFiber.tag){case 5:case 31:case 13:rootOrSingletonContext=!1;return;case 27:case 3:rootOrSingletonContext=!0;return;default:hydrationParentFiber=hydrationParentFiber.return}}function popHydrationState(fiber){if(!supportsHydration||fiber!==hydrationParentFiber)return!1;if(!isHydrating)return popToNextHostParent(fiber),isHydrating=!0,!1;var tag=fiber.tag;if(supportsSingletons?tag!==3&&tag!==27&&(tag!==5||shouldDeleteUnhydratedTailInstances(fiber.type)&&!shouldSetTextContent(fiber.type,fiber.memoizedProps))&&nextHydratableInstance&&throwOnHydrationMismatch(fiber):tag!==3&&(tag!==5||shouldDeleteUnhydratedTailInstances(fiber.type)&&!shouldSetTextContent(fiber.type,fiber.memoizedProps))&&nextHydratableInstance&&throwOnHydrationMismatch(fiber),popToNextHostParent(fiber),tag===13){if(!supportsHydration)throw Error(formatProdErrorMessage(316));if(fiber=fiber.memoizedState,fiber=fiber!==null?fiber.dehydrated:null,!fiber)throw Error(formatProdErrorMessage(317));nextHydratableInstance=getNextHydratableInstanceAfterSuspenseInstance(fiber)}else if(tag===31){if(fiber=fiber.memoizedState,fiber=fiber!==null?fiber.dehydrated:null,!fiber)throw Error(formatProdErrorMessage(317));nextHydratableInstance=getNextHydratableInstanceAfterActivityInstance(fiber)}else nextHydratableInstance=supportsSingletons&&tag===27?getNextHydratableSiblingAfterSingleton(fiber.type,nextHydratableInstance):hydrationParentFiber?getNextHydratableSibling(fiber.stateNode):null;return!0}function resetHydrationState(){supportsHydration&&(nextHydratableInstance=hydrationParentFiber=null,isHydrating=!1)}function upgradeHydrationErrorsToRecoverable(){var queuedErrors=hydrationErrors;return queuedErrors!==null&&(workInProgressRootRecoverableErrors===null?workInProgressRootRecoverableErrors=queuedErrors:workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors,queuedErrors),hydrationErrors=null),queuedErrors}function queueHydrationError(error){hydrationErrors===null?hydrationErrors=[error]:hydrationErrors.push(error)}function pushProvider(providerFiber,context,nextValue){isPrimaryRenderer?(push2(valueCursor,context._currentValue),context._currentValue=nextValue):(push2(valueCursor,context._currentValue2),context._currentValue2=nextValue)}function popProvider(context){var currentValue=valueCursor.current;isPrimaryRenderer?context._currentValue=currentValue:context._currentValue2=currentValue,pop2(valueCursor)}function scheduleContextWorkOnParentPath(parent,renderLanes2,propagationRoot){for(;parent!==null;){var alternate=parent.alternate;if((parent.childLanes&renderLanes2)!==renderLanes2?(parent.childLanes|=renderLanes2,alternate!==null&&(alternate.childLanes|=renderLanes2)):alternate!==null&&(alternate.childLanes&renderLanes2)!==renderLanes2&&(alternate.childLanes|=renderLanes2),parent===propagationRoot)break;parent=parent.return}}function propagateContextChanges(workInProgress2,contexts,renderLanes2,forcePropagateEntireTree){var fiber=workInProgress2.child;fiber!==null&&(fiber.return=workInProgress2);for(;fiber!==null;){var list=fiber.dependencies;if(list!==null){var nextFiber=fiber.child;list=list.firstContext;a:for(;list!==null;){var dependency=list;list=fiber;for(var i=0;i<contexts.length;i++)if(dependency.context===contexts[i]){list.lanes|=renderLanes2,dependency=list.alternate,dependency!==null&&(dependency.lanes|=renderLanes2),scheduleContextWorkOnParentPath(list.return,renderLanes2,workInProgress2),forcePropagateEntireTree||(nextFiber=null);break a}list=dependency.next}}else if(fiber.tag===18){if(nextFiber=fiber.return,nextFiber===null)throw Error(formatProdErrorMessage(341));nextFiber.lanes|=renderLanes2,list=nextFiber.alternate,list!==null&&(list.lanes|=renderLanes2),scheduleContextWorkOnParentPath(nextFiber,renderLanes2,workInProgress2),nextFiber=null}else nextFiber=fiber.child;if(nextFiber!==null)nextFiber.return=fiber;else for(nextFiber=fiber;nextFiber!==null;){if(nextFiber===workInProgress2){nextFiber=null;break}if(fiber=nextFiber.sibling,fiber!==null){fiber.return=nextFiber.return,nextFiber=fiber;break}nextFiber=nextFiber.return}fiber=nextFiber}}function propagateParentContextChanges(current,workInProgress2,renderLanes2,forcePropagateEntireTree){current=null;for(var parent=workInProgress2,isInsidePropagationBailout=!1;parent!==null;){if(!isInsidePropagationBailout){if((parent.flags&524288)!==0)isInsidePropagationBailout=!0;else if((parent.flags&262144)!==0)break}if(parent.tag===10){var currentParent=parent.alternate;if(currentParent===null)throw Error(formatProdErrorMessage(387));if(currentParent=currentParent.memoizedProps,currentParent!==null){var context=parent.type;objectIs(parent.pendingProps.value,currentParent.value)||(current!==null?current.push(context):current=[context])}}else if(parent===hostTransitionProviderCursor.current){if(currentParent=parent.alternate,currentParent===null)throw Error(formatProdErrorMessage(387));currentParent.memoizedState.memoizedState!==parent.memoizedState.memoizedState&&(current!==null?current.push(HostTransitionContext):current=[HostTransitionContext])}parent=parent.return}current!==null&&propagateContextChanges(workInProgress2,current,renderLanes2,forcePropagateEntireTree),workInProgress2.flags|=262144}function checkIfContextChanged(currentDependencies){for(currentDependencies=currentDependencies.firstContext;currentDependencies!==null;){var context=currentDependencies.context;if(!objectIs(isPrimaryRenderer?context._currentValue:context._currentValue2,currentDependencies.memoizedValue))return!0;currentDependencies=currentDependencies.next}return!1}function prepareToReadContext(workInProgress2){currentlyRenderingFiber$1=workInProgress2,lastContextDependency=null,workInProgress2=workInProgress2.dependencies,workInProgress2!==null&&(workInProgress2.firstContext=null)}function readContext(context){return readContextForConsumer(currentlyRenderingFiber$1,context)}function readContextDuringReconciliation(consumer,context){return currentlyRenderingFiber$1===null&&prepareToReadContext(consumer),readContextForConsumer(consumer,context)}function readContextForConsumer(consumer,context){var value=isPrimaryRenderer?context._currentValue:context._currentValue2;if(context={context,memoizedValue:value,next:null},lastContextDependency===null){if(consumer===null)throw Error(formatProdErrorMessage(308));lastContextDependency=context,consumer.dependencies={lanes:0,firstContext:context},consumer.flags|=524288}else lastContextDependency=lastContextDependency.next=context;return value}function createCache(){return{controller:new AbortControllerLocal,data:new Map,refCount:0}}function releaseCache(cache){cache.refCount--,cache.refCount===0&&scheduleCallback$2(NormalPriority,function(){cache.controller.abort()})}function noop$1(){}function ensureRootIsScheduled(root){root!==lastScheduledRoot&&root.next===null&&(lastScheduledRoot===null?firstScheduledRoot=lastScheduledRoot=root:lastScheduledRoot=lastScheduledRoot.next=root),mightHavePendingSyncWork=!0,didScheduleMicrotask||(didScheduleMicrotask=!0,scheduleImmediateRootScheduleTask())}function flushSyncWorkAcrossRoots_impl(syncTransitionLanes,onlyLegacy){if(!isFlushingWork&&mightHavePendingSyncWork){isFlushingWork=!0;do{var didPerformSomeWork=!1;for(var root=firstScheduledRoot;root!==null;){if(!onlyLegacy)if(syncTransitionLanes!==0){var pendingLanes=root.pendingLanes;if(pendingLanes===0)var JSCompiler_inline_result=0;else{var{suspendedLanes,pingedLanes}=root;JSCompiler_inline_result=(1<<31-clz32(42|syncTransitionLanes)+1)-1,JSCompiler_inline_result&=pendingLanes&~(suspendedLanes&~pingedLanes),JSCompiler_inline_result=JSCompiler_inline_result&201326741?JSCompiler_inline_result&201326741|1:JSCompiler_inline_result?JSCompiler_inline_result|2:0}JSCompiler_inline_result!==0&&(didPerformSomeWork=!0,performSyncWorkOnRoot(root,JSCompiler_inline_result))}else JSCompiler_inline_result=workInProgressRootRenderLanes,JSCompiler_inline_result=getNextLanes(root,root===workInProgressRoot?JSCompiler_inline_result:0,root.cancelPendingCommit!==null||root.timeoutHandle!==noTimeout),(JSCompiler_inline_result&3)===0||checkIfRootIsPrerendering(root,JSCompiler_inline_result)||(didPerformSomeWork=!0,performSyncWorkOnRoot(root,JSCompiler_inline_result));root=root.next}}while(didPerformSomeWork);isFlushingWork=!1}}function processRootScheduleInImmediateTask(){processRootScheduleInMicrotask()}function processRootScheduleInMicrotask(){mightHavePendingSyncWork=didScheduleMicrotask=!1;var syncTransitionLanes=0;currentEventTransitionLane!==0&&shouldAttemptEagerTransition()&&(syncTransitionLanes=currentEventTransitionLane);for(var currentTime=now(),prev=null,root=firstScheduledRoot;root!==null;){var next=root.next,nextLanes=scheduleTaskForRootDuringMicrotask(root,currentTime);if(nextLanes===0)root.next=null,prev===null?firstScheduledRoot=next:prev.next=next,next===null&&(lastScheduledRoot=prev);else if(prev=root,syncTransitionLanes!==0||(nextLanes&3)!==0)mightHavePendingSyncWork=!0;root=next}pendingEffectsStatus!==0&&pendingEffectsStatus!==5||flushSyncWorkAcrossRoots_impl(syncTransitionLanes,!1),currentEventTransitionLane!==0&&(currentEventTransitionLane=0)}function scheduleTaskForRootDuringMicrotask(root,currentTime){for(var{suspendedLanes,pingedLanes,expirationTimes}=root,lanes=root.pendingLanes&-62914561;0<lanes;){var index$3=31-clz32(lanes),lane=1<<index$3,expirationTime=expirationTimes[index$3];if(expirationTime===-1){if((lane&suspendedLanes)===0||(lane&pingedLanes)!==0)expirationTimes[index$3]=computeExpirationTime(lane,currentTime)}else expirationTime<=currentTime&&(root.expiredLanes|=lane);lanes&=~lane}if(currentTime=workInProgressRoot,suspendedLanes=workInProgressRootRenderLanes,suspendedLanes=getNextLanes(root,root===currentTime?suspendedLanes:0,root.cancelPendingCommit!==null||root.timeoutHandle!==noTimeout),pingedLanes=root.callbackNode,suspendedLanes===0||root===currentTime&&(workInProgressSuspendedReason===2||workInProgressSuspendedReason===9)||root.cancelPendingCommit!==null)return pingedLanes!==null&&pingedLanes!==null&&cancelCallback$1(pingedLanes),root.callbackNode=null,root.callbackPriority=0;if((suspendedLanes&3)===0||checkIfRootIsPrerendering(root,suspendedLanes)){if(currentTime=suspendedLanes&-suspendedLanes,currentTime===root.callbackPriority)return currentTime;switch(pingedLanes!==null&&cancelCallback$1(pingedLanes),lanesToEventPriority(suspendedLanes)){case 2:case 8:suspendedLanes=UserBlockingPriority;break;case 32:suspendedLanes=NormalPriority$1;break;case 268435456:suspendedLanes=IdlePriority;break;default:suspendedLanes=NormalPriority$1}return pingedLanes=performWorkOnRootViaSchedulerTask.bind(null,root),suspendedLanes=scheduleCallback$3(suspendedLanes,pingedLanes),root.callbackPriority=currentTime,root.callbackNode=suspendedLanes,currentTime}return pingedLanes!==null&&pingedLanes!==null&&cancelCallback$1(pingedLanes),root.callbackPriority=2,root.callbackNode=null,2}function performWorkOnRootViaSchedulerTask(root,didTimeout){if(pendingEffectsStatus!==0&&pendingEffectsStatus!==5)return root.callbackNode=null,root.callbackPriority=0,null;var originalCallbackNode=root.callbackNode;if(flushPendingEffects()&&root.callbackNode!==originalCallbackNode)return null;var workInProgressRootRenderLanes$jscomp$0=workInProgressRootRenderLanes;if(workInProgressRootRenderLanes$jscomp$0=getNextLanes(root,root===workInProgressRoot?workInProgressRootRenderLanes$jscomp$0:0,root.cancelPendingCommit!==null||root.timeoutHandle!==noTimeout),workInProgressRootRenderLanes$jscomp$0===0)return null;return performWorkOnRoot(root,workInProgressRootRenderLanes$jscomp$0,didTimeout),scheduleTaskForRootDuringMicrotask(root,now()),root.callbackNode!=null&&root.callbackNode===originalCallbackNode?performWorkOnRootViaSchedulerTask.bind(null,root):null}function performSyncWorkOnRoot(root,lanes){if(flushPendingEffects())return null;performWorkOnRoot(root,lanes,!0)}function scheduleImmediateRootScheduleTask(){supportsMicrotasks?scheduleMicrotask(function(){(executionContext&6)!==0?scheduleCallback$3(ImmediatePriority,processRootScheduleInImmediateTask):processRootScheduleInMicrotask()}):scheduleCallback$3(ImmediatePriority,processRootScheduleInImmediateTask)}function requestTransitionLane(){if(currentEventTransitionLane===0){var actionScopeLane=currentEntangledLane;actionScopeLane===0&&(actionScopeLane=nextTransitionUpdateLane,nextTransitionUpdateLane<<=1,(nextTransitionUpdateLane&261888)===0&&(nextTransitionUpdateLane=256)),currentEventTransitionLane=actionScopeLane}return currentEventTransitionLane}function entangleAsyncAction(transition,thenable){if(currentEntangledListeners===null){var entangledListeners=currentEntangledListeners=[];currentEntangledPendingCount=0,currentEntangledLane=requestTransitionLane(),currentEntangledActionThenable={status:"pending",value:void 0,then:function(resolve3){entangledListeners.push(resolve3)}}}return currentEntangledPendingCount++,thenable.then(pingEngtangledActionScope,pingEngtangledActionScope),thenable}function pingEngtangledActionScope(){if(--currentEntangledPendingCount===0&¤tEntangledListeners!==null){currentEntangledActionThenable!==null&&(currentEntangledActionThenable.status="fulfilled");var listeners=currentEntangledListeners;currentEntangledListeners=null,currentEntangledLane=0,currentEntangledActionThenable=null;for(var i=0;i<listeners.length;i++)(0,listeners[i])()}}function chainThenableValue(thenable,result){var listeners=[],thenableWithOverride={status:"pending",value:null,reason:null,then:function(resolve3){listeners.push(resolve3)}};return thenable.then(function(){thenableWithOverride.status="fulfilled",thenableWithOverride.value=result;for(var i=0;i<listeners.length;i++)(0,listeners[i])(result)},function(error){thenableWithOverride.status="rejected",thenableWithOverride.reason=error;for(error=0;error<listeners.length;error++)(0,listeners[error])(void 0)}),thenableWithOverride}function peekCacheFromPool(){var cacheResumedFromPreviousRender=resumedCache.current;return cacheResumedFromPreviousRender!==null?cacheResumedFromPreviousRender:workInProgressRoot.pooledCache}function pushTransition(offscreenWorkInProgress,prevCachePool){prevCachePool===null?push2(resumedCache,resumedCache.current):push2(resumedCache,prevCachePool.pool)}function getSuspendedCache(){var cacheFromPool=peekCacheFromPool();return cacheFromPool===null?null:{parent:isPrimaryRenderer?CacheContext._currentValue:CacheContext._currentValue2,pool:cacheFromPool}}function shallowEqual(objA,objB){if(objectIs(objA,objB))return!0;if(typeof objA!=="object"||objA===null||typeof objB!=="object"||objB===null)return!1;var keysA=Object.keys(objA),keysB=Object.keys(objB);if(keysA.length!==keysB.length)return!1;for(keysB=0;keysB<keysA.length;keysB++){var currentKey=keysA[keysB];if(!hasOwnProperty.call(objB,currentKey)||!objectIs(objA[currentKey],objB[currentKey]))return!1}return!0}function isThenableResolved(thenable){return thenable=thenable.status,thenable==="fulfilled"||thenable==="rejected"}function trackUsedThenable(thenableState2,thenable,index){switch(index=thenableState2[index],index===void 0?thenableState2.push(thenable):index!==thenable&&(thenable.then(noop$1,noop$1),thenable=index),thenable.status){case"fulfilled":return thenable.value;case"rejected":throw thenableState2=thenable.reason,checkIfUseWrappedInAsyncCatch(thenableState2),thenableState2;default:if(typeof thenable.status==="string")thenable.then(noop$1,noop$1);else{if(thenableState2=workInProgressRoot,thenableState2!==null&&100<thenableState2.shellSuspendCounter)throw Error(formatProdErrorMessage(482));thenableState2=thenable,thenableState2.status="pending",thenableState2.then(function(fulfilledValue){if(thenable.status==="pending"){var fulfilledThenable=thenable;fulfilledThenable.status="fulfilled",fulfilledThenable.value=fulfilledValue}},function(error){if(thenable.status==="pending"){var rejectedThenable=thenable;rejectedThenable.status="rejected",rejectedThenable.reason=error}})}switch(thenable.status){case"fulfilled":return thenable.value;case"rejected":throw thenableState2=thenable.reason,checkIfUseWrappedInAsyncCatch(thenableState2),thenableState2}throw suspendedThenable=thenable,SuspenseException}}function resolveLazy(lazyType){try{var init=lazyType._init;return init(lazyType._payload)}catch(x2){if(x2!==null&&typeof x2==="object"&&typeof x2.then==="function")throw suspendedThenable=x2,SuspenseException;throw x2}}function getSuspendedThenable(){if(suspendedThenable===null)throw Error(formatProdErrorMessage(459));var thenable=suspendedThenable;return suspendedThenable=null,thenable}function checkIfUseWrappedInAsyncCatch(rejectedReason){if(rejectedReason===SuspenseException||rejectedReason===SuspenseActionException)throw Error(formatProdErrorMessage(483))}function unwrapThenable(thenable){var index=thenableIndexCounter$1;return thenableIndexCounter$1+=1,thenableState$1===null&&(thenableState$1=[]),trackUsedThenable(thenableState$1,thenable,index)}function coerceRef(workInProgress2,element){element=element.props.ref,workInProgress2.ref=element!==void 0?element:null}function throwOnInvalidObjectTypeImpl(returnFiber,newChild){if(newChild.$$typeof===REACT_LEGACY_ELEMENT_TYPE)throw Error(formatProdErrorMessage(525));throw returnFiber=Object.prototype.toString.call(newChild),Error(formatProdErrorMessage(31,returnFiber==="[object Object]"?"object with keys {"+Object.keys(newChild).join(", ")+"}":returnFiber))}function createChildReconciler(shouldTrackSideEffects){function deleteChild(returnFiber,childToDelete){if(shouldTrackSideEffects){var deletions=returnFiber.deletions;deletions===null?(returnFiber.deletions=[childToDelete],returnFiber.flags|=16):deletions.push(childToDelete)}}function deleteRemainingChildren(returnFiber,currentFirstChild){if(!shouldTrackSideEffects)return null;for(;currentFirstChild!==null;)deleteChild(returnFiber,currentFirstChild),currentFirstChild=currentFirstChild.sibling;return null}function mapRemainingChildren(currentFirstChild){for(var existingChildren=new Map;currentFirstChild!==null;)currentFirstChild.key!==null?existingChildren.set(currentFirstChild.key,currentFirstChild):existingChildren.set(currentFirstChild.index,currentFirstChild),currentFirstChild=currentFirstChild.sibling;return existingChildren}function useFiber(fiber,pendingProps){return fiber=createWorkInProgress(fiber,pendingProps),fiber.index=0,fiber.sibling=null,fiber}function placeChild(newFiber,lastPlacedIndex,newIndex){if(newFiber.index=newIndex,!shouldTrackSideEffects)return newFiber.flags|=1048576,lastPlacedIndex;if(newIndex=newFiber.alternate,newIndex!==null)return newIndex=newIndex.index,newIndex<lastPlacedIndex?(newFiber.flags|=67108866,lastPlacedIndex):newIndex;return newFiber.flags|=67108866,lastPlacedIndex}function placeSingleChild(newFiber){return shouldTrackSideEffects&&newFiber.alternate===null&&(newFiber.flags|=67108866),newFiber}function updateTextNode(returnFiber,current,textContent,lanes){if(current===null||current.tag!==6)return current=createFiberFromText(textContent,returnFiber.mode,lanes),current.return=returnFiber,current;return current=useFiber(current,textContent),current.return=returnFiber,current}function updateElement(returnFiber,current,element,lanes){var elementType=element.type;if(elementType===REACT_FRAGMENT_TYPE2)return updateFragment(returnFiber,current,element.props.children,lanes,element.key);if(current!==null&&(current.elementType===elementType||typeof elementType==="object"&&elementType!==null&&elementType.$$typeof===REACT_LAZY_TYPE&&resolveLazy(elementType)===current.type))return current=useFiber(current,element.props),coerceRef(current,element),current.return=returnFiber,current;return current=createFiberFromTypeAndProps(element.type,element.key,element.props,null,returnFiber.mode,lanes),coerceRef(current,element),current.return=returnFiber,current}function updatePortal(returnFiber,current,portal,lanes){if(current===null||current.tag!==4||current.stateNode.containerInfo!==portal.containerInfo||current.stateNode.implementation!==portal.implementation)return current=createFiberFromPortal(portal,returnFiber.mode,lanes),current.return=returnFiber,current;return current=useFiber(current,portal.children||[]),current.return=returnFiber,current}function updateFragment(returnFiber,current,fragment,lanes,key){if(current===null||current.tag!==7)return current=createFiberFromFragment(fragment,returnFiber.mode,lanes,key),current.return=returnFiber,current;return current=useFiber(current,fragment),current.return=returnFiber,current}function createChild(returnFiber,newChild,lanes){if(typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint")return newChild=createFiberFromText(""+newChild,returnFiber.mode,lanes),newChild.return=returnFiber,newChild;if(typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:return lanes=createFiberFromTypeAndProps(newChild.type,newChild.key,newChild.props,null,returnFiber.mode,lanes),coerceRef(lanes,newChild),lanes.return=returnFiber,lanes;case REACT_PORTAL_TYPE:return newChild=createFiberFromPortal(newChild,returnFiber.mode,lanes),newChild.return=returnFiber,newChild;case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),createChild(returnFiber,newChild,lanes)}if(isArrayImpl(newChild)||getIteratorFn(newChild))return newChild=createFiberFromFragment(newChild,returnFiber.mode,lanes,null),newChild.return=returnFiber,newChild;if(typeof newChild.then==="function")return createChild(returnFiber,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return createChild(returnFiber,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return null}function updateSlot(returnFiber,oldFiber,newChild,lanes){var key=oldFiber!==null?oldFiber.key:null;if(typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint")return key!==null?null:updateTextNode(returnFiber,oldFiber,""+newChild,lanes);if(typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:return newChild.key===key?updateElement(returnFiber,oldFiber,newChild,lanes):null;case REACT_PORTAL_TYPE:return newChild.key===key?updatePortal(returnFiber,oldFiber,newChild,lanes):null;case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),updateSlot(returnFiber,oldFiber,newChild,lanes)}if(isArrayImpl(newChild)||getIteratorFn(newChild))return key!==null?null:updateFragment(returnFiber,oldFiber,newChild,lanes,null);if(typeof newChild.then==="function")return updateSlot(returnFiber,oldFiber,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return updateSlot(returnFiber,oldFiber,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return null}function updateFromMap(existingChildren,returnFiber,newIdx,newChild,lanes){if(typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint")return existingChildren=existingChildren.get(newIdx)||null,updateTextNode(returnFiber,existingChildren,""+newChild,lanes);if(typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:return existingChildren=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null,updateElement(returnFiber,existingChildren,newChild,lanes);case REACT_PORTAL_TYPE:return existingChildren=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null,updatePortal(returnFiber,existingChildren,newChild,lanes);case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),updateFromMap(existingChildren,returnFiber,newIdx,newChild,lanes)}if(isArrayImpl(newChild)||getIteratorFn(newChild))return existingChildren=existingChildren.get(newIdx)||null,updateFragment(returnFiber,existingChildren,newChild,lanes,null);if(typeof newChild.then==="function")return updateFromMap(existingChildren,returnFiber,newIdx,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return updateFromMap(existingChildren,returnFiber,newIdx,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return null}function reconcileChildrenArray(returnFiber,currentFirstChild,newChildren,lanes){for(var resultingFirstChild=null,previousNewFiber=null,oldFiber=currentFirstChild,newIdx=currentFirstChild=0,nextOldFiber=null;oldFiber!==null&&newIdx<newChildren.length;newIdx++){oldFiber.index>newIdx?(nextOldFiber=oldFiber,oldFiber=null):nextOldFiber=oldFiber.sibling;var newFiber=updateSlot(returnFiber,oldFiber,newChildren[newIdx],lanes);if(newFiber===null){oldFiber===null&&(oldFiber=nextOldFiber);break}shouldTrackSideEffects&&oldFiber&&newFiber.alternate===null&&deleteChild(returnFiber,oldFiber),currentFirstChild=placeChild(newFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=newFiber:previousNewFiber.sibling=newFiber,previousNewFiber=newFiber,oldFiber=nextOldFiber}if(newIdx===newChildren.length)return deleteRemainingChildren(returnFiber,oldFiber),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild;if(oldFiber===null){for(;newIdx<newChildren.length;newIdx++)oldFiber=createChild(returnFiber,newChildren[newIdx],lanes),oldFiber!==null&&(currentFirstChild=placeChild(oldFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=oldFiber:previousNewFiber.sibling=oldFiber,previousNewFiber=oldFiber);return isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}for(oldFiber=mapRemainingChildren(oldFiber);newIdx<newChildren.length;newIdx++)nextOldFiber=updateFromMap(oldFiber,returnFiber,newIdx,newChildren[newIdx],lanes),nextOldFiber!==null&&(shouldTrackSideEffects&&nextOldFiber.alternate!==null&&oldFiber.delete(nextOldFiber.key===null?newIdx:nextOldFiber.key),currentFirstChild=placeChild(nextOldFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=nextOldFiber:previousNewFiber.sibling=nextOldFiber,previousNewFiber=nextOldFiber);return shouldTrackSideEffects&&oldFiber.forEach(function(child){return deleteChild(returnFiber,child)}),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}function reconcileChildrenIterator(returnFiber,currentFirstChild,newChildren,lanes){if(newChildren==null)throw Error(formatProdErrorMessage(151));for(var resultingFirstChild=null,previousNewFiber=null,oldFiber=currentFirstChild,newIdx=currentFirstChild=0,nextOldFiber=null,step=newChildren.next();oldFiber!==null&&!step.done;newIdx++,step=newChildren.next()){oldFiber.index>newIdx?(nextOldFiber=oldFiber,oldFiber=null):nextOldFiber=oldFiber.sibling;var newFiber=updateSlot(returnFiber,oldFiber,step.value,lanes);if(newFiber===null){oldFiber===null&&(oldFiber=nextOldFiber);break}shouldTrackSideEffects&&oldFiber&&newFiber.alternate===null&&deleteChild(returnFiber,oldFiber),currentFirstChild=placeChild(newFiber,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=newFiber:previousNewFiber.sibling=newFiber,previousNewFiber=newFiber,oldFiber=nextOldFiber}if(step.done)return deleteRemainingChildren(returnFiber,oldFiber),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild;if(oldFiber===null){for(;!step.done;newIdx++,step=newChildren.next())step=createChild(returnFiber,step.value,lanes),step!==null&&(currentFirstChild=placeChild(step,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=step:previousNewFiber.sibling=step,previousNewFiber=step);return isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}for(oldFiber=mapRemainingChildren(oldFiber);!step.done;newIdx++,step=newChildren.next())step=updateFromMap(oldFiber,returnFiber,newIdx,step.value,lanes),step!==null&&(shouldTrackSideEffects&&step.alternate!==null&&oldFiber.delete(step.key===null?newIdx:step.key),currentFirstChild=placeChild(step,currentFirstChild,newIdx),previousNewFiber===null?resultingFirstChild=step:previousNewFiber.sibling=step,previousNewFiber=step);return shouldTrackSideEffects&&oldFiber.forEach(function(child){return deleteChild(returnFiber,child)}),isHydrating&&pushTreeFork(returnFiber,newIdx),resultingFirstChild}function reconcileChildFibersImpl(returnFiber,currentFirstChild,newChild,lanes){if(typeof newChild==="object"&&newChild!==null&&newChild.type===REACT_FRAGMENT_TYPE2&&newChild.key===null&&(newChild=newChild.props.children),typeof newChild==="object"&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE2:a:{for(var key=newChild.key;currentFirstChild!==null;){if(currentFirstChild.key===key){if(key=newChild.type,key===REACT_FRAGMENT_TYPE2){if(currentFirstChild.tag===7){deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild.props.children),lanes.return=returnFiber,returnFiber=lanes;break a}}else if(currentFirstChild.elementType===key||typeof key==="object"&&key!==null&&key.$$typeof===REACT_LAZY_TYPE&&resolveLazy(key)===currentFirstChild.type){deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild.props),coerceRef(lanes,newChild),lanes.return=returnFiber,returnFiber=lanes;break a}deleteRemainingChildren(returnFiber,currentFirstChild);break}else deleteChild(returnFiber,currentFirstChild);currentFirstChild=currentFirstChild.sibling}newChild.type===REACT_FRAGMENT_TYPE2?(lanes=createFiberFromFragment(newChild.props.children,returnFiber.mode,lanes,newChild.key),lanes.return=returnFiber,returnFiber=lanes):(lanes=createFiberFromTypeAndProps(newChild.type,newChild.key,newChild.props,null,returnFiber.mode,lanes),coerceRef(lanes,newChild),lanes.return=returnFiber,returnFiber=lanes)}return placeSingleChild(returnFiber);case REACT_PORTAL_TYPE:a:{for(key=newChild.key;currentFirstChild!==null;){if(currentFirstChild.key===key)if(currentFirstChild.tag===4&¤tFirstChild.stateNode.containerInfo===newChild.containerInfo&¤tFirstChild.stateNode.implementation===newChild.implementation){deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild.children||[]),lanes.return=returnFiber,returnFiber=lanes;break a}else{deleteRemainingChildren(returnFiber,currentFirstChild);break}else deleteChild(returnFiber,currentFirstChild);currentFirstChild=currentFirstChild.sibling}lanes=createFiberFromPortal(newChild,returnFiber.mode,lanes),lanes.return=returnFiber,returnFiber=lanes}return placeSingleChild(returnFiber);case REACT_LAZY_TYPE:return newChild=resolveLazy(newChild),reconcileChildFibersImpl(returnFiber,currentFirstChild,newChild,lanes)}if(isArrayImpl(newChild))return reconcileChildrenArray(returnFiber,currentFirstChild,newChild,lanes);if(getIteratorFn(newChild)){if(key=getIteratorFn(newChild),typeof key!=="function")throw Error(formatProdErrorMessage(150));return newChild=key.call(newChild),reconcileChildrenIterator(returnFiber,currentFirstChild,newChild,lanes)}if(typeof newChild.then==="function")return reconcileChildFibersImpl(returnFiber,currentFirstChild,unwrapThenable(newChild),lanes);if(newChild.$$typeof===REACT_CONTEXT_TYPE)return reconcileChildFibersImpl(returnFiber,currentFirstChild,readContextDuringReconciliation(returnFiber,newChild),lanes);throwOnInvalidObjectTypeImpl(returnFiber,newChild)}return typeof newChild==="string"&&newChild!==""||typeof newChild==="number"||typeof newChild==="bigint"?(newChild=""+newChild,currentFirstChild!==null&¤tFirstChild.tag===6?(deleteRemainingChildren(returnFiber,currentFirstChild.sibling),lanes=useFiber(currentFirstChild,newChild),lanes.return=returnFiber,returnFiber=lanes):(deleteRemainingChildren(returnFiber,currentFirstChild),lanes=createFiberFromText(newChild,returnFiber.mode,lanes),lanes.return=returnFiber,returnFiber=lanes),placeSingleChild(returnFiber)):deleteRemainingChildren(returnFiber,currentFirstChild)}return function(returnFiber,currentFirstChild,newChild,lanes){try{thenableIndexCounter$1=0;var firstChildFiber=reconcileChildFibersImpl(returnFiber,currentFirstChild,newChild,lanes);return thenableState$1=null,firstChildFiber}catch(x2){if(x2===SuspenseException||x2===SuspenseActionException)throw x2;var fiber=createFiber(29,x2,null,returnFiber.mode);return fiber.lanes=lanes,fiber.return=returnFiber,fiber}finally{}}}function finishQueueingConcurrentUpdates(){for(var endIndex=concurrentQueuesIndex,i=concurrentlyUpdatedLanes=concurrentQueuesIndex=0;i<endIndex;){var fiber=concurrentQueues[i];concurrentQueues[i++]=null;var queue=concurrentQueues[i];concurrentQueues[i++]=null;var update=concurrentQueues[i];concurrentQueues[i++]=null;var lane=concurrentQueues[i];if(concurrentQueues[i++]=null,queue!==null&&update!==null){var pending=queue.pending;pending===null?update.next=update:(update.next=pending.next,pending.next=update),queue.pending=update}lane!==0&&markUpdateLaneFromFiberToRoot(fiber,update,lane)}}function enqueueUpdate$1(fiber,queue,update,lane){concurrentQueues[concurrentQueuesIndex++]=fiber,concurrentQueues[concurrentQueuesIndex++]=queue,concurrentQueues[concurrentQueuesIndex++]=update,concurrentQueues[concurrentQueuesIndex++]=lane,concurrentlyUpdatedLanes|=lane,fiber.lanes|=lane,fiber=fiber.alternate,fiber!==null&&(fiber.lanes|=lane)}function enqueueConcurrentHookUpdate(fiber,queue,update,lane){return enqueueUpdate$1(fiber,queue,update,lane),getRootForUpdatedFiber(fiber)}function enqueueConcurrentRenderForLane(fiber,lane){return enqueueUpdate$1(fiber,null,null,lane),getRootForUpdatedFiber(fiber)}function markUpdateLaneFromFiberToRoot(sourceFiber,update,lane){sourceFiber.lanes|=lane;var alternate=sourceFiber.alternate;alternate!==null&&(alternate.lanes|=lane);for(var isHidden=!1,parent=sourceFiber.return;parent!==null;)parent.childLanes|=lane,alternate=parent.alternate,alternate!==null&&(alternate.childLanes|=lane),parent.tag===22&&(sourceFiber=parent.stateNode,sourceFiber===null||sourceFiber._visibility&1||(isHidden=!0)),sourceFiber=parent,parent=parent.return;return sourceFiber.tag===3?(parent=sourceFiber.stateNode,isHidden&&update!==null&&(isHidden=31-clz32(lane),sourceFiber=parent.hiddenUpdates,alternate=sourceFiber[isHidden],alternate===null?sourceFiber[isHidden]=[update]:alternate.push(update),update.lane=lane|536870912),parent):null}function getRootForUpdatedFiber(sourceFiber){if(50<nestedUpdateCount)throw nestedUpdateCount=0,rootWithNestedUpdates=null,Error(formatProdErrorMessage(185));for(var parent=sourceFiber.return;parent!==null;)sourceFiber=parent,parent=sourceFiber.return;return sourceFiber.tag===3?sourceFiber.stateNode:null}function initializeUpdateQueue(fiber){fiber.updateQueue={baseState:fiber.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function cloneUpdateQueue(current,workInProgress2){current=current.updateQueue,workInProgress2.updateQueue===current&&(workInProgress2.updateQueue={baseState:current.baseState,firstBaseUpdate:current.firstBaseUpdate,lastBaseUpdate:current.lastBaseUpdate,shared:current.shared,callbacks:null})}function createUpdate(lane){return{lane,tag:0,payload:null,callback:null,next:null}}function enqueueUpdate(fiber,update,lane){var updateQueue=fiber.updateQueue;if(updateQueue===null)return null;if(updateQueue=updateQueue.shared,(executionContext&2)!==0){var pending=updateQueue.pending;return pending===null?update.next=update:(update.next=pending.next,pending.next=update),updateQueue.pending=update,update=getRootForUpdatedFiber(fiber),markUpdateLaneFromFiberToRoot(fiber,null,lane),update}return enqueueUpdate$1(fiber,updateQueue,update,lane),getRootForUpdatedFiber(fiber)}function entangleTransitions(root,fiber,lane){if(fiber=fiber.updateQueue,fiber!==null&&(fiber=fiber.shared,(lane&4194048)!==0)){var queueLanes=fiber.lanes;queueLanes&=root.pendingLanes,lane|=queueLanes,fiber.lanes=lane,markRootEntangled(root,lane)}}function enqueueCapturedUpdate(workInProgress2,capturedUpdate){var{updateQueue:queue,alternate:current}=workInProgress2;if(current!==null&&(current=current.updateQueue,queue===current)){var newFirst=null,newLast=null;if(queue=queue.firstBaseUpdate,queue!==null){do{var clone={lane:queue.lane,tag:queue.tag,payload:queue.payload,callback:null,next:null};newLast===null?newFirst=newLast=clone:newLast=newLast.next=clone,queue=queue.next}while(queue!==null);newLast===null?newFirst=newLast=capturedUpdate:newLast=newLast.next=capturedUpdate}else newFirst=newLast=capturedUpdate;queue={baseState:current.baseState,firstBaseUpdate:newFirst,lastBaseUpdate:newLast,shared:current.shared,callbacks:current.callbacks},workInProgress2.updateQueue=queue;return}workInProgress2=queue.lastBaseUpdate,workInProgress2===null?queue.firstBaseUpdate=capturedUpdate:workInProgress2.next=capturedUpdate,queue.lastBaseUpdate=capturedUpdate}function suspendIfUpdateReadFromEntangledAsyncAction(){if(didReadFromEntangledAsyncAction){var entangledActionThenable=currentEntangledActionThenable;if(entangledActionThenable!==null)throw entangledActionThenable}}function processUpdateQueue(workInProgress$jscomp$0,props,instance$jscomp$0,renderLanes2){didReadFromEntangledAsyncAction=!1;var queue=workInProgress$jscomp$0.updateQueue;hasForceUpdate=!1;var{firstBaseUpdate,lastBaseUpdate}=queue,pendingQueue=queue.shared.pending;if(pendingQueue!==null){queue.shared.pending=null;var lastPendingUpdate=pendingQueue,firstPendingUpdate=lastPendingUpdate.next;lastPendingUpdate.next=null,lastBaseUpdate===null?firstBaseUpdate=firstPendingUpdate:lastBaseUpdate.next=firstPendingUpdate,lastBaseUpdate=lastPendingUpdate;var current=workInProgress$jscomp$0.alternate;current!==null&&(current=current.updateQueue,pendingQueue=current.lastBaseUpdate,pendingQueue!==lastBaseUpdate&&(pendingQueue===null?current.firstBaseUpdate=firstPendingUpdate:pendingQueue.next=firstPendingUpdate,current.lastBaseUpdate=lastPendingUpdate))}if(firstBaseUpdate!==null){var newState=queue.baseState;lastBaseUpdate=0,current=firstPendingUpdate=lastPendingUpdate=null,pendingQueue=firstBaseUpdate;do{var updateLane=pendingQueue.lane&-536870913,isHiddenUpdate=updateLane!==pendingQueue.lane;if(isHiddenUpdate?(workInProgressRootRenderLanes&updateLane)===updateLane:(renderLanes2&updateLane)===updateLane){updateLane!==0&&updateLane===currentEntangledLane&&(didReadFromEntangledAsyncAction=!0),current!==null&&(current=current.next={lane:0,tag:pendingQueue.tag,payload:pendingQueue.payload,callback:null,next:null});a:{var workInProgress2=workInProgress$jscomp$0,update=pendingQueue;updateLane=props;var instance=instance$jscomp$0;switch(update.tag){case 1:if(workInProgress2=update.payload,typeof workInProgress2==="function"){newState=workInProgress2.call(instance,newState,updateLane);break a}newState=workInProgress2;break a;case 3:workInProgress2.flags=workInProgress2.flags&-65537|128;case 0:if(workInProgress2=update.payload,updateLane=typeof workInProgress2==="function"?workInProgress2.call(instance,newState,updateLane):workInProgress2,updateLane===null||updateLane===void 0)break a;newState=assign({},newState,updateLane);break a;case 2:hasForceUpdate=!0}}updateLane=pendingQueue.callback,updateLane!==null&&(workInProgress$jscomp$0.flags|=64,isHiddenUpdate&&(workInProgress$jscomp$0.flags|=8192),isHiddenUpdate=queue.callbacks,isHiddenUpdate===null?queue.callbacks=[updateLane]:isHiddenUpdate.push(updateLane))}else isHiddenUpdate={lane:updateLane,tag:pendingQueue.tag,payload:pendingQueue.payload,callback:pendingQueue.callback,next:null},current===null?(firstPendingUpdate=current=isHiddenUpdate,lastPendingUpdate=newState):current=current.next=isHiddenUpdate,lastBaseUpdate|=updateLane;if(pendingQueue=pendingQueue.next,pendingQueue===null)if(pendingQueue=queue.shared.pending,pendingQueue===null)break;else isHiddenUpdate=pendingQueue,pendingQueue=isHiddenUpdate.next,isHiddenUpdate.next=null,queue.lastBaseUpdate=isHiddenUpdate,queue.shared.pending=null}while(1);current===null&&(lastPendingUpdate=newState),queue.baseState=lastPendingUpdate,queue.firstBaseUpdate=firstPendingUpdate,queue.lastBaseUpdate=current,firstBaseUpdate===null&&(queue.shared.lanes=0),workInProgressRootSkippedLanes|=lastBaseUpdate,workInProgress$jscomp$0.lanes=lastBaseUpdate,workInProgress$jscomp$0.memoizedState=newState}}function callCallback(callback,context){if(typeof callback!=="function")throw Error(formatProdErrorMessage(191,callback));callback.call(context)}function commitCallbacks(updateQueue,context){var callbacks=updateQueue.callbacks;if(callbacks!==null)for(updateQueue.callbacks=null,updateQueue=0;updateQueue<callbacks.length;updateQueue++)callCallback(callbacks[updateQueue],context)}function pushHiddenContext(fiber,context){fiber=entangledRenderLanes,push2(prevEntangledRenderLanesCursor,fiber),push2(currentTreeHiddenStackCursor,context),entangledRenderLanes=fiber|context.baseLanes}function reuseHiddenContextOnStack(){push2(prevEntangledRenderLanesCursor,entangledRenderLanes),push2(currentTreeHiddenStackCursor,currentTreeHiddenStackCursor.current)}function popHiddenContext(){entangledRenderLanes=prevEntangledRenderLanesCursor.current,pop2(currentTreeHiddenStackCursor),pop2(prevEntangledRenderLanesCursor)}function pushPrimaryTreeSuspenseHandler(handler){var current=handler.alternate;push2(suspenseStackCursor,suspenseStackCursor.current&1),push2(suspenseHandlerStackCursor,handler),shellBoundary===null&&(current===null||currentTreeHiddenStackCursor.current!==null?shellBoundary=handler:current.memoizedState!==null&&(shellBoundary=handler))}function pushDehydratedActivitySuspenseHandler(fiber){push2(suspenseStackCursor,suspenseStackCursor.current),push2(suspenseHandlerStackCursor,fiber),shellBoundary===null&&(shellBoundary=fiber)}function pushOffscreenSuspenseHandler(fiber){fiber.tag===22?(push2(suspenseStackCursor,suspenseStackCursor.current),push2(suspenseHandlerStackCursor,fiber),shellBoundary===null&&(shellBoundary=fiber)):reuseSuspenseHandlerOnStack(fiber)}function reuseSuspenseHandlerOnStack(){push2(suspenseStackCursor,suspenseStackCursor.current),push2(suspenseHandlerStackCursor,suspenseHandlerStackCursor.current)}function popSuspenseHandler(fiber){pop2(suspenseHandlerStackCursor),shellBoundary===fiber&&(shellBoundary=null),pop2(suspenseStackCursor)}function findFirstSuspended(row){for(var node=row;node!==null;){if(node.tag===13){var state=node.memoizedState;if(state!==null&&(state=state.dehydrated,state===null||isSuspenseInstancePending(state)||isSuspenseInstanceFallback(state)))return node}else if(node.tag===19&&(node.memoizedProps.revealOrder==="forwards"||node.memoizedProps.revealOrder==="backwards"||node.memoizedProps.revealOrder==="unstable_legacy-backwards"||node.memoizedProps.revealOrder==="together")){if((node.flags&128)!==0)return node}else if(node.child!==null){node.child.return=node,node=node.child;continue}if(node===row)break;for(;node.sibling===null;){if(node.return===null||node.return===row)return null;node=node.return}node.sibling.return=node.return,node=node.sibling}return null}function throwInvalidHookError(){throw Error(formatProdErrorMessage(321))}function areHookInputsEqual(nextDeps,prevDeps){if(prevDeps===null)return!1;for(var i=0;i<prevDeps.length&&i<nextDeps.length;i++)if(!objectIs(nextDeps[i],prevDeps[i]))return!1;return!0}function renderWithHooks(current,workInProgress2,Component,props,secondArg,nextRenderLanes){return renderLanes=nextRenderLanes,currentlyRenderingFiber=workInProgress2,workInProgress2.memoizedState=null,workInProgress2.updateQueue=null,workInProgress2.lanes=0,ReactSharedInternals.H=current===null||current.memoizedState===null?HooksDispatcherOnMount:HooksDispatcherOnUpdate,shouldDoubleInvokeUserFnsInHooksDEV=!1,nextRenderLanes=Component(props,secondArg),shouldDoubleInvokeUserFnsInHooksDEV=!1,didScheduleRenderPhaseUpdateDuringThisPass&&(nextRenderLanes=renderWithHooksAgain(workInProgress2,Component,props,secondArg)),finishRenderingHooks(current),nextRenderLanes}function finishRenderingHooks(current){ReactSharedInternals.H=ContextOnlyDispatcher;var didRenderTooFewHooks=currentHook!==null&¤tHook.next!==null;if(renderLanes=0,workInProgressHook=currentHook=currentlyRenderingFiber=null,didScheduleRenderPhaseUpdate=!1,thenableIndexCounter=0,thenableState=null,didRenderTooFewHooks)throw Error(formatProdErrorMessage(300));current===null||didReceiveUpdate||(current=current.dependencies,current!==null&&checkIfContextChanged(current)&&(didReceiveUpdate=!0))}function renderWithHooksAgain(workInProgress2,Component,props,secondArg){currentlyRenderingFiber=workInProgress2;var numberOfReRenders=0;do{if(didScheduleRenderPhaseUpdateDuringThisPass&&(thenableState=null),thenableIndexCounter=0,didScheduleRenderPhaseUpdateDuringThisPass=!1,25<=numberOfReRenders)throw Error(formatProdErrorMessage(301));if(numberOfReRenders+=1,workInProgressHook=currentHook=null,workInProgress2.updateQueue!=null){var children=workInProgress2.updateQueue;children.lastEffect=null,children.events=null,children.stores=null,children.memoCache!=null&&(children.memoCache.index=0)}ReactSharedInternals.H=HooksDispatcherOnRerender,children=Component(props,secondArg)}while(didScheduleRenderPhaseUpdateDuringThisPass);return children}function TransitionAwareHostComponent(){var dispatcher=ReactSharedInternals.H,maybeThenable=dispatcher.useState()[0];return maybeThenable=typeof maybeThenable.then==="function"?useThenable(maybeThenable):maybeThenable,dispatcher=dispatcher.useState()[0],(currentHook!==null?currentHook.memoizedState:null)!==dispatcher&&(currentlyRenderingFiber.flags|=1024),maybeThenable}function checkDidRenderIdHook(){var didRenderIdHook=localIdCounter!==0;return localIdCounter=0,didRenderIdHook}function bailoutHooks(current,workInProgress2,lanes){workInProgress2.updateQueue=current.updateQueue,workInProgress2.flags&=-2053,current.lanes&=~lanes}function resetHooksOnUnwind(workInProgress2){if(didScheduleRenderPhaseUpdate){for(workInProgress2=workInProgress2.memoizedState;workInProgress2!==null;){var queue=workInProgress2.queue;queue!==null&&(queue.pending=null),workInProgress2=workInProgress2.next}didScheduleRenderPhaseUpdate=!1}renderLanes=0,workInProgressHook=currentHook=currentlyRenderingFiber=null,didScheduleRenderPhaseUpdateDuringThisPass=!1,thenableIndexCounter=localIdCounter=0,thenableState=null}function mountWorkInProgressHook(){var hook={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return workInProgressHook===null?currentlyRenderingFiber.memoizedState=workInProgressHook=hook:workInProgressHook=workInProgressHook.next=hook,workInProgressHook}function updateWorkInProgressHook(){if(currentHook===null){var nextCurrentHook=currentlyRenderingFiber.alternate;nextCurrentHook=nextCurrentHook!==null?nextCurrentHook.memoizedState:null}else nextCurrentHook=currentHook.next;var nextWorkInProgressHook=workInProgressHook===null?currentlyRenderingFiber.memoizedState:workInProgressHook.next;if(nextWorkInProgressHook!==null)workInProgressHook=nextWorkInProgressHook,currentHook=nextCurrentHook;else{if(nextCurrentHook===null){if(currentlyRenderingFiber.alternate===null)throw Error(formatProdErrorMessage(467));throw Error(formatProdErrorMessage(310))}currentHook=nextCurrentHook,nextCurrentHook={memoizedState:currentHook.memoizedState,baseState:currentHook.baseState,baseQueue:currentHook.baseQueue,queue:currentHook.queue,next:null},workInProgressHook===null?currentlyRenderingFiber.memoizedState=workInProgressHook=nextCurrentHook:workInProgressHook=workInProgressHook.next=nextCurrentHook}return workInProgressHook}function createFunctionComponentUpdateQueue(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function useThenable(thenable){var index=thenableIndexCounter;return thenableIndexCounter+=1,thenableState===null&&(thenableState=[]),thenable=trackUsedThenable(thenableState,thenable,index),index=currentlyRenderingFiber,(workInProgressHook===null?index.memoizedState:workInProgressHook.next)===null&&(index=index.alternate,ReactSharedInternals.H=index===null||index.memoizedState===null?HooksDispatcherOnMount:HooksDispatcherOnUpdate),thenable}function use(usable){if(usable!==null&&typeof usable==="object"){if(typeof usable.then==="function")return useThenable(usable);if(usable.$$typeof===REACT_CONTEXT_TYPE)return readContext(usable)}throw Error(formatProdErrorMessage(438,String(usable)))}function useMemoCache(size){var memoCache=null,updateQueue=currentlyRenderingFiber.updateQueue;if(updateQueue!==null&&(memoCache=updateQueue.memoCache),memoCache==null){var current=currentlyRenderingFiber.alternate;current!==null&&(current=current.updateQueue,current!==null&&(current=current.memoCache,current!=null&&(memoCache={data:current.data.map(function(array){return array.slice()}),index:0})))}if(memoCache==null&&(memoCache={data:[],index:0}),updateQueue===null&&(updateQueue=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=updateQueue),updateQueue.memoCache=memoCache,updateQueue=memoCache.data[memoCache.index],updateQueue===void 0)for(updateQueue=memoCache.data[memoCache.index]=Array(size),current=0;current<size;current++)updateQueue[current]=REACT_MEMO_CACHE_SENTINEL;return memoCache.index++,updateQueue}function basicStateReducer(state,action){return typeof action==="function"?action(state):action}function updateReducer(reducer){var hook=updateWorkInProgressHook();return updateReducerImpl(hook,currentHook,reducer)}function updateReducerImpl(hook,current,reducer){var queue=hook.queue;if(queue===null)throw Error(formatProdErrorMessage(311));queue.lastRenderedReducer=reducer;var baseQueue=hook.baseQueue,pendingQueue=queue.pending;if(pendingQueue!==null){if(baseQueue!==null){var baseFirst=baseQueue.next;baseQueue.next=pendingQueue.next,pendingQueue.next=baseFirst}current.baseQueue=baseQueue=pendingQueue,queue.pending=null}if(pendingQueue=hook.baseState,baseQueue===null)hook.memoizedState=pendingQueue;else{current=baseQueue.next;var newBaseQueueFirst=baseFirst=null,newBaseQueueLast=null,update=current,didReadFromEntangledAsyncAction$51=!1;do{var updateLane=update.lane&-536870913;if(updateLane!==update.lane?(workInProgressRootRenderLanes&updateLane)===updateLane:(renderLanes&updateLane)===updateLane){var revertLane=update.revertLane;if(revertLane===0)newBaseQueueLast!==null&&(newBaseQueueLast=newBaseQueueLast.next={lane:0,revertLane:0,gesture:null,action:update.action,hasEagerState:update.hasEagerState,eagerState:update.eagerState,next:null}),updateLane===currentEntangledLane&&(didReadFromEntangledAsyncAction$51=!0);else if((renderLanes&revertLane)===revertLane){update=update.next,revertLane===currentEntangledLane&&(didReadFromEntangledAsyncAction$51=!0);continue}else updateLane={lane:0,revertLane:update.revertLane,gesture:null,action:update.action,hasEagerState:update.hasEagerState,eagerState:update.eagerState,next:null},newBaseQueueLast===null?(newBaseQueueFirst=newBaseQueueLast=updateLane,baseFirst=pendingQueue):newBaseQueueLast=newBaseQueueLast.next=updateLane,currentlyRenderingFiber.lanes|=revertLane,workInProgressRootSkippedLanes|=revertLane;updateLane=update.action,shouldDoubleInvokeUserFnsInHooksDEV&&reducer(pendingQueue,updateLane),pendingQueue=update.hasEagerState?update.eagerState:reducer(pendingQueue,updateLane)}else revertLane={lane:updateLane,revertLane:update.revertLane,gesture:update.gesture,action:update.action,hasEagerState:update.hasEagerState,eagerState:update.eagerState,next:null},newBaseQueueLast===null?(newBaseQueueFirst=newBaseQueueLast=revertLane,baseFirst=pendingQueue):newBaseQueueLast=newBaseQueueLast.next=revertLane,currentlyRenderingFiber.lanes|=updateLane,workInProgressRootSkippedLanes|=updateLane;update=update.next}while(update!==null&&update!==current);if(newBaseQueueLast===null?baseFirst=pendingQueue:newBaseQueueLast.next=newBaseQueueFirst,!objectIs(pendingQueue,hook.memoizedState)&&(didReceiveUpdate=!0,didReadFromEntangledAsyncAction$51&&(reducer=currentEntangledActionThenable,reducer!==null)))throw reducer;hook.memoizedState=pendingQueue,hook.baseState=baseFirst,hook.baseQueue=newBaseQueueLast,queue.lastRenderedState=pendingQueue}return baseQueue===null&&(queue.lanes=0),[hook.memoizedState,queue.dispatch]}function rerenderReducer(reducer){var hook=updateWorkInProgressHook(),queue=hook.queue;if(queue===null)throw Error(formatProdErrorMessage(311));queue.lastRenderedReducer=reducer;var{dispatch,pending:lastRenderPhaseUpdate}=queue,newState=hook.memoizedState;if(lastRenderPhaseUpdate!==null){queue.pending=null;var update=lastRenderPhaseUpdate=lastRenderPhaseUpdate.next;do newState=reducer(newState,update.action),update=update.next;while(update!==lastRenderPhaseUpdate);objectIs(newState,hook.memoizedState)||(didReceiveUpdate=!0),hook.memoizedState=newState,hook.baseQueue===null&&(hook.baseState=newState),queue.lastRenderedState=newState}return[newState,dispatch]}function updateSyncExternalStore(subscribe,getSnapshot,getServerSnapshot){var fiber=currentlyRenderingFiber,hook=updateWorkInProgressHook(),isHydrating$jscomp$0=isHydrating;if(isHydrating$jscomp$0){if(getServerSnapshot===void 0)throw Error(formatProdErrorMessage(407));getServerSnapshot=getServerSnapshot()}else getServerSnapshot=getSnapshot();var snapshotChanged=!objectIs((currentHook||hook).memoizedState,getServerSnapshot);if(snapshotChanged&&(hook.memoizedState=getServerSnapshot,didReceiveUpdate=!0),hook=hook.queue,updateEffect(subscribeToStore.bind(null,fiber,hook,subscribe),[subscribe]),hook.getSnapshot!==getSnapshot||snapshotChanged||workInProgressHook!==null&&workInProgressHook.memoizedState.tag&1){if(fiber.flags|=2048,pushSimpleEffect(9,{destroy:void 0},updateStoreInstance.bind(null,fiber,hook,getServerSnapshot,getSnapshot),null),workInProgressRoot===null)throw Error(formatProdErrorMessage(349));isHydrating$jscomp$0||(renderLanes&127)!==0||pushStoreConsistencyCheck(fiber,getSnapshot,getServerSnapshot)}return getServerSnapshot}function pushStoreConsistencyCheck(fiber,getSnapshot,renderedSnapshot){fiber.flags|=16384,fiber={getSnapshot,value:renderedSnapshot},getSnapshot=currentlyRenderingFiber.updateQueue,getSnapshot===null?(getSnapshot=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=getSnapshot,getSnapshot.stores=[fiber]):(renderedSnapshot=getSnapshot.stores,renderedSnapshot===null?getSnapshot.stores=[fiber]:renderedSnapshot.push(fiber))}function updateStoreInstance(fiber,inst,nextSnapshot,getSnapshot){inst.value=nextSnapshot,inst.getSnapshot=getSnapshot,checkIfSnapshotChanged(inst)&&forceStoreRerender(fiber)}function subscribeToStore(fiber,inst,subscribe){return subscribe(function(){checkIfSnapshotChanged(inst)&&forceStoreRerender(fiber)})}function checkIfSnapshotChanged(inst){var latestGetSnapshot=inst.getSnapshot;inst=inst.value;try{var nextValue=latestGetSnapshot();return!objectIs(inst,nextValue)}catch(error){return!0}}function forceStoreRerender(fiber){var root=enqueueConcurrentRenderForLane(fiber,2);root!==null&&scheduleUpdateOnFiber(root,fiber,2)}function mountStateImpl(initialState){var hook=mountWorkInProgressHook();if(typeof initialState==="function"){var initialStateInitializer=initialState;if(initialState=initialStateInitializer(),shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{initialStateInitializer()}finally{setIsStrictModeForDevtools(!1)}}}return hook.memoizedState=hook.baseState=initialState,hook.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:initialState},hook}function updateOptimisticImpl(hook,current,passthrough,reducer){return hook.baseState=passthrough,updateReducerImpl(hook,currentHook,typeof reducer==="function"?reducer:basicStateReducer)}function dispatchActionState(fiber,actionQueue,setPendingState,setState,payload){if(isRenderPhaseUpdate(fiber))throw Error(formatProdErrorMessage(485));if(fiber=actionQueue.action,fiber!==null){var actionNode={payload,action:fiber,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(listener){actionNode.listeners.push(listener)}};ReactSharedInternals.T!==null?setPendingState(!0):actionNode.isTransition=!1,setState(actionNode),setPendingState=actionQueue.pending,setPendingState===null?(actionNode.next=actionQueue.pending=actionNode,runActionStateAction(actionQueue,actionNode)):(actionNode.next=setPendingState.next,actionQueue.pending=setPendingState.next=actionNode)}}function runActionStateAction(actionQueue,node){var{action,payload}=node,prevState=actionQueue.state;if(node.isTransition){var prevTransition=ReactSharedInternals.T,currentTransition={};ReactSharedInternals.T=currentTransition;try{var returnValue=action(prevState,payload),onStartTransitionFinish=ReactSharedInternals.S;onStartTransitionFinish!==null&&onStartTransitionFinish(currentTransition,returnValue),handleActionReturnValue(actionQueue,node,returnValue)}catch(error){onActionError(actionQueue,node,error)}finally{prevTransition!==null&¤tTransition.types!==null&&(prevTransition.types=currentTransition.types),ReactSharedInternals.T=prevTransition}}else try{prevTransition=action(prevState,payload),handleActionReturnValue(actionQueue,node,prevTransition)}catch(error$55){onActionError(actionQueue,node,error$55)}}function handleActionReturnValue(actionQueue,node,returnValue){returnValue!==null&&typeof returnValue==="object"&&typeof returnValue.then==="function"?returnValue.then(function(nextState){onActionSuccess(actionQueue,node,nextState)},function(error){return onActionError(actionQueue,node,error)}):onActionSuccess(actionQueue,node,returnValue)}function onActionSuccess(actionQueue,actionNode,nextState){actionNode.status="fulfilled",actionNode.value=nextState,notifyActionListeners(actionNode),actionQueue.state=nextState,actionNode=actionQueue.pending,actionNode!==null&&(nextState=actionNode.next,nextState===actionNode?actionQueue.pending=null:(nextState=nextState.next,actionNode.next=nextState,runActionStateAction(actionQueue,nextState)))}function onActionError(actionQueue,actionNode,error){var last=actionQueue.pending;if(actionQueue.pending=null,last!==null){last=last.next;do actionNode.status="rejected",actionNode.reason=error,notifyActionListeners(actionNode),actionNode=actionNode.next;while(actionNode!==last)}actionQueue.action=null}function notifyActionListeners(actionNode){actionNode=actionNode.listeners;for(var i=0;i<actionNode.length;i++)(0,actionNode[i])()}function actionStateReducer(oldState,newState){return newState}function mountActionState(action,initialStateProp){if(isHydrating){var ssrFormState=workInProgressRoot.formState;if(ssrFormState!==null){a:{var JSCompiler_inline_result=currentlyRenderingFiber;if(isHydrating){if(nextHydratableInstance){var markerInstance=canHydrateFormStateMarker(nextHydratableInstance,rootOrSingletonContext);if(markerInstance){nextHydratableInstance=getNextHydratableSibling(markerInstance),JSCompiler_inline_result=isFormStateMarkerMatching(markerInstance);break a}}throwOnHydrationMismatch(JSCompiler_inline_result)}JSCompiler_inline_result=!1}JSCompiler_inline_result&&(initialStateProp=ssrFormState[0])}}ssrFormState=mountWorkInProgressHook(),ssrFormState.memoizedState=ssrFormState.baseState=initialStateProp,JSCompiler_inline_result={pending:null,lanes:0,dispatch:null,lastRenderedReducer:actionStateReducer,lastRenderedState:initialStateProp},ssrFormState.queue=JSCompiler_inline_result,ssrFormState=dispatchSetState.bind(null,currentlyRenderingFiber,JSCompiler_inline_result),JSCompiler_inline_result.dispatch=ssrFormState,JSCompiler_inline_result=mountStateImpl(!1);var setPendingState=dispatchOptimisticSetState.bind(null,currentlyRenderingFiber,!1,JSCompiler_inline_result.queue);return JSCompiler_inline_result=mountWorkInProgressHook(),markerInstance={state:initialStateProp,dispatch:null,action,pending:null},JSCompiler_inline_result.queue=markerInstance,ssrFormState=dispatchActionState.bind(null,currentlyRenderingFiber,markerInstance,setPendingState,ssrFormState),markerInstance.dispatch=ssrFormState,JSCompiler_inline_result.memoizedState=action,[initialStateProp,ssrFormState,!1]}function updateActionState(action){var stateHook=updateWorkInProgressHook();return updateActionStateImpl(stateHook,currentHook,action)}function updateActionStateImpl(stateHook,currentStateHook,action){if(currentStateHook=updateReducerImpl(stateHook,currentStateHook,actionStateReducer)[0],stateHook=updateReducer(basicStateReducer)[0],typeof currentStateHook==="object"&¤tStateHook!==null&&typeof currentStateHook.then==="function")try{var state=useThenable(currentStateHook)}catch(x2){if(x2===SuspenseException)throw SuspenseActionException;throw x2}else state=currentStateHook;currentStateHook=updateWorkInProgressHook();var actionQueue=currentStateHook.queue,dispatch=actionQueue.dispatch;return action!==currentStateHook.memoizedState&&(currentlyRenderingFiber.flags|=2048,pushSimpleEffect(9,{destroy:void 0},actionStateActionEffect.bind(null,actionQueue,action),null)),[state,dispatch,stateHook]}function actionStateActionEffect(actionQueue,action){actionQueue.action=action}function rerenderActionState(action){var stateHook=updateWorkInProgressHook(),currentStateHook=currentHook;if(currentStateHook!==null)return updateActionStateImpl(stateHook,currentStateHook,action);updateWorkInProgressHook(),stateHook=stateHook.memoizedState,currentStateHook=updateWorkInProgressHook();var dispatch=currentStateHook.queue.dispatch;return currentStateHook.memoizedState=action,[stateHook,dispatch,!1]}function pushSimpleEffect(tag,inst,create,deps){return tag={tag,create,deps,inst,next:null},inst=currentlyRenderingFiber.updateQueue,inst===null&&(inst=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=inst),create=inst.lastEffect,create===null?inst.lastEffect=tag.next=tag:(deps=create.next,create.next=tag,tag.next=deps,inst.lastEffect=tag),tag}function updateRef(){return updateWorkInProgressHook().memoizedState}function mountEffectImpl(fiberFlags,hookFlags,create,deps){var hook=mountWorkInProgressHook();currentlyRenderingFiber.flags|=fiberFlags,hook.memoizedState=pushSimpleEffect(1|hookFlags,{destroy:void 0},create,deps===void 0?null:deps)}function updateEffectImpl(fiberFlags,hookFlags,create,deps){var hook=updateWorkInProgressHook();deps=deps===void 0?null:deps;var inst=hook.memoizedState.inst;currentHook!==null&&deps!==null&&areHookInputsEqual(deps,currentHook.memoizedState.deps)?hook.memoizedState=pushSimpleEffect(hookFlags,inst,create,deps):(currentlyRenderingFiber.flags|=fiberFlags,hook.memoizedState=pushSimpleEffect(1|hookFlags,inst,create,deps))}function mountEffect(create,deps){mountEffectImpl(8390656,8,create,deps)}function updateEffect(create,deps){updateEffectImpl(2048,8,create,deps)}function useEffectEventImpl(payload){currentlyRenderingFiber.flags|=4;var componentUpdateQueue=currentlyRenderingFiber.updateQueue;if(componentUpdateQueue===null)componentUpdateQueue=createFunctionComponentUpdateQueue(),currentlyRenderingFiber.updateQueue=componentUpdateQueue,componentUpdateQueue.events=[payload];else{var events=componentUpdateQueue.events;events===null?componentUpdateQueue.events=[payload]:events.push(payload)}}function updateEvent(callback){var ref=updateWorkInProgressHook().memoizedState;return useEffectEventImpl({ref,nextImpl:callback}),function(){if((executionContext&2)!==0)throw Error(formatProdErrorMessage(440));return ref.impl.apply(void 0,arguments)}}function updateInsertionEffect(create,deps){return updateEffectImpl(4,2,create,deps)}function updateLayoutEffect(create,deps){return updateEffectImpl(4,4,create,deps)}function imperativeHandleEffect(create,ref){if(typeof ref==="function"){create=create();var refCleanup=ref(create);return function(){typeof refCleanup==="function"?refCleanup():ref(null)}}if(ref!==null&&ref!==void 0)return create=create(),ref.current=create,function(){ref.current=null}}function updateImperativeHandle(ref,create,deps){deps=deps!==null&&deps!==void 0?deps.concat([ref]):null,updateEffectImpl(4,4,imperativeHandleEffect.bind(null,create,ref),deps)}function mountDebugValue(){}function updateCallback(callback,deps){var hook=updateWorkInProgressHook();deps=deps===void 0?null:deps;var prevState=hook.memoizedState;if(deps!==null&&areHookInputsEqual(deps,prevState[1]))return prevState[0];return hook.memoizedState=[callback,deps],callback}function updateMemo(nextCreate,deps){var hook=updateWorkInProgressHook();deps=deps===void 0?null:deps;var prevState=hook.memoizedState;if(deps!==null&&areHookInputsEqual(deps,prevState[1]))return prevState[0];if(prevState=nextCreate(),shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{nextCreate()}finally{setIsStrictModeForDevtools(!1)}}return hook.memoizedState=[prevState,deps],prevState}function mountDeferredValueImpl(hook,value,initialValue){if(initialValue===void 0||(renderLanes&1073741824)!==0&&(workInProgressRootRenderLanes&261930)===0)return hook.memoizedState=value;return hook.memoizedState=initialValue,hook=requestDeferredLane(),currentlyRenderingFiber.lanes|=hook,workInProgressRootSkippedLanes|=hook,initialValue}function updateDeferredValueImpl(hook,prevValue,value,initialValue){if(objectIs(value,prevValue))return value;if(currentTreeHiddenStackCursor.current!==null)return hook=mountDeferredValueImpl(hook,value,initialValue),objectIs(hook,prevValue)||(didReceiveUpdate=!0),hook;if((renderLanes&42)===0||(renderLanes&1073741824)!==0&&(workInProgressRootRenderLanes&261930)===0)return didReceiveUpdate=!0,hook.memoizedState=value;return hook=requestDeferredLane(),currentlyRenderingFiber.lanes|=hook,workInProgressRootSkippedLanes|=hook,prevValue}function startTransition(fiber,queue,pendingState,finishedState,callback){var previousPriority=getCurrentUpdatePriority();setCurrentUpdatePriority(previousPriority!==0&&8>previousPriority?previousPriority:8);var prevTransition=ReactSharedInternals.T,currentTransition={};ReactSharedInternals.T=currentTransition,dispatchOptimisticSetState(fiber,!1,queue,pendingState);try{var returnValue=callback(),onStartTransitionFinish=ReactSharedInternals.S;if(onStartTransitionFinish!==null&&onStartTransitionFinish(currentTransition,returnValue),returnValue!==null&&typeof returnValue==="object"&&typeof returnValue.then==="function"){var thenableForFinishedState=chainThenableValue(returnValue,finishedState);dispatchSetStateInternal(fiber,queue,thenableForFinishedState,requestUpdateLane(fiber))}else dispatchSetStateInternal(fiber,queue,finishedState,requestUpdateLane(fiber))}catch(error){dispatchSetStateInternal(fiber,queue,{then:function(){},status:"rejected",reason:error},requestUpdateLane())}finally{setCurrentUpdatePriority(previousPriority),prevTransition!==null&¤tTransition.types!==null&&(prevTransition.types=currentTransition.types),ReactSharedInternals.T=prevTransition}}function ensureFormComponentIsStateful(formFiber){var existingStateHook=formFiber.memoizedState;if(existingStateHook!==null)return existingStateHook;existingStateHook={memoizedState:NotPendingTransition,baseState:NotPendingTransition,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:NotPendingTransition},next:null};var initialResetState={};return existingStateHook.next={memoizedState:initialResetState,baseState:initialResetState,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:initialResetState},next:null},formFiber.memoizedState=existingStateHook,formFiber=formFiber.alternate,formFiber!==null&&(formFiber.memoizedState=existingStateHook),existingStateHook}function useHostTransitionStatus(){return readContext(HostTransitionContext)}function updateId(){return updateWorkInProgressHook().memoizedState}function updateRefresh(){return updateWorkInProgressHook().memoizedState}function refreshCache(fiber){for(var provider=fiber.return;provider!==null;){switch(provider.tag){case 24:case 3:var lane=requestUpdateLane();fiber=createUpdate(lane);var root=enqueueUpdate(provider,fiber,lane);root!==null&&(scheduleUpdateOnFiber(root,provider,lane),entangleTransitions(root,provider,lane)),provider={cache:createCache()},fiber.payload=provider;return}provider=provider.return}}function dispatchReducerAction(fiber,queue,action){var lane=requestUpdateLane();action={lane,revertLane:0,gesture:null,action,hasEagerState:!1,eagerState:null,next:null},isRenderPhaseUpdate(fiber)?enqueueRenderPhaseUpdate(queue,action):(action=enqueueConcurrentHookUpdate(fiber,queue,action,lane),action!==null&&(scheduleUpdateOnFiber(action,fiber,lane),entangleTransitionUpdate(action,queue,lane)))}function dispatchSetState(fiber,queue,action){var lane=requestUpdateLane();dispatchSetStateInternal(fiber,queue,action,lane)}function dispatchSetStateInternal(fiber,queue,action,lane){var update={lane,revertLane:0,gesture:null,action,hasEagerState:!1,eagerState:null,next:null};if(isRenderPhaseUpdate(fiber))enqueueRenderPhaseUpdate(queue,update);else{var alternate=fiber.alternate;if(fiber.lanes===0&&(alternate===null||alternate.lanes===0)&&(alternate=queue.lastRenderedReducer,alternate!==null))try{var currentState=queue.lastRenderedState,eagerState=alternate(currentState,action);if(update.hasEagerState=!0,update.eagerState=eagerState,objectIs(eagerState,currentState))return enqueueUpdate$1(fiber,queue,update,0),workInProgressRoot===null&&finishQueueingConcurrentUpdates(),!1}catch(error){}finally{}if(action=enqueueConcurrentHookUpdate(fiber,queue,update,lane),action!==null)return scheduleUpdateOnFiber(action,fiber,lane),entangleTransitionUpdate(action,queue,lane),!0}return!1}function dispatchOptimisticSetState(fiber,throwIfDuringRender,queue,action){if(action={lane:2,revertLane:requestTransitionLane(),gesture:null,action,hasEagerState:!1,eagerState:null,next:null},isRenderPhaseUpdate(fiber)){if(throwIfDuringRender)throw Error(formatProdErrorMessage(479))}else throwIfDuringRender=enqueueConcurrentHookUpdate(fiber,queue,action,2),throwIfDuringRender!==null&&scheduleUpdateOnFiber(throwIfDuringRender,fiber,2)}function isRenderPhaseUpdate(fiber){var alternate=fiber.alternate;return fiber===currentlyRenderingFiber||alternate!==null&&alternate===currentlyRenderingFiber}function enqueueRenderPhaseUpdate(queue,update){didScheduleRenderPhaseUpdateDuringThisPass=didScheduleRenderPhaseUpdate=!0;var pending=queue.pending;pending===null?update.next=update:(update.next=pending.next,pending.next=update),queue.pending=update}function entangleTransitionUpdate(root,queue,lane){if((lane&4194048)!==0){var queueLanes=queue.lanes;queueLanes&=root.pendingLanes,lane|=queueLanes,queue.lanes=lane,markRootEntangled(root,lane)}}function applyDerivedStateFromProps(workInProgress2,ctor,getDerivedStateFromProps,nextProps){ctor=workInProgress2.memoizedState,getDerivedStateFromProps=getDerivedStateFromProps(nextProps,ctor),getDerivedStateFromProps=getDerivedStateFromProps===null||getDerivedStateFromProps===void 0?ctor:assign({},ctor,getDerivedStateFromProps),workInProgress2.memoizedState=getDerivedStateFromProps,workInProgress2.lanes===0&&(workInProgress2.updateQueue.baseState=getDerivedStateFromProps)}function checkShouldComponentUpdate(workInProgress2,ctor,oldProps,newProps,oldState,newState,nextContext){return workInProgress2=workInProgress2.stateNode,typeof workInProgress2.shouldComponentUpdate==="function"?workInProgress2.shouldComponentUpdate(newProps,newState,nextContext):ctor.prototype&&ctor.prototype.isPureReactComponent?!shallowEqual(oldProps,newProps)||!shallowEqual(oldState,newState):!0}function callComponentWillReceiveProps(workInProgress2,instance,newProps,nextContext){workInProgress2=instance.state,typeof instance.componentWillReceiveProps==="function"&&instance.componentWillReceiveProps(newProps,nextContext),typeof instance.UNSAFE_componentWillReceiveProps==="function"&&instance.UNSAFE_componentWillReceiveProps(newProps,nextContext),instance.state!==workInProgress2&&classComponentUpdater.enqueueReplaceState(instance,instance.state,null)}function resolveClassComponentProps(Component,baseProps){var newProps=baseProps;if("ref"in baseProps){newProps={};for(var propName in baseProps)propName!=="ref"&&(newProps[propName]=baseProps[propName])}if(Component=Component.defaultProps){newProps===baseProps&&(newProps=assign({},newProps));for(var propName$57 in Component)newProps[propName$57]===void 0&&(newProps[propName$57]=Component[propName$57])}return newProps}function logUncaughtError(root,errorInfo){try{var onUncaughtError=root.onUncaughtError;onUncaughtError(errorInfo.value,{componentStack:errorInfo.stack})}catch(e){setTimeout(function(){throw e})}}function logCaughtError(root,boundary,errorInfo){try{var onCaughtError=root.onCaughtError;onCaughtError(errorInfo.value,{componentStack:errorInfo.stack,errorBoundary:boundary.tag===1?boundary.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function createRootErrorUpdate(root,errorInfo,lane){return lane=createUpdate(lane),lane.tag=3,lane.payload={element:null},lane.callback=function(){logUncaughtError(root,errorInfo)},lane}function createClassErrorUpdate(lane){return lane=createUpdate(lane),lane.tag=3,lane}function initializeClassErrorUpdate(update,root,fiber,errorInfo){var getDerivedStateFromError=fiber.type.getDerivedStateFromError;if(typeof getDerivedStateFromError==="function"){var error=errorInfo.value;update.payload=function(){return getDerivedStateFromError(error)},update.callback=function(){logCaughtError(root,fiber,errorInfo)}}var inst=fiber.stateNode;inst!==null&&typeof inst.componentDidCatch==="function"&&(update.callback=function(){logCaughtError(root,fiber,errorInfo),typeof getDerivedStateFromError!=="function"&&(legacyErrorBoundariesThatAlreadyFailed===null?legacyErrorBoundariesThatAlreadyFailed=new Set([this]):legacyErrorBoundariesThatAlreadyFailed.add(this));var stack=errorInfo.stack;this.componentDidCatch(errorInfo.value,{componentStack:stack!==null?stack:""})})}function throwException(root,returnFiber,sourceFiber,value,rootRenderLanes){if(sourceFiber.flags|=32768,value!==null&&typeof value==="object"&&typeof value.then==="function"){if(returnFiber=sourceFiber.alternate,returnFiber!==null&&propagateParentContextChanges(returnFiber,sourceFiber,rootRenderLanes,!0),sourceFiber=suspenseHandlerStackCursor.current,sourceFiber!==null){switch(sourceFiber.tag){case 31:case 13:return shellBoundary===null?renderDidSuspendDelayIfPossible():sourceFiber.alternate===null&&workInProgressRootExitStatus===0&&(workInProgressRootExitStatus=3),sourceFiber.flags&=-257,sourceFiber.flags|=65536,sourceFiber.lanes=rootRenderLanes,value===noopSuspenseyCommitThenable?sourceFiber.flags|=16384:(returnFiber=sourceFiber.updateQueue,returnFiber===null?sourceFiber.updateQueue=new Set([value]):returnFiber.add(value),attachPingListener(root,value,rootRenderLanes)),!1;case 22:return sourceFiber.flags|=65536,value===noopSuspenseyCommitThenable?sourceFiber.flags|=16384:(returnFiber=sourceFiber.updateQueue,returnFiber===null?(returnFiber={transitions:null,markerInstances:null,retryQueue:new Set([value])},sourceFiber.updateQueue=returnFiber):(sourceFiber=returnFiber.retryQueue,sourceFiber===null?returnFiber.retryQueue=new Set([value]):sourceFiber.add(value)),attachPingListener(root,value,rootRenderLanes)),!1}throw Error(formatProdErrorMessage(435,sourceFiber.tag))}return attachPingListener(root,value,rootRenderLanes),renderDidSuspendDelayIfPossible(),!1}if(isHydrating)return returnFiber=suspenseHandlerStackCursor.current,returnFiber!==null?((returnFiber.flags&65536)===0&&(returnFiber.flags|=256),returnFiber.flags|=65536,returnFiber.lanes=rootRenderLanes,value!==HydrationMismatchException&&(root=Error(formatProdErrorMessage(422),{cause:value}),queueHydrationError(createCapturedValueAtFiber(root,sourceFiber)))):(value!==HydrationMismatchException&&(returnFiber=Error(formatProdErrorMessage(423),{cause:value}),queueHydrationError(createCapturedValueAtFiber(returnFiber,sourceFiber))),root=root.current.alternate,root.flags|=65536,rootRenderLanes&=-rootRenderLanes,root.lanes|=rootRenderLanes,value=createCapturedValueAtFiber(value,sourceFiber),rootRenderLanes=createRootErrorUpdate(root.stateNode,value,rootRenderLanes),enqueueCapturedUpdate(root,rootRenderLanes),workInProgressRootExitStatus!==4&&(workInProgressRootExitStatus=2)),!1;var wrapperError=Error(formatProdErrorMessage(520),{cause:value});if(wrapperError=createCapturedValueAtFiber(wrapperError,sourceFiber),workInProgressRootConcurrentErrors===null?workInProgressRootConcurrentErrors=[wrapperError]:workInProgressRootConcurrentErrors.push(wrapperError),workInProgressRootExitStatus!==4&&(workInProgressRootExitStatus=2),returnFiber===null)return!0;value=createCapturedValueAtFiber(value,sourceFiber),sourceFiber=returnFiber;do{switch(sourceFiber.tag){case 3:return sourceFiber.flags|=65536,root=rootRenderLanes&-rootRenderLanes,sourceFiber.lanes|=root,root=createRootErrorUpdate(sourceFiber.stateNode,value,root),enqueueCapturedUpdate(sourceFiber,root),!1;case 1:if(returnFiber=sourceFiber.type,wrapperError=sourceFiber.stateNode,(sourceFiber.flags&128)===0&&(typeof returnFiber.getDerivedStateFromError==="function"||wrapperError!==null&&typeof wrapperError.componentDidCatch==="function"&&(legacyErrorBoundariesThatAlreadyFailed===null||!legacyErrorBoundariesThatAlreadyFailed.has(wrapperError))))return sourceFiber.flags|=65536,rootRenderLanes&=-rootRenderLanes,sourceFiber.lanes|=rootRenderLanes,rootRenderLanes=createClassErrorUpdate(rootRenderLanes),initializeClassErrorUpdate(rootRenderLanes,root,sourceFiber,value),enqueueCapturedUpdate(sourceFiber,rootRenderLanes),!1}sourceFiber=sourceFiber.return}while(sourceFiber!==null);return!1}function reconcileChildren(current,workInProgress2,nextChildren,renderLanes2){workInProgress2.child=current===null?mountChildFibers(workInProgress2,null,nextChildren,renderLanes2):reconcileChildFibers(workInProgress2,current.child,nextChildren,renderLanes2)}function updateForwardRef(current,workInProgress2,Component,nextProps,renderLanes2){Component=Component.render;var ref=workInProgress2.ref;if("ref"in nextProps){var propsWithoutRef={};for(var key in nextProps)key!=="ref"&&(propsWithoutRef[key]=nextProps[key])}else propsWithoutRef=nextProps;if(prepareToReadContext(workInProgress2),nextProps=renderWithHooks(current,workInProgress2,Component,propsWithoutRef,ref,renderLanes2),key=checkDidRenderIdHook(),current!==null&&!didReceiveUpdate)return bailoutHooks(current,workInProgress2,renderLanes2),bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);return isHydrating&&key&&pushMaterializedTreeId(workInProgress2),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,nextProps,renderLanes2),workInProgress2.child}function updateMemoComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(current===null){var type=Component.type;if(typeof type==="function"&&!shouldConstruct(type)&&type.defaultProps===void 0&&Component.compare===null)return workInProgress2.tag=15,workInProgress2.type=type,updateSimpleMemoComponent(current,workInProgress2,type,nextProps,renderLanes2);return current=createFiberFromTypeAndProps(Component.type,null,nextProps,workInProgress2,workInProgress2.mode,renderLanes2),current.ref=workInProgress2.ref,current.return=workInProgress2,workInProgress2.child=current}if(type=current.child,!checkScheduledUpdateOrContext(current,renderLanes2)){var prevProps=type.memoizedProps;if(Component=Component.compare,Component=Component!==null?Component:shallowEqual,Component(prevProps,nextProps)&¤t.ref===workInProgress2.ref)return bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2)}return workInProgress2.flags|=1,current=createWorkInProgress(type,nextProps),current.ref=workInProgress2.ref,current.return=workInProgress2,workInProgress2.child=current}function updateSimpleMemoComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(current!==null){var prevProps=current.memoizedProps;if(shallowEqual(prevProps,nextProps)&¤t.ref===workInProgress2.ref)if(didReceiveUpdate=!1,workInProgress2.pendingProps=nextProps=prevProps,checkScheduledUpdateOrContext(current,renderLanes2))(current.flags&131072)!==0&&(didReceiveUpdate=!0);else return workInProgress2.lanes=current.lanes,bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2)}return updateFunctionComponent(current,workInProgress2,Component,nextProps,renderLanes2)}function updateOffscreenComponent(current,workInProgress2,renderLanes2,nextProps){var nextChildren=nextProps.children,prevState=current!==null?current.memoizedState:null;if(current===null&&workInProgress2.stateNode===null&&(workInProgress2.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),nextProps.mode==="hidden"){if((workInProgress2.flags&128)!==0){if(prevState=prevState!==null?prevState.baseLanes|renderLanes2:renderLanes2,current!==null){nextProps=workInProgress2.child=current.child;for(nextChildren=0;nextProps!==null;)nextChildren=nextChildren|nextProps.lanes|nextProps.childLanes,nextProps=nextProps.sibling;nextProps=nextChildren&~prevState}else nextProps=0,workInProgress2.child=null;return deferHiddenOffscreenComponent(current,workInProgress2,prevState,renderLanes2,nextProps)}if((renderLanes2&536870912)!==0)workInProgress2.memoizedState={baseLanes:0,cachePool:null},current!==null&&pushTransition(workInProgress2,prevState!==null?prevState.cachePool:null),prevState!==null?pushHiddenContext(workInProgress2,prevState):reuseHiddenContextOnStack(),pushOffscreenSuspenseHandler(workInProgress2);else return nextProps=workInProgress2.lanes=536870912,deferHiddenOffscreenComponent(current,workInProgress2,prevState!==null?prevState.baseLanes|renderLanes2:renderLanes2,renderLanes2,nextProps)}else prevState!==null?(pushTransition(workInProgress2,prevState.cachePool),pushHiddenContext(workInProgress2,prevState),reuseSuspenseHandlerOnStack(workInProgress2),workInProgress2.memoizedState=null):(current!==null&&pushTransition(workInProgress2,null),reuseHiddenContextOnStack(),reuseSuspenseHandlerOnStack(workInProgress2));return reconcileChildren(current,workInProgress2,nextChildren,renderLanes2),workInProgress2.child}function bailoutOffscreenComponent(current,workInProgress2){return current!==null&¤t.tag===22||workInProgress2.stateNode!==null||(workInProgress2.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),workInProgress2.sibling}function deferHiddenOffscreenComponent(current,workInProgress2,nextBaseLanes,renderLanes2,remainingChildLanes){var JSCompiler_inline_result=peekCacheFromPool();return JSCompiler_inline_result=JSCompiler_inline_result===null?null:{parent:isPrimaryRenderer?CacheContext._currentValue:CacheContext._currentValue2,pool:JSCompiler_inline_result},workInProgress2.memoizedState={baseLanes:nextBaseLanes,cachePool:JSCompiler_inline_result},current!==null&&pushTransition(workInProgress2,null),reuseHiddenContextOnStack(),pushOffscreenSuspenseHandler(workInProgress2),current!==null&&propagateParentContextChanges(current,workInProgress2,renderLanes2,!0),workInProgress2.childLanes=remainingChildLanes,null}function mountActivityChildren(workInProgress2,nextProps){return nextProps=mountWorkInProgressOffscreenFiber({mode:nextProps.mode,children:nextProps.children},workInProgress2.mode),nextProps.ref=workInProgress2.ref,workInProgress2.child=nextProps,nextProps.return=workInProgress2,nextProps}function retryActivityComponentWithoutHydrating(current,workInProgress2,renderLanes2){return reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),current=mountActivityChildren(workInProgress2,workInProgress2.pendingProps),current.flags|=2,popSuspenseHandler(workInProgress2),workInProgress2.memoizedState=null,current}function updateActivityComponent(current,workInProgress2,renderLanes2){var nextProps=workInProgress2.pendingProps,didSuspend=(workInProgress2.flags&128)!==0;if(workInProgress2.flags&=-129,current===null){if(isHydrating){if(nextProps.mode==="hidden")return current=mountActivityChildren(workInProgress2,nextProps),workInProgress2.lanes=536870912,bailoutOffscreenComponent(null,current);if(pushDehydratedActivitySuspenseHandler(workInProgress2),(current=nextHydratableInstance)?(current=canHydrateActivityInstance(current,rootOrSingletonContext),current!==null&&(workInProgress2.memoizedState={dehydrated:current,treeContext:treeContextProvider!==null?{id:treeContextId,overflow:treeContextOverflow}:null,retryLane:536870912,hydrationErrors:null},renderLanes2=createFiberFromDehydratedFragment(current),renderLanes2.return=workInProgress2,workInProgress2.child=renderLanes2,hydrationParentFiber=workInProgress2,nextHydratableInstance=null)):current=null,current===null)throw throwOnHydrationMismatch(workInProgress2);return workInProgress2.lanes=536870912,null}return mountActivityChildren(workInProgress2,nextProps)}var prevState=current.memoizedState;if(prevState!==null){var dehydrated=prevState.dehydrated;if(pushDehydratedActivitySuspenseHandler(workInProgress2),didSuspend)if(workInProgress2.flags&256)workInProgress2.flags&=-257,workInProgress2=retryActivityComponentWithoutHydrating(current,workInProgress2,renderLanes2);else if(workInProgress2.memoizedState!==null)workInProgress2.child=current.child,workInProgress2.flags|=128,workInProgress2=null;else throw Error(formatProdErrorMessage(558));else if(didReceiveUpdate||propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),didSuspend=(renderLanes2¤t.childLanes)!==0,didReceiveUpdate||didSuspend){if(nextProps=workInProgressRoot,nextProps!==null&&(dehydrated=getBumpedLaneForHydration(nextProps,renderLanes2),dehydrated!==0&&dehydrated!==prevState.retryLane))throw prevState.retryLane=dehydrated,enqueueConcurrentRenderForLane(current,dehydrated),scheduleUpdateOnFiber(nextProps,current,dehydrated),SelectiveHydrationException;renderDidSuspendDelayIfPossible(),workInProgress2=retryActivityComponentWithoutHydrating(current,workInProgress2,renderLanes2)}else current=prevState.treeContext,supportsHydration&&(nextHydratableInstance=getFirstHydratableChildWithinActivityInstance(dehydrated),hydrationParentFiber=workInProgress2,isHydrating=!0,hydrationErrors=null,rootOrSingletonContext=!1,current!==null&&restoreSuspendedTreeContext(workInProgress2,current)),workInProgress2=mountActivityChildren(workInProgress2,nextProps),workInProgress2.flags|=4096;return workInProgress2}return current=createWorkInProgress(current.child,{mode:nextProps.mode,children:nextProps.children}),current.ref=workInProgress2.ref,workInProgress2.child=current,current.return=workInProgress2,current}function markRef(current,workInProgress2){var ref=workInProgress2.ref;if(ref===null)current!==null&¤t.ref!==null&&(workInProgress2.flags|=4194816);else{if(typeof ref!=="function"&&typeof ref!=="object")throw Error(formatProdErrorMessage(284));if(current===null||current.ref!==ref)workInProgress2.flags|=4194816}}function updateFunctionComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(prepareToReadContext(workInProgress2),Component=renderWithHooks(current,workInProgress2,Component,nextProps,void 0,renderLanes2),nextProps=checkDidRenderIdHook(),current!==null&&!didReceiveUpdate)return bailoutHooks(current,workInProgress2,renderLanes2),bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);return isHydrating&&nextProps&&pushMaterializedTreeId(workInProgress2),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,Component,renderLanes2),workInProgress2.child}function replayFunctionComponent(current,workInProgress2,nextProps,Component,secondArg,renderLanes2){if(prepareToReadContext(workInProgress2),workInProgress2.updateQueue=null,nextProps=renderWithHooksAgain(workInProgress2,Component,nextProps,secondArg),finishRenderingHooks(current),Component=checkDidRenderIdHook(),current!==null&&!didReceiveUpdate)return bailoutHooks(current,workInProgress2,renderLanes2),bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);return isHydrating&&Component&&pushMaterializedTreeId(workInProgress2),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,nextProps,renderLanes2),workInProgress2.child}function updateClassComponent(current,workInProgress2,Component,nextProps,renderLanes2){if(prepareToReadContext(workInProgress2),workInProgress2.stateNode===null){var context=emptyContextObject,contextType=Component.contextType;typeof contextType==="object"&&contextType!==null&&(context=readContext(contextType)),context=new Component(nextProps,context),workInProgress2.memoizedState=context.state!==null&&context.state!==void 0?context.state:null,context.updater=classComponentUpdater,workInProgress2.stateNode=context,context._reactInternals=workInProgress2,context=workInProgress2.stateNode,context.props=nextProps,context.state=workInProgress2.memoizedState,context.refs={},initializeUpdateQueue(workInProgress2),contextType=Component.contextType,context.context=typeof contextType==="object"&&contextType!==null?readContext(contextType):emptyContextObject,context.state=workInProgress2.memoizedState,contextType=Component.getDerivedStateFromProps,typeof contextType==="function"&&(applyDerivedStateFromProps(workInProgress2,Component,contextType,nextProps),context.state=workInProgress2.memoizedState),typeof Component.getDerivedStateFromProps==="function"||typeof context.getSnapshotBeforeUpdate==="function"||typeof context.UNSAFE_componentWillMount!=="function"&&typeof context.componentWillMount!=="function"||(contextType=context.state,typeof context.componentWillMount==="function"&&context.componentWillMount(),typeof context.UNSAFE_componentWillMount==="function"&&context.UNSAFE_componentWillMount(),contextType!==context.state&&classComponentUpdater.enqueueReplaceState(context,context.state,null),processUpdateQueue(workInProgress2,nextProps,context,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction(),context.state=workInProgress2.memoizedState),typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308),nextProps=!0}else if(current===null){context=workInProgress2.stateNode;var unresolvedOldProps=workInProgress2.memoizedProps,oldProps=resolveClassComponentProps(Component,unresolvedOldProps);context.props=oldProps;var oldContext=context.context,contextType$jscomp$0=Component.contextType;contextType=emptyContextObject,typeof contextType$jscomp$0==="object"&&contextType$jscomp$0!==null&&(contextType=readContext(contextType$jscomp$0));var getDerivedStateFromProps=Component.getDerivedStateFromProps;contextType$jscomp$0=typeof getDerivedStateFromProps==="function"||typeof context.getSnapshotBeforeUpdate==="function",unresolvedOldProps=workInProgress2.pendingProps!==unresolvedOldProps,contextType$jscomp$0||typeof context.UNSAFE_componentWillReceiveProps!=="function"&&typeof context.componentWillReceiveProps!=="function"||(unresolvedOldProps||oldContext!==contextType)&&callComponentWillReceiveProps(workInProgress2,context,nextProps,contextType),hasForceUpdate=!1;var oldState=workInProgress2.memoizedState;context.state=oldState,processUpdateQueue(workInProgress2,nextProps,context,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction(),oldContext=workInProgress2.memoizedState,unresolvedOldProps||oldState!==oldContext||hasForceUpdate?(typeof getDerivedStateFromProps==="function"&&(applyDerivedStateFromProps(workInProgress2,Component,getDerivedStateFromProps,nextProps),oldContext=workInProgress2.memoizedState),(oldProps=hasForceUpdate||checkShouldComponentUpdate(workInProgress2,Component,oldProps,nextProps,oldState,oldContext,contextType))?(contextType$jscomp$0||typeof context.UNSAFE_componentWillMount!=="function"&&typeof context.componentWillMount!=="function"||(typeof context.componentWillMount==="function"&&context.componentWillMount(),typeof context.UNSAFE_componentWillMount==="function"&&context.UNSAFE_componentWillMount()),typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308)):(typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308),workInProgress2.memoizedProps=nextProps,workInProgress2.memoizedState=oldContext),context.props=nextProps,context.state=oldContext,context.context=contextType,nextProps=oldProps):(typeof context.componentDidMount==="function"&&(workInProgress2.flags|=4194308),nextProps=!1)}else{context=workInProgress2.stateNode,cloneUpdateQueue(current,workInProgress2),contextType=workInProgress2.memoizedProps,contextType$jscomp$0=resolveClassComponentProps(Component,contextType),context.props=contextType$jscomp$0,getDerivedStateFromProps=workInProgress2.pendingProps,oldState=context.context,oldContext=Component.contextType,oldProps=emptyContextObject,typeof oldContext==="object"&&oldContext!==null&&(oldProps=readContext(oldContext)),unresolvedOldProps=Component.getDerivedStateFromProps,(oldContext=typeof unresolvedOldProps==="function"||typeof context.getSnapshotBeforeUpdate==="function")||typeof context.UNSAFE_componentWillReceiveProps!=="function"&&typeof context.componentWillReceiveProps!=="function"||(contextType!==getDerivedStateFromProps||oldState!==oldProps)&&callComponentWillReceiveProps(workInProgress2,context,nextProps,oldProps),hasForceUpdate=!1,oldState=workInProgress2.memoizedState,context.state=oldState,processUpdateQueue(workInProgress2,nextProps,context,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction();var newState=workInProgress2.memoizedState;contextType!==getDerivedStateFromProps||oldState!==newState||hasForceUpdate||current!==null&¤t.dependencies!==null&&checkIfContextChanged(current.dependencies)?(typeof unresolvedOldProps==="function"&&(applyDerivedStateFromProps(workInProgress2,Component,unresolvedOldProps,nextProps),newState=workInProgress2.memoizedState),(contextType$jscomp$0=hasForceUpdate||checkShouldComponentUpdate(workInProgress2,Component,contextType$jscomp$0,nextProps,oldState,newState,oldProps)||current!==null&¤t.dependencies!==null&&checkIfContextChanged(current.dependencies))?(oldContext||typeof context.UNSAFE_componentWillUpdate!=="function"&&typeof context.componentWillUpdate!=="function"||(typeof context.componentWillUpdate==="function"&&context.componentWillUpdate(nextProps,newState,oldProps),typeof context.UNSAFE_componentWillUpdate==="function"&&context.UNSAFE_componentWillUpdate(nextProps,newState,oldProps)),typeof context.componentDidUpdate==="function"&&(workInProgress2.flags|=4),typeof context.getSnapshotBeforeUpdate==="function"&&(workInProgress2.flags|=1024)):(typeof context.componentDidUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=4),typeof context.getSnapshotBeforeUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=1024),workInProgress2.memoizedProps=nextProps,workInProgress2.memoizedState=newState),context.props=nextProps,context.state=newState,context.context=oldProps,nextProps=contextType$jscomp$0):(typeof context.componentDidUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=4),typeof context.getSnapshotBeforeUpdate!=="function"||contextType===current.memoizedProps&&oldState===current.memoizedState||(workInProgress2.flags|=1024),nextProps=!1)}return context=nextProps,markRef(current,workInProgress2),nextProps=(workInProgress2.flags&128)!==0,context||nextProps?(context=workInProgress2.stateNode,Component=nextProps&&typeof Component.getDerivedStateFromError!=="function"?null:context.render(),workInProgress2.flags|=1,current!==null&&nextProps?(workInProgress2.child=reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),workInProgress2.child=reconcileChildFibers(workInProgress2,null,Component,renderLanes2)):reconcileChildren(current,workInProgress2,Component,renderLanes2),workInProgress2.memoizedState=context.state,current=workInProgress2.child):current=bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2),current}function mountHostRootWithoutHydrating(current,workInProgress2,nextChildren,renderLanes2){return resetHydrationState(),workInProgress2.flags|=256,reconcileChildren(current,workInProgress2,nextChildren,renderLanes2),workInProgress2.child}function mountSuspenseOffscreenState(renderLanes2){return{baseLanes:renderLanes2,cachePool:getSuspendedCache()}}function getRemainingWorkInPrimaryTree(current,primaryTreeDidDefer,renderLanes2){return current=current!==null?current.childLanes&~renderLanes2:0,primaryTreeDidDefer&&(current|=workInProgressDeferredLane),current}function updateSuspenseComponent(current,workInProgress2,renderLanes2){var nextProps=workInProgress2.pendingProps,showFallback=!1,didSuspend=(workInProgress2.flags&128)!==0,JSCompiler_temp;if((JSCompiler_temp=didSuspend)||(JSCompiler_temp=current!==null&¤t.memoizedState===null?!1:(suspenseStackCursor.current&2)!==0),JSCompiler_temp&&(showFallback=!0,workInProgress2.flags&=-129),JSCompiler_temp=(workInProgress2.flags&32)!==0,workInProgress2.flags&=-33,current===null){if(isHydrating){if(showFallback?pushPrimaryTreeSuspenseHandler(workInProgress2):reuseSuspenseHandlerOnStack(workInProgress2),(current=nextHydratableInstance)?(current=canHydrateSuspenseInstance(current,rootOrSingletonContext),current!==null&&(workInProgress2.memoizedState={dehydrated:current,treeContext:treeContextProvider!==null?{id:treeContextId,overflow:treeContextOverflow}:null,retryLane:536870912,hydrationErrors:null},renderLanes2=createFiberFromDehydratedFragment(current),renderLanes2.return=workInProgress2,workInProgress2.child=renderLanes2,hydrationParentFiber=workInProgress2,nextHydratableInstance=null)):current=null,current===null)throw throwOnHydrationMismatch(workInProgress2);return isSuspenseInstanceFallback(current)?workInProgress2.lanes=32:workInProgress2.lanes=536870912,null}var nextPrimaryChildren=nextProps.children;if(nextProps=nextProps.fallback,showFallback)return reuseSuspenseHandlerOnStack(workInProgress2),showFallback=workInProgress2.mode,nextPrimaryChildren=mountWorkInProgressOffscreenFiber({mode:"hidden",children:nextPrimaryChildren},showFallback),nextProps=createFiberFromFragment(nextProps,showFallback,renderLanes2,null),nextPrimaryChildren.return=workInProgress2,nextProps.return=workInProgress2,nextPrimaryChildren.sibling=nextProps,workInProgress2.child=nextPrimaryChildren,nextProps=workInProgress2.child,nextProps.memoizedState=mountSuspenseOffscreenState(renderLanes2),nextProps.childLanes=getRemainingWorkInPrimaryTree(current,JSCompiler_temp,renderLanes2),workInProgress2.memoizedState=SUSPENDED_MARKER,bailoutOffscreenComponent(null,nextProps);return pushPrimaryTreeSuspenseHandler(workInProgress2),mountSuspensePrimaryChildren(workInProgress2,nextPrimaryChildren)}var prevState=current.memoizedState;if(prevState!==null&&(nextPrimaryChildren=prevState.dehydrated,nextPrimaryChildren!==null)){if(didSuspend)workInProgress2.flags&256?(pushPrimaryTreeSuspenseHandler(workInProgress2),workInProgress2.flags&=-257,workInProgress2=retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2)):workInProgress2.memoizedState!==null?(reuseSuspenseHandlerOnStack(workInProgress2),workInProgress2.child=current.child,workInProgress2.flags|=128,workInProgress2=null):(reuseSuspenseHandlerOnStack(workInProgress2),nextPrimaryChildren=nextProps.fallback,showFallback=workInProgress2.mode,nextProps=mountWorkInProgressOffscreenFiber({mode:"visible",children:nextProps.children},showFallback),nextPrimaryChildren=createFiberFromFragment(nextPrimaryChildren,showFallback,renderLanes2,null),nextPrimaryChildren.flags|=2,nextProps.return=workInProgress2,nextPrimaryChildren.return=workInProgress2,nextProps.sibling=nextPrimaryChildren,workInProgress2.child=nextProps,reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),nextProps=workInProgress2.child,nextProps.memoizedState=mountSuspenseOffscreenState(renderLanes2),nextProps.childLanes=getRemainingWorkInPrimaryTree(current,JSCompiler_temp,renderLanes2),workInProgress2.memoizedState=SUSPENDED_MARKER,workInProgress2=bailoutOffscreenComponent(null,nextProps));else if(pushPrimaryTreeSuspenseHandler(workInProgress2),isSuspenseInstanceFallback(nextPrimaryChildren))JSCompiler_temp=getSuspenseInstanceFallbackErrorDetails(nextPrimaryChildren).digest,nextProps=Error(formatProdErrorMessage(419)),nextProps.stack="",nextProps.digest=JSCompiler_temp,queueHydrationError({value:nextProps,source:null,stack:null}),workInProgress2=retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2);else if(didReceiveUpdate||propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),JSCompiler_temp=(renderLanes2¤t.childLanes)!==0,didReceiveUpdate||JSCompiler_temp){if(JSCompiler_temp=workInProgressRoot,JSCompiler_temp!==null&&(nextProps=getBumpedLaneForHydration(JSCompiler_temp,renderLanes2),nextProps!==0&&nextProps!==prevState.retryLane))throw prevState.retryLane=nextProps,enqueueConcurrentRenderForLane(current,nextProps),scheduleUpdateOnFiber(JSCompiler_temp,current,nextProps),SelectiveHydrationException;isSuspenseInstancePending(nextPrimaryChildren)||renderDidSuspendDelayIfPossible(),workInProgress2=retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2)}else isSuspenseInstancePending(nextPrimaryChildren)?(workInProgress2.flags|=192,workInProgress2.child=current.child,workInProgress2=null):(current=prevState.treeContext,supportsHydration&&(nextHydratableInstance=getFirstHydratableChildWithinSuspenseInstance(nextPrimaryChildren),hydrationParentFiber=workInProgress2,isHydrating=!0,hydrationErrors=null,rootOrSingletonContext=!1,current!==null&&restoreSuspendedTreeContext(workInProgress2,current)),workInProgress2=mountSuspensePrimaryChildren(workInProgress2,nextProps.children),workInProgress2.flags|=4096);return workInProgress2}if(showFallback)return reuseSuspenseHandlerOnStack(workInProgress2),nextPrimaryChildren=nextProps.fallback,showFallback=workInProgress2.mode,prevState=current.child,didSuspend=prevState.sibling,nextProps=createWorkInProgress(prevState,{mode:"hidden",children:nextProps.children}),nextProps.subtreeFlags=prevState.subtreeFlags&65011712,didSuspend!==null?nextPrimaryChildren=createWorkInProgress(didSuspend,nextPrimaryChildren):(nextPrimaryChildren=createFiberFromFragment(nextPrimaryChildren,showFallback,renderLanes2,null),nextPrimaryChildren.flags|=2),nextPrimaryChildren.return=workInProgress2,nextProps.return=workInProgress2,nextProps.sibling=nextPrimaryChildren,workInProgress2.child=nextProps,bailoutOffscreenComponent(null,nextProps),nextProps=workInProgress2.child,nextPrimaryChildren=current.child.memoizedState,nextPrimaryChildren===null?nextPrimaryChildren=mountSuspenseOffscreenState(renderLanes2):(showFallback=nextPrimaryChildren.cachePool,showFallback!==null?(prevState=isPrimaryRenderer?CacheContext._currentValue:CacheContext._currentValue2,showFallback=showFallback.parent!==prevState?{parent:prevState,pool:prevState}:showFallback):showFallback=getSuspendedCache(),nextPrimaryChildren={baseLanes:nextPrimaryChildren.baseLanes|renderLanes2,cachePool:showFallback}),nextProps.memoizedState=nextPrimaryChildren,nextProps.childLanes=getRemainingWorkInPrimaryTree(current,JSCompiler_temp,renderLanes2),workInProgress2.memoizedState=SUSPENDED_MARKER,bailoutOffscreenComponent(current.child,nextProps);return pushPrimaryTreeSuspenseHandler(workInProgress2),renderLanes2=current.child,current=renderLanes2.sibling,renderLanes2=createWorkInProgress(renderLanes2,{mode:"visible",children:nextProps.children}),renderLanes2.return=workInProgress2,renderLanes2.sibling=null,current!==null&&(JSCompiler_temp=workInProgress2.deletions,JSCompiler_temp===null?(workInProgress2.deletions=[current],workInProgress2.flags|=16):JSCompiler_temp.push(current)),workInProgress2.child=renderLanes2,workInProgress2.memoizedState=null,renderLanes2}function mountSuspensePrimaryChildren(workInProgress2,primaryChildren){return primaryChildren=mountWorkInProgressOffscreenFiber({mode:"visible",children:primaryChildren},workInProgress2.mode),primaryChildren.return=workInProgress2,workInProgress2.child=primaryChildren}function mountWorkInProgressOffscreenFiber(offscreenProps,mode){return offscreenProps=createFiber(22,offscreenProps,null,mode),offscreenProps.lanes=0,offscreenProps}function retrySuspenseComponentWithoutHydrating(current,workInProgress2,renderLanes2){return reconcileChildFibers(workInProgress2,current.child,null,renderLanes2),current=mountSuspensePrimaryChildren(workInProgress2,workInProgress2.pendingProps.children),current.flags|=2,workInProgress2.memoizedState=null,current}function scheduleSuspenseWorkOnFiber(fiber,renderLanes2,propagationRoot){fiber.lanes|=renderLanes2;var alternate=fiber.alternate;alternate!==null&&(alternate.lanes|=renderLanes2),scheduleContextWorkOnParentPath(fiber.return,renderLanes2,propagationRoot)}function initSuspenseListRenderState(workInProgress2,isBackwards,tail,lastContentRow,tailMode,treeForkCount2){var renderState=workInProgress2.memoizedState;renderState===null?workInProgress2.memoizedState={isBackwards,rendering:null,renderingStartTime:0,last:lastContentRow,tail,tailMode,treeForkCount:treeForkCount2}:(renderState.isBackwards=isBackwards,renderState.rendering=null,renderState.renderingStartTime=0,renderState.last=lastContentRow,renderState.tail=tail,renderState.tailMode=tailMode,renderState.treeForkCount=treeForkCount2)}function updateSuspenseListComponent(current,workInProgress2,renderLanes2){var nextProps=workInProgress2.pendingProps,revealOrder=nextProps.revealOrder,tailMode=nextProps.tail;nextProps=nextProps.children;var suspenseContext=suspenseStackCursor.current,shouldForceFallback=(suspenseContext&2)!==0;if(shouldForceFallback?(suspenseContext=suspenseContext&1|2,workInProgress2.flags|=128):suspenseContext&=1,push2(suspenseStackCursor,suspenseContext),reconcileChildren(current,workInProgress2,nextProps,renderLanes2),nextProps=isHydrating?treeForkCount:0,!shouldForceFallback&¤t!==null&&(current.flags&128)!==0)a:for(current=workInProgress2.child;current!==null;){if(current.tag===13)current.memoizedState!==null&&scheduleSuspenseWorkOnFiber(current,renderLanes2,workInProgress2);else if(current.tag===19)scheduleSuspenseWorkOnFiber(current,renderLanes2,workInProgress2);else if(current.child!==null){current.child.return=current,current=current.child;continue}if(current===workInProgress2)break a;for(;current.sibling===null;){if(current.return===null||current.return===workInProgress2)break a;current=current.return}current.sibling.return=current.return,current=current.sibling}switch(revealOrder){case"forwards":renderLanes2=workInProgress2.child;for(revealOrder=null;renderLanes2!==null;)current=renderLanes2.alternate,current!==null&&findFirstSuspended(current)===null&&(revealOrder=renderLanes2),renderLanes2=renderLanes2.sibling;renderLanes2=revealOrder,renderLanes2===null?(revealOrder=workInProgress2.child,workInProgress2.child=null):(revealOrder=renderLanes2.sibling,renderLanes2.sibling=null),initSuspenseListRenderState(workInProgress2,!1,revealOrder,renderLanes2,tailMode,nextProps);break;case"backwards":case"unstable_legacy-backwards":renderLanes2=null,revealOrder=workInProgress2.child;for(workInProgress2.child=null;revealOrder!==null;){if(current=revealOrder.alternate,current!==null&&findFirstSuspended(current)===null){workInProgress2.child=revealOrder;break}current=revealOrder.sibling,revealOrder.sibling=renderLanes2,renderLanes2=revealOrder,revealOrder=current}initSuspenseListRenderState(workInProgress2,!0,renderLanes2,null,tailMode,nextProps);break;case"together":initSuspenseListRenderState(workInProgress2,!1,null,null,void 0,nextProps);break;default:workInProgress2.memoizedState=null}return workInProgress2.child}function bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2){if(current!==null&&(workInProgress2.dependencies=current.dependencies),workInProgressRootSkippedLanes|=workInProgress2.lanes,(renderLanes2&workInProgress2.childLanes)===0)if(current!==null){if(propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),(renderLanes2&workInProgress2.childLanes)===0)return null}else return null;if(current!==null&&workInProgress2.child!==current.child)throw Error(formatProdErrorMessage(153));if(workInProgress2.child!==null){current=workInProgress2.child,renderLanes2=createWorkInProgress(current,current.pendingProps),workInProgress2.child=renderLanes2;for(renderLanes2.return=workInProgress2;current.sibling!==null;)current=current.sibling,renderLanes2=renderLanes2.sibling=createWorkInProgress(current,current.pendingProps),renderLanes2.return=workInProgress2;renderLanes2.sibling=null}return workInProgress2.child}function checkScheduledUpdateOrContext(current,renderLanes2){if((current.lanes&renderLanes2)!==0)return!0;return current=current.dependencies,current!==null&&checkIfContextChanged(current)?!0:!1}function attemptEarlyBailoutIfNoScheduledUpdate(current,workInProgress2,renderLanes2){switch(workInProgress2.tag){case 3:pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo),pushProvider(workInProgress2,CacheContext,current.memoizedState.cache),resetHydrationState();break;case 27:case 5:pushHostContext(workInProgress2);break;case 4:pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo);break;case 10:pushProvider(workInProgress2,workInProgress2.type,workInProgress2.memoizedProps.value);break;case 31:if(workInProgress2.memoizedState!==null)return workInProgress2.flags|=128,pushDehydratedActivitySuspenseHandler(workInProgress2),null;break;case 13:var state$82=workInProgress2.memoizedState;if(state$82!==null){if(state$82.dehydrated!==null)return pushPrimaryTreeSuspenseHandler(workInProgress2),workInProgress2.flags|=128,null;if((renderLanes2&workInProgress2.child.childLanes)!==0)return updateSuspenseComponent(current,workInProgress2,renderLanes2);return pushPrimaryTreeSuspenseHandler(workInProgress2),current=bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2),current!==null?current.sibling:null}pushPrimaryTreeSuspenseHandler(workInProgress2);break;case 19:var didSuspendBefore=(current.flags&128)!==0;if(state$82=(renderLanes2&workInProgress2.childLanes)!==0,state$82||(propagateParentContextChanges(current,workInProgress2,renderLanes2,!1),state$82=(renderLanes2&workInProgress2.childLanes)!==0),didSuspendBefore){if(state$82)return updateSuspenseListComponent(current,workInProgress2,renderLanes2);workInProgress2.flags|=128}if(didSuspendBefore=workInProgress2.memoizedState,didSuspendBefore!==null&&(didSuspendBefore.rendering=null,didSuspendBefore.tail=null,didSuspendBefore.lastEffect=null),push2(suspenseStackCursor,suspenseStackCursor.current),state$82)break;else return null;case 22:return workInProgress2.lanes=0,updateOffscreenComponent(current,workInProgress2,renderLanes2,workInProgress2.pendingProps);case 24:pushProvider(workInProgress2,CacheContext,current.memoizedState.cache)}return bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2)}function beginWork(current,workInProgress2,renderLanes2){if(current!==null)if(current.memoizedProps!==workInProgress2.pendingProps)didReceiveUpdate=!0;else{if(!checkScheduledUpdateOrContext(current,renderLanes2)&&(workInProgress2.flags&128)===0)return didReceiveUpdate=!1,attemptEarlyBailoutIfNoScheduledUpdate(current,workInProgress2,renderLanes2);didReceiveUpdate=(current.flags&131072)!==0?!0:!1}else didReceiveUpdate=!1,isHydrating&&(workInProgress2.flags&1048576)!==0&&pushTreeId(workInProgress2,treeForkCount,workInProgress2.index);switch(workInProgress2.lanes=0,workInProgress2.tag){case 16:a:{var props=workInProgress2.pendingProps;if(current=resolveLazy(workInProgress2.elementType),workInProgress2.type=current,typeof current==="function")shouldConstruct(current)?(props=resolveClassComponentProps(current,props),workInProgress2.tag=1,workInProgress2=updateClassComponent(null,workInProgress2,current,props,renderLanes2)):(workInProgress2.tag=0,workInProgress2=updateFunctionComponent(null,workInProgress2,current,props,renderLanes2));else{if(current!==void 0&¤t!==null){var $$typeof=current.$$typeof;if($$typeof===REACT_FORWARD_REF_TYPE){workInProgress2.tag=11,workInProgress2=updateForwardRef(null,workInProgress2,current,props,renderLanes2);break a}else if($$typeof===REACT_MEMO_TYPE){workInProgress2.tag=14,workInProgress2=updateMemoComponent(null,workInProgress2,current,props,renderLanes2);break a}}throw workInProgress2=getComponentNameFromType(current)||current,Error(formatProdErrorMessage(306,workInProgress2,""))}}return workInProgress2;case 0:return updateFunctionComponent(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 1:return props=workInProgress2.type,$$typeof=resolveClassComponentProps(props,workInProgress2.pendingProps),updateClassComponent(current,workInProgress2,props,$$typeof,renderLanes2);case 3:a:{if(pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo),current===null)throw Error(formatProdErrorMessage(387));var nextProps=workInProgress2.pendingProps;$$typeof=workInProgress2.memoizedState,props=$$typeof.element,cloneUpdateQueue(current,workInProgress2),processUpdateQueue(workInProgress2,nextProps,null,renderLanes2);var nextState=workInProgress2.memoizedState;if(nextProps=nextState.cache,pushProvider(workInProgress2,CacheContext,nextProps),nextProps!==$$typeof.cache&&propagateContextChanges(workInProgress2,[CacheContext],renderLanes2,!0),suspendIfUpdateReadFromEntangledAsyncAction(),nextProps=nextState.element,supportsHydration&&$$typeof.isDehydrated)if($$typeof={element:nextProps,isDehydrated:!1,cache:nextState.cache},workInProgress2.updateQueue.baseState=$$typeof,workInProgress2.memoizedState=$$typeof,workInProgress2.flags&256){workInProgress2=mountHostRootWithoutHydrating(current,workInProgress2,nextProps,renderLanes2);break a}else if(nextProps!==props){props=createCapturedValueAtFiber(Error(formatProdErrorMessage(424)),workInProgress2),queueHydrationError(props),workInProgress2=mountHostRootWithoutHydrating(current,workInProgress2,nextProps,renderLanes2);break a}else for(supportsHydration&&(nextHydratableInstance=getFirstHydratableChildWithinContainer(workInProgress2.stateNode.containerInfo),hydrationParentFiber=workInProgress2,isHydrating=!0,hydrationErrors=null,rootOrSingletonContext=!0),renderLanes2=mountChildFibers(workInProgress2,null,nextProps,renderLanes2),workInProgress2.child=renderLanes2;renderLanes2;)renderLanes2.flags=renderLanes2.flags&-3|4096,renderLanes2=renderLanes2.sibling;else{if(resetHydrationState(),nextProps===props){workInProgress2=bailoutOnAlreadyFinishedWork(current,workInProgress2,renderLanes2);break a}reconcileChildren(current,workInProgress2,nextProps,renderLanes2)}workInProgress2=workInProgress2.child}return workInProgress2;case 26:if(supportsResources)return markRef(current,workInProgress2),current===null?(renderLanes2=getResource(workInProgress2.type,null,workInProgress2.pendingProps,null))?workInProgress2.memoizedState=renderLanes2:isHydrating||(workInProgress2.stateNode=createHoistableInstance(workInProgress2.type,workInProgress2.pendingProps,rootInstanceStackCursor.current,workInProgress2)):workInProgress2.memoizedState=getResource(workInProgress2.type,current.memoizedProps,workInProgress2.pendingProps,current.memoizedState),null;case 27:if(supportsSingletons)return pushHostContext(workInProgress2),current===null&&supportsSingletons&&isHydrating&&(props=workInProgress2.stateNode=resolveSingletonInstance(workInProgress2.type,workInProgress2.pendingProps,rootInstanceStackCursor.current,contextStackCursor.current,!1),hydrationParentFiber=workInProgress2,rootOrSingletonContext=!0,nextHydratableInstance=getFirstHydratableChildWithinSingleton(workInProgress2.type,props,nextHydratableInstance)),reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),markRef(current,workInProgress2),current===null&&(workInProgress2.flags|=4194304),workInProgress2.child;case 5:if(current===null&&isHydrating){if(validateHydratableInstance(workInProgress2.type,workInProgress2.pendingProps,contextStackCursor.current),$$typeof=props=nextHydratableInstance)props=canHydrateInstance(props,workInProgress2.type,workInProgress2.pendingProps,rootOrSingletonContext),props!==null?(workInProgress2.stateNode=props,hydrationParentFiber=workInProgress2,nextHydratableInstance=getFirstHydratableChild(props),rootOrSingletonContext=!1,$$typeof=!0):$$typeof=!1;$$typeof||throwOnHydrationMismatch(workInProgress2)}return pushHostContext(workInProgress2),$$typeof=workInProgress2.type,nextProps=workInProgress2.pendingProps,nextState=current!==null?current.memoizedProps:null,props=nextProps.children,shouldSetTextContent($$typeof,nextProps)?props=null:nextState!==null&&shouldSetTextContent($$typeof,nextState)&&(workInProgress2.flags|=32),workInProgress2.memoizedState!==null&&($$typeof=renderWithHooks(current,workInProgress2,TransitionAwareHostComponent,null,null,renderLanes2),isPrimaryRenderer?HostTransitionContext._currentValue=$$typeof:HostTransitionContext._currentValue2=$$typeof),markRef(current,workInProgress2),reconcileChildren(current,workInProgress2,props,renderLanes2),workInProgress2.child;case 6:if(current===null&&isHydrating){if(validateHydratableTextInstance(workInProgress2.pendingProps,contextStackCursor.current),current=renderLanes2=nextHydratableInstance)renderLanes2=canHydrateTextInstance(renderLanes2,workInProgress2.pendingProps,rootOrSingletonContext),renderLanes2!==null?(workInProgress2.stateNode=renderLanes2,hydrationParentFiber=workInProgress2,nextHydratableInstance=null,current=!0):current=!1;current||throwOnHydrationMismatch(workInProgress2)}return null;case 13:return updateSuspenseComponent(current,workInProgress2,renderLanes2);case 4:return pushHostContainer(workInProgress2,workInProgress2.stateNode.containerInfo),props=workInProgress2.pendingProps,current===null?workInProgress2.child=reconcileChildFibers(workInProgress2,null,props,renderLanes2):reconcileChildren(current,workInProgress2,props,renderLanes2),workInProgress2.child;case 11:return updateForwardRef(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 7:return reconcileChildren(current,workInProgress2,workInProgress2.pendingProps,renderLanes2),workInProgress2.child;case 8:return reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),workInProgress2.child;case 12:return reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),workInProgress2.child;case 10:return props=workInProgress2.pendingProps,pushProvider(workInProgress2,workInProgress2.type,props.value),reconcileChildren(current,workInProgress2,props.children,renderLanes2),workInProgress2.child;case 9:return $$typeof=workInProgress2.type._context,props=workInProgress2.pendingProps.children,prepareToReadContext(workInProgress2),$$typeof=readContext($$typeof),props=props($$typeof),workInProgress2.flags|=1,reconcileChildren(current,workInProgress2,props,renderLanes2),workInProgress2.child;case 14:return updateMemoComponent(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 15:return updateSimpleMemoComponent(current,workInProgress2,workInProgress2.type,workInProgress2.pendingProps,renderLanes2);case 19:return updateSuspenseListComponent(current,workInProgress2,renderLanes2);case 31:return updateActivityComponent(current,workInProgress2,renderLanes2);case 22:return updateOffscreenComponent(current,workInProgress2,renderLanes2,workInProgress2.pendingProps);case 24:return prepareToReadContext(workInProgress2),props=readContext(CacheContext),current===null?($$typeof=peekCacheFromPool(),$$typeof===null&&($$typeof=workInProgressRoot,nextProps=createCache(),$$typeof.pooledCache=nextProps,nextProps.refCount++,nextProps!==null&&($$typeof.pooledCacheLanes|=renderLanes2),$$typeof=nextProps),workInProgress2.memoizedState={parent:props,cache:$$typeof},initializeUpdateQueue(workInProgress2),pushProvider(workInProgress2,CacheContext,$$typeof)):((current.lanes&renderLanes2)!==0&&(cloneUpdateQueue(current,workInProgress2),processUpdateQueue(workInProgress2,null,null,renderLanes2),suspendIfUpdateReadFromEntangledAsyncAction()),$$typeof=current.memoizedState,nextProps=workInProgress2.memoizedState,$$typeof.parent!==props?($$typeof={parent:props,cache:props},workInProgress2.memoizedState=$$typeof,workInProgress2.lanes===0&&(workInProgress2.memoizedState=workInProgress2.updateQueue.baseState=$$typeof),pushProvider(workInProgress2,CacheContext,props)):(props=nextProps.cache,pushProvider(workInProgress2,CacheContext,props),props!==$$typeof.cache&&propagateContextChanges(workInProgress2,[CacheContext],renderLanes2,!0))),reconcileChildren(current,workInProgress2,workInProgress2.pendingProps.children,renderLanes2),workInProgress2.child;case 29:throw workInProgress2.pendingProps}throw Error(formatProdErrorMessage(156,workInProgress2.tag))}function markUpdate(workInProgress2){workInProgress2.flags|=4}function markCloned(workInProgress2){supportsPersistence&&(workInProgress2.flags|=8)}function doesRequireClone(current,completedWork){if(current!==null&¤t.child===completedWork.child)return!1;if((completedWork.flags&16)!==0)return!0;for(current=completedWork.child;current!==null;){if((current.flags&8218)!==0||(current.subtreeFlags&8218)!==0)return!0;current=current.sibling}return!1}function appendAllChildren(parent,workInProgress2,needsVisibilityToggle,isHidden){if(supportsMutation)for(needsVisibilityToggle=workInProgress2.child;needsVisibilityToggle!==null;){if(needsVisibilityToggle.tag===5||needsVisibilityToggle.tag===6)appendInitialChild(parent,needsVisibilityToggle.stateNode);else if(!(needsVisibilityToggle.tag===4||supportsSingletons&&needsVisibilityToggle.tag===27)&&needsVisibilityToggle.child!==null){needsVisibilityToggle.child.return=needsVisibilityToggle,needsVisibilityToggle=needsVisibilityToggle.child;continue}if(needsVisibilityToggle===workInProgress2)break;for(;needsVisibilityToggle.sibling===null;){if(needsVisibilityToggle.return===null||needsVisibilityToggle.return===workInProgress2)return;needsVisibilityToggle=needsVisibilityToggle.return}needsVisibilityToggle.sibling.return=needsVisibilityToggle.return,needsVisibilityToggle=needsVisibilityToggle.sibling}else if(supportsPersistence)for(var node$85=workInProgress2.child;node$85!==null;){if(node$85.tag===5){var instance=node$85.stateNode;needsVisibilityToggle&&isHidden&&(instance=cloneHiddenInstance(instance,node$85.type,node$85.memoizedProps)),appendInitialChild(parent,instance)}else if(node$85.tag===6)instance=node$85.stateNode,needsVisibilityToggle&&isHidden&&(instance=cloneHiddenTextInstance(instance,node$85.memoizedProps)),appendInitialChild(parent,instance);else if(node$85.tag!==4){if(node$85.tag===22&&node$85.memoizedState!==null)instance=node$85.child,instance!==null&&(instance.return=node$85),appendAllChildren(parent,node$85,!0,!0);else if(node$85.child!==null){node$85.child.return=node$85,node$85=node$85.child;continue}}if(node$85===workInProgress2)break;for(;node$85.sibling===null;){if(node$85.return===null||node$85.return===workInProgress2)return;node$85=node$85.return}node$85.sibling.return=node$85.return,node$85=node$85.sibling}}function appendAllChildrenToContainer(containerChildSet,workInProgress2,needsVisibilityToggle,isHidden){var hasOffscreenComponentChild=!1;if(supportsPersistence)for(var node=workInProgress2.child;node!==null;){if(node.tag===5){var instance=node.stateNode;needsVisibilityToggle&&isHidden&&(instance=cloneHiddenInstance(instance,node.type,node.memoizedProps)),appendChildToContainerChildSet(containerChildSet,instance)}else if(node.tag===6)instance=node.stateNode,needsVisibilityToggle&&isHidden&&(instance=cloneHiddenTextInstance(instance,node.memoizedProps)),appendChildToContainerChildSet(containerChildSet,instance);else if(node.tag!==4){if(node.tag===22&&node.memoizedState!==null)hasOffscreenComponentChild=node.child,hasOffscreenComponentChild!==null&&(hasOffscreenComponentChild.return=node),appendAllChildrenToContainer(containerChildSet,node,!0,!0),hasOffscreenComponentChild=!0;else if(node.child!==null){node.child.return=node,node=node.child;continue}}if(node===workInProgress2)break;for(;node.sibling===null;){if(node.return===null||node.return===workInProgress2)return hasOffscreenComponentChild;node=node.return}node.sibling.return=node.return,node=node.sibling}return hasOffscreenComponentChild}function updateHostContainer(current,workInProgress2){if(supportsPersistence&&doesRequireClone(current,workInProgress2)){current=workInProgress2.stateNode;var container=current.containerInfo,newChildSet=createContainerChildSet();appendAllChildrenToContainer(newChildSet,workInProgress2,!1,!1),current.pendingChildren=newChildSet,markUpdate(workInProgress2),finalizeContainerChildren(container,newChildSet)}}function updateHostComponent(current,workInProgress2,type,newProps){if(supportsMutation)current.memoizedProps!==newProps&&markUpdate(workInProgress2);else if(supportsPersistence){var{stateNode:currentInstance,memoizedProps:oldProps$88}=current;if((current=doesRequireClone(current,workInProgress2))||oldProps$88!==newProps){var currentHostContext=contextStackCursor.current;oldProps$88=cloneInstance(currentInstance,type,oldProps$88,newProps,!current,null),oldProps$88===currentInstance?workInProgress2.stateNode=currentInstance:(markCloned(workInProgress2),finalizeInitialChildren(oldProps$88,type,newProps,currentHostContext)&&markUpdate(workInProgress2),workInProgress2.stateNode=oldProps$88,current&&appendAllChildren(oldProps$88,workInProgress2,!1,!1))}else workInProgress2.stateNode=currentInstance}}function preloadInstanceAndSuspendIfNeeded(workInProgress2,type,oldProps,newProps,renderLanes2){if((workInProgress2.mode&32)!==0&&(oldProps===null?maySuspendCommit(type,newProps):maySuspendCommitOnUpdate(type,oldProps,newProps))){if(workInProgress2.flags|=16777216,(renderLanes2&335544128)===renderLanes2||maySuspendCommitInSyncRender(type,newProps))if(preloadInstance(workInProgress2.stateNode,type,newProps))workInProgress2.flags|=8192;else if(shouldRemainOnPreviousScreen())workInProgress2.flags|=8192;else throw suspendedThenable=noopSuspenseyCommitThenable,SuspenseyCommitException}else workInProgress2.flags&=-16777217}function preloadResourceAndSuspendIfNeeded(workInProgress2,resource){if(mayResourceSuspendCommit(resource)){if(workInProgress2.flags|=16777216,!preloadResource(resource))if(shouldRemainOnPreviousScreen())workInProgress2.flags|=8192;else throw suspendedThenable=noopSuspenseyCommitThenable,SuspenseyCommitException}else workInProgress2.flags&=-16777217}function scheduleRetryEffect(workInProgress2,retryQueue){retryQueue!==null&&(workInProgress2.flags|=4),workInProgress2.flags&16384&&(retryQueue=workInProgress2.tag!==22?claimNextRetryLane():536870912,workInProgress2.lanes|=retryQueue,workInProgressSuspendedRetryLanes|=retryQueue)}function cutOffTailIfNeeded(renderState,hasRenderedATailFallback){if(!isHydrating)switch(renderState.tailMode){case"hidden":hasRenderedATailFallback=renderState.tail;for(var lastTailNode=null;hasRenderedATailFallback!==null;)hasRenderedATailFallback.alternate!==null&&(lastTailNode=hasRenderedATailFallback),hasRenderedATailFallback=hasRenderedATailFallback.sibling;lastTailNode===null?renderState.tail=null:lastTailNode.sibling=null;break;case"collapsed":lastTailNode=renderState.tail;for(var lastTailNode$90=null;lastTailNode!==null;)lastTailNode.alternate!==null&&(lastTailNode$90=lastTailNode),lastTailNode=lastTailNode.sibling;lastTailNode$90===null?hasRenderedATailFallback||renderState.tail===null?renderState.tail=null:renderState.tail.sibling=null:lastTailNode$90.sibling=null}}function bubbleProperties(completedWork){var didBailout=completedWork.alternate!==null&&completedWork.alternate.child===completedWork.child,newChildLanes=0,subtreeFlags=0;if(didBailout)for(var child$91=completedWork.child;child$91!==null;)newChildLanes|=child$91.lanes|child$91.childLanes,subtreeFlags|=child$91.subtreeFlags&65011712,subtreeFlags|=child$91.flags&65011712,child$91.return=completedWork,child$91=child$91.sibling;else for(child$91=completedWork.child;child$91!==null;)newChildLanes|=child$91.lanes|child$91.childLanes,subtreeFlags|=child$91.subtreeFlags,subtreeFlags|=child$91.flags,child$91.return=completedWork,child$91=child$91.sibling;return completedWork.subtreeFlags|=subtreeFlags,completedWork.childLanes=newChildLanes,didBailout}function completeWork(current,workInProgress2,renderLanes2){var newProps=workInProgress2.pendingProps;switch(popTreeContext(workInProgress2),workInProgress2.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return bubbleProperties(workInProgress2),null;case 1:return bubbleProperties(workInProgress2),null;case 3:if(renderLanes2=workInProgress2.stateNode,newProps=null,current!==null&&(newProps=current.memoizedState.cache),workInProgress2.memoizedState.cache!==newProps&&(workInProgress2.flags|=2048),popProvider(CacheContext),popHostContainer(),renderLanes2.pendingContext&&(renderLanes2.context=renderLanes2.pendingContext,renderLanes2.pendingContext=null),current===null||current.child===null)popHydrationState(workInProgress2)?markUpdate(workInProgress2):current===null||current.memoizedState.isDehydrated&&(workInProgress2.flags&256)===0||(workInProgress2.flags|=1024,upgradeHydrationErrorsToRecoverable());return updateHostContainer(current,workInProgress2),bubbleProperties(workInProgress2),null;case 26:if(supportsResources){var{type,memoizedState:nextResource}=workInProgress2;return current===null?(markUpdate(workInProgress2),nextResource!==null?(bubbleProperties(workInProgress2),preloadResourceAndSuspendIfNeeded(workInProgress2,nextResource)):(bubbleProperties(workInProgress2),preloadInstanceAndSuspendIfNeeded(workInProgress2,type,null,newProps,renderLanes2))):nextResource?nextResource!==current.memoizedState?(markUpdate(workInProgress2),bubbleProperties(workInProgress2),preloadResourceAndSuspendIfNeeded(workInProgress2,nextResource)):(bubbleProperties(workInProgress2),workInProgress2.flags&=-16777217):(nextResource=current.memoizedProps,supportsMutation?nextResource!==newProps&&markUpdate(workInProgress2):updateHostComponent(current,workInProgress2,type,newProps),bubbleProperties(workInProgress2),preloadInstanceAndSuspendIfNeeded(workInProgress2,type,nextResource,newProps,renderLanes2)),null}case 27:if(supportsSingletons){if(popHostContext(workInProgress2),renderLanes2=rootInstanceStackCursor.current,type=workInProgress2.type,current!==null&&workInProgress2.stateNode!=null)supportsMutation?current.memoizedProps!==newProps&&markUpdate(workInProgress2):updateHostComponent(current,workInProgress2,type,newProps);else{if(!newProps){if(workInProgress2.stateNode===null)throw Error(formatProdErrorMessage(166));return bubbleProperties(workInProgress2),null}current=contextStackCursor.current,popHydrationState(workInProgress2)?prepareToHydrateHostInstance(workInProgress2,current):(current=resolveSingletonInstance(type,newProps,renderLanes2,current,!0),workInProgress2.stateNode=current,markUpdate(workInProgress2))}return bubbleProperties(workInProgress2),null}case 5:if(popHostContext(workInProgress2),type=workInProgress2.type,current!==null&&workInProgress2.stateNode!=null)updateHostComponent(current,workInProgress2,type,newProps);else{if(!newProps){if(workInProgress2.stateNode===null)throw Error(formatProdErrorMessage(166));return bubbleProperties(workInProgress2),null}if(nextResource=contextStackCursor.current,popHydrationState(workInProgress2))prepareToHydrateHostInstance(workInProgress2,nextResource),finalizeHydratedChildren(workInProgress2.stateNode,type,newProps,nextResource)&&(workInProgress2.flags|=64);else{var instance$101=createInstance(type,newProps,rootInstanceStackCursor.current,nextResource,workInProgress2);markCloned(workInProgress2),appendAllChildren(instance$101,workInProgress2,!1,!1),workInProgress2.stateNode=instance$101,finalizeInitialChildren(instance$101,type,newProps,nextResource)&&markUpdate(workInProgress2)}}return bubbleProperties(workInProgress2),preloadInstanceAndSuspendIfNeeded(workInProgress2,workInProgress2.type,current===null?null:current.memoizedProps,workInProgress2.pendingProps,renderLanes2),null;case 6:if(current&&workInProgress2.stateNode!=null)renderLanes2=current.memoizedProps,supportsMutation?renderLanes2!==newProps&&markUpdate(workInProgress2):supportsPersistence&&(renderLanes2!==newProps?(current=rootInstanceStackCursor.current,renderLanes2=contextStackCursor.current,markCloned(workInProgress2),workInProgress2.stateNode=createTextInstance(newProps,current,renderLanes2,workInProgress2)):workInProgress2.stateNode=current.stateNode);else{if(typeof newProps!=="string"&&workInProgress2.stateNode===null)throw Error(formatProdErrorMessage(166));if(current=rootInstanceStackCursor.current,renderLanes2=contextStackCursor.current,popHydrationState(workInProgress2)){if(!supportsHydration)throw Error(formatProdErrorMessage(176));if(current=workInProgress2.stateNode,renderLanes2=workInProgress2.memoizedProps,newProps=null,type=hydrationParentFiber,type!==null)switch(type.tag){case 27:case 5:newProps=type.memoizedProps}hydrateTextInstance(current,renderLanes2,workInProgress2,newProps)||throwOnHydrationMismatch(workInProgress2,!0)}else markCloned(workInProgress2),workInProgress2.stateNode=createTextInstance(newProps,current,renderLanes2,workInProgress2)}return bubbleProperties(workInProgress2),null;case 31:if(renderLanes2=workInProgress2.memoizedState,current===null||current.memoizedState!==null){if(newProps=popHydrationState(workInProgress2),renderLanes2!==null){if(current===null){if(!newProps)throw Error(formatProdErrorMessage(318));if(!supportsHydration)throw Error(formatProdErrorMessage(556));if(current=workInProgress2.memoizedState,current=current!==null?current.dehydrated:null,!current)throw Error(formatProdErrorMessage(557));hydrateActivityInstance(current,workInProgress2)}else resetHydrationState(),(workInProgress2.flags&128)===0&&(workInProgress2.memoizedState=null),workInProgress2.flags|=4;bubbleProperties(workInProgress2),current=!1}else renderLanes2=upgradeHydrationErrorsToRecoverable(),current!==null&¤t.memoizedState!==null&&(current.memoizedState.hydrationErrors=renderLanes2),current=!0;if(!current){if(workInProgress2.flags&256)return popSuspenseHandler(workInProgress2),workInProgress2;return popSuspenseHandler(workInProgress2),null}if((workInProgress2.flags&128)!==0)throw Error(formatProdErrorMessage(558))}return bubbleProperties(workInProgress2),null;case 13:if(newProps=workInProgress2.memoizedState,current===null||current.memoizedState!==null&¤t.memoizedState.dehydrated!==null){if(type=popHydrationState(workInProgress2),newProps!==null&&newProps.dehydrated!==null){if(current===null){if(!type)throw Error(formatProdErrorMessage(318));if(!supportsHydration)throw Error(formatProdErrorMessage(344));if(type=workInProgress2.memoizedState,type=type!==null?type.dehydrated:null,!type)throw Error(formatProdErrorMessage(317));hydrateSuspenseInstance(type,workInProgress2)}else resetHydrationState(),(workInProgress2.flags&128)===0&&(workInProgress2.memoizedState=null),workInProgress2.flags|=4;bubbleProperties(workInProgress2),type=!1}else type=upgradeHydrationErrorsToRecoverable(),current!==null&¤t.memoizedState!==null&&(current.memoizedState.hydrationErrors=type),type=!0;if(!type){if(workInProgress2.flags&256)return popSuspenseHandler(workInProgress2),workInProgress2;return popSuspenseHandler(workInProgress2),null}}if(popSuspenseHandler(workInProgress2),(workInProgress2.flags&128)!==0)return workInProgress2.lanes=renderLanes2,workInProgress2;return renderLanes2=newProps!==null,current=current!==null&¤t.memoizedState!==null,renderLanes2&&(newProps=workInProgress2.child,type=null,newProps.alternate!==null&&newProps.alternate.memoizedState!==null&&newProps.alternate.memoizedState.cachePool!==null&&(type=newProps.alternate.memoizedState.cachePool.pool),nextResource=null,newProps.memoizedState!==null&&newProps.memoizedState.cachePool!==null&&(nextResource=newProps.memoizedState.cachePool.pool),nextResource!==type&&(newProps.flags|=2048)),renderLanes2!==current&&renderLanes2&&(workInProgress2.child.flags|=8192),scheduleRetryEffect(workInProgress2,workInProgress2.updateQueue),bubbleProperties(workInProgress2),null;case 4:return popHostContainer(),updateHostContainer(current,workInProgress2),current===null&&preparePortalMount(workInProgress2.stateNode.containerInfo),bubbleProperties(workInProgress2),null;case 10:return popProvider(workInProgress2.type),bubbleProperties(workInProgress2),null;case 19:if(pop2(suspenseStackCursor),newProps=workInProgress2.memoizedState,newProps===null)return bubbleProperties(workInProgress2),null;if(type=(workInProgress2.flags&128)!==0,nextResource=newProps.rendering,nextResource===null)if(type)cutOffTailIfNeeded(newProps,!1);else{if(workInProgressRootExitStatus!==0||current!==null&&(current.flags&128)!==0)for(current=workInProgress2.child;current!==null;){if(nextResource=findFirstSuspended(current),nextResource!==null){workInProgress2.flags|=128,cutOffTailIfNeeded(newProps,!1),current=nextResource.updateQueue,workInProgress2.updateQueue=current,scheduleRetryEffect(workInProgress2,current),workInProgress2.subtreeFlags=0,current=renderLanes2;for(renderLanes2=workInProgress2.child;renderLanes2!==null;)resetWorkInProgress(renderLanes2,current),renderLanes2=renderLanes2.sibling;return push2(suspenseStackCursor,suspenseStackCursor.current&1|2),isHydrating&&pushTreeFork(workInProgress2,newProps.treeForkCount),workInProgress2.child}current=current.sibling}newProps.tail!==null&&now()>workInProgressRootRenderTargetTime&&(workInProgress2.flags|=128,type=!0,cutOffTailIfNeeded(newProps,!1),workInProgress2.lanes=4194304)}else{if(!type)if(current=findFirstSuspended(nextResource),current!==null){if(workInProgress2.flags|=128,type=!0,current=current.updateQueue,workInProgress2.updateQueue=current,scheduleRetryEffect(workInProgress2,current),cutOffTailIfNeeded(newProps,!0),newProps.tail===null&&newProps.tailMode==="hidden"&&!nextResource.alternate&&!isHydrating)return bubbleProperties(workInProgress2),null}else 2*now()-newProps.renderingStartTime>workInProgressRootRenderTargetTime&&renderLanes2!==536870912&&(workInProgress2.flags|=128,type=!0,cutOffTailIfNeeded(newProps,!1),workInProgress2.lanes=4194304);newProps.isBackwards?(nextResource.sibling=workInProgress2.child,workInProgress2.child=nextResource):(current=newProps.last,current!==null?current.sibling=nextResource:workInProgress2.child=nextResource,newProps.last=nextResource)}if(newProps.tail!==null)return current=newProps.tail,newProps.rendering=current,newProps.tail=current.sibling,newProps.renderingStartTime=now(),current.sibling=null,renderLanes2=suspenseStackCursor.current,push2(suspenseStackCursor,type?renderLanes2&1|2:renderLanes2&1),isHydrating&&pushTreeFork(workInProgress2,newProps.treeForkCount),current;return bubbleProperties(workInProgress2),null;case 22:case 23:return popSuspenseHandler(workInProgress2),popHiddenContext(),newProps=workInProgress2.memoizedState!==null,current!==null?current.memoizedState!==null!==newProps&&(workInProgress2.flags|=8192):newProps&&(workInProgress2.flags|=8192),newProps?(renderLanes2&536870912)!==0&&(workInProgress2.flags&128)===0&&(bubbleProperties(workInProgress2),workInProgress2.subtreeFlags&6&&(workInProgress2.flags|=8192)):bubbleProperties(workInProgress2),renderLanes2=workInProgress2.updateQueue,renderLanes2!==null&&scheduleRetryEffect(workInProgress2,renderLanes2.retryQueue),renderLanes2=null,current!==null&¤t.memoizedState!==null&¤t.memoizedState.cachePool!==null&&(renderLanes2=current.memoizedState.cachePool.pool),newProps=null,workInProgress2.memoizedState!==null&&workInProgress2.memoizedState.cachePool!==null&&(newProps=workInProgress2.memoizedState.cachePool.pool),newProps!==renderLanes2&&(workInProgress2.flags|=2048),current!==null&&pop2(resumedCache),null;case 24:return renderLanes2=null,current!==null&&(renderLanes2=current.memoizedState.cache),workInProgress2.memoizedState.cache!==renderLanes2&&(workInProgress2.flags|=2048),popProvider(CacheContext),bubbleProperties(workInProgress2),null;case 25:return null;case 30:return null}throw Error(formatProdErrorMessage(156,workInProgress2.tag))}function unwindWork(current,workInProgress2){switch(popTreeContext(workInProgress2),workInProgress2.tag){case 1:return current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 3:return popProvider(CacheContext),popHostContainer(),current=workInProgress2.flags,(current&65536)!==0&&(current&128)===0?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 26:case 27:case 5:return popHostContext(workInProgress2),null;case 31:if(workInProgress2.memoizedState!==null){if(popSuspenseHandler(workInProgress2),workInProgress2.alternate===null)throw Error(formatProdErrorMessage(340));resetHydrationState()}return current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 13:if(popSuspenseHandler(workInProgress2),current=workInProgress2.memoizedState,current!==null&¤t.dehydrated!==null){if(workInProgress2.alternate===null)throw Error(formatProdErrorMessage(340));resetHydrationState()}return current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 19:return pop2(suspenseStackCursor),null;case 4:return popHostContainer(),null;case 10:return popProvider(workInProgress2.type),null;case 22:case 23:return popSuspenseHandler(workInProgress2),popHiddenContext(),current!==null&&pop2(resumedCache),current=workInProgress2.flags,current&65536?(workInProgress2.flags=current&-65537|128,workInProgress2):null;case 24:return popProvider(CacheContext),null;case 25:return null;default:return null}}function unwindInterruptedWork(current,interruptedWork){switch(popTreeContext(interruptedWork),interruptedWork.tag){case 3:popProvider(CacheContext),popHostContainer();break;case 26:case 27:case 5:popHostContext(interruptedWork);break;case 4:popHostContainer();break;case 31:interruptedWork.memoizedState!==null&&popSuspenseHandler(interruptedWork);break;case 13:popSuspenseHandler(interruptedWork);break;case 19:pop2(suspenseStackCursor);break;case 10:popProvider(interruptedWork.type);break;case 22:case 23:popSuspenseHandler(interruptedWork),popHiddenContext(),current!==null&&pop2(resumedCache);break;case 24:popProvider(CacheContext)}}function commitHookEffectListMount(flags,finishedWork){try{var updateQueue=finishedWork.updateQueue,lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;updateQueue=firstEffect;do{if((updateQueue.tag&flags)===flags){lastEffect=void 0;var{create,inst}=updateQueue;lastEffect=create(),inst.destroy=lastEffect}updateQueue=updateQueue.next}while(updateQueue!==firstEffect)}}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitHookEffectListUnmount(flags,finishedWork,nearestMountedAncestor$jscomp$0){try{var updateQueue=finishedWork.updateQueue,lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;updateQueue=firstEffect;do{if((updateQueue.tag&flags)===flags){var inst=updateQueue.inst,destroy=inst.destroy;if(destroy!==void 0){inst.destroy=void 0,lastEffect=finishedWork;var nearestMountedAncestor=nearestMountedAncestor$jscomp$0,destroy_=destroy;try{destroy_()}catch(error){captureCommitPhaseError(lastEffect,nearestMountedAncestor,error)}}}updateQueue=updateQueue.next}while(updateQueue!==firstEffect)}}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitClassCallbacks(finishedWork){var updateQueue=finishedWork.updateQueue;if(updateQueue!==null){var instance=finishedWork.stateNode;try{commitCallbacks(updateQueue,instance)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}function safelyCallComponentWillUnmount(current,nearestMountedAncestor,instance){instance.props=resolveClassComponentProps(current.type,current.memoizedProps),instance.state=current.memoizedState;try{instance.componentWillUnmount()}catch(error){captureCommitPhaseError(current,nearestMountedAncestor,error)}}function safelyAttachRef(current,nearestMountedAncestor){try{var ref=current.ref;if(ref!==null){switch(current.tag){case 26:case 27:case 5:var instanceToUse=getPublicInstance(current.stateNode);break;case 30:instanceToUse=current.stateNode;break;default:instanceToUse=current.stateNode}typeof ref==="function"?current.refCleanup=ref(instanceToUse):ref.current=instanceToUse}}catch(error){captureCommitPhaseError(current,nearestMountedAncestor,error)}}function safelyDetachRef(current,nearestMountedAncestor){var{ref,refCleanup}=current;if(ref!==null)if(typeof refCleanup==="function")try{refCleanup()}catch(error){captureCommitPhaseError(current,nearestMountedAncestor,error)}finally{current.refCleanup=null,current=current.alternate,current!=null&&(current.refCleanup=null)}else if(typeof ref==="function")try{ref(null)}catch(error$124){captureCommitPhaseError(current,nearestMountedAncestor,error$124)}else ref.current=null}function commitHostMount(finishedWork){var{type,memoizedProps:props,stateNode:instance}=finishedWork;try{commitMount(instance,type,props,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitHostUpdate(finishedWork,newProps,oldProps){try{commitUpdate(finishedWork.stateNode,finishedWork.type,oldProps,newProps,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function isHostParent(fiber){return fiber.tag===5||fiber.tag===3||(supportsResources?fiber.tag===26:!1)||(supportsSingletons?fiber.tag===27&&isSingletonScope(fiber.type):!1)||fiber.tag===4}function getHostSibling(fiber){a:for(;;){for(;fiber.sibling===null;){if(fiber.return===null||isHostParent(fiber.return))return null;fiber=fiber.return}fiber.sibling.return=fiber.return;for(fiber=fiber.sibling;fiber.tag!==5&&fiber.tag!==6&&fiber.tag!==18;){if(supportsSingletons&&fiber.tag===27&&isSingletonScope(fiber.type))continue a;if(fiber.flags&2)continue a;if(fiber.child===null||fiber.tag===4)continue a;else fiber.child.return=fiber,fiber=fiber.child}if(!(fiber.flags&2))return fiber.stateNode}}function insertOrAppendPlacementNodeIntoContainer(node,before,parent){var tag=node.tag;if(tag===5||tag===6)node=node.stateNode,before?insertInContainerBefore(parent,node,before):appendChildToContainer(parent,node);else if(tag!==4&&(supportsSingletons&&tag===27&&isSingletonScope(node.type)&&(parent=node.stateNode,before=null),node=node.child,node!==null))for(insertOrAppendPlacementNodeIntoContainer(node,before,parent),node=node.sibling;node!==null;)insertOrAppendPlacementNodeIntoContainer(node,before,parent),node=node.sibling}function insertOrAppendPlacementNode(node,before,parent){var tag=node.tag;if(tag===5||tag===6)node=node.stateNode,before?insertBefore(parent,node,before):appendChild(parent,node);else if(tag!==4&&(supportsSingletons&&tag===27&&isSingletonScope(node.type)&&(parent=node.stateNode),node=node.child,node!==null))for(insertOrAppendPlacementNode(node,before,parent),node=node.sibling;node!==null;)insertOrAppendPlacementNode(node,before,parent),node=node.sibling}function commitHostPortalContainerChildren(portal,finishedWork,pendingChildren){portal=portal.containerInfo;try{replaceContainerChildren(portal,pendingChildren)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitHostSingletonAcquisition(finishedWork){var{stateNode:singleton2,memoizedProps:props}=finishedWork;try{acquireSingletonInstance(finishedWork.type,props,singleton2,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function commitBeforeMutationEffects(root,firstChild){prepareForCommit(root.containerInfo);for(nextEffect=firstChild;nextEffect!==null;)if(root=nextEffect,firstChild=root.child,(root.subtreeFlags&1028)!==0&&firstChild!==null)firstChild.return=root,nextEffect=firstChild;else for(;nextEffect!==null;){root=nextEffect;var current=root.alternate;switch(firstChild=root.flags,root.tag){case 0:if((firstChild&4)!==0&&(firstChild=root.updateQueue,firstChild=firstChild!==null?firstChild.events:null,firstChild!==null))for(var ii=0;ii<firstChild.length;ii++){var _eventPayloads$ii=firstChild[ii];_eventPayloads$ii.ref.impl=_eventPayloads$ii.nextImpl}break;case 11:case 15:break;case 1:if((firstChild&1024)!==0&¤t!==null){firstChild=void 0,ii=root,_eventPayloads$ii=current.memoizedProps,current=current.memoizedState;var instance=ii.stateNode;try{var resolvedPrevProps=resolveClassComponentProps(ii.type,_eventPayloads$ii);firstChild=instance.getSnapshotBeforeUpdate(resolvedPrevProps,current),instance.__reactInternalSnapshotBeforeUpdate=firstChild}catch(error){captureCommitPhaseError(ii,ii.return,error)}}break;case 3:(firstChild&1024)!==0&&supportsMutation&&clearContainer(root.stateNode.containerInfo);break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((firstChild&1024)!==0)throw Error(formatProdErrorMessage(163))}if(firstChild=root.sibling,firstChild!==null){firstChild.return=root.return,nextEffect=firstChild;break}nextEffect=root.return}}function commitLayoutEffectOnFiber(finishedRoot,current,finishedWork){var flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4&&commitHookEffectListMount(5,finishedWork);break;case 1:if(recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4)if(finishedRoot=finishedWork.stateNode,current===null)try{finishedRoot.componentDidMount()}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}else{var prevProps=resolveClassComponentProps(finishedWork.type,current.memoizedProps);current=current.memoizedState;try{finishedRoot.componentDidUpdate(prevProps,current,finishedRoot.__reactInternalSnapshotBeforeUpdate)}catch(error$123){captureCommitPhaseError(finishedWork,finishedWork.return,error$123)}}flags&64&&commitClassCallbacks(finishedWork),flags&512&&safelyAttachRef(finishedWork,finishedWork.return);break;case 3:if(recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&64&&(flags=finishedWork.updateQueue,flags!==null)){if(finishedRoot=null,finishedWork.child!==null)switch(finishedWork.child.tag){case 27:case 5:finishedRoot=getPublicInstance(finishedWork.child.stateNode);break;case 1:finishedRoot=finishedWork.child.stateNode}try{commitCallbacks(flags,finishedRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}break;case 27:supportsSingletons&¤t===null&&flags&4&&commitHostSingletonAcquisition(finishedWork);case 26:case 5:if(recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),current===null){if(flags&4)commitHostMount(finishedWork);else if(flags&64){finishedRoot=finishedWork.type,current=finishedWork.memoizedProps,prevProps=finishedWork.stateNode;try{commitHydratedInstance(prevProps,finishedRoot,current,finishedWork)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}flags&512&&safelyAttachRef(finishedWork,finishedWork.return);break;case 12:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork);break;case 31:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4&&commitActivityHydrationCallbacks(finishedRoot,finishedWork);break;case 13:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),flags&4&&commitSuspenseHydrationCallbacks(finishedRoot,finishedWork),flags&64&&(flags=finishedWork.memoizedState,flags!==null&&(flags=flags.dehydrated,flags!==null&&(finishedWork=retryDehydratedSuspenseBoundary.bind(null,finishedWork),registerSuspenseInstanceRetry(flags,finishedWork))));break;case 22:if(flags=finishedWork.memoizedState!==null||offscreenSubtreeIsHidden,!flags){current=current!==null&¤t.memoizedState!==null||offscreenSubtreeWasHidden,prevProps=offscreenSubtreeIsHidden;var prevOffscreenSubtreeWasHidden=offscreenSubtreeWasHidden;offscreenSubtreeIsHidden=flags,(offscreenSubtreeWasHidden=current)&&!prevOffscreenSubtreeWasHidden?recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,(finishedWork.subtreeFlags&8772)!==0):recursivelyTraverseLayoutEffects(finishedRoot,finishedWork),offscreenSubtreeIsHidden=prevProps,offscreenSubtreeWasHidden=prevOffscreenSubtreeWasHidden}break;case 30:break;default:recursivelyTraverseLayoutEffects(finishedRoot,finishedWork)}}function detachFiberAfterEffects(fiber){var alternate=fiber.alternate;alternate!==null&&(fiber.alternate=null,detachFiberAfterEffects(alternate)),fiber.child=null,fiber.deletions=null,fiber.sibling=null,fiber.tag===5&&(alternate=fiber.stateNode,alternate!==null&&detachDeletedInstance(alternate)),fiber.stateNode=null,fiber.return=null,fiber.dependencies=null,fiber.memoizedProps=null,fiber.memoizedState=null,fiber.pendingProps=null,fiber.stateNode=null,fiber.updateQueue=null}function recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,parent){for(parent=parent.child;parent!==null;)commitDeletionEffectsOnFiber(finishedRoot,nearestMountedAncestor,parent),parent=parent.sibling}function commitDeletionEffectsOnFiber(finishedRoot,nearestMountedAncestor,deletedFiber){if(injectedHook&&typeof injectedHook.onCommitFiberUnmount==="function")try{injectedHook.onCommitFiberUnmount(rendererID,deletedFiber)}catch(err){}switch(deletedFiber.tag){case 26:if(supportsResources){offscreenSubtreeWasHidden||safelyDetachRef(deletedFiber,nearestMountedAncestor),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),deletedFiber.memoizedState?releaseResource(deletedFiber.memoizedState):deletedFiber.stateNode&&unmountHoistable(deletedFiber.stateNode);break}case 27:if(supportsSingletons){offscreenSubtreeWasHidden||safelyDetachRef(deletedFiber,nearestMountedAncestor);var prevHostParent=hostParent,prevHostParentIsContainer=hostParentIsContainer;isSingletonScope(deletedFiber.type)&&(hostParent=deletedFiber.stateNode,hostParentIsContainer=!1),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),releaseSingletonInstance(deletedFiber.stateNode),hostParent=prevHostParent,hostParentIsContainer=prevHostParentIsContainer;break}case 5:offscreenSubtreeWasHidden||safelyDetachRef(deletedFiber,nearestMountedAncestor);case 6:if(supportsMutation){if(prevHostParent=hostParent,prevHostParentIsContainer=hostParentIsContainer,hostParent=null,recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),hostParent=prevHostParent,hostParentIsContainer=prevHostParentIsContainer,hostParent!==null)if(hostParentIsContainer)try{removeChildFromContainer(hostParent,deletedFiber.stateNode)}catch(error){captureCommitPhaseError(deletedFiber,nearestMountedAncestor,error)}else try{removeChild(hostParent,deletedFiber.stateNode)}catch(error){captureCommitPhaseError(deletedFiber,nearestMountedAncestor,error)}}else recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 18:supportsMutation&&hostParent!==null&&(hostParentIsContainer?clearSuspenseBoundaryFromContainer(hostParent,deletedFiber.stateNode):clearSuspenseBoundary(hostParent,deletedFiber.stateNode));break;case 4:supportsMutation?(prevHostParent=hostParent,prevHostParentIsContainer=hostParentIsContainer,hostParent=deletedFiber.stateNode.containerInfo,hostParentIsContainer=!0,recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),hostParent=prevHostParent,hostParentIsContainer=prevHostParentIsContainer):(supportsPersistence&&commitHostPortalContainerChildren(deletedFiber.stateNode,deletedFiber,createContainerChildSet()),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber));break;case 0:case 11:case 14:case 15:commitHookEffectListUnmount(2,deletedFiber,nearestMountedAncestor),offscreenSubtreeWasHidden||commitHookEffectListUnmount(4,deletedFiber,nearestMountedAncestor),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 1:offscreenSubtreeWasHidden||(safelyDetachRef(deletedFiber,nearestMountedAncestor),prevHostParent=deletedFiber.stateNode,typeof prevHostParent.componentWillUnmount==="function"&&safelyCallComponentWillUnmount(deletedFiber,nearestMountedAncestor,prevHostParent)),recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 21:recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber);break;case 22:offscreenSubtreeWasHidden=(prevHostParent=offscreenSubtreeWasHidden)||deletedFiber.memoizedState!==null,recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber),offscreenSubtreeWasHidden=prevHostParent;break;default:recursivelyTraverseDeletionEffects(finishedRoot,nearestMountedAncestor,deletedFiber)}}function commitActivityHydrationCallbacks(finishedRoot,finishedWork){if(supportsHydration&&finishedWork.memoizedState===null&&(finishedRoot=finishedWork.alternate,finishedRoot!==null&&(finishedRoot=finishedRoot.memoizedState,finishedRoot!==null))){finishedRoot=finishedRoot.dehydrated;try{commitHydratedActivityInstance(finishedRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}function commitSuspenseHydrationCallbacks(finishedRoot,finishedWork){if(supportsHydration&&finishedWork.memoizedState===null&&(finishedRoot=finishedWork.alternate,finishedRoot!==null&&(finishedRoot=finishedRoot.memoizedState,finishedRoot!==null&&(finishedRoot=finishedRoot.dehydrated,finishedRoot!==null))))try{commitHydratedSuspenseInstance(finishedRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}function getRetryCache(finishedWork){switch(finishedWork.tag){case 31:case 13:case 19:var retryCache=finishedWork.stateNode;return retryCache===null&&(retryCache=finishedWork.stateNode=new PossiblyWeakSet),retryCache;case 22:return finishedWork=finishedWork.stateNode,retryCache=finishedWork._retryCache,retryCache===null&&(retryCache=finishedWork._retryCache=new PossiblyWeakSet),retryCache;default:throw Error(formatProdErrorMessage(435,finishedWork.tag))}}function attachSuspenseRetryListeners(finishedWork,wakeables){var retryCache=getRetryCache(finishedWork);wakeables.forEach(function(wakeable){if(!retryCache.has(wakeable)){retryCache.add(wakeable);var retry=resolveRetryWakeable.bind(null,finishedWork,wakeable);wakeable.then(retry,retry)}})}function recursivelyTraverseMutationEffects(root$jscomp$0,parentFiber){var deletions=parentFiber.deletions;if(deletions!==null)for(var i=0;i<deletions.length;i++){var childToDelete=deletions[i],root=root$jscomp$0,returnFiber=parentFiber;if(supportsMutation){var parent=returnFiber;a:for(;parent!==null;){switch(parent.tag){case 27:if(supportsSingletons){if(isSingletonScope(parent.type)){hostParent=parent.stateNode,hostParentIsContainer=!1;break a}break}case 5:hostParent=parent.stateNode,hostParentIsContainer=!1;break a;case 3:case 4:hostParent=parent.stateNode.containerInfo,hostParentIsContainer=!0;break a}parent=parent.return}if(hostParent===null)throw Error(formatProdErrorMessage(160));commitDeletionEffectsOnFiber(root,returnFiber,childToDelete),hostParent=null,hostParentIsContainer=!1}else commitDeletionEffectsOnFiber(root,returnFiber,childToDelete);root=childToDelete.alternate,root!==null&&(root.return=null),childToDelete.return=null}if(parentFiber.subtreeFlags&13886)for(parentFiber=parentFiber.child;parentFiber!==null;)commitMutationEffectsOnFiber(parentFiber,root$jscomp$0),parentFiber=parentFiber.sibling}function commitMutationEffectsOnFiber(finishedWork,root){var{alternate:current,flags}=finishedWork;switch(finishedWork.tag){case 0:case 11:case 14:case 15:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&(commitHookEffectListUnmount(3,finishedWork,finishedWork.return),commitHookEffectListMount(3,finishedWork),commitHookEffectListUnmount(5,finishedWork,finishedWork.return));break;case 1:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),flags&64&&offscreenSubtreeIsHidden&&(finishedWork=finishedWork.updateQueue,finishedWork!==null&&(flags=finishedWork.callbacks,flags!==null&&(current=finishedWork.shared.hiddenCallbacks,finishedWork.shared.hiddenCallbacks=current===null?flags:current.concat(flags))));break;case 26:if(supportsResources){var hoistableRoot=currentHoistableRoot;if(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),flags&4){flags=current!==null?current.memoizedState:null;var newResource=finishedWork.memoizedState;current===null?newResource===null?finishedWork.stateNode===null?finishedWork.stateNode=hydrateHoistable(hoistableRoot,finishedWork.type,finishedWork.memoizedProps,finishedWork):mountHoistable(hoistableRoot,finishedWork.type,finishedWork.stateNode):finishedWork.stateNode=acquireResource(hoistableRoot,newResource,finishedWork.memoizedProps):flags!==newResource?(flags===null?current.stateNode!==null&&unmountHoistable(current.stateNode):releaseResource(flags),newResource===null?mountHoistable(hoistableRoot,finishedWork.type,finishedWork.stateNode):acquireResource(hoistableRoot,newResource,finishedWork.memoizedProps)):newResource===null&&finishedWork.stateNode!==null&&commitHostUpdate(finishedWork,finishedWork.memoizedProps,current.memoizedProps)}break}case 27:if(supportsSingletons){recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),current!==null&&flags&4&&commitHostUpdate(finishedWork,finishedWork.memoizedProps,current.memoizedProps);break}case 5:if(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&512&&(offscreenSubtreeWasHidden||current===null||safelyDetachRef(current,current.return)),supportsMutation){if(finishedWork.flags&32){hoistableRoot=finishedWork.stateNode;try{resetTextContent(hoistableRoot)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}flags&4&&finishedWork.stateNode!=null&&(hoistableRoot=finishedWork.memoizedProps,commitHostUpdate(finishedWork,hoistableRoot,current!==null?current.memoizedProps:hoistableRoot)),flags&1024&&(needsFormReset=!0)}else supportsPersistence&&finishedWork.alternate!==null&&(finishedWork.alternate.stateNode=finishedWork.stateNode);break;case 6:if(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&supportsMutation){if(finishedWork.stateNode===null)throw Error(formatProdErrorMessage(162));flags=finishedWork.memoizedProps,current=current!==null?current.memoizedProps:flags,hoistableRoot=finishedWork.stateNode;try{commitTextUpdate(hoistableRoot,current,flags)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}break;case 3:if(supportsResources?(prepareToCommitHoistables(),hoistableRoot=currentHoistableRoot,currentHoistableRoot=getHoistableRoot(root.containerInfo),recursivelyTraverseMutationEffects(root,finishedWork),currentHoistableRoot=hoistableRoot):recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4){if(supportsMutation&&supportsHydration&¤t!==null&¤t.memoizedState.isDehydrated)try{commitHydratedContainer(root.containerInfo)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}if(supportsPersistence){flags=root.containerInfo,current=root.pendingChildren;try{replaceContainerChildren(flags,current)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}}needsFormReset&&(needsFormReset=!1,recursivelyResetForms(finishedWork));break;case 4:supportsResources?(current=currentHoistableRoot,currentHoistableRoot=getHoistableRoot(finishedWork.stateNode.containerInfo),recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),currentHoistableRoot=current):(recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork)),flags&4&&supportsPersistence&&commitHostPortalContainerChildren(finishedWork.stateNode,finishedWork,finishedWork.stateNode.pendingChildren);break;case 12:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork);break;case 31:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(finishedWork.updateQueue=null,attachSuspenseRetryListeners(finishedWork,flags)));break;case 13:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),finishedWork.child.flags&8192&&finishedWork.memoizedState!==null!==(current!==null&¤t.memoizedState!==null)&&(globalMostRecentFallbackTime=now()),flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(finishedWork.updateQueue=null,attachSuspenseRetryListeners(finishedWork,flags)));break;case 22:hoistableRoot=finishedWork.memoizedState!==null;var wasHidden=current!==null&¤t.memoizedState!==null,prevOffscreenSubtreeIsHidden=offscreenSubtreeIsHidden,prevOffscreenSubtreeWasHidden=offscreenSubtreeWasHidden;if(offscreenSubtreeIsHidden=prevOffscreenSubtreeIsHidden||hoistableRoot,offscreenSubtreeWasHidden=prevOffscreenSubtreeWasHidden||wasHidden,recursivelyTraverseMutationEffects(root,finishedWork),offscreenSubtreeWasHidden=prevOffscreenSubtreeWasHidden,offscreenSubtreeIsHidden=prevOffscreenSubtreeIsHidden,commitReconciliationEffects(finishedWork),flags&8192&&(root=finishedWork.stateNode,root._visibility=hoistableRoot?root._visibility&-2:root._visibility|1,hoistableRoot&&(current===null||wasHidden||offscreenSubtreeIsHidden||offscreenSubtreeWasHidden||recursivelyTraverseDisappearLayoutEffects(finishedWork)),supportsMutation))a:if(current=null,supportsMutation)for(root=finishedWork;;){if(root.tag===5||supportsResources&&root.tag===26){if(current===null){wasHidden=current=root;try{newResource=wasHidden.stateNode,hoistableRoot?hideInstance(newResource):unhideInstance(wasHidden.stateNode,wasHidden.memoizedProps)}catch(error){captureCommitPhaseError(wasHidden,wasHidden.return,error)}}}else if(root.tag===6){if(current===null){wasHidden=root;try{var instance=wasHidden.stateNode;hoistableRoot?hideTextInstance(instance):unhideTextInstance(instance,wasHidden.memoizedProps)}catch(error){captureCommitPhaseError(wasHidden,wasHidden.return,error)}}}else if(root.tag===18){if(current===null){wasHidden=root;try{var instance$jscomp$0=wasHidden.stateNode;hoistableRoot?hideDehydratedBoundary(instance$jscomp$0):unhideDehydratedBoundary(wasHidden.stateNode)}catch(error){captureCommitPhaseError(wasHidden,wasHidden.return,error)}}}else if((root.tag!==22&&root.tag!==23||root.memoizedState===null||root===finishedWork)&&root.child!==null){root.child.return=root,root=root.child;continue}if(root===finishedWork)break a;for(;root.sibling===null;){if(root.return===null||root.return===finishedWork)break a;current===root&&(current=null),root=root.return}current===root&&(current=null),root.sibling.return=root.return,root=root.sibling}flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(current=flags.retryQueue,current!==null&&(flags.retryQueue=null,attachSuspenseRetryListeners(finishedWork,current))));break;case 19:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork),flags&4&&(flags=finishedWork.updateQueue,flags!==null&&(finishedWork.updateQueue=null,attachSuspenseRetryListeners(finishedWork,flags)));break;case 30:break;case 21:break;default:recursivelyTraverseMutationEffects(root,finishedWork),commitReconciliationEffects(finishedWork)}}function commitReconciliationEffects(finishedWork){var flags=finishedWork.flags;if(flags&2){try{for(var hostParentFiber,parentFiber=finishedWork.return;parentFiber!==null;){if(isHostParent(parentFiber)){hostParentFiber=parentFiber;break}parentFiber=parentFiber.return}if(supportsMutation){if(hostParentFiber==null)throw Error(formatProdErrorMessage(160));switch(hostParentFiber.tag){case 27:if(supportsSingletons){var parent=hostParentFiber.stateNode,before=getHostSibling(finishedWork);insertOrAppendPlacementNode(finishedWork,before,parent);break}case 5:var parent$125=hostParentFiber.stateNode;hostParentFiber.flags&32&&(resetTextContent(parent$125),hostParentFiber.flags&=-33);var before$126=getHostSibling(finishedWork);insertOrAppendPlacementNode(finishedWork,before$126,parent$125);break;case 3:case 4:var parent$127=hostParentFiber.stateNode.containerInfo,before$128=getHostSibling(finishedWork);insertOrAppendPlacementNodeIntoContainer(finishedWork,before$128,parent$127);break;default:throw Error(formatProdErrorMessage(161))}}}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}finishedWork.flags&=-3}flags&4096&&(finishedWork.flags&=-4097)}function recursivelyResetForms(parentFiber){if(parentFiber.subtreeFlags&1024)for(parentFiber=parentFiber.child;parentFiber!==null;){var fiber=parentFiber;recursivelyResetForms(fiber),fiber.tag===5&&fiber.flags&1024&&resetFormInstance(fiber.stateNode),parentFiber=parentFiber.sibling}}function recursivelyTraverseLayoutEffects(root,parentFiber){if(parentFiber.subtreeFlags&8772)for(parentFiber=parentFiber.child;parentFiber!==null;)commitLayoutEffectOnFiber(root,parentFiber.alternate,parentFiber),parentFiber=parentFiber.sibling}function recursivelyTraverseDisappearLayoutEffects(parentFiber){for(parentFiber=parentFiber.child;parentFiber!==null;){var finishedWork=parentFiber;switch(finishedWork.tag){case 0:case 11:case 14:case 15:commitHookEffectListUnmount(4,finishedWork,finishedWork.return),recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 1:safelyDetachRef(finishedWork,finishedWork.return);var instance=finishedWork.stateNode;typeof instance.componentWillUnmount==="function"&&safelyCallComponentWillUnmount(finishedWork,finishedWork.return,instance),recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 27:supportsSingletons&&releaseSingletonInstance(finishedWork.stateNode);case 26:case 5:safelyDetachRef(finishedWork,finishedWork.return),recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 22:finishedWork.memoizedState===null&&recursivelyTraverseDisappearLayoutEffects(finishedWork);break;case 30:recursivelyTraverseDisappearLayoutEffects(finishedWork);break;default:recursivelyTraverseDisappearLayoutEffects(finishedWork)}parentFiber=parentFiber.sibling}}function recursivelyTraverseReappearLayoutEffects(finishedRoot$jscomp$0,parentFiber,includeWorkInProgressEffects){includeWorkInProgressEffects=includeWorkInProgressEffects&&(parentFiber.subtreeFlags&8772)!==0;for(parentFiber=parentFiber.child;parentFiber!==null;){var current=parentFiber.alternate,finishedRoot=finishedRoot$jscomp$0,finishedWork=parentFiber,flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),commitHookEffectListMount(4,finishedWork);break;case 1:if(recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),current=finishedWork,finishedRoot=current.stateNode,typeof finishedRoot.componentDidMount==="function")try{finishedRoot.componentDidMount()}catch(error){captureCommitPhaseError(current,current.return,error)}if(current=finishedWork,finishedRoot=current.updateQueue,finishedRoot!==null){var instance=current.stateNode;try{var hiddenCallbacks=finishedRoot.shared.hiddenCallbacks;if(hiddenCallbacks!==null)for(finishedRoot.shared.hiddenCallbacks=null,finishedRoot=0;finishedRoot<hiddenCallbacks.length;finishedRoot++)callCallback(hiddenCallbacks[finishedRoot],instance)}catch(error){captureCommitPhaseError(current,current.return,error)}}includeWorkInProgressEffects&&flags&64&&commitClassCallbacks(finishedWork),safelyAttachRef(finishedWork,finishedWork.return);break;case 27:supportsSingletons&&commitHostSingletonAcquisition(finishedWork);case 26:case 5:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),includeWorkInProgressEffects&¤t===null&&flags&4&&commitHostMount(finishedWork),safelyAttachRef(finishedWork,finishedWork.return);break;case 12:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects);break;case 31:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),includeWorkInProgressEffects&&flags&4&&commitActivityHydrationCallbacks(finishedRoot,finishedWork);break;case 13:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),includeWorkInProgressEffects&&flags&4&&commitSuspenseHydrationCallbacks(finishedRoot,finishedWork);break;case 22:finishedWork.memoizedState===null&&recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects),safelyAttachRef(finishedWork,finishedWork.return);break;case 30:break;default:recursivelyTraverseReappearLayoutEffects(finishedRoot,finishedWork,includeWorkInProgressEffects)}parentFiber=parentFiber.sibling}}function commitOffscreenPassiveMountEffects(current,finishedWork){var previousCache=null;current!==null&¤t.memoizedState!==null&¤t.memoizedState.cachePool!==null&&(previousCache=current.memoizedState.cachePool.pool),current=null,finishedWork.memoizedState!==null&&finishedWork.memoizedState.cachePool!==null&&(current=finishedWork.memoizedState.cachePool.pool),current!==previousCache&&(current!=null&¤t.refCount++,previousCache!=null&&releaseCache(previousCache))}function commitCachePassiveMountEffect(current,finishedWork){current=null,finishedWork.alternate!==null&&(current=finishedWork.alternate.memoizedState.cache),finishedWork=finishedWork.memoizedState.cache,finishedWork!==current&&(finishedWork.refCount++,current!=null&&releaseCache(current))}function recursivelyTraversePassiveMountEffects(root,parentFiber,committedLanes,committedTransitions){if(parentFiber.subtreeFlags&10256)for(parentFiber=parentFiber.child;parentFiber!==null;)commitPassiveMountOnFiber(root,parentFiber,committedLanes,committedTransitions),parentFiber=parentFiber.sibling}function commitPassiveMountOnFiber(finishedRoot,finishedWork,committedLanes,committedTransitions){var flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),flags&2048&&commitHookEffectListMount(9,finishedWork);break;case 1:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 3:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),flags&2048&&(finishedRoot=null,finishedWork.alternate!==null&&(finishedRoot=finishedWork.alternate.memoizedState.cache),finishedWork=finishedWork.memoizedState.cache,finishedWork!==finishedRoot&&(finishedWork.refCount++,finishedRoot!=null&&releaseCache(finishedRoot)));break;case 12:if(flags&2048){recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),finishedRoot=finishedWork.stateNode;try{var _finishedWork$memoize2=finishedWork.memoizedProps,id=_finishedWork$memoize2.id,onPostCommit=_finishedWork$memoize2.onPostCommit;typeof onPostCommit==="function"&&onPostCommit(id,finishedWork.alternate===null?"mount":"update",finishedRoot.passiveEffectDuration,-0)}catch(error){captureCommitPhaseError(finishedWork,finishedWork.return,error)}}else recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 31:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 13:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions);break;case 23:break;case 22:_finishedWork$memoize2=finishedWork.stateNode,id=finishedWork.alternate,finishedWork.memoizedState!==null?_finishedWork$memoize2._visibility&2?recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions):recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork):_finishedWork$memoize2._visibility&2?recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions):(_finishedWork$memoize2._visibility|=2,recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,(finishedWork.subtreeFlags&10256)!==0||!1)),flags&2048&&commitOffscreenPassiveMountEffects(id,finishedWork);break;case 24:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions),flags&2048&&commitCachePassiveMountEffect(finishedWork.alternate,finishedWork);break;default:recursivelyTraversePassiveMountEffects(finishedRoot,finishedWork,committedLanes,committedTransitions)}}function recursivelyTraverseReconnectPassiveEffects(finishedRoot$jscomp$0,parentFiber,committedLanes$jscomp$0,committedTransitions$jscomp$0,includeWorkInProgressEffects){includeWorkInProgressEffects=includeWorkInProgressEffects&&((parentFiber.subtreeFlags&10256)!==0||!1);for(parentFiber=parentFiber.child;parentFiber!==null;){var finishedRoot=finishedRoot$jscomp$0,finishedWork=parentFiber,committedLanes=committedLanes$jscomp$0,committedTransitions=committedTransitions$jscomp$0,flags=finishedWork.flags;switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects),commitHookEffectListMount(8,finishedWork);break;case 23:break;case 22:var instance=finishedWork.stateNode;finishedWork.memoizedState!==null?instance._visibility&2?recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects):recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork):(instance._visibility|=2,recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects)),includeWorkInProgressEffects&&flags&2048&&commitOffscreenPassiveMountEffects(finishedWork.alternate,finishedWork);break;case 24:recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects),includeWorkInProgressEffects&&flags&2048&&commitCachePassiveMountEffect(finishedWork.alternate,finishedWork);break;default:recursivelyTraverseReconnectPassiveEffects(finishedRoot,finishedWork,committedLanes,committedTransitions,includeWorkInProgressEffects)}parentFiber=parentFiber.sibling}}function recursivelyTraverseAtomicPassiveEffects(finishedRoot$jscomp$0,parentFiber){if(parentFiber.subtreeFlags&10256)for(parentFiber=parentFiber.child;parentFiber!==null;){var finishedRoot=finishedRoot$jscomp$0,finishedWork=parentFiber,flags=finishedWork.flags;switch(finishedWork.tag){case 22:recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork),flags&2048&&commitOffscreenPassiveMountEffects(finishedWork.alternate,finishedWork);break;case 24:recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork),flags&2048&&commitCachePassiveMountEffect(finishedWork.alternate,finishedWork);break;default:recursivelyTraverseAtomicPassiveEffects(finishedRoot,finishedWork)}parentFiber=parentFiber.sibling}}function recursivelyAccumulateSuspenseyCommit(parentFiber,committedLanes,suspendedState){if(parentFiber.subtreeFlags&suspenseyCommitFlag)for(parentFiber=parentFiber.child;parentFiber!==null;)accumulateSuspenseyCommitOnFiber(parentFiber,committedLanes,suspendedState),parentFiber=parentFiber.sibling}function accumulateSuspenseyCommitOnFiber(fiber,committedLanes,suspendedState){switch(fiber.tag){case 26:if(recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),fiber.flags&suspenseyCommitFlag)if(fiber.memoizedState!==null)suspendResource(suspendedState,currentHoistableRoot,fiber.memoizedState,fiber.memoizedProps);else{var{stateNode:instance,type}=fiber;fiber=fiber.memoizedProps,((committedLanes&335544128)===committedLanes||maySuspendCommitInSyncRender(type,fiber))&&suspendInstance(suspendedState,instance,type,fiber)}break;case 5:recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),fiber.flags&suspenseyCommitFlag&&(instance=fiber.stateNode,type=fiber.type,fiber=fiber.memoizedProps,((committedLanes&335544128)===committedLanes||maySuspendCommitInSyncRender(type,fiber))&&suspendInstance(suspendedState,instance,type,fiber));break;case 3:case 4:supportsResources?(instance=currentHoistableRoot,currentHoistableRoot=getHoistableRoot(fiber.stateNode.containerInfo),recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),currentHoistableRoot=instance):recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState);break;case 22:fiber.memoizedState===null&&(instance=fiber.alternate,instance!==null&&instance.memoizedState!==null?(instance=suspenseyCommitFlag,suspenseyCommitFlag=16777216,recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState),suspenseyCommitFlag=instance):recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState));break;default:recursivelyAccumulateSuspenseyCommit(fiber,committedLanes,suspendedState)}}function detachAlternateSiblings(parentFiber){var previousFiber=parentFiber.alternate;if(previousFiber!==null&&(parentFiber=previousFiber.child,parentFiber!==null)){previousFiber.child=null;do previousFiber=parentFiber.sibling,parentFiber.sibling=null,parentFiber=previousFiber;while(parentFiber!==null)}}function recursivelyTraversePassiveUnmountEffects(parentFiber){var deletions=parentFiber.deletions;if((parentFiber.flags&16)!==0){if(deletions!==null)for(var i=0;i<deletions.length;i++){var childToDelete=deletions[i];nextEffect=childToDelete,commitPassiveUnmountEffectsInsideOfDeletedTree_begin(childToDelete,parentFiber)}detachAlternateSiblings(parentFiber)}if(parentFiber.subtreeFlags&10256)for(parentFiber=parentFiber.child;parentFiber!==null;)commitPassiveUnmountOnFiber(parentFiber),parentFiber=parentFiber.sibling}function commitPassiveUnmountOnFiber(finishedWork){switch(finishedWork.tag){case 0:case 11:case 15:recursivelyTraversePassiveUnmountEffects(finishedWork),finishedWork.flags&2048&&commitHookEffectListUnmount(9,finishedWork,finishedWork.return);break;case 3:recursivelyTraversePassiveUnmountEffects(finishedWork);break;case 12:recursivelyTraversePassiveUnmountEffects(finishedWork);break;case 22:var instance=finishedWork.stateNode;finishedWork.memoizedState!==null&&instance._visibility&2&&(finishedWork.return===null||finishedWork.return.tag!==13)?(instance._visibility&=-3,recursivelyTraverseDisconnectPassiveEffects(finishedWork)):recursivelyTraversePassiveUnmountEffects(finishedWork);break;default:recursivelyTraversePassiveUnmountEffects(finishedWork)}}function recursivelyTraverseDisconnectPassiveEffects(parentFiber){var deletions=parentFiber.deletions;if((parentFiber.flags&16)!==0){if(deletions!==null)for(var i=0;i<deletions.length;i++){var childToDelete=deletions[i];nextEffect=childToDelete,commitPassiveUnmountEffectsInsideOfDeletedTree_begin(childToDelete,parentFiber)}detachAlternateSiblings(parentFiber)}for(parentFiber=parentFiber.child;parentFiber!==null;){switch(deletions=parentFiber,deletions.tag){case 0:case 11:case 15:commitHookEffectListUnmount(8,deletions,deletions.return),recursivelyTraverseDisconnectPassiveEffects(deletions);break;case 22:i=deletions.stateNode,i._visibility&2&&(i._visibility&=-3,recursivelyTraverseDisconnectPassiveEffects(deletions));break;default:recursivelyTraverseDisconnectPassiveEffects(deletions)}parentFiber=parentFiber.sibling}}function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot,nearestMountedAncestor){for(;nextEffect!==null;){var fiber=nextEffect;switch(fiber.tag){case 0:case 11:case 15:commitHookEffectListUnmount(8,fiber,nearestMountedAncestor);break;case 23:case 22:if(fiber.memoizedState!==null&&fiber.memoizedState.cachePool!==null){var cache=fiber.memoizedState.cachePool.pool;cache!=null&&cache.refCount++}break;case 24:releaseCache(fiber.memoizedState.cache)}if(cache=fiber.child,cache!==null)cache.return=fiber,nextEffect=cache;else a:for(fiber=deletedSubtreeRoot;nextEffect!==null;){cache=nextEffect;var{sibling,return:returnFiber}=cache;if(detachFiberAfterEffects(cache),cache===fiber){nextEffect=null;break a}if(sibling!==null){sibling.return=returnFiber,nextEffect=sibling;break a}nextEffect=returnFiber}}}function findFiberRootForHostRoot(hostRoot){var maybeFiber=getInstanceFromNode(hostRoot);if(maybeFiber!=null){if(typeof maybeFiber.memoizedProps["data-testname"]!=="string")throw Error(formatProdErrorMessage(364));return maybeFiber}if(hostRoot=findFiberRoot(hostRoot),hostRoot===null)throw Error(formatProdErrorMessage(362));return hostRoot.stateNode.current}function matchSelector(fiber$jscomp$0,selector){var tag=fiber$jscomp$0.tag;switch(selector.$$typeof){case COMPONENT_TYPE:if(fiber$jscomp$0.type===selector.value)return!0;break;case HAS_PSEUDO_CLASS_TYPE:a:{selector=selector.value,fiber$jscomp$0=[fiber$jscomp$0,0];for(tag=0;tag<fiber$jscomp$0.length;){var fiber=fiber$jscomp$0[tag++],tag$jscomp$0=fiber.tag,selectorIndex=fiber$jscomp$0[tag++],selector$jscomp$0=selector[selectorIndex];if(tag$jscomp$0!==5&&tag$jscomp$0!==26&&tag$jscomp$0!==27||!isHiddenSubtree(fiber)){for(;selector$jscomp$0!=null&&matchSelector(fiber,selector$jscomp$0);)selectorIndex++,selector$jscomp$0=selector[selectorIndex];if(selectorIndex===selector.length){selector=!0;break a}else for(fiber=fiber.child;fiber!==null;)fiber$jscomp$0.push(fiber,selectorIndex),fiber=fiber.sibling}}selector=!1}return selector;case ROLE_TYPE:if((tag===5||tag===26||tag===27)&&matchAccessibilityRole(fiber$jscomp$0.stateNode,selector.value))return!0;break;case TEXT_TYPE:if(tag===5||tag===6||tag===26||tag===27){if(fiber$jscomp$0=getTextContent(fiber$jscomp$0),fiber$jscomp$0!==null&&0<=fiber$jscomp$0.indexOf(selector.value))return!0}break;case TEST_NAME_TYPE:if(tag===5||tag===26||tag===27){if(fiber$jscomp$0=fiber$jscomp$0.memoizedProps["data-testname"],typeof fiber$jscomp$0==="string"&&fiber$jscomp$0.toLowerCase()===selector.value.toLowerCase())return!0}break;default:throw Error(formatProdErrorMessage(365))}return!1}function selectorToString(selector){switch(selector.$$typeof){case COMPONENT_TYPE:return"<"+(getComponentNameFromType(selector.value)||"Unknown")+">";case HAS_PSEUDO_CLASS_TYPE:return":has("+(selectorToString(selector)||"")+")";case ROLE_TYPE:return'[role="'+selector.value+'"]';case TEXT_TYPE:return'"'+selector.value+'"';case TEST_NAME_TYPE:return'[data-testname="'+selector.value+'"]';default:throw Error(formatProdErrorMessage(365))}}function findPaths(root,selectors){var matchingFibers=[];root=[root,0];for(var index=0;index<root.length;){var fiber=root[index++],tag=fiber.tag,selectorIndex=root[index++],selector=selectors[selectorIndex];if(tag!==5&&tag!==26&&tag!==27||!isHiddenSubtree(fiber)){for(;selector!=null&&matchSelector(fiber,selector);)selectorIndex++,selector=selectors[selectorIndex];if(selectorIndex===selectors.length)matchingFibers.push(fiber);else for(fiber=fiber.child;fiber!==null;)root.push(fiber,selectorIndex),fiber=fiber.sibling}}return matchingFibers}function findAllNodes(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));hostRoot=findFiberRootForHostRoot(hostRoot),hostRoot=findPaths(hostRoot,selectors),selectors=[],hostRoot=Array.from(hostRoot);for(var index=0;index<hostRoot.length;){var node=hostRoot[index++],tag=node.tag;if(tag===5||tag===26||tag===27)isHiddenSubtree(node)||selectors.push(node.stateNode);else for(node=node.child;node!==null;)hostRoot.push(node),node=node.sibling}return selectors}function requestUpdateLane(){return(executionContext&2)!==0&&workInProgressRootRenderLanes!==0?workInProgressRootRenderLanes&-workInProgressRootRenderLanes:ReactSharedInternals.T!==null?requestTransitionLane():resolveUpdatePriority()}function requestDeferredLane(){if(workInProgressDeferredLane===0)if((workInProgressRootRenderLanes&536870912)===0||isHydrating){var lane=nextTransitionDeferredLane;nextTransitionDeferredLane<<=1,(nextTransitionDeferredLane&3932160)===0&&(nextTransitionDeferredLane=262144),workInProgressDeferredLane=lane}else workInProgressDeferredLane=536870912;return lane=suspenseHandlerStackCursor.current,lane!==null&&(lane.flags|=32),workInProgressDeferredLane}function scheduleUpdateOnFiber(root,fiber,lane){if(root===workInProgressRoot&&(workInProgressSuspendedReason===2||workInProgressSuspendedReason===9)||root.cancelPendingCommit!==null)prepareFreshStack(root,0),markRootSuspended(root,workInProgressRootRenderLanes,workInProgressDeferredLane,!1);if(markRootUpdated$1(root,lane),(executionContext&2)===0||root!==workInProgressRoot)root===workInProgressRoot&&((executionContext&2)===0&&(workInProgressRootInterleavedUpdatedLanes|=lane),workInProgressRootExitStatus===4&&markRootSuspended(root,workInProgressRootRenderLanes,workInProgressDeferredLane,!1)),ensureRootIsScheduled(root)}function performWorkOnRoot(root$jscomp$0,lanes,forceSync){if((executionContext&6)!==0)throw Error(formatProdErrorMessage(327));var shouldTimeSlice=!forceSync&&(lanes&127)===0&&(lanes&root$jscomp$0.expiredLanes)===0||checkIfRootIsPrerendering(root$jscomp$0,lanes),exitStatus=shouldTimeSlice?renderRootConcurrent(root$jscomp$0,lanes):renderRootSync(root$jscomp$0,lanes,!0),renderWasConcurrent=shouldTimeSlice;do{if(exitStatus===0){workInProgressRootIsPrerendering&&!shouldTimeSlice&&markRootSuspended(root$jscomp$0,lanes,0,!1);break}else{if(forceSync=root$jscomp$0.current.alternate,renderWasConcurrent&&!isRenderConsistentWithExternalStores(forceSync)){exitStatus=renderRootSync(root$jscomp$0,lanes,!1),renderWasConcurrent=!1;continue}if(exitStatus===2){if(renderWasConcurrent=lanes,root$jscomp$0.errorRecoveryDisabledLanes&renderWasConcurrent)var JSCompiler_inline_result=0;else JSCompiler_inline_result=root$jscomp$0.pendingLanes&-536870913,JSCompiler_inline_result=JSCompiler_inline_result!==0?JSCompiler_inline_result:JSCompiler_inline_result&536870912?536870912:0;if(JSCompiler_inline_result!==0){lanes=JSCompiler_inline_result;a:{var root=root$jscomp$0;exitStatus=workInProgressRootConcurrentErrors;var wasRootDehydrated=supportsHydration&&root.current.memoizedState.isDehydrated;if(wasRootDehydrated&&(prepareFreshStack(root,JSCompiler_inline_result).flags|=256),JSCompiler_inline_result=renderRootSync(root,JSCompiler_inline_result,!1),JSCompiler_inline_result!==2){if(workInProgressRootDidAttachPingListener&&!wasRootDehydrated){root.errorRecoveryDisabledLanes|=renderWasConcurrent,workInProgressRootInterleavedUpdatedLanes|=renderWasConcurrent,exitStatus=4;break a}renderWasConcurrent=workInProgressRootRecoverableErrors,workInProgressRootRecoverableErrors=exitStatus,renderWasConcurrent!==null&&(workInProgressRootRecoverableErrors===null?workInProgressRootRecoverableErrors=renderWasConcurrent:workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors,renderWasConcurrent))}exitStatus=JSCompiler_inline_result}if(renderWasConcurrent=!1,exitStatus!==2)continue}}if(exitStatus===1){prepareFreshStack(root$jscomp$0,0),markRootSuspended(root$jscomp$0,lanes,0,!0);break}a:{switch(shouldTimeSlice=root$jscomp$0,renderWasConcurrent=exitStatus,renderWasConcurrent){case 0:case 1:throw Error(formatProdErrorMessage(345));case 4:if((lanes&4194048)!==lanes)break;case 6:markRootSuspended(shouldTimeSlice,lanes,workInProgressDeferredLane,!workInProgressRootDidSkipSuspendedSiblings);break a;case 2:workInProgressRootRecoverableErrors=null;break;case 3:case 5:break;default:throw Error(formatProdErrorMessage(329))}if((lanes&62914560)===lanes&&(exitStatus=globalMostRecentFallbackTime+300-now(),10<exitStatus)){if(markRootSuspended(shouldTimeSlice,lanes,workInProgressDeferredLane,!workInProgressRootDidSkipSuspendedSiblings),getNextLanes(shouldTimeSlice,0,!0)!==0)break a;pendingEffectsLanes=lanes,shouldTimeSlice.timeoutHandle=scheduleTimeout(commitRootWhenReady.bind(null,shouldTimeSlice,forceSync,workInProgressRootRecoverableErrors,workInProgressTransitions,workInProgressRootDidIncludeRecursiveRenderUpdate,lanes,workInProgressDeferredLane,workInProgressRootInterleavedUpdatedLanes,workInProgressSuspendedRetryLanes,workInProgressRootDidSkipSuspendedSiblings,renderWasConcurrent,"Throttled",-0,0),exitStatus);break a}commitRootWhenReady(shouldTimeSlice,forceSync,workInProgressRootRecoverableErrors,workInProgressTransitions,workInProgressRootDidIncludeRecursiveRenderUpdate,lanes,workInProgressDeferredLane,workInProgressRootInterleavedUpdatedLanes,workInProgressSuspendedRetryLanes,workInProgressRootDidSkipSuspendedSiblings,renderWasConcurrent,null,-0,0)}}break}while(1);ensureRootIsScheduled(root$jscomp$0)}function commitRootWhenReady(root,finishedWork,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,lanes,spawnedLane,updatedLanes,suspendedRetryLanes,didSkipSuspendedSiblings,exitStatus,suspendedCommitReason,completedRenderStartTime,completedRenderEndTime){if(root.timeoutHandle=noTimeout,suspendedCommitReason=finishedWork.subtreeFlags,suspendedCommitReason&8192||(suspendedCommitReason&16785408)===16785408){suspendedCommitReason=startSuspendingCommit(),accumulateSuspenseyCommitOnFiber(finishedWork,lanes,suspendedCommitReason);var timeoutOffset=(lanes&62914560)===lanes?globalMostRecentFallbackTime-now():(lanes&4194048)===lanes?globalMostRecentTransitionTime-now():0;if(timeoutOffset=waitForCommitToBeReady(suspendedCommitReason,timeoutOffset),timeoutOffset!==null){pendingEffectsLanes=lanes,root.cancelPendingCommit=timeoutOffset(commitRoot.bind(null,root,finishedWork,lanes,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes,exitStatus,suspendedCommitReason,null,completedRenderStartTime,completedRenderEndTime)),markRootSuspended(root,lanes,spawnedLane,!didSkipSuspendedSiblings);return}}commitRoot(root,finishedWork,lanes,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes)}function isRenderConsistentWithExternalStores(finishedWork){for(var node=finishedWork;;){var tag=node.tag;if((tag===0||tag===11||tag===15)&&node.flags&16384&&(tag=node.updateQueue,tag!==null&&(tag=tag.stores,tag!==null)))for(var i=0;i<tag.length;i++){var check=tag[i],getSnapshot=check.getSnapshot;check=check.value;try{if(!objectIs(getSnapshot(),check))return!1}catch(error){return!1}}if(tag=node.child,node.subtreeFlags&16384&&tag!==null)tag.return=node,node=tag;else{if(node===finishedWork)break;for(;node.sibling===null;){if(node.return===null||node.return===finishedWork)return!0;node=node.return}node.sibling.return=node.return,node=node.sibling}}return!0}function markRootSuspended(root,suspendedLanes,spawnedLane,didAttemptEntireTree){suspendedLanes&=~workInProgressRootPingedLanes,suspendedLanes&=~workInProgressRootInterleavedUpdatedLanes,root.suspendedLanes|=suspendedLanes,root.pingedLanes&=~suspendedLanes,didAttemptEntireTree&&(root.warmLanes|=suspendedLanes),didAttemptEntireTree=root.expirationTimes;for(var lanes=suspendedLanes;0<lanes;){var index$4=31-clz32(lanes),lane=1<<index$4;didAttemptEntireTree[index$4]=-1,lanes&=~lane}spawnedLane!==0&&markSpawnedDeferredLane(root,spawnedLane,suspendedLanes)}function flushSyncWork(){return(executionContext&6)===0?(flushSyncWorkAcrossRoots_impl(0,!1),!1):!0}function resetWorkInProgressStack(){if(workInProgress!==null){if(workInProgressSuspendedReason===0)var interruptedWork=workInProgress.return;else interruptedWork=workInProgress,lastContextDependency=currentlyRenderingFiber$1=null,resetHooksOnUnwind(interruptedWork),thenableState$1=null,thenableIndexCounter$1=0,interruptedWork=workInProgress;for(;interruptedWork!==null;)unwindInterruptedWork(interruptedWork.alternate,interruptedWork),interruptedWork=interruptedWork.return;workInProgress=null}}function prepareFreshStack(root,lanes){var timeoutHandle=root.timeoutHandle;timeoutHandle!==noTimeout&&(root.timeoutHandle=noTimeout,cancelTimeout(timeoutHandle)),timeoutHandle=root.cancelPendingCommit,timeoutHandle!==null&&(root.cancelPendingCommit=null,timeoutHandle()),pendingEffectsLanes=0,resetWorkInProgressStack(),workInProgressRoot=root,workInProgress=timeoutHandle=createWorkInProgress(root.current,null),workInProgressRootRenderLanes=lanes,workInProgressSuspendedReason=0,workInProgressThrownValue=null,workInProgressRootDidSkipSuspendedSiblings=!1,workInProgressRootIsPrerendering=checkIfRootIsPrerendering(root,lanes),workInProgressRootDidAttachPingListener=!1,workInProgressSuspendedRetryLanes=workInProgressDeferredLane=workInProgressRootPingedLanes=workInProgressRootInterleavedUpdatedLanes=workInProgressRootSkippedLanes=workInProgressRootExitStatus=0,workInProgressRootRecoverableErrors=workInProgressRootConcurrentErrors=null,workInProgressRootDidIncludeRecursiveRenderUpdate=!1,(lanes&8)!==0&&(lanes|=lanes&32);var allEntangledLanes=root.entangledLanes;if(allEntangledLanes!==0)for(root=root.entanglements,allEntangledLanes&=lanes;0<allEntangledLanes;){var index$2=31-clz32(allEntangledLanes),lane=1<<index$2;lanes|=root[index$2],allEntangledLanes&=~lane}return entangledRenderLanes=lanes,finishQueueingConcurrentUpdates(),timeoutHandle}function handleThrow(root,thrownValue){currentlyRenderingFiber=null,ReactSharedInternals.H=ContextOnlyDispatcher,thrownValue===SuspenseException||thrownValue===SuspenseActionException?(thrownValue=getSuspendedThenable(),workInProgressSuspendedReason=3):thrownValue===SuspenseyCommitException?(thrownValue=getSuspendedThenable(),workInProgressSuspendedReason=4):workInProgressSuspendedReason=thrownValue===SelectiveHydrationException?8:thrownValue!==null&&typeof thrownValue==="object"&&typeof thrownValue.then==="function"?6:1,workInProgressThrownValue=thrownValue,workInProgress===null&&(workInProgressRootExitStatus=1,logUncaughtError(root,createCapturedValueAtFiber(thrownValue,root.current)))}function shouldRemainOnPreviousScreen(){var handler=suspenseHandlerStackCursor.current;return handler===null?!0:(workInProgressRootRenderLanes&4194048)===workInProgressRootRenderLanes?shellBoundary===null?!0:!1:(workInProgressRootRenderLanes&62914560)===workInProgressRootRenderLanes||(workInProgressRootRenderLanes&536870912)!==0?handler===shellBoundary:!1}function pushDispatcher(){var prevDispatcher=ReactSharedInternals.H;return ReactSharedInternals.H=ContextOnlyDispatcher,prevDispatcher===null?ContextOnlyDispatcher:prevDispatcher}function pushAsyncDispatcher(){var prevAsyncDispatcher=ReactSharedInternals.A;return ReactSharedInternals.A=DefaultAsyncDispatcher,prevAsyncDispatcher}function renderDidSuspendDelayIfPossible(){workInProgressRootExitStatus=4,workInProgressRootDidSkipSuspendedSiblings||(workInProgressRootRenderLanes&4194048)!==workInProgressRootRenderLanes&&suspenseHandlerStackCursor.current!==null||(workInProgressRootIsPrerendering=!0),(workInProgressRootSkippedLanes&134217727)===0&&(workInProgressRootInterleavedUpdatedLanes&134217727)===0||workInProgressRoot===null||markRootSuspended(workInProgressRoot,workInProgressRootRenderLanes,workInProgressDeferredLane,!1)}function renderRootSync(root,lanes,shouldYieldForPrerendering){var prevExecutionContext=executionContext;executionContext|=2;var prevDispatcher=pushDispatcher(),prevAsyncDispatcher=pushAsyncDispatcher();if(workInProgressRoot!==root||workInProgressRootRenderLanes!==lanes)workInProgressTransitions=null,prepareFreshStack(root,lanes);lanes=!1;var exitStatus=workInProgressRootExitStatus;a:do try{if(workInProgressSuspendedReason!==0&&workInProgress!==null){var unitOfWork=workInProgress,thrownValue=workInProgressThrownValue;switch(workInProgressSuspendedReason){case 8:resetWorkInProgressStack(),exitStatus=6;break a;case 3:case 2:case 9:case 6:suspenseHandlerStackCursor.current===null&&(lanes=!0);var reason=workInProgressSuspendedReason;if(workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,unitOfWork,thrownValue,reason),shouldYieldForPrerendering&&workInProgressRootIsPrerendering){exitStatus=0;break a}break;default:reason=workInProgressSuspendedReason,workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,unitOfWork,thrownValue,reason)}}workLoopSync(),exitStatus=workInProgressRootExitStatus;break}catch(thrownValue$152){handleThrow(root,thrownValue$152)}while(1);return lanes&&root.shellSuspendCounter++,lastContextDependency=currentlyRenderingFiber$1=null,executionContext=prevExecutionContext,ReactSharedInternals.H=prevDispatcher,ReactSharedInternals.A=prevAsyncDispatcher,workInProgress===null&&(workInProgressRoot=null,workInProgressRootRenderLanes=0,finishQueueingConcurrentUpdates()),exitStatus}function workLoopSync(){for(;workInProgress!==null;)performUnitOfWork(workInProgress)}function renderRootConcurrent(root,lanes){var prevExecutionContext=executionContext;executionContext|=2;var prevDispatcher=pushDispatcher(),prevAsyncDispatcher=pushAsyncDispatcher();workInProgressRoot!==root||workInProgressRootRenderLanes!==lanes?(workInProgressTransitions=null,workInProgressRootRenderTargetTime=now()+500,prepareFreshStack(root,lanes)):workInProgressRootIsPrerendering=checkIfRootIsPrerendering(root,lanes);a:do try{if(workInProgressSuspendedReason!==0&&workInProgress!==null){lanes=workInProgress;var thrownValue=workInProgressThrownValue;b:switch(workInProgressSuspendedReason){case 1:workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,1);break;case 2:case 9:if(isThenableResolved(thrownValue)){workInProgressSuspendedReason=0,workInProgressThrownValue=null,replaySuspendedUnitOfWork(lanes);break}lanes=function(){workInProgressSuspendedReason!==2&&workInProgressSuspendedReason!==9||workInProgressRoot!==root||(workInProgressSuspendedReason=7),ensureRootIsScheduled(root)},thrownValue.then(lanes,lanes);break a;case 3:workInProgressSuspendedReason=7;break a;case 4:workInProgressSuspendedReason=5;break a;case 7:isThenableResolved(thrownValue)?(workInProgressSuspendedReason=0,workInProgressThrownValue=null,replaySuspendedUnitOfWork(lanes)):(workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,7));break;case 5:var resource=null;switch(workInProgress.tag){case 26:resource=workInProgress.memoizedState;case 5:case 27:var hostFiber=workInProgress,type=hostFiber.type,props=hostFiber.pendingProps;if(resource?preloadResource(resource):preloadInstance(hostFiber.stateNode,type,props)){workInProgressSuspendedReason=0,workInProgressThrownValue=null;var sibling=hostFiber.sibling;if(sibling!==null)workInProgress=sibling;else{var returnFiber=hostFiber.return;returnFiber!==null?(workInProgress=returnFiber,completeUnitOfWork(returnFiber)):workInProgress=null}break b}}workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,5);break;case 6:workInProgressSuspendedReason=0,workInProgressThrownValue=null,throwAndUnwindWorkLoop(root,lanes,thrownValue,6);break;case 8:resetWorkInProgressStack(),workInProgressRootExitStatus=6;break a;default:throw Error(formatProdErrorMessage(462))}}workLoopConcurrentByScheduler();break}catch(thrownValue$154){handleThrow(root,thrownValue$154)}while(1);if(lastContextDependency=currentlyRenderingFiber$1=null,ReactSharedInternals.H=prevDispatcher,ReactSharedInternals.A=prevAsyncDispatcher,executionContext=prevExecutionContext,workInProgress!==null)return 0;return workInProgressRoot=null,workInProgressRootRenderLanes=0,finishQueueingConcurrentUpdates(),workInProgressRootExitStatus}function workLoopConcurrentByScheduler(){for(;workInProgress!==null&&!shouldYield();)performUnitOfWork(workInProgress)}function performUnitOfWork(unitOfWork){var next=beginWork(unitOfWork.alternate,unitOfWork,entangledRenderLanes);unitOfWork.memoizedProps=unitOfWork.pendingProps,next===null?completeUnitOfWork(unitOfWork):workInProgress=next}function replaySuspendedUnitOfWork(unitOfWork){var next=unitOfWork,current=next.alternate;switch(next.tag){case 15:case 0:next=replayFunctionComponent(current,next,next.pendingProps,next.type,void 0,workInProgressRootRenderLanes);break;case 11:next=replayFunctionComponent(current,next,next.pendingProps,next.type.render,next.ref,workInProgressRootRenderLanes);break;case 5:resetHooksOnUnwind(next);default:unwindInterruptedWork(current,next),next=workInProgress=resetWorkInProgress(next,entangledRenderLanes),next=beginWork(current,next,entangledRenderLanes)}unitOfWork.memoizedProps=unitOfWork.pendingProps,next===null?completeUnitOfWork(unitOfWork):workInProgress=next}function throwAndUnwindWorkLoop(root,unitOfWork,thrownValue,suspendedReason){lastContextDependency=currentlyRenderingFiber$1=null,resetHooksOnUnwind(unitOfWork),thenableState$1=null,thenableIndexCounter$1=0;var returnFiber=unitOfWork.return;try{if(throwException(root,returnFiber,unitOfWork,thrownValue,workInProgressRootRenderLanes)){workInProgressRootExitStatus=1,logUncaughtError(root,createCapturedValueAtFiber(thrownValue,root.current)),workInProgress=null;return}}catch(error){if(returnFiber!==null)throw workInProgress=returnFiber,error;workInProgressRootExitStatus=1,logUncaughtError(root,createCapturedValueAtFiber(thrownValue,root.current)),workInProgress=null;return}if(unitOfWork.flags&32768){if(isHydrating||suspendedReason===1)root=!0;else if(workInProgressRootIsPrerendering||(workInProgressRootRenderLanes&536870912)!==0)root=!1;else if(workInProgressRootDidSkipSuspendedSiblings=root=!0,suspendedReason===2||suspendedReason===9||suspendedReason===3||suspendedReason===6)suspendedReason=suspenseHandlerStackCursor.current,suspendedReason!==null&&suspendedReason.tag===13&&(suspendedReason.flags|=16384);unwindUnitOfWork(unitOfWork,root)}else completeUnitOfWork(unitOfWork)}function completeUnitOfWork(unitOfWork){var completedWork=unitOfWork;do{if((completedWork.flags&32768)!==0){unwindUnitOfWork(completedWork,workInProgressRootDidSkipSuspendedSiblings);return}unitOfWork=completedWork.return;var next=completeWork(completedWork.alternate,completedWork,entangledRenderLanes);if(next!==null){workInProgress=next;return}if(completedWork=completedWork.sibling,completedWork!==null){workInProgress=completedWork;return}workInProgress=completedWork=unitOfWork}while(completedWork!==null);workInProgressRootExitStatus===0&&(workInProgressRootExitStatus=5)}function unwindUnitOfWork(unitOfWork,skipSiblings){do{var next=unwindWork(unitOfWork.alternate,unitOfWork);if(next!==null){next.flags&=32767,workInProgress=next;return}if(next=unitOfWork.return,next!==null&&(next.flags|=32768,next.subtreeFlags=0,next.deletions=null),!skipSiblings&&(unitOfWork=unitOfWork.sibling,unitOfWork!==null)){workInProgress=unitOfWork;return}workInProgress=unitOfWork=next}while(unitOfWork!==null);workInProgressRootExitStatus=6,workInProgress=null}function commitRoot(root,finishedWork,lanes,recoverableErrors,transitions,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes){root.cancelPendingCommit=null;do flushPendingEffects();while(pendingEffectsStatus!==0);if((executionContext&6)!==0)throw Error(formatProdErrorMessage(327));if(finishedWork!==null){if(finishedWork===root.current)throw Error(formatProdErrorMessage(177));if(didIncludeRenderPhaseUpdate=finishedWork.lanes|finishedWork.childLanes,didIncludeRenderPhaseUpdate|=concurrentlyUpdatedLanes,markRootFinished(root,lanes,didIncludeRenderPhaseUpdate,spawnedLane,updatedLanes,suspendedRetryLanes),root===workInProgressRoot&&(workInProgress=workInProgressRoot=null,workInProgressRootRenderLanes=0),pendingFinishedWork=finishedWork,pendingEffectsRoot=root,pendingEffectsLanes=lanes,pendingEffectsRemainingLanes=didIncludeRenderPhaseUpdate,pendingPassiveTransitions=transitions,pendingRecoverableErrors=recoverableErrors,(finishedWork.subtreeFlags&10256)!==0||(finishedWork.flags&10256)!==0?(root.callbackNode=null,root.callbackPriority=0,scheduleCallback(NormalPriority$1,function(){return flushPassiveEffects(),null})):(root.callbackNode=null,root.callbackPriority=0),recoverableErrors=(finishedWork.flags&13878)!==0,(finishedWork.subtreeFlags&13878)!==0||recoverableErrors){recoverableErrors=ReactSharedInternals.T,ReactSharedInternals.T=null,transitions=getCurrentUpdatePriority(),setCurrentUpdatePriority(2),spawnedLane=executionContext,executionContext|=4;try{commitBeforeMutationEffects(root,finishedWork,lanes)}finally{executionContext=spawnedLane,setCurrentUpdatePriority(transitions),ReactSharedInternals.T=recoverableErrors}}pendingEffectsStatus=1,flushMutationEffects(),flushLayoutEffects(),flushSpawnedWork()}}function flushMutationEffects(){if(pendingEffectsStatus===1){pendingEffectsStatus=0;var root=pendingEffectsRoot,finishedWork=pendingFinishedWork,rootMutationHasEffect=(finishedWork.flags&13878)!==0;if((finishedWork.subtreeFlags&13878)!==0||rootMutationHasEffect){rootMutationHasEffect=ReactSharedInternals.T,ReactSharedInternals.T=null;var previousPriority=getCurrentUpdatePriority();setCurrentUpdatePriority(2);var prevExecutionContext=executionContext;executionContext|=4;try{commitMutationEffectsOnFiber(finishedWork,root),resetAfterCommit(root.containerInfo)}finally{executionContext=prevExecutionContext,setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=rootMutationHasEffect}}root.current=finishedWork,pendingEffectsStatus=2}}function flushLayoutEffects(){if(pendingEffectsStatus===2){pendingEffectsStatus=0;var root=pendingEffectsRoot,finishedWork=pendingFinishedWork,rootHasLayoutEffect=(finishedWork.flags&8772)!==0;if((finishedWork.subtreeFlags&8772)!==0||rootHasLayoutEffect){rootHasLayoutEffect=ReactSharedInternals.T,ReactSharedInternals.T=null;var previousPriority=getCurrentUpdatePriority();setCurrentUpdatePriority(2);var prevExecutionContext=executionContext;executionContext|=4;try{commitLayoutEffectOnFiber(root,finishedWork.alternate,finishedWork)}finally{executionContext=prevExecutionContext,setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=rootHasLayoutEffect}}pendingEffectsStatus=3}}function flushSpawnedWork(){if(pendingEffectsStatus===4||pendingEffectsStatus===3){pendingEffectsStatus=0,requestPaint();var root=pendingEffectsRoot,finishedWork=pendingFinishedWork,lanes=pendingEffectsLanes,recoverableErrors=pendingRecoverableErrors;(finishedWork.subtreeFlags&10256)!==0||(finishedWork.flags&10256)!==0?pendingEffectsStatus=5:(pendingEffectsStatus=0,pendingFinishedWork=pendingEffectsRoot=null,releaseRootPooledCache(root,root.pendingLanes));var remainingLanes=root.pendingLanes;if(remainingLanes===0&&(legacyErrorBoundariesThatAlreadyFailed=null),lanesToEventPriority(lanes),finishedWork=finishedWork.stateNode,injectedHook&&typeof injectedHook.onCommitFiberRoot==="function")try{injectedHook.onCommitFiberRoot(rendererID,finishedWork,void 0,(finishedWork.current.flags&128)===128)}catch(err){}if(recoverableErrors!==null){finishedWork=ReactSharedInternals.T,remainingLanes=getCurrentUpdatePriority(),setCurrentUpdatePriority(2),ReactSharedInternals.T=null;try{for(var onRecoverableError=root.onRecoverableError,i=0;i<recoverableErrors.length;i++){var recoverableError=recoverableErrors[i];onRecoverableError(recoverableError.value,{componentStack:recoverableError.stack})}}finally{ReactSharedInternals.T=finishedWork,setCurrentUpdatePriority(remainingLanes)}}(pendingEffectsLanes&3)!==0&&flushPendingEffects(),ensureRootIsScheduled(root),remainingLanes=root.pendingLanes,(lanes&261930)!==0&&(remainingLanes&42)!==0?root===rootWithNestedUpdates?nestedUpdateCount++:(nestedUpdateCount=0,rootWithNestedUpdates=root):nestedUpdateCount=0,supportsHydration&&flushHydrationEvents(),flushSyncWorkAcrossRoots_impl(0,!1)}}function releaseRootPooledCache(root,remainingLanes){(root.pooledCacheLanes&=remainingLanes)===0&&(remainingLanes=root.pooledCache,remainingLanes!=null&&(root.pooledCache=null,releaseCache(remainingLanes)))}function flushPendingEffects(){return flushMutationEffects(),flushLayoutEffects(),flushSpawnedWork(),flushPassiveEffects()}function flushPassiveEffects(){if(pendingEffectsStatus!==5)return!1;var root=pendingEffectsRoot,remainingLanes=pendingEffectsRemainingLanes;pendingEffectsRemainingLanes=0;var renderPriority=lanesToEventPriority(pendingEffectsLanes),priority=32>renderPriority?32:renderPriority;renderPriority=ReactSharedInternals.T;var previousPriority=getCurrentUpdatePriority();try{setCurrentUpdatePriority(priority),ReactSharedInternals.T=null,priority=pendingPassiveTransitions,pendingPassiveTransitions=null;var root$jscomp$0=pendingEffectsRoot,lanes=pendingEffectsLanes;if(pendingEffectsStatus=0,pendingFinishedWork=pendingEffectsRoot=null,pendingEffectsLanes=0,(executionContext&6)!==0)throw Error(formatProdErrorMessage(331));var prevExecutionContext=executionContext;if(executionContext|=4,commitPassiveUnmountOnFiber(root$jscomp$0.current),commitPassiveMountOnFiber(root$jscomp$0,root$jscomp$0.current,lanes,priority),executionContext=prevExecutionContext,flushSyncWorkAcrossRoots_impl(0,!1),injectedHook&&typeof injectedHook.onPostCommitFiberRoot==="function")try{injectedHook.onPostCommitFiberRoot(rendererID,root$jscomp$0)}catch(err){}return!0}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=renderPriority,releaseRootPooledCache(root,remainingLanes)}}function captureCommitPhaseErrorOnRoot(rootFiber,sourceFiber,error){sourceFiber=createCapturedValueAtFiber(error,sourceFiber),sourceFiber=createRootErrorUpdate(rootFiber.stateNode,sourceFiber,2),rootFiber=enqueueUpdate(rootFiber,sourceFiber,2),rootFiber!==null&&(markRootUpdated$1(rootFiber,2),ensureRootIsScheduled(rootFiber))}function captureCommitPhaseError(sourceFiber,nearestMountedAncestor,error){if(sourceFiber.tag===3)captureCommitPhaseErrorOnRoot(sourceFiber,sourceFiber,error);else for(;nearestMountedAncestor!==null;){if(nearestMountedAncestor.tag===3){captureCommitPhaseErrorOnRoot(nearestMountedAncestor,sourceFiber,error);break}else if(nearestMountedAncestor.tag===1){var instance=nearestMountedAncestor.stateNode;if(typeof nearestMountedAncestor.type.getDerivedStateFromError==="function"||typeof instance.componentDidCatch==="function"&&(legacyErrorBoundariesThatAlreadyFailed===null||!legacyErrorBoundariesThatAlreadyFailed.has(instance))){sourceFiber=createCapturedValueAtFiber(error,sourceFiber),error=createClassErrorUpdate(2),instance=enqueueUpdate(nearestMountedAncestor,error,2),instance!==null&&(initializeClassErrorUpdate(error,instance,nearestMountedAncestor,sourceFiber),markRootUpdated$1(instance,2),ensureRootIsScheduled(instance));break}}nearestMountedAncestor=nearestMountedAncestor.return}}function attachPingListener(root,wakeable,lanes){var pingCache=root.pingCache;if(pingCache===null){pingCache=root.pingCache=new PossiblyWeakMap;var threadIDs=new Set;pingCache.set(wakeable,threadIDs)}else threadIDs=pingCache.get(wakeable),threadIDs===void 0&&(threadIDs=new Set,pingCache.set(wakeable,threadIDs));threadIDs.has(lanes)||(workInProgressRootDidAttachPingListener=!0,threadIDs.add(lanes),root=pingSuspendedRoot.bind(null,root,wakeable,lanes),wakeable.then(root,root))}function pingSuspendedRoot(root,wakeable,pingedLanes){var pingCache=root.pingCache;pingCache!==null&&pingCache.delete(wakeable),root.pingedLanes|=root.suspendedLanes&pingedLanes,root.warmLanes&=~pingedLanes,workInProgressRoot===root&&(workInProgressRootRenderLanes&pingedLanes)===pingedLanes&&(workInProgressRootExitStatus===4||workInProgressRootExitStatus===3&&(workInProgressRootRenderLanes&62914560)===workInProgressRootRenderLanes&&300>now()-globalMostRecentFallbackTime?(executionContext&2)===0&&prepareFreshStack(root,0):workInProgressRootPingedLanes|=pingedLanes,workInProgressSuspendedRetryLanes===workInProgressRootRenderLanes&&(workInProgressSuspendedRetryLanes=0)),ensureRootIsScheduled(root)}function retryTimedOutBoundary(boundaryFiber,retryLane){retryLane===0&&(retryLane=claimNextRetryLane()),boundaryFiber=enqueueConcurrentRenderForLane(boundaryFiber,retryLane),boundaryFiber!==null&&(markRootUpdated$1(boundaryFiber,retryLane),ensureRootIsScheduled(boundaryFiber))}function retryDehydratedSuspenseBoundary(boundaryFiber){var suspenseState=boundaryFiber.memoizedState,retryLane=0;suspenseState!==null&&(retryLane=suspenseState.retryLane),retryTimedOutBoundary(boundaryFiber,retryLane)}function resolveRetryWakeable(boundaryFiber,wakeable){var retryLane=0;switch(boundaryFiber.tag){case 31:case 13:var{stateNode:retryCache,memoizedState:suspenseState}=boundaryFiber;suspenseState!==null&&(retryLane=suspenseState.retryLane);break;case 19:retryCache=boundaryFiber.stateNode;break;case 22:retryCache=boundaryFiber.stateNode._retryCache;break;default:throw Error(formatProdErrorMessage(314))}retryCache!==null&&retryCache.delete(wakeable),retryTimedOutBoundary(boundaryFiber,retryLane)}function scheduleCallback(priorityLevel,callback){return scheduleCallback$3(priorityLevel,callback)}function FiberNode(tag,pendingProps,key,mode){this.tag=tag,this.key=key,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=pendingProps,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=mode,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function shouldConstruct(Component){return Component=Component.prototype,!(!Component||!Component.isReactComponent)}function createWorkInProgress(current,pendingProps){var workInProgress2=current.alternate;return workInProgress2===null?(workInProgress2=createFiber(current.tag,pendingProps,current.key,current.mode),workInProgress2.elementType=current.elementType,workInProgress2.type=current.type,workInProgress2.stateNode=current.stateNode,workInProgress2.alternate=current,current.alternate=workInProgress2):(workInProgress2.pendingProps=pendingProps,workInProgress2.type=current.type,workInProgress2.flags=0,workInProgress2.subtreeFlags=0,workInProgress2.deletions=null),workInProgress2.flags=current.flags&65011712,workInProgress2.childLanes=current.childLanes,workInProgress2.lanes=current.lanes,workInProgress2.child=current.child,workInProgress2.memoizedProps=current.memoizedProps,workInProgress2.memoizedState=current.memoizedState,workInProgress2.updateQueue=current.updateQueue,pendingProps=current.dependencies,workInProgress2.dependencies=pendingProps===null?null:{lanes:pendingProps.lanes,firstContext:pendingProps.firstContext},workInProgress2.sibling=current.sibling,workInProgress2.index=current.index,workInProgress2.ref=current.ref,workInProgress2.refCleanup=current.refCleanup,workInProgress2}function resetWorkInProgress(workInProgress2,renderLanes2){workInProgress2.flags&=65011714;var current=workInProgress2.alternate;return current===null?(workInProgress2.childLanes=0,workInProgress2.lanes=renderLanes2,workInProgress2.child=null,workInProgress2.subtreeFlags=0,workInProgress2.memoizedProps=null,workInProgress2.memoizedState=null,workInProgress2.updateQueue=null,workInProgress2.dependencies=null,workInProgress2.stateNode=null):(workInProgress2.childLanes=current.childLanes,workInProgress2.lanes=current.lanes,workInProgress2.child=current.child,workInProgress2.subtreeFlags=0,workInProgress2.deletions=null,workInProgress2.memoizedProps=current.memoizedProps,workInProgress2.memoizedState=current.memoizedState,workInProgress2.updateQueue=current.updateQueue,workInProgress2.type=current.type,renderLanes2=current.dependencies,workInProgress2.dependencies=renderLanes2===null?null:{lanes:renderLanes2.lanes,firstContext:renderLanes2.firstContext}),workInProgress2}function createFiberFromTypeAndProps(type,key,pendingProps,owner,mode,lanes){var fiberTag=0;if(owner=type,typeof type==="function")shouldConstruct(type)&&(fiberTag=1);else if(typeof type==="string")fiberTag=supportsResources&&supportsSingletons?isHostHoistableType(type,pendingProps,contextStackCursor.current)?26:isHostSingletonType(type)?27:5:supportsResources?isHostHoistableType(type,pendingProps,contextStackCursor.current)?26:5:supportsSingletons?isHostSingletonType(type)?27:5:5;else a:switch(type){case REACT_ACTIVITY_TYPE:return type=createFiber(31,pendingProps,key,mode),type.elementType=REACT_ACTIVITY_TYPE,type.lanes=lanes,type;case REACT_FRAGMENT_TYPE2:return createFiberFromFragment(pendingProps.children,mode,lanes,key);case REACT_STRICT_MODE_TYPE:fiberTag=8,mode|=24;break;case REACT_PROFILER_TYPE:return type=createFiber(12,pendingProps,key,mode|2),type.elementType=REACT_PROFILER_TYPE,type.lanes=lanes,type;case REACT_SUSPENSE_TYPE:return type=createFiber(13,pendingProps,key,mode),type.elementType=REACT_SUSPENSE_TYPE,type.lanes=lanes,type;case REACT_SUSPENSE_LIST_TYPE:return type=createFiber(19,pendingProps,key,mode),type.elementType=REACT_SUSPENSE_LIST_TYPE,type.lanes=lanes,type;default:if(typeof type==="object"&&type!==null)switch(type.$$typeof){case REACT_CONTEXT_TYPE:fiberTag=10;break a;case REACT_CONSUMER_TYPE:fiberTag=9;break a;case REACT_FORWARD_REF_TYPE:fiberTag=11;break a;case REACT_MEMO_TYPE:fiberTag=14;break a;case REACT_LAZY_TYPE:fiberTag=16,owner=null;break a}fiberTag=29,pendingProps=Error(formatProdErrorMessage(130,type===null?"null":typeof type,"")),owner=null}return key=createFiber(fiberTag,pendingProps,key,mode),key.elementType=type,key.type=owner,key.lanes=lanes,key}function createFiberFromFragment(elements,mode,lanes,key){return elements=createFiber(7,elements,key,mode),elements.lanes=lanes,elements}function createFiberFromText(content,mode,lanes){return content=createFiber(6,content,null,mode),content.lanes=lanes,content}function createFiberFromDehydratedFragment(dehydratedNode){var fiber=createFiber(18,null,null,0);return fiber.stateNode=dehydratedNode,fiber}function createFiberFromPortal(portal,mode,lanes){return mode=createFiber(4,portal.children!==null?portal.children:[],portal.key,mode),mode.lanes=lanes,mode.stateNode={containerInfo:portal.containerInfo,pendingChildren:null,implementation:portal.implementation},mode}function FiberRootNode(containerInfo,tag,hydrate,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator,formState){this.tag=1,this.containerInfo=containerInfo,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=noTimeout,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=createLaneMap(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=createLaneMap(0),this.hiddenUpdates=createLaneMap(null),this.identifierPrefix=identifierPrefix,this.onUncaughtError=onUncaughtError,this.onCaughtError=onCaughtError,this.onRecoverableError=onRecoverableError,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=formState,this.incompleteTransitions=new Map}function createFiberRoot(containerInfo,tag,hydrate,initialChildren,hydrationCallbacks,isStrictMode,identifierPrefix,formState,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator){return containerInfo=new FiberRootNode(containerInfo,tag,hydrate,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator,formState),tag=1,isStrictMode===!0&&(tag|=24),isStrictMode=createFiber(3,null,null,tag),containerInfo.current=isStrictMode,isStrictMode.stateNode=containerInfo,tag=createCache(),tag.refCount++,containerInfo.pooledCache=tag,tag.refCount++,isStrictMode.memoizedState={element:initialChildren,isDehydrated:hydrate,cache:tag},initializeUpdateQueue(isStrictMode),containerInfo}function getContextForSubtree(parentComponent){if(!parentComponent)return emptyContextObject;return parentComponent=emptyContextObject,parentComponent}function findHostInstance(component){var fiber=component._reactInternals;if(fiber===void 0){if(typeof component.render==="function")throw Error(formatProdErrorMessage(188));throw component=Object.keys(component).join(","),Error(formatProdErrorMessage(268,component))}return component=findCurrentFiberUsingSlowPath(fiber),component=component!==null?findCurrentHostFiberImpl(component):null,component===null?null:getPublicInstance(component.stateNode)}function updateContainerImpl(rootFiber,lane,element,container,parentComponent,callback){parentComponent=getContextForSubtree(parentComponent),container.context===null?container.context=parentComponent:container.pendingContext=parentComponent,container=createUpdate(lane),container.payload={element},callback=callback===void 0?null:callback,callback!==null&&(container.callback=callback),element=enqueueUpdate(rootFiber,container,lane),element!==null&&(scheduleUpdateOnFiber(element,rootFiber,lane),entangleTransitions(element,rootFiber,lane))}function markRetryLaneImpl(fiber,retryLane){if(fiber=fiber.memoizedState,fiber!==null&&fiber.dehydrated!==null){var a=fiber.retryLane;fiber.retryLane=a!==0&&a<retryLane?a:retryLane}}function markRetryLaneIfNotHydrated(fiber,retryLane){markRetryLaneImpl(fiber,retryLane),(fiber=fiber.alternate)&&markRetryLaneImpl(fiber,retryLane)}var exports2={},assign=Object.assign,REACT_LEGACY_ELEMENT_TYPE=Symbol.for("react.element"),REACT_ELEMENT_TYPE2=Symbol.for("react.transitional.element"),REACT_PORTAL_TYPE=Symbol.for("react.portal"),REACT_FRAGMENT_TYPE2=Symbol.for("react.fragment"),REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode"),REACT_PROFILER_TYPE=Symbol.for("react.profiler"),REACT_CONSUMER_TYPE=Symbol.for("react.consumer"),REACT_CONTEXT_TYPE=Symbol.for("react.context"),REACT_FORWARD_REF_TYPE=Symbol.for("react.forward_ref"),REACT_SUSPENSE_TYPE=Symbol.for("react.suspense"),REACT_SUSPENSE_LIST_TYPE=Symbol.for("react.suspense_list"),REACT_MEMO_TYPE=Symbol.for("react.memo"),REACT_LAZY_TYPE=Symbol.for("react.lazy"),REACT_ACTIVITY_TYPE=Symbol.for("react.activity"),REACT_MEMO_CACHE_SENTINEL=Symbol.for("react.memo_cache_sentinel"),MAYBE_ITERATOR_SYMBOL=Symbol.iterator,REACT_CLIENT_REFERENCE=Symbol.for("react.client.reference"),isArrayImpl=Array.isArray,ReactSharedInternals=React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,rendererVersion=$$$config.rendererVersion,rendererPackageName=$$$config.rendererPackageName,extraDevToolsConfig=$$$config.extraDevToolsConfig,getPublicInstance=$$$config.getPublicInstance,getRootHostContext=$$$config.getRootHostContext,getChildHostContext=$$$config.getChildHostContext,prepareForCommit=$$$config.prepareForCommit,resetAfterCommit=$$$config.resetAfterCommit,createInstance=$$$config.createInstance;$$$config.cloneMutableInstance;var{appendInitialChild,finalizeInitialChildren,shouldSetTextContent,createTextInstance}=$$$config;$$$config.cloneMutableTextInstance;var{scheduleTimeout,cancelTimeout,noTimeout,isPrimaryRenderer}=$$$config;$$$config.warnsIfNotActing;var{supportsMutation,supportsPersistence,supportsHydration,getInstanceFromNode}=$$$config;$$$config.beforeActiveInstanceBlur;var preparePortalMount=$$$config.preparePortalMount;$$$config.prepareScopeUpdate,$$$config.getInstanceFromScope;var{setCurrentUpdatePriority,getCurrentUpdatePriority,resolveUpdatePriority}=$$$config;$$$config.trackSchedulerEvent,$$$config.resolveEventType,$$$config.resolveEventTimeStamp;var{shouldAttemptEagerTransition,detachDeletedInstance}=$$$config;$$$config.requestPostPaintCallback;var{maySuspendCommit,maySuspendCommitOnUpdate,maySuspendCommitInSyncRender,preloadInstance,startSuspendingCommit,suspendInstance}=$$$config;$$$config.suspendOnActiveViewTransition;var waitForCommitToBeReady=$$$config.waitForCommitToBeReady;$$$config.getSuspendedCommitReason;var{NotPendingTransition,HostTransitionContext,resetFormInstance}=$$$config;$$$config.bindToConsole;var{supportsMicrotasks,scheduleMicrotask,supportsTestSelectors,findFiberRoot,getBoundingRect,getTextContent,isHiddenSubtree,matchAccessibilityRole,setFocusIfFocusable,setupIntersectionObserver,appendChild,appendChildToContainer,commitTextUpdate,commitMount,commitUpdate,insertBefore,insertInContainerBefore,removeChild,removeChildFromContainer,resetTextContent,hideInstance,hideTextInstance,unhideInstance,unhideTextInstance}=$$$config;$$$config.cancelViewTransitionName,$$$config.cancelRootViewTransitionName,$$$config.restoreRootViewTransitionName,$$$config.cloneRootViewTransitionContainer,$$$config.removeRootViewTransitionClone,$$$config.measureClonedInstance,$$$config.hasInstanceChanged,$$$config.hasInstanceAffectedParent,$$$config.startViewTransition,$$$config.startGestureTransition,$$$config.stopViewTransition,$$$config.getCurrentGestureOffset,$$$config.createViewTransitionInstance;var clearContainer=$$$config.clearContainer;$$$config.createFragmentInstance,$$$config.updateFragmentInstanceFiber,$$$config.commitNewChildToFragmentInstance,$$$config.deleteChildFromFragmentInstance;var{cloneInstance,createContainerChildSet,appendChildToContainerChildSet,finalizeContainerChildren,replaceContainerChildren,cloneHiddenInstance,cloneHiddenTextInstance,isSuspenseInstancePending,isSuspenseInstanceFallback,getSuspenseInstanceFallbackErrorDetails,registerSuspenseInstanceRetry,canHydrateFormStateMarker,isFormStateMarkerMatching,getNextHydratableSibling,getNextHydratableSiblingAfterSingleton,getFirstHydratableChild,getFirstHydratableChildWithinContainer,getFirstHydratableChildWithinActivityInstance,getFirstHydratableChildWithinSuspenseInstance,getFirstHydratableChildWithinSingleton,canHydrateInstance,canHydrateTextInstance,canHydrateActivityInstance,canHydrateSuspenseInstance,hydrateInstance,hydrateTextInstance,hydrateActivityInstance,hydrateSuspenseInstance,getNextHydratableInstanceAfterActivityInstance,getNextHydratableInstanceAfterSuspenseInstance,commitHydratedInstance,commitHydratedContainer,commitHydratedActivityInstance,commitHydratedSuspenseInstance,finalizeHydratedChildren,flushHydrationEvents}=$$$config;$$$config.clearActivityBoundary;var clearSuspenseBoundary=$$$config.clearSuspenseBoundary;$$$config.clearActivityBoundaryFromContainer;var{clearSuspenseBoundaryFromContainer,hideDehydratedBoundary,unhideDehydratedBoundary,shouldDeleteUnhydratedTailInstances}=$$$config;$$$config.diffHydratedPropsForDevWarnings,$$$config.diffHydratedTextForDevWarnings,$$$config.describeHydratableInstanceForDevWarnings;var{validateHydratableInstance,validateHydratableTextInstance,supportsResources,isHostHoistableType,getHoistableRoot,getResource,acquireResource,releaseResource,hydrateHoistable,mountHoistable,unmountHoistable,createHoistableInstance,prepareToCommitHoistables,mayResourceSuspendCommit,preloadResource,suspendResource,supportsSingletons,resolveSingletonInstance,acquireSingletonInstance,releaseSingletonInstance,isHostSingletonType,isSingletonScope}=$$$config,valueStack=[],index$jscomp$0=-1,emptyContextObject={},clz32=Math.clz32?Math.clz32:clz32Fallback,log$1=Math.log,LN2=Math.LN2,nextTransitionUpdateLane=256,nextTransitionDeferredLane=262144,nextRetryLane=4194304,scheduleCallback$3=$unstable_scheduleCallback,cancelCallback$1=$unstable_cancelCallback,shouldYield=$unstable_shouldYield,requestPaint=$unstable_requestPaint,now=$unstable_now,ImmediatePriority=$unstable_ImmediatePriority,UserBlockingPriority=$unstable_UserBlockingPriority,NormalPriority$1=$unstable_NormalPriority,IdlePriority=$unstable_IdlePriority,log2=void 0,unstable_setDisableYieldValue2=void 0,rendererID=null,injectedHook=null,objectIs=typeof Object.is==="function"?Object.is:is,reportGlobalError=typeof reportError==="function"?reportError:function(error){if(typeof window==="object"&&typeof window.ErrorEvent==="function"){var event=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof error==="object"&&error!==null&&typeof error.message==="string"?String(error.message):String(error),error});if(!window.dispatchEvent(event))return}else if(typeof process==="object"&&typeof process.emit==="function"){process.emit("uncaughtException",error);return}console.error(error)},hasOwnProperty=Object.prototype.hasOwnProperty,prefix,suffix2,reentry=!1,CapturedStacks=new WeakMap,forkStack=[],forkStackIndex=0,treeForkProvider=null,treeForkCount=0,idStack=[],idStackIndex=0,treeContextProvider=null,treeContextId=1,treeContextOverflow="",contextStackCursor=createCursor(null),contextFiberStackCursor=createCursor(null),rootInstanceStackCursor=createCursor(null),hostTransitionProviderCursor=createCursor(null),hydrationParentFiber=null,nextHydratableInstance=null,isHydrating=!1,hydrationErrors=null,rootOrSingletonContext=!1,HydrationMismatchException=Error(formatProdErrorMessage(519)),valueCursor=createCursor(null),currentlyRenderingFiber$1=null,lastContextDependency=null,AbortControllerLocal=typeof AbortController<"u"?AbortController:function(){var listeners=[],signal=this.signal={aborted:!1,addEventListener:function(type,listener){listeners.push(listener)}};this.abort=function(){signal.aborted=!0,listeners.forEach(function(listener){return listener()})}},scheduleCallback$2=$unstable_scheduleCallback,NormalPriority=$unstable_NormalPriority,CacheContext={$$typeof:REACT_CONTEXT_TYPE,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0},firstScheduledRoot=null,lastScheduledRoot=null,didScheduleMicrotask=!1,mightHavePendingSyncWork=!1,isFlushingWork=!1,currentEventTransitionLane=0,currentEntangledListeners=null,currentEntangledPendingCount=0,currentEntangledLane=0,currentEntangledActionThenable=null,prevOnStartTransitionFinish=ReactSharedInternals.S;ReactSharedInternals.S=function(transition,returnValue){globalMostRecentTransitionTime=now(),typeof returnValue==="object"&&returnValue!==null&&typeof returnValue.then==="function"&&entangleAsyncAction(transition,returnValue),prevOnStartTransitionFinish!==null&&prevOnStartTransitionFinish(transition,returnValue)};var resumedCache=createCursor(null),SuspenseException=Error(formatProdErrorMessage(460)),SuspenseyCommitException=Error(formatProdErrorMessage(474)),SuspenseActionException=Error(formatProdErrorMessage(542)),noopSuspenseyCommitThenable={then:function(){}},suspendedThenable=null,thenableState$1=null,thenableIndexCounter$1=0,reconcileChildFibers=createChildReconciler(!0),mountChildFibers=createChildReconciler(!1),concurrentQueues=[],concurrentQueuesIndex=0,concurrentlyUpdatedLanes=0,hasForceUpdate=!1,didReadFromEntangledAsyncAction=!1,currentTreeHiddenStackCursor=createCursor(null),prevEntangledRenderLanesCursor=createCursor(0),suspenseHandlerStackCursor=createCursor(null),shellBoundary=null,suspenseStackCursor=createCursor(0),renderLanes=0,currentlyRenderingFiber=null,currentHook=null,workInProgressHook=null,didScheduleRenderPhaseUpdate=!1,didScheduleRenderPhaseUpdateDuringThisPass=!1,shouldDoubleInvokeUserFnsInHooksDEV=!1,localIdCounter=0,thenableIndexCounter=0,thenableState=null,globalClientIdCounter=0,ContextOnlyDispatcher={readContext,use,useCallback:throwInvalidHookError,useContext:throwInvalidHookError,useEffect:throwInvalidHookError,useImperativeHandle:throwInvalidHookError,useLayoutEffect:throwInvalidHookError,useInsertionEffect:throwInvalidHookError,useMemo:throwInvalidHookError,useReducer:throwInvalidHookError,useRef:throwInvalidHookError,useState:throwInvalidHookError,useDebugValue:throwInvalidHookError,useDeferredValue:throwInvalidHookError,useTransition:throwInvalidHookError,useSyncExternalStore:throwInvalidHookError,useId:throwInvalidHookError,useHostTransitionStatus:throwInvalidHookError,useFormState:throwInvalidHookError,useActionState:throwInvalidHookError,useOptimistic:throwInvalidHookError,useMemoCache:throwInvalidHookError,useCacheRefresh:throwInvalidHookError};ContextOnlyDispatcher.useEffectEvent=throwInvalidHookError;var HooksDispatcherOnMount={readContext,use,useCallback:function(callback,deps){return mountWorkInProgressHook().memoizedState=[callback,deps===void 0?null:deps],callback},useContext:readContext,useEffect:mountEffect,useImperativeHandle:function(ref,create,deps){deps=deps!==null&&deps!==void 0?deps.concat([ref]):null,mountEffectImpl(4194308,4,imperativeHandleEffect.bind(null,create,ref),deps)},useLayoutEffect:function(create,deps){return mountEffectImpl(4194308,4,create,deps)},useInsertionEffect:function(create,deps){mountEffectImpl(4,2,create,deps)},useMemo:function(nextCreate,deps){var hook=mountWorkInProgressHook();deps=deps===void 0?null:deps;var nextValue=nextCreate();if(shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{nextCreate()}finally{setIsStrictModeForDevtools(!1)}}return hook.memoizedState=[nextValue,deps],nextValue},useReducer:function(reducer,initialArg,init){var hook=mountWorkInProgressHook();if(init!==void 0){var initialState=init(initialArg);if(shouldDoubleInvokeUserFnsInHooksDEV){setIsStrictModeForDevtools(!0);try{init(initialArg)}finally{setIsStrictModeForDevtools(!1)}}}else initialState=initialArg;return hook.memoizedState=hook.baseState=initialState,reducer={pending:null,lanes:0,dispatch:null,lastRenderedReducer:reducer,lastRenderedState:initialState},hook.queue=reducer,reducer=reducer.dispatch=dispatchReducerAction.bind(null,currentlyRenderingFiber,reducer),[hook.memoizedState,reducer]},useRef:function(initialValue){var hook=mountWorkInProgressHook();return initialValue={current:initialValue},hook.memoizedState=initialValue},useState:function(initialState){initialState=mountStateImpl(initialState);var queue=initialState.queue,dispatch=dispatchSetState.bind(null,currentlyRenderingFiber,queue);return queue.dispatch=dispatch,[initialState.memoizedState,dispatch]},useDebugValue:mountDebugValue,useDeferredValue:function(value,initialValue){var hook=mountWorkInProgressHook();return mountDeferredValueImpl(hook,value,initialValue)},useTransition:function(){var stateHook=mountStateImpl(!1);return stateHook=startTransition.bind(null,currentlyRenderingFiber,stateHook.queue,!0,!1),mountWorkInProgressHook().memoizedState=stateHook,[!1,stateHook]},useSyncExternalStore:function(subscribe,getSnapshot,getServerSnapshot){var fiber=currentlyRenderingFiber,hook=mountWorkInProgressHook();if(isHydrating){if(getServerSnapshot===void 0)throw Error(formatProdErrorMessage(407));getServerSnapshot=getServerSnapshot()}else{if(getServerSnapshot=getSnapshot(),workInProgressRoot===null)throw Error(formatProdErrorMessage(349));(workInProgressRootRenderLanes&127)!==0||pushStoreConsistencyCheck(fiber,getSnapshot,getServerSnapshot)}hook.memoizedState=getServerSnapshot;var inst={value:getServerSnapshot,getSnapshot};return hook.queue=inst,mountEffect(subscribeToStore.bind(null,fiber,inst,subscribe),[subscribe]),fiber.flags|=2048,pushSimpleEffect(9,{destroy:void 0},updateStoreInstance.bind(null,fiber,inst,getServerSnapshot,getSnapshot),null),getServerSnapshot},useId:function(){var hook=mountWorkInProgressHook(),identifierPrefix=workInProgressRoot.identifierPrefix;if(isHydrating){var JSCompiler_inline_result=treeContextOverflow,idWithLeadingBit=treeContextId;JSCompiler_inline_result=(idWithLeadingBit&~(1<<32-clz32(idWithLeadingBit)-1)).toString(32)+JSCompiler_inline_result,identifierPrefix="_"+identifierPrefix+"R_"+JSCompiler_inline_result,JSCompiler_inline_result=localIdCounter++,0<JSCompiler_inline_result&&(identifierPrefix+="H"+JSCompiler_inline_result.toString(32)),identifierPrefix+="_"}else JSCompiler_inline_result=globalClientIdCounter++,identifierPrefix="_"+identifierPrefix+"r_"+JSCompiler_inline_result.toString(32)+"_";return hook.memoizedState=identifierPrefix},useHostTransitionStatus,useFormState:mountActionState,useActionState:mountActionState,useOptimistic:function(passthrough){var hook=mountWorkInProgressHook();hook.memoizedState=hook.baseState=passthrough;var queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return hook.queue=queue,hook=dispatchOptimisticSetState.bind(null,currentlyRenderingFiber,!0,queue),queue.dispatch=hook,[passthrough,hook]},useMemoCache,useCacheRefresh:function(){return mountWorkInProgressHook().memoizedState=refreshCache.bind(null,currentlyRenderingFiber)},useEffectEvent:function(callback){var hook=mountWorkInProgressHook(),ref={impl:callback};return hook.memoizedState=ref,function(){if((executionContext&2)!==0)throw Error(formatProdErrorMessage(440));return ref.impl.apply(void 0,arguments)}}},HooksDispatcherOnUpdate={readContext,use,useCallback:updateCallback,useContext:readContext,useEffect:updateEffect,useImperativeHandle:updateImperativeHandle,useInsertionEffect:updateInsertionEffect,useLayoutEffect:updateLayoutEffect,useMemo:updateMemo,useReducer:updateReducer,useRef:updateRef,useState:function(){return updateReducer(basicStateReducer)},useDebugValue:mountDebugValue,useDeferredValue:function(value,initialValue){var hook=updateWorkInProgressHook();return updateDeferredValueImpl(hook,currentHook.memoizedState,value,initialValue)},useTransition:function(){var booleanOrThenable=updateReducer(basicStateReducer)[0],start=updateWorkInProgressHook().memoizedState;return[typeof booleanOrThenable==="boolean"?booleanOrThenable:useThenable(booleanOrThenable),start]},useSyncExternalStore:updateSyncExternalStore,useId:updateId,useHostTransitionStatus,useFormState:updateActionState,useActionState:updateActionState,useOptimistic:function(passthrough,reducer){var hook=updateWorkInProgressHook();return updateOptimisticImpl(hook,currentHook,passthrough,reducer)},useMemoCache,useCacheRefresh:updateRefresh};HooksDispatcherOnUpdate.useEffectEvent=updateEvent;var HooksDispatcherOnRerender={readContext,use,useCallback:updateCallback,useContext:readContext,useEffect:updateEffect,useImperativeHandle:updateImperativeHandle,useInsertionEffect:updateInsertionEffect,useLayoutEffect:updateLayoutEffect,useMemo:updateMemo,useReducer:rerenderReducer,useRef:updateRef,useState:function(){return rerenderReducer(basicStateReducer)},useDebugValue:mountDebugValue,useDeferredValue:function(value,initialValue){var hook=updateWorkInProgressHook();return currentHook===null?mountDeferredValueImpl(hook,value,initialValue):updateDeferredValueImpl(hook,currentHook.memoizedState,value,initialValue)},useTransition:function(){var booleanOrThenable=rerenderReducer(basicStateReducer)[0],start=updateWorkInProgressHook().memoizedState;return[typeof booleanOrThenable==="boolean"?booleanOrThenable:useThenable(booleanOrThenable),start]},useSyncExternalStore:updateSyncExternalStore,useId:updateId,useHostTransitionStatus,useFormState:rerenderActionState,useActionState:rerenderActionState,useOptimistic:function(passthrough,reducer){var hook=updateWorkInProgressHook();if(currentHook!==null)return updateOptimisticImpl(hook,currentHook,passthrough,reducer);return hook.baseState=passthrough,[passthrough,hook.queue.dispatch]},useMemoCache,useCacheRefresh:updateRefresh};HooksDispatcherOnRerender.useEffectEvent=updateEvent;var classComponentUpdater={enqueueSetState:function(inst,payload,callback){inst=inst._reactInternals;var lane=requestUpdateLane(),update=createUpdate(lane);update.payload=payload,callback!==void 0&&callback!==null&&(update.callback=callback),payload=enqueueUpdate(inst,update,lane),payload!==null&&(scheduleUpdateOnFiber(payload,inst,lane),entangleTransitions(payload,inst,lane))},enqueueReplaceState:function(inst,payload,callback){inst=inst._reactInternals;var lane=requestUpdateLane(),update=createUpdate(lane);update.tag=1,update.payload=payload,callback!==void 0&&callback!==null&&(update.callback=callback),payload=enqueueUpdate(inst,update,lane),payload!==null&&(scheduleUpdateOnFiber(payload,inst,lane),entangleTransitions(payload,inst,lane))},enqueueForceUpdate:function(inst,callback){inst=inst._reactInternals;var lane=requestUpdateLane(),update=createUpdate(lane);update.tag=2,callback!==void 0&&callback!==null&&(update.callback=callback),callback=enqueueUpdate(inst,update,lane),callback!==null&&(scheduleUpdateOnFiber(callback,inst,lane),entangleTransitions(callback,inst,lane))}},SelectiveHydrationException=Error(formatProdErrorMessage(461)),didReceiveUpdate=!1,SUSPENDED_MARKER={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null},offscreenSubtreeIsHidden=!1,offscreenSubtreeWasHidden=!1,needsFormReset=!1,PossiblyWeakSet=typeof WeakSet==="function"?WeakSet:Set,nextEffect=null,hostParent=null,hostParentIsContainer=!1,currentHoistableRoot=null,suspenseyCommitFlag=8192,DefaultAsyncDispatcher={getCacheForType:function(resourceType){var cache=readContext(CacheContext),cacheForType=cache.data.get(resourceType);return cacheForType===void 0&&(cacheForType=resourceType(),cache.data.set(resourceType,cacheForType)),cacheForType},cacheSignal:function(){return readContext(CacheContext).controller.signal}},COMPONENT_TYPE=0,HAS_PSEUDO_CLASS_TYPE=1,ROLE_TYPE=2,TEST_NAME_TYPE=3,TEXT_TYPE=4;if(typeof Symbol==="function"&&Symbol.for){var symbolFor=Symbol.for;COMPONENT_TYPE=symbolFor("selector.component"),HAS_PSEUDO_CLASS_TYPE=symbolFor("selector.has_pseudo_class"),ROLE_TYPE=symbolFor("selector.role"),TEST_NAME_TYPE=symbolFor("selector.test_id"),TEXT_TYPE=symbolFor("selector.text")}var PossiblyWeakMap=typeof WeakMap==="function"?WeakMap:Map,executionContext=0,workInProgressRoot=null,workInProgress=null,workInProgressRootRenderLanes=0,workInProgressSuspendedReason=0,workInProgressThrownValue=null,workInProgressRootDidSkipSuspendedSiblings=!1,workInProgressRootIsPrerendering=!1,workInProgressRootDidAttachPingListener=!1,entangledRenderLanes=0,workInProgressRootExitStatus=0,workInProgressRootSkippedLanes=0,workInProgressRootInterleavedUpdatedLanes=0,workInProgressRootPingedLanes=0,workInProgressDeferredLane=0,workInProgressSuspendedRetryLanes=0,workInProgressRootConcurrentErrors=null,workInProgressRootRecoverableErrors=null,workInProgressRootDidIncludeRecursiveRenderUpdate=!1,globalMostRecentFallbackTime=0,globalMostRecentTransitionTime=0,workInProgressRootRenderTargetTime=1/0,workInProgressTransitions=null,legacyErrorBoundariesThatAlreadyFailed=null,pendingEffectsStatus=0,pendingEffectsRoot=null,pendingFinishedWork=null,pendingEffectsLanes=0,pendingEffectsRemainingLanes=0,pendingPassiveTransitions=null,pendingRecoverableErrors=null,nestedUpdateCount=0,rootWithNestedUpdates=null;return exports2.attemptContinuousHydration=function(fiber){if(fiber.tag===13||fiber.tag===31){var root=enqueueConcurrentRenderForLane(fiber,67108864);root!==null&&scheduleUpdateOnFiber(root,fiber,67108864),markRetryLaneIfNotHydrated(fiber,67108864)}},exports2.attemptHydrationAtCurrentPriority=function(fiber){if(fiber.tag===13||fiber.tag===31){var lane=requestUpdateLane();lane=getBumpedLaneForHydrationByLane(lane);var root=enqueueConcurrentRenderForLane(fiber,lane);root!==null&&scheduleUpdateOnFiber(root,fiber,lane),markRetryLaneIfNotHydrated(fiber,lane)}},exports2.attemptSynchronousHydration=function(fiber){switch(fiber.tag){case 3:if(fiber=fiber.stateNode,fiber.current.memoizedState.isDehydrated){var lanes=getHighestPriorityLanes(fiber.pendingLanes);if(lanes!==0){fiber.pendingLanes|=2;for(fiber.entangledLanes|=2;lanes;){var lane=1<<31-clz32(lanes);fiber.entanglements[1]|=lane,lanes&=~lane}ensureRootIsScheduled(fiber),(executionContext&6)===0&&(workInProgressRootRenderTargetTime=now()+500,flushSyncWorkAcrossRoots_impl(0,!1))}}break;case 31:case 13:lanes=enqueueConcurrentRenderForLane(fiber,2),lanes!==null&&scheduleUpdateOnFiber(lanes,fiber,2),flushSyncWork(),markRetryLaneIfNotHydrated(fiber,2)}},exports2.batchedUpdates=function(fn,a){return fn(a)},exports2.createComponentSelector=function(component){return{$$typeof:COMPONENT_TYPE,value:component}},exports2.createContainer=function(containerInfo,tag,hydrationCallbacks,isStrictMode,concurrentUpdatesByDefaultOverride,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator){return createFiberRoot(containerInfo,tag,!1,null,hydrationCallbacks,isStrictMode,identifierPrefix,null,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator)},exports2.createHasPseudoClassSelector=function(selectors){return{$$typeof:HAS_PSEUDO_CLASS_TYPE,value:selectors}},exports2.createHydrationContainer=function(initialChildren,callback,containerInfo,tag,hydrationCallbacks,isStrictMode,concurrentUpdatesByDefaultOverride,identifierPrefix,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator,transitionCallbacks,formState){return initialChildren=createFiberRoot(containerInfo,tag,!0,initialChildren,hydrationCallbacks,isStrictMode,identifierPrefix,formState,onUncaughtError,onCaughtError,onRecoverableError,onDefaultTransitionIndicator),initialChildren.context=getContextForSubtree(null),containerInfo=initialChildren.current,tag=requestUpdateLane(),tag=getBumpedLaneForHydrationByLane(tag),hydrationCallbacks=createUpdate(tag),hydrationCallbacks.callback=callback!==void 0&&callback!==null?callback:null,enqueueUpdate(containerInfo,hydrationCallbacks,tag),callback=tag,initialChildren.current.lanes=callback,markRootUpdated$1(initialChildren,callback),ensureRootIsScheduled(initialChildren),initialChildren},exports2.createPortal=function(children,containerInfo,implementation){var key=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:REACT_PORTAL_TYPE,key:key==null?null:""+key,children,containerInfo,implementation}},exports2.createRoleSelector=function(role){return{$$typeof:ROLE_TYPE,value:role}},exports2.createTestNameSelector=function(id){return{$$typeof:TEST_NAME_TYPE,value:id}},exports2.createTextSelector=function(text){return{$$typeof:TEXT_TYPE,value:text}},exports2.defaultOnCaughtError=function(error){console.error(error)},exports2.defaultOnRecoverableError=function(error){reportGlobalError(error)},exports2.defaultOnUncaughtError=function(error){reportGlobalError(error)},exports2.deferredUpdates=function(fn){var prevTransition=ReactSharedInternals.T,previousPriority=getCurrentUpdatePriority();try{return setCurrentUpdatePriority(32),ReactSharedInternals.T=null,fn()}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=prevTransition}},exports2.discreteUpdates=function(fn,a,b2,c,d2){var prevTransition=ReactSharedInternals.T,previousPriority=getCurrentUpdatePriority();try{return setCurrentUpdatePriority(2),ReactSharedInternals.T=null,fn(a,b2,c,d2)}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=prevTransition,executionContext===0&&(workInProgressRootRenderTargetTime=now()+500)}},exports2.findAllNodes=findAllNodes,exports2.findBoundingRects=function(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));selectors=findAllNodes(hostRoot,selectors),hostRoot=[];for(var i=0;i<selectors.length;i++)hostRoot.push(getBoundingRect(selectors[i]));for(selectors=hostRoot.length-1;0<selectors;selectors--){i=hostRoot[selectors];for(var targetLeft=i.x,targetRight=targetLeft+i.width,targetTop=i.y,targetBottom=targetTop+i.height,j2=selectors-1;0<=j2;j2--)if(selectors!==j2){var otherRect=hostRoot[j2],otherLeft=otherRect.x,otherRight=otherLeft+otherRect.width,otherTop=otherRect.y,otherBottom=otherTop+otherRect.height;if(targetLeft>=otherLeft&&targetTop>=otherTop&&targetRight<=otherRight&&targetBottom<=otherBottom){hostRoot.splice(selectors,1);break}else if(!(targetLeft!==otherLeft||i.width!==otherRect.width||otherBottom<targetTop||otherTop>targetBottom)){otherTop>targetTop&&(otherRect.height+=otherTop-targetTop,otherRect.y=targetTop),otherBottom<targetBottom&&(otherRect.height=targetBottom-otherTop),hostRoot.splice(selectors,1);break}else if(!(targetTop!==otherTop||i.height!==otherRect.height||otherRight<targetLeft||otherLeft>targetRight)){otherLeft>targetLeft&&(otherRect.width+=otherLeft-targetLeft,otherRect.x=targetLeft),otherRight<targetRight&&(otherRect.width=targetRight-otherLeft),hostRoot.splice(selectors,1);break}}}return hostRoot},exports2.findHostInstance=findHostInstance,exports2.findHostInstanceWithNoPortals=function(fiber){return fiber=findCurrentFiberUsingSlowPath(fiber),fiber=fiber!==null?findCurrentHostFiberWithNoPortalsImpl(fiber):null,fiber===null?null:getPublicInstance(fiber.stateNode)},exports2.findHostInstanceWithWarning=function(component){return findHostInstance(component)},exports2.flushPassiveEffects=flushPendingEffects,exports2.flushSyncFromReconciler=function(fn){var prevExecutionContext=executionContext;executionContext|=1;var prevTransition=ReactSharedInternals.T,previousPriority=getCurrentUpdatePriority();try{if(setCurrentUpdatePriority(2),ReactSharedInternals.T=null,fn)return fn()}finally{setCurrentUpdatePriority(previousPriority),ReactSharedInternals.T=prevTransition,executionContext=prevExecutionContext,(executionContext&6)===0&&flushSyncWorkAcrossRoots_impl(0,!1)}},exports2.flushSyncWork=flushSyncWork,exports2.focusWithin=function(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));hostRoot=findFiberRootForHostRoot(hostRoot),selectors=findPaths(hostRoot,selectors),selectors=Array.from(selectors);for(hostRoot=0;hostRoot<selectors.length;){var fiber=selectors[hostRoot++],tag=fiber.tag;if(!isHiddenSubtree(fiber)){if((tag===5||tag===26||tag===27)&&setFocusIfFocusable(fiber.stateNode))return!0;for(fiber=fiber.child;fiber!==null;)selectors.push(fiber),fiber=fiber.sibling}}return!1},exports2.getFindAllNodesFailureDescription=function(hostRoot,selectors){if(!supportsTestSelectors)throw Error(formatProdErrorMessage(363));var maxSelectorIndex=0,matchedNames=[];hostRoot=[findFiberRootForHostRoot(hostRoot),0];for(var index=0;index<hostRoot.length;){var fiber=hostRoot[index++],tag=fiber.tag,selectorIndex=hostRoot[index++],selector=selectors[selectorIndex];if(tag!==5&&tag!==26&&tag!==27||!isHiddenSubtree(fiber)){if(matchSelector(fiber,selector)&&(matchedNames.push(selectorToString(selector)),selectorIndex++,selectorIndex>maxSelectorIndex&&(maxSelectorIndex=selectorIndex)),selectorIndex<selectors.length)for(fiber=fiber.child;fiber!==null;)hostRoot.push(fiber,selectorIndex),fiber=fiber.sibling}}if(maxSelectorIndex<selectors.length){for(hostRoot=[];maxSelectorIndex<selectors.length;maxSelectorIndex++)hostRoot.push(selectorToString(selectors[maxSelectorIndex]));return`findAllNodes was able to match part of the selector:
|
|
11
11
|
`+(matchedNames.join(" > ")+`
|
|
12
12
|
|
|
13
13
|
No matching component was found for:
|
|
@@ -3507,7 +3507,7 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
|
|
|
3507
3507
|
s.title
|
|
3508
3508
|
FROM messages m LEFT JOIN sessions s ON m.session_id = s.id
|
|
3509
3509
|
WHERE m.role = 'assistant' AND m.tool_calls IS NOT NULL
|
|
3510
|
-
ORDER BY m.id DESC LIMIT ?`).all(scan),out=[];for(let r of rows2)for(let a of extract2(r))if(out.push(a),out.length>=limit)return out;return out}var WRITE,READ,MEMORY_TOOLS,trunc4=(s,n=80)=>{let t2=String(s??"").replace(/\s+/g," ").trim();return t2.length>n?t2.slice(0,n-1)+"\u2026":t2},stripPrefix=(name)=>name.replace(/^(mem0|honcho|hindsight|viking|retaindb|supermemory|brv|fact)_/,""),describe=(name,args)=>{if(name==="memory"){let action=String(args.action??""),target=String(args.target??""),body=action==="remove"?args.old_text:args.content??args.old_text;return{verb:action,summary:`${target}: ${trunc4(body)}`}}let verb=stripPrefix(name);for(let k2 of["conclusion","content","query","text","fact","question","note","path"])if(k2 in args)return{verb,summary:trunc4(args[k2])};let first=Object.values(args).find((v2)=>typeof v2==="string");return{verb,summary:trunc4(first??"")}},extract2=(r)=>{let calls;try{calls=JSON.parse(r.tool_calls)}catch{return[]}if(!Array.isArray(calls))return[];let out=[];for(let c of calls){let name=c.function?.name;if(!name||!(name in MEMORY_TOOLS))continue;let args={};try{args=JSON.parse(c.function?.arguments??"{}")}catch{}let{verb,summary}=describe(name,args);out.push({ts:r.ts,provider:MEMORY_TOOLS[name],tool:name,op:name in WRITE?"write":"read",verb,summary,sessionId:r.session_id,sessionTitle:r.title??r.session_id})}return out};var init_memory_activity=__esm(()=>{init_sessions_db();WRITE={memory:"builtin",mem0_conclude:"mem0",honcho_conclude:"honcho",hindsight_retain:"hindsight",hindsight_reflect:"hindsight",fact_store:"holographic",fact_feedback:"holographic",viking_remember:"openviking",viking_add_resource:"openviking",retaindb_remember:"retaindb",retaindb_forget:"retaindb",supermemory_store:"supermemory",supermemory_forget:"supermemory",brv_curate:"byterover"},READ={mem0_search:"mem0",mem0_profile:"mem0",honcho_search:"honcho",honcho_profile:"honcho",honcho_reasoning:"honcho",honcho_context:"honcho",hindsight_recall:"hindsight",viking_search:"openviking",viking_read:"openviking",viking_browse:"openviking",retaindb_search:"retaindb",retaindb_profile:"retaindb",retaindb_context:"retaindb",supermemory_search:"supermemory",supermemory_profile:"supermemory",brv_query:"byterover",brv_status:"byterover"},MEMORY_TOOLS={...WRITE,...READ}});var exports_fns={};__export(exports_fns,{FNS:()=>FNS});var FNS;var init_fns=__esm(()=>{init_sessions_db();init_hermes_analytics();init_memory_activity();FNS={roots:exports_sessions_db.roots,children:exports_sessions_db.children,lineage:exports_sessions_db.lineage,peek:exports_sessions_db.peek,search:exports_sessions_db.search,systemPrompt:exports_sessions_db.systemPrompt,goalState:exports_sessions_db.goalState,analytics,memoryActivity:readMemoryActivity}});var SCHEMA,SCHEMA_KEYS;var init_schema=__esm(()=>{SCHEMA={"agent.api_max_retries":{type:"int",default:3,doc:"Max app-level retry attempts for API errors (connection drops, provider timeouts, 5xx, etc.) before the agent surfaces the failure. The OpenAI SDK already does its own low-level retries (max_retries=2 default) for transient network errors; this is the Hermes-level retry loop that wraps the whole call. Lower this to 1 if you use fallback providers and want fast failover on flaky primaries; raise it if you prefer to tolerate longer provider hiccups on a single provider.",group:"agent",effect:"session"},"agent.clarify_timeout":{type:"int",default:3600,doc:`Maximum time (seconds) the gateway will block an agent waiting for a clarify-tool response from the user. Hit this and the agent unblocks with "[user did not respond within Xm]" so it can adapt rather than pinning the running-agent guard forever. CLI clarify blocks indefinitely (input() is synchronous) and ignores this. Default 3600 (1h): real users step away (meetings, AFK) and the old 600s default evicted the entry mid-think, so a later button tap landed on a dead entry (#32762). Tradeoff: a higher value holds the gateway's running-agent guard longer for a genuinely abandoned prompt \u2014 lower it if a single session must free up the guard sooner.`,group:"agent",effect:"session"},"agent.coding_context":{type:"str",default:"auto",doc:`Coding posture \u2014 on interactive coding surfaces (CLI, TUI, desktop app, ACP) in a code workspace, Hermes adds a coding operating brief + a live git/workspace snapshot to the system prompt. See agent/coding_context.py. "auto" (default) \u2014 prompt-only posture when the surface is interactive AND cwd is a code workspace. Toolsets are never touched; messaging platforms unaffected. "focus" \u2014 auto + collapse the toolset to the lean coding set (+ enabled MCP servers) + demote non-coding skill categories to names-only in the prompt's skill index. Explicit opt-in. "on" \u2014 force the prompt posture everywhere. "off" \u2014 disable entirely.`,group:"agent",effect:"session"},"agent.coding_instructions":{type:"str",default:"",doc:`Standing operator instructions for the coding posture. A string (or list of strings) appended to the coding brief as an extra stable system block \u2014 pin project-wide workflow rules here instead of editing the shipped brief, e.g. "For UI work, don't run tsc/lint until I approve. Clean the diff before you commit and push." Cache-safe: takes effect next session. Empty by default.`,group:"agent",effect:"session"},"agent.disabled_toolsets":{type:"list",default:[],doc:"",group:"agent",effect:"session"},"agent.environment_hint":{type:"str",default:"",doc:"Embedder-supplied environment description appended to the system prompt's environment-hints block. Lets a host that wraps Hermes (sandbox runner, managed platform) explain the runtime environment \u2014 proxy, credential handling, mount layout \u2014 without editing the identity slot (SOUL.md). Empty by default. The HERMES_ENVIRONMENT_HINT env var overrides this (build-time/container mechanism).",group:"agent",effect:"session"},"agent.environment_probe":{type:"bool",default:!0,doc:"Local-environment toolchain probe \u2014 surfaces Python/pip/uv/PEP-668 state in the system prompt when something non-default is detected (e.g. python3 has no pip module, pip\u2192python version mismatch, PEP 668 enforcement without uv). Costs zero tokens when the env is clean (probe emits nothing). Skipped for remote terminal backends (docker/modal/ssh \u2014 they have their own probe). Set False to disable entirely.",group:"agent",effect:"session"},"agent.gateway_auto_continue_freshness":{type:"int",default:3600,doc:`Freshness window for the gateway auto-continue note (seconds). After a gateway crash/restart/SIGTERM mid-run, the next user message gets a "[System note: your previous turn was interrupted \u2014 process the unfinished tool result(s) first]" prepended so the model picks up where it left off. That's the right behaviour while the interruption is fresh, but stale markers (transcript last touched hours or days ago) can revive an unrelated old task when the user's next message starts new work. This window is the max age of the last persisted transcript row for which we still inject the continue note. Default 3600s comfortably covers a long turn (gateway_timeout default is 1800s) plus runtime slack. Set to 0 to disable the gate and restore pre-fix behaviour (always inject).`,group:"agent",effect:"session"},"agent.gateway_notify_interval":{type:"int",default:180,doc:`Periodic "still working" notification interval (seconds). Sends a status message every N seconds so the user knows the agent hasn't died during long tasks. 0 = disable notifications. Lower values mean faster feedback on slow tasks but more chat noise; 180s is a compromise that catches spinning weak-model runs (60+ tool iterations with tiny output) before users assume the bot is dead and /restart.`,group:"agent",effect:"session"},"agent.gateway_timeout":{type:"int",default:1800,doc:"Inactivity timeout for gateway agent execution (seconds). The agent can run indefinitely as long as it's actively calling tools or receiving API responses. Only fires when the agent has been completely idle for this duration. 0 = unlimited.",group:"agent",effect:"session"},"agent.gateway_timeout_warning":{type:"int",default:900,doc:"Staged inactivity warning: send a warning to the user at this threshold before escalating to a full timeout. The warning fires once per run and does not interrupt the agent. 0 = disable warning.",group:"agent",effect:"session"},"agent.image_input_mode":{type:"str",default:"auto",doc:`How user-attached images are presented to the main model on each turn. "auto" \u2014 attach natively when the active model reports supports_vision=True AND the user hasn't explicitly configured auxiliary.vision.provider. Otherwise fall back to text (vision_analyze pre-analysis). "native" \u2014 always attach natively; non-vision models will either error at the provider or get a last-chance text fallback (see run_agent._prepare_messages_for_api). "text" \u2014 always pre-analyze with vision_analyze and prepend the description as text; the main model never sees pixels. Affects gateway platforms, the TUI, and CLI /attach. vision_analyze remains available as a tool regardless of this setting \u2014 the routing only controls how inbound user images are presented.`,group:"agent",effect:"session"},"agent.intent_ack_continuation":{type:"str",default:"auto",doc:`Intent-ack continuation: when the model opens a turn by narrating an action it will take ("I'll go check the logs...") but emits no tool call, intercept the turn-end, inject a "continue now, execute the tools" nudge, and loop instead of ending the turn (capped at 2 nudges per turn). This is the corrective sibling of tool_use_enforcement (the preventive prompt-side guard). Values: "auto" (default \u2014 fires only on the codex_responses api_mode, the historical behavior), true (all api_modes \u2014 fixes the Gemini/Claude "stops after stating intent" case), false (never), or a list of model-name substrings to match.`,group:"agent",effect:"session"},"agent.max_turns":{type:"int",default:90,doc:"",group:"agent",effect:"session"},"agent.max_verify_nudges":{type:"int",default:3,doc:'Upper bound on consecutive `pre_verify` "continue" nudges in a single turn, so a user/plugin hook can never trap the loop.',group:"agent",effect:"session"},"agent.parallel_tool_call_guidance":{type:"bool",default:!0,doc:"Universal parallel-tool-call guidance \u2014 short prompt block applied to all models that tells the model to batch independent tool calls (reads, searches, web fetches, read-only commands) into one turn instead of one call per turn. The runtime already runs independent calls concurrently, so this just steers the model to produce the batch \u2014 cutting round-trips and the resent-context cost that compounds over a long conversation. Costs ~70 tokens in the cached system prompt. Set False to disable globally.",group:"agent",effect:"session"},"agent.reasoning_effort":{type:"str",default:"",doc:"Reasoning effort for the main agent: none | minimal | low | medium | high | xhigh.",group:"agent",effect:"live"},"agent.restart_drain_timeout":{type:"int",default:0,doc:`Graceful drain timeout for gateway stop/restart (seconds). The gateway stops accepting new work, waits for running agents to finish, then interrupts any remaining runs after the timeout. 0 = no drain, interrupt immediately (the default). Contract: if you restart the gateway, in-flight work stops. We do not hold the restart open for a grace window \u2014 a drain timeout large enough to "save" a long agent turn would have to outlast an unbounded task (some runs take days), which is impossible, and a drain timeout shorter than systemd's TimeoutStopSec invites a SIGKILL-mid-cleanup race that leaves a stale lock and crash-loops the service. 0 sidesteps both: interrupt now, clean up, exit fast. Set a positive value in config.yaml only if you explicitly want a grace window on /restart (and keep it well under TimeoutStopSec).`,group:"agent",effect:"session"},"agent.service_tier":{type:"str",default:"",doc:"",group:"agent",effect:"live"},"agent.system_prompt":{type:"str",default:"",doc:"System-prompt override applied by the active personality.",group:"agent",effect:"session"},"agent.task_completion_guidance":{type:"bool",default:!0,doc:'Universal "finish the job" guidance \u2014 short prompt block applied to all models that targets two cross-family failure modes: (1) stopping after a stub instead of finishing the artifact, (2) fabricating plausible-looking output when a real path is blocked. Costs ~80 tokens in the cached system prompt. Set False to disable globally.',group:"agent",effect:"session"},"agent.tool_use_enforcement":{type:"str",default:"auto",doc:'Tool-use enforcement: injects system prompt guidance that tells the model to actually call tools instead of describing intended actions. Values: "auto" (default \u2014 applies to gpt/codex models), true/false (force on/off for all models), or a list of model-name substrings to match (e.g. ["gpt", "codex", "gemini", "qwen"]).',group:"agent",effect:"session"},"agent.verify_guidance":{type:"bool",default:!0,doc:"When verify-on-stop finds edited code without fresh verification evidence, append guidance for creative UI work (avoid broad tsc/lint/test before visual approval) and clean-diff expectations. Set false to keep the evidence nudge terse.",group:"agent",effect:"session"},"agent.verify_on_stop":{type:"str",default:"auto",doc:'Verification closure: after the agent edits files in a code workspace, do not accept a final answer until fresh verification evidence exists or the agent explains why it cannot run checks. The loop is bounded and uses the passive verification ledger. Default is "auto" \u2014 surface-aware: on for interactive coding surfaces (CLI, TUI, desktop) and programmatic callers, off for conversational messaging surfaces (Telegram, Discord, etc.) where the verification narrative would reach a human as chat noise. Doc/markdown/skill-only edits never fire it. Set true to force on everywhere, or false to disable.',group:"agent",effect:"session"},"approvals.cron_mode":{type:"str",default:"deny",doc:"",group:"approvals",effect:"live"},"approvals.deny":{type:"list",default:[],doc:'User-defined deny rules: fnmatch globs matched against terminal commands. A match blocks the command unconditionally \u2014 BEFORE the --yolo / /yolo / mode=off bypass \u2014 making this the user-editable counterpart to the code-shipped hardline blocklist. Patterns are case-insensitive and must be quoted in YAML when they start with * or contain {}/!/: sequences. Example: deny: - "git push --force*" - "*curl*|*sh*"',group:"approvals",effect:"live"},"approvals.destructive_slash_confirm":{type:"bool",default:!0,doc:'When true, destructive session slash commands (/clear, /new, /reset, /undo) ask the user to confirm before discarding conversation state. Three-option prompt (Approve Once / Always Approve / Cancel) routed through tools.slash_confirm \u2014 native yes/no buttons on Telegram, Discord, and Slack; text fallback elsewhere. Users click "Always Approve" to silence the prompt permanently; that flips this key to false. TUI has its own modal overlay (HERMES_TUI_NO_CONFIRM=1 to opt out there).',group:"approvals",effect:"live"},"approvals.mcp_reload_confirm":{type:"bool",default:!0,doc:'When true, /reload-mcp asks the user to confirm before rebuilding the MCP tool set for the active session. Reloading invalidates the provider prompt cache (tool schemas are baked into the system prompt), so the next message re-sends full input tokens \u2014 this can be expensive on long-context or high-reasoning models. Users click "Always Approve" to silence the prompt permanently; that flips this key to false.',group:"approvals",effect:"live"},"approvals.mode":{type:"str",default:"manual",doc:"",group:"approvals",effect:"live"},"approvals.timeout":{type:"int",default:60,doc:"",group:"approvals",effect:"live"},"auxiliary.approval.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.model":{type:"str",default:"",doc:"fast/cheap model recommended (e.g. gemini-flash, haiku)",group:"auxiliary",effect:"session"},"auxiliary.approval.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.timeout":{type:"int",default:120,doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.timeout":{type:"int",default:120,doc:"seconds \u2014 compression summarises large contexts; increase for local models",group:"auxiliary",effect:"session"},"auxiliary.curator.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.timeout":{type:"int",default:600,doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.timeout":{type:"int",default:180,doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.timeout":{type:"int",default:900,doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.timeout":{type:"int",default:900,doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.timeout":{type:"int",default:60,doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.timeout":{type:"int",default:60,doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.language":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.transient_retries":{type:"int",default:2,doc:"Same-provider retries for a transient transport blip (connection reset / timeout / 5xx / 408) on ANY auxiliary call before falling back. Default 2 (\u2192 3 total attempts), clamped [0,6]. Matters most for pinned calls like MoA reference advisors, where provider fallback is not a meaningful recovery, so an unretried blip silently loses the call.",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.timeout":{type:"int",default:120,doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.vision.api_key":{type:"str",default:"",doc:"API key for base_url (falls back to OPENAI_API_KEY)",group:"auxiliary",effect:"session"},"auxiliary.vision.base_url":{type:"str",default:"",doc:"direct OpenAI-compatible endpoint (takes precedence over provider)",group:"auxiliary",effect:"session"},"auxiliary.vision.download_timeout":{type:"int",default:30,doc:"seconds \u2014 image HTTP download timeout; increase for slow connections",group:"auxiliary",effect:"session"},"auxiliary.vision.extra_body":{type:"dict",default:{},doc:"OpenAI-compatible provider-specific request fields",group:"auxiliary",effect:"session"},"auxiliary.vision.model":{type:"str",default:"",doc:'e.g. "google/gemini-2.5-flash", "gpt-4o"',group:"auxiliary",effect:"session"},"auxiliary.vision.provider":{type:"str",default:"auto",doc:"auto | openrouter | nous | codex | custom",group:"auxiliary",effect:"session"},"auxiliary.vision.timeout":{type:"int",default:120,doc:"seconds \u2014 LLM API call timeout; vision payloads need generous timeout",group:"auxiliary",effect:"session"},"auxiliary.web_extract.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.timeout":{type:"int",default:360,doc:"seconds (6min) \u2014 per-attempt LLM summarization timeout; increase for slow local models",group:"auxiliary",effect:"session"},"bedrock.discovery.enabled":{type:"bool",default:!0,doc:"Auto-discover models via ListFoundationModels",group:"bedrock",effect:"live"},"bedrock.discovery.provider_filter":{type:"list",default:[],doc:'Only show models from these providers (e.g. ["anthropic", "amazon"])',group:"bedrock",effect:"live"},"bedrock.discovery.refresh_interval":{type:"int",default:3600,doc:"Cache discovery results for this many seconds",group:"bedrock",effect:"live"},"bedrock.guardrail.guardrail_identifier":{type:"str",default:"",doc:"Amazon Bedrock Guardrails \u2014 content filtering and safety policies. Create a guardrail in the Bedrock console, then set the ID and version here. See: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html",group:"bedrock",effect:"live"},"bedrock.guardrail.guardrail_version":{type:"str",default:"",doc:'e.g. "1" or "DRAFT"',group:"bedrock",effect:"live"},"bedrock.guardrail.stream_processing_mode":{type:"str",default:"async",doc:'"sync" or "async"',group:"bedrock",effect:"live"},"bedrock.guardrail.trace":{type:"str",default:"disabled",doc:'"enabled", "disabled", or "enabled_full"',group:"bedrock",effect:"live"},"bedrock.region":{type:"str",default:"",doc:"AWS region for Bedrock API calls (empty = AWS_REGION env var \u2192 us-east-1)",group:"bedrock",effect:"live"},"browser.allow_private_urls":{type:"bool",default:!1,doc:"Allow navigating to private/internal IPs (localhost, 192.168.x.x, etc.)",group:"browser",effect:"live"},"browser.allow_unsafe_evaluate":{type:"bool",default:!1,doc:"Allow browser_console(expression=...) to use sensitive JS primitives (cookies/storage/clipboard/network/form values)",group:"browser",effect:"live"},"browser.auto_local_for_private_urls":{type:"bool",default:!0,doc:"When a cloud provider is set, auto-spawn local Chromium for LAN/localhost URLs instead of sending them to the cloud",group:"browser",effect:"live"},"browser.camofox.adopt_existing_tab":{type:"bool",default:!1,doc:"Rehydrate tab_id from Camofox before creating a new tab.",group:"browser",effect:"live"},"browser.camofox.loopback_host_alias":{type:"str",default:"host.docker.internal",doc:"",group:"browser",effect:"live"},"browser.camofox.managed_persistence":{type:"bool",default:!1,doc:"When true, Hermes sends a stable profile-scoped userId to Camofox so the server maps it to a persistent Firefox profile automatically. When false (default), each session gets a random userId (ephemeral).",group:"browser",effect:"live"},"browser.camofox.rewrite_loopback_urls":{type:"bool",default:!1,doc:"Docker Camofox opens page URLs from inside the container. Enable this to rewrite loopback page URLs (localhost/127.0.0.1/::1) to a host alias while leaving CAMOFOX_URL itself unchanged.",group:"browser",effect:"live"},"browser.camofox.session_key":{type:"str",default:"",doc:"",group:"browser",effect:"live"},"browser.camofox.user_id":{type:"str",default:"",doc:"Optional externally managed Camofox identity. Useful when another app owns the visible browser and Hermes should operate in it.",group:"browser",effect:"live"},"browser.cdp_url":{type:"str",default:"",doc:"Optional persistent CDP endpoint for attaching to an existing Chromium/Chrome",group:"browser",effect:"live"},"browser.command_timeout":{type:"int",default:30,doc:"Timeout for browser commands in seconds (screenshot, navigate, etc.)",group:"browser",effect:"live"},"browser.dialog_policy":{type:"str",default:"must_respond",doc:"CDP supervisor \u2014 dialog + frame detection via a persistent WebSocket. Active only when a CDP-capable backend is attached (Browserbase or local Chrome via /browser connect). See website/docs/developer-guide/browser-supervisor.md.",group:"browser",effect:"live"},"browser.dialog_timeout_s":{type:"int",default:300,doc:"Safety auto-dismiss after N seconds under must_respond",group:"browser",effect:"live"},"browser.engine":{type:"str",default:"auto",doc:'Browser engine for local mode. Passed as ``--engine <value>`` to agent-browser v0.25.3+. "auto" \u2014 use Chrome (default, don\'t pass --engine at all) "lightpanda" \u2014 use Lightpanda (1.3-5.8x faster navigation, no screenshots) "chrome" \u2014 explicitly request Chrome Also settable via AGENT_BROWSER_ENGINE env var.',group:"browser",effect:"live"},"browser.inactivity_timeout":{type:"int",default:120,doc:"",group:"browser",effect:"live"},"browser.record_sessions":{type:"bool",default:!1,doc:"Auto-record browser sessions as WebM videos",group:"browser",effect:"live"},"checkpoints.auto_prune":{type:"bool",default:!0,doc:"Auto-maintenance: hermes sweeps the checkpoint base at startup (at most once per ``min_interval_hours``) and: * deletes project entries whose workdir no longer exists (orphan) * deletes project entries whose last_touch is older than ``retention_days`` * GCs the single shared store to reclaim unreachable objects * enforces ``max_total_size_mb`` across remaining projects * deletes ``legacy-*`` archives older than ``retention_days``",group:"checkpoints",effect:"live"},"checkpoints.delete_orphans":{type:"bool",default:!0,doc:"",group:"checkpoints",effect:"live"},"checkpoints.enabled":{type:"bool",default:!1,doc:"",group:"checkpoints",effect:"live"},"checkpoints.max_file_size_mb":{type:"int",default:10,doc:"Skip any single file larger than this when staging a checkpoint. Prevents accidental snapshotting of datasets, model weights, and other large generated assets. 0 disables the filter.",group:"checkpoints",effect:"live"},"checkpoints.max_snapshots":{type:"int",default:20,doc:"Max checkpoints to keep per working directory. Pre-v2 this only limited the `/rollback` listing; v2 actually rewrites the ref and garbage-collects older commits.",group:"checkpoints",effect:"live"},"checkpoints.max_total_size_mb":{type:"int",default:500,doc:"Hard ceiling on total ``~/.hermes/checkpoints/`` size (MB). When exceeded, the oldest checkpoint per project is dropped in a round-robin pass until total size falls under the cap. 0 disables the size cap.",group:"checkpoints",effect:"live"},"checkpoints.min_interval_hours":{type:"int",default:24,doc:"",group:"checkpoints",effect:"live"},"checkpoints.retention_days":{type:"int",default:7,doc:"",group:"checkpoints",effect:"live"},"code_execution.mode":{type:"str",default:"project",doc:"Execution mode: project (default) \u2014 scripts run in the session's working directory with the active virtualenv/conda env's python, so project deps (pandas, torch, project packages) and relative paths resolve. strict \u2014 scripts run in an isolated temp directory with hermes-agent's own python (sys.executable). Maximum isolation and reproducibility; project deps and relative paths won't work. Env scrubbing (strips *_API_KEY, *_TOKEN, *_SECRET, ...) and the tool whitelist apply identically in both modes.",group:"code_execution",effect:"live"},command_allowlist:{type:"list",default:[],doc:'Permanently allowed dangerous command patterns (added via "always" approval)',group:"general",effect:"live"},"compression.abort_on_summary_failure":{type:"bool",default:!1,doc:`When True, auto-compression that fails to generate a summary (aux LLM errored / returned non-JSON / timed out) aborts entirely instead of dropping the middle window with a static "summary unavailable" placeholder. Messages are preserved unchanged and the session "freezes" at its current size until the user runs /compress (which bypasses the failure cooldown) or /new. Default False matches historical behavior; set to True if you'd rather pause than silently lose context turns when your aux model is flaky.`,group:"compression",effect:"live"},"compression.codex_gpt55_autoraise":{type:"bool",default:!0,doc:"Historical key name kept for compatibility. When True, gpt-5.4 / gpt-5.5 on the ChatGPT Codex OAuth route raise their compaction trigger to 85% (vs the global `threshold` above). Codex hard-caps both families at a 272K window, so the default 50% would compact at ~136K and waste half the usable context. Set to False to opt back down to the global threshold (e.g. 0.50) for those Codex sessions. Only this exact route is affected \u2014 gpt-5.4 / 5.5 on OpenAI's direct API, OpenRouter, and Copilot keep the global threshold regardless.",group:"compression",effect:"live"},"compression.codex_gpt55_autoraise_notice":{type:"bool",default:!0,doc:"Display the one-time Codex gpt-5.4/5.5 autoraise banner. Set False to keep the 85% threshold autoraise but suppress the user-facing notice in CLI/gateway output.",group:"compression",effect:"live"},"compression.enabled":{type:"bool",default:!0,doc:"",group:"compression",effect:"live"},"compression.hygiene_hard_message_limit":{type:"int",default:5000,doc:"gateway session-hygiene force-compress threshold by message count",group:"compression",effect:"live"},"compression.in_place":{type:"bool",default:!0,doc:"When True, compaction rewrites the message list and rebuilds the system prompt WITHOUT rotating the session id \u2014 the conversation keeps one durable id for its whole life (no parent_session_id chain, no `name #N` renumbering). Eliminates the session-rotation bug cluster (#33618 /goal loss, #14238 lost response, #33907 orphans, #45117 search gaps, #42228 null cwd) \u2014 see #38763. Non-destructive: the live context is compacted (lossy for what the model reloads), but the pre-compaction turns are soft-archived under the same id (active=0, compacted=1) \u2014 still searchable via session_search and recoverable, not deleted. Default False during rollout; will flip on after live validation.",group:"compression",effect:"live"},"compression.protect_first_n":{type:"int",default:3,doc:"non-system head messages always preserved verbatim, in ADDITION to the system prompt (which is always implicitly protected). Set to 0 for long-running rolling-compaction sessions where you want nothing pinned except the system prompt + rolling summary + recent tail.",group:"compression",effect:"live"},"compression.protect_last_n":{type:"int",default:20,doc:"minimum recent messages to keep uncompressed",group:"compression",effect:"live"},"compression.target_ratio":{type:"float",default:0.2,doc:"fraction of threshold to preserve as recent tail",group:"compression",effect:"live"},"compression.threshold":{type:"float",default:0.5,doc:"compress when context usage exceeds this ratio",group:"compression",effect:"live"},"computer_use.cua_telemetry":{type:"bool",default:!1,doc:"cua-driver ships with anonymous usage telemetry (PostHog) ENABLED by default upstream. Hermes disables it for our users unless they explicitly opt in here. When false (default), Hermes sets CUA_DRIVER_RS_TELEMETRY_ENABLED=0 in the cua-driver child env for every invocation (MCP backend, status, doctor, install). Set true to let cua-driver use its own default (telemetry on).",group:"computer_use",effect:"live"},"context.engine":{type:"str",default:"compressor",doc:"",group:"context",effect:"live"},context_file_max_chars:{type:"null",default:null,doc:"Hard cap (chars) for a single automatic context file such as SOUL.md, AGENTS.md, CLAUDE.md, .hermes.md, or .cursorrules before Hermes applies head/tail truncation. ``null`` (the default) lets the cap scale with the model's context window (floor 20K, ceiling 500K) so large-context models rarely truncate a project doc. Set a positive integer to pin a fixed cap and override the dynamic behavior. Separate from read_file tool limits.",group:"general",effect:"live"},credential_pool_strategies:{type:"dict",default:{},doc:"",group:"general",effect:"live"},"cron.chronos.callback_url":{type:"str",default:"",doc:"The agent's OWN publicly-reachable base URL for NAS\u2192agent fires (NAS POSTs {callback_url}/api/cron/fire). Empty \u2192 Chronos is unavailable and the resolver falls back to the built-in ticker.",group:"cron",effect:"live"},"cron.chronos.expected_audience":{type:"str",default:"",doc:`This agent's expected JWT audience (e.g. "agent:{instance_id}").`,group:"cron",effect:"live"},"cron.chronos.nas_jwks_url":{type:"str",default:"",doc:"NAS JWKS URL for verifying the inbound fire JWT's signature. Empty \u2192 the fire endpoint refuses all tokens (no unsigned decode).",group:"cron",effect:"live"},"cron.chronos.portal_url":{type:"str",default:"https://portal.nousresearch.com",doc:"NAS / portal base URL the agent calls to arm/cancel one-shots and that mints the inbound fire JWT (used as the expected issuer).",group:"cron",effect:"live"},"cron.max_parallel_jobs":{type:"null",default:null,doc:"Maximum number of due jobs to run in parallel per tick. null/0 = unbounded (limited only by thread count). 1 = serial (pre-v0.9 behaviour). Also overridable via HERMES_CRON_MAX_PARALLEL env var.",group:"cron",effect:"live"},"cron.mirror_delivery":{type:"bool",default:!1,doc:"Make cron deliveries CONTINUABLE: a user can reply to a cron brief and the agent has it in context (no \"what is Task #2?\" amnesia). Default False preserves the historical isolation guarantee (cron deliveries live only in the cron job's own session). Per-job `attach_to_session` overrides this for a single job. Behaviour is THREAD-PREFERRED, scoped to the job's origin chat: - Thread-capable platforms (Telegram forum/DM topics, Discord threads, Slack threads): a dedicated thread is opened for the job via the adapter's create_handoff_thread, the brief is delivered into it, and that thread's session is seeded so the user's reply in-thread continues with full context. Each continuable job gets its own scrollback, isolated from the parent channel. - DM-only platforms (WhatsApp / Signal / SMS): no threads exist, so the brief is mirrored into the origin DM session instead \u2014 the DM itself is the continuation surface. Both paths ride the shipped gateway.mirror.mirror_to_session and are alternation- and cache-safe (appended at a turn boundary, never mid-loop, never mutating the cached system prompt). Only the origin chat is ever touched \u2014 fan-out / broadcast targets are never mirrored.",group:"cron",effect:"live"},"cron.output_retention":{type:"int",default:50,doc:"Per-job output-file retention: save_job_output keeps the N most recent .md files and prunes older ones. 0 or negative disables pruning (for operators who manage cleanup externally). Default 50.",group:"cron",effect:"live"},"cron.provider":{type:"str",default:"",doc:'Active cron SCHEDULER provider (Axis B \u2014 the trigger that decides WHEN a due job fires). Empty string = the built-in in-process 60s ticker (default). Name an installed provider (plugins/cron_providers/<name>/ or $HERMES_HOME/plugins/<name>/) to relocate the trigger \u2014 e.g. "chronos", the NAS-mediated managed-cron provider for scale-to-zero deployments. An unknown or unavailable provider falls back to the built-in, so cron never loses its trigger.',group:"cron",effect:"live"},"cron.wrap_response":{type:"bool",default:!0,doc:'Wrap delivered cron responses with a header (task name) and footer ("The agent cannot see this message"). Set to false for clean output.',group:"cron",effect:"live"},"curator.archive_after_days":{type:"int",default:90,doc:"Archive a skill (move to skills/.archive/) after this many days without use. Archived skills are recoverable \u2014 no auto-deletion.",group:"curator",effect:"live"},"curator.backup.enabled":{type:"bool",default:!0,doc:"",group:"curator",effect:"live"},"curator.backup.keep":{type:"int",default:5,doc:"retain last N regular snapshots",group:"curator",effect:"live"},"curator.consolidate":{type:"bool",default:!1,doc:"Run the LLM consolidation (umbrella-building) pass. OFF by default. When off, a curator run does ONLY the deterministic inactivity prune (mark stale / archive long-unused skills) and skips the forked aux-model review entirely \u2014 no umbrella-building, no aux-model cost. Set to true to opt back into merging overlapping skills into class-level umbrellas. `hermes curator run --consolidate` overrides this for a single invocation.",group:"curator",effect:"live"},"curator.enabled":{type:"bool",default:!0,doc:"",group:"curator",effect:"live"},"curator.interval_hours":{type:"int",default:168,doc:"How long to wait between curator runs (hours). Default: 7 days.",group:"curator",effect:"live"},"curator.min_idle_hours":{type:"int",default:2,doc:"Only run when the agent has been idle at least this long (hours).",group:"curator",effect:"live"},"curator.prune_builtins":{type:"bool",default:!0,doc:"Also prune (archive) bundled built-in skills after the inactivity period, not just agent-created ones. ON by default. Built-ins are normally restored on every `hermes update`, so pruning them only sticks because a suppression list tells the re-seeder to leave them archived. Hub-installed skills are NEVER pruned here \u2014 they have an external upstream owner. Built-ins accrue usage telemetry and their inactivity clock starts the first time the curator sees them, so a long-unused built-in is archived only after archive_after_days of genuine non-use (never a mass-prune on the first run). Set to false to keep all bundled built-ins permanently.",group:"curator",effect:"live"},"curator.stale_after_days":{type:"int",default:30,doc:'Mark a skill as "stale" after this many days without use.',group:"curator",effect:"live"},custom_prompt:{type:"str",default:"",doc:"Ad-hoc system-prompt addendum set via /prompt.",group:"general",effect:"live"},custom_providers:{type:"dict",default:{},doc:"OpenAI-compatible provider definitions keyed by name.",group:"general",effect:"live"},"dashboard.basic_auth.password":{type:"str",default:"",doc:"plaintext fallback (hashed in-memory at load)",group:"dashboard",effect:"live"},"dashboard.basic_auth.password_hash":{type:"str",default:"",doc:"scrypt$... (preferred \u2014 no plaintext at rest)",group:"dashboard",effect:"live"},"dashboard.basic_auth.secret":{type:"str",default:"",doc:"token-signing key; blank \u2192 random per-process",group:"dashboard",effect:"live"},"dashboard.basic_auth.session_ttl_seconds":{type:"int",default:0,doc:"0 \u2192 plugin default (12h)",group:"dashboard",effect:"live"},"dashboard.basic_auth.username":{type:"str",default:"",doc:"blank \u2192 plugin no-op (no password provider)",group:"dashboard",effect:"live"},"dashboard.drain_auth.min_secret_chars":{type:"int",default:43,doc:"",group:"dashboard",effect:"live"},"dashboard.drain_auth.scope":{type:"str",default:"drain",doc:"",group:"dashboard",effect:"live"},"dashboard.oauth.client_id":{type:"str",default:"",doc:"agent:{instance_id} \u2014 Portal provisions this",group:"dashboard",effect:"live"},"dashboard.oauth.portal_url":{type:"str",default:"",doc:"blank \u2192 use plugin default (production Portal)",group:"dashboard",effect:"live"},"dashboard.public_url":{type:"str",default:"",doc:"Public URL override (env: ``HERMES_DASHBOARD_PUBLIC_URL``). When set, this is the complete authority \u2014 scheme + host + optional path prefix (e.g. ``https://example.com/hermes``) \u2014 the OAuth ``redirect_uri`` is built from. Set this for deploys behind reverse proxies that don't reliably forward ``X-Forwarded-Host`` / ``X-Forwarded-Proto`` / ``X-Forwarded-Prefix`` (manual nginx setups, on-prem ingresses, custom-domain Fly deploys without proper proxy headers). When set, ``X-Forwarded-Prefix`` is IGNORED on the OAuth path because the operator has declared the public URL \u2014 we no longer need to guess from proxy headers, and stacking the prefix on top would double-prefix the common case where the prefix is already baked into ``public_url``. Leave empty to use the existing proxy-header reconstruction (the default). Validation: rejects values without ``http(s)://`` scheme or without a host, and any string containing quote / angle / whitespace / control characters. A malformed value silently falls through to request reconstruction rather than breaking the login flow.",group:"dashboard",effect:"live"},"dashboard.show_token_analytics":{type:"bool",default:!1,doc:"Hide the token/cost analytics surfaces (Analytics page, token bars and cost figures on the Models page) by default. The numbers shown there are a local debug estimate: they only count successful main-agent responses with a usable ``response.usage``, and silently exclude every auxiliary call (context compression, title generation, vision, session search, web extract, smart approval, MCP routing, plugin LLM access) plus provider-side retries, fallback attempts, and any call whose usage block didn't come back. Cache writes are also missing from the API response. On models with heavy auxiliary traffic (Kimi K2.6, MiniMax M2.7) the local total can be 10x-100x lower than the provider bill, which is worse than hiding the numbers entirely because they look precise enough to compare against the provider. Set this to True to re-enable the surfaces with the understanding that the numbers are a local lower-bound estimate, not billing.",group:"dashboard",effect:"live"},"dashboard.theme":{type:"str",default:"default",doc:'Dashboard visual theme: "default", "midnight", "ember", "mono", "cyberpunk", "rose"',group:"dashboard",effect:"live"},"delegation.api_key":{type:"str",default:"",doc:"API key for delegation.base_url (falls back to OPENAI_API_KEY)",group:"delegation",effect:"session"},"delegation.api_mode":{type:"str",default:"",doc:`wire protocol for delegation.base_url: "chat_completions", "codex_responses", or "anthropic_messages". Empty = auto-detect from URL (e.g. /anthropic suffix \u2192 anthropic_messages). Set this explicitly for non-standard endpoints the heuristic can't detect.`,group:"delegation",effect:"session"},"delegation.base_url":{type:"str",default:"",doc:"direct OpenAI-compatible endpoint for subagents",group:"delegation",effect:"session"},"delegation.child_timeout_seconds":{type:"int",default:0,doc:"optional wall-clock cap per child agent. 0 (default) = no timeout: children fail only from real errors (API, tools, iteration budget), never a delegation stopwatch. Set a positive number of seconds (floor 30s) to enforce a hard cap.",group:"delegation",effect:"session"},"delegation.inherit_mcp_toolsets":{type:"bool",default:!0,doc:'When delegate_task narrows child toolsets explicitly, preserve any MCP toolsets the parent already has enabled. On by default so narrowing (e.g. toolsets=["web","browser"]) expresses "I want these extras" without silently stripping MCP tools the parent already has. Set to false for strict intersection.',group:"delegation",effect:"session"},"delegation.max_concurrent_children":{type:"int",default:3,doc:"unified concurrency cap: max parallel children per batch AND max concurrent background (background=true) delegation units. New async dispatches beyond the cap fall back to synchronous execution. Floor of 1, no ceiling. (Replaces the deprecated max_async_children.)",group:"delegation",effect:"session"},"delegation.max_iterations":{type:"int",default:50,doc:"per-subagent iteration cap (each subagent gets its own budget, independent of the parent's max_iterations)",group:"delegation",effect:"session"},"delegation.max_spawn_depth":{type:"int",default:1,doc:"Orchestrator role controls (see tools/delegate_tool.py:_get_max_spawn_depth and _get_orchestrator_enabled). Floored at 1, no upper ceiling \u2014 raise deliberately, each level multiplies API cost.",group:"delegation",effect:"session"},"delegation.max_summary_chars":{type:"int",default:24000,doc:`Subagent summaries return to the parent's context verbatim. A batch fan-out (N children) returns N summaries at once, which can exceed the parent's context window and trigger a compression/429 death spiral. delegate_task sizes each summary against the parent's remaining context headroom (split across the batch); when it must trim, the full text is spilled to ~/.hermes/cache/delegation/ (mounted into remote backends) and the in-context summary becomes a head+tail window plus a footer with the exact read_file offset to page the omitted middle \u2014 the same convention web_extract uses for large pages. Nothing is lost. max_summary_chars is a hard per-summary character ceiling layered on top of that dynamic budget (belt-and-suspenders for models that ignore the "be concise" instruction). 0 disables the hard ceiling; the dynamic headroom budget still applies.`,group:"delegation",effect:"session"},"delegation.model":{type:"str",default:"",doc:'e.g. "google/gemini-3-flash-preview" (empty = inherit parent model)',group:"delegation",effect:"session"},"delegation.orchestrator_enabled":{type:"bool",default:!0,doc:'kill switch for role="orchestrator"',group:"delegation",effect:"session"},"delegation.provider":{type:"str",default:"",doc:'e.g. "openrouter" (empty = inherit parent provider + credentials)',group:"delegation",effect:"session"},"delegation.reasoning_effort":{type:"str",default:"",doc:`reasoning effort for subagents: "xhigh", "high", "medium", "low", "minimal", "none" (empty = inherit parent's level)`,group:"delegation",effect:"session"},"delegation.subagent_auto_approve":{type:"bool",default:!1,doc:`When a subagent hits a dangerous-command approval prompt, the parent's prompt_toolkit TUI owns stdin \u2014 a thread-local input() call from the subagent worker would deadlock the parent UI. To avoid the deadlock, subagent threads ALWAYS resolve approvals non-interactively: false (default) \u2192 auto-deny with a logger.warning audit line (safe) true \u2192 auto-approve "once" with a logger.warning audit line Flip to true only if you trust delegated work to run dangerous cmds without human review (cron pipelines, batch automation, etc.).`,group:"delegation",effect:"session"},"desktop.disable_gpu":{type:"str",default:"auto",doc:'GPU hardware acceleration policy for the desktop app: "auto" - let the app detect remote displays (SSH/VNC/RDP) and disable GPU only then (default; current behavior). true - always disable GPU acceleration (software rendering). Use on no-GPU VMs / Proxmox hosts where the GPU path hangs. false - always keep GPU acceleration on, even over a remote display. Bridged to the HERMES_DESKTOP_DISABLE_GPU env var the Electron app reads.',group:"desktop",effect:"live"},"desktop.electron_flags":{type:"list",default:[],doc:'Extra Electron command-line flags appended to every desktop launch, e.g. ["--ozone-platform=x11"] on headless/VM X11 hosts that need an explicit ozone backend, or GPU workaround flags. A list of strings; a single string is also accepted and shell-split.',group:"desktop",effect:"live"},"discord.allow_any_attachment":{type:"bool",default:!1,doc:"DEPRECATED / no-op. Any uploaded file is now always cached and surfaced to the agent regardless of file type \u2014 authorization to message the agent is the gate, not the extension. Kept so existing configs that set it do not error. Env override: DISCORD_ALLOW_ANY_ATTACHMENT.",group:"discord",effect:"live"},"discord.allowed_channels":{type:"str",default:"",doc:"If set, bot ONLY responds in these channel IDs (whitelist)",group:"discord",effect:"live"},"discord.auto_thread":{type:"bool",default:!0,doc:"Auto-create threads on @mention in channels (like Slack)",group:"discord",effect:"live"},"discord.bots_require_inline_mention":{type:"bool",default:!1,doc:"Multi-bot rooms: if True, another bot must type @thisbot in its message to trigger a reply; a Discord reply/quote alone won't. Prevents two bots auto-replying to each other forever. Does not affect humans.",group:"discord",effect:"live"},"discord.channel_prompts":{type:"dict",default:{},doc:"Per-channel ephemeral system prompts (forum parents apply to child threads)",group:"discord",effect:"live"},"discord.dm_role_auth_guild":{type:"str",default:"",doc:"Opt-in DM role-based auth (#12136). By default, DISCORD_ALLOWED_ROLES authorizes only guild messages in the role's own guild \u2014 DMs require DISCORD_ALLOWED_USERS. Set dm_role_auth_guild to a guild ID to also authorize DMs from members of that one trusted guild holding the allowed role. Unset / empty / 0 = secure default (DM role-auth off).",group:"discord",effect:"live"},"discord.free_response_channels":{type:"str",default:"",doc:"Comma-separated channel IDs where bot responds without mention",group:"discord",effect:"live"},"discord.history_backfill":{type:"bool",default:!0,doc:"If True, prepend recent channel scrollback when bot is triggered (recovers messages missed while require_mention gated them out)",group:"discord",effect:"live"},"discord.history_backfill_limit":{type:"int",default:50,doc:"Max number of recent messages to scan when assembling the backfill block",group:"discord",effect:"live"},"discord.max_attachment_bytes":{type:"int",default:33554432,doc:"Maximum bytes per attachment the gateway will cache. The whole file is held in memory while being written, so unlimited uploads carry a real memory cost. Default 32 MiB matches the historical hardcoded cap. Set to 0 for no cap. Env override: DISCORD_MAX_ATTACHMENT_BYTES.",group:"discord",effect:"live"},"discord.reactions":{type:"bool",default:!0,doc:"Add \uD83D\uDC40/\u2705/\u274C reactions to messages during processing",group:"discord",effect:"live"},"discord.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in server channels",group:"discord",effect:"live"},"discord.server_actions":{type:"str",default:"",doc:'discord / discord_admin tools: restrict which actions the agent may call. Default (empty) = all actions allowed (subject to bot privileged intents). Accepts comma-separated string ("list_guilds,list_channels,fetch_messages") or YAML list. Unknown names are dropped with a warning at load time. Actions: list_guilds, server_info, list_channels, channel_info, list_roles, member_info, search_members, fetch_messages, list_pins, pin_message, unpin_message, create_thread, add_role, remove_role.',group:"discord",effect:"live"},"discord.thread_require_mention":{type:"bool",default:!1,doc:"If True, require @mention in threads too (multi-bot threads)",group:"discord",effect:"live"},"discord.voice_fx.ack_enabled":{type:"bool",default:!0,doc:"speak a short phrase before the first tool call",group:"discord",effect:"live"},"discord.voice_fx.ack_phrases":{type:"list",default:["Let me look into that.","One moment.","Checking on that now.","Give me a sec.","On it."],doc:"picked at random; set [] to disable phrases",group:"discord",effect:"live"},"discord.voice_fx.ambient_enabled":{type:"bool",default:!0,doc:'play the idle "thinking" bed while tools run',group:"discord",effect:"live"},"discord.voice_fx.ambient_gain":{type:"float",default:0.18,doc:"idle bed loudness, 0.0\u20131.0",group:"discord",effect:"live"},"discord.voice_fx.ambient_path":{type:"str",default:"",doc:'custom loop audio file; "" = synthesised pad',group:"discord",effect:"live"},"discord.voice_fx.duck_gain":{type:"float",default:0.06,doc:"ambient loudness while speech plays",group:"discord",effect:"live"},"discord.voice_fx.enabled":{type:"bool",default:!1,doc:"master switch for the mixer subsystem",group:"discord",effect:"live"},"discord.voice_fx.speech_gain":{type:"float",default:1,doc:"TTS / ack loudness, 0.0\u20131.0",group:"discord",effect:"live"},"display.bell_on_complete":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.busy_input_mode":{type:"str",default:"interrupt",doc:"interrupt | queue | steer",group:"display",effect:"live"},"display.busy_steer_ack_enabled":{type:"bool",default:!0,doc:'When busy_input_mode="steer", suppress only the visible "Steered into current run" confirmation bubble by setting this false. The mid-turn steering itself still happens.',group:"display",effect:"live"},"display.cli_refresh_interval":{type:"float",default:1,doc:"Seconds between prompt_toolkit redraws in the classic CLI when idle. Default 1.0 keeps the wall-clock status-bar read-outs (idle-since- last-turn) ticking and keeps the bottom chrome alive during idle \u2014 without it prompt_toolkit stops repainting the status bar after a turn and it can go stale/disappear (#45592). Set 0 to disable the background refresh if it fights terminal auto-scroll in non-fullscreen mode on some emulators (#48309).",group:"display",effect:"live"},"display.compact":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.copy_shortcut":{type:"str",default:"auto",doc:'"auto" (platform default) | "ctrl_c" | "ctrl_shift_c" | "disabled"',group:"display",effect:"live"},"display.credits_notices":{type:"bool",default:!0,doc:"Nous credits status-bar notices (usage bands, grant-spent, depleted / restored). When false, no credits notices are emitted \u2014 balance data is still captured and /usage keeps working. Off switch for sub + top-up users who find the gauge noisy.",group:"display",effect:"live"},"display.details_mode":{type:"str",default:"collapsed",doc:"Tool-progress section fold state: hidden | collapsed | expanded.",group:"display",effect:"live"},"display.ephemeral_system_ttl":{type:"int",default:0,doc:'Auto-delete system-notice replies (e.g. "\u2728 New session started!", "\u267B Restarting gateway\u2026", "\u26A1 Stopped\u2026") after N seconds on platforms that support message deletion (currently Telegram; other platforms ignore and leave the message in place). Only affects slash-command replies wrapped with gateway.platforms.base.EphemeralReply \u2014 agent responses and content messages are never touched. Default 0 (disabled) preserves prior behavior.',group:"display",effect:"live"},"display.file_mutation_verifier":{type:"bool",default:!0,doc:'File-mutation verifier footer. When true (default), the agent appends a one-line advisory to its final response whenever a write_file / patch call failed during the turn and was never superseded by a successful write to the same path. This catches the "batch of parallel patches, half fail, model claims success" class of over-claim that otherwise forces users to run `git status` to verify edits landed. Set false to suppress.',group:"display",effect:"live"},"display.final_response_markdown":{type:"str",default:"strip",doc:"render | strip | raw",group:"display",effect:"live"},"display.friendly_tool_labels":{type:"bool",default:!0,doc:'Human-phrased tool status labels for built-in tools: "Searching the web for ...", "Reading <file>", "Browsing <url>" instead of the raw tool name. Applies to CLI spinner + gateway/desktop tool-progress. Custom/plugin/MCP tools always fall back to the raw preview.',group:"display",effect:"live"},"display.inline_diffs":{type:"bool",default:!0,doc:"Show inline diff previews for write actions (write_file, patch, skill_manage)",group:"display",effect:"live"},"display.interface":{type:"str",default:"cli",doc:'Which interface bare `hermes` (and `hermes chat`) launches by default: "cli" \u2014 the classic prompt_toolkit REPL (default, preserves prior behavior) "tui" \u2014 the modern Ink TUI (same as passing `--tui`) Explicit flags always win over this setting: `--cli` forces the classic REPL and `--tui` (or HERMES_TUI=1) forces the TUI regardless of config.',group:"display",effect:"live"},"display.interim_assistant_messages":{type:"bool",default:!0,doc:"Gateway: show natural mid-turn assistant status messages",group:"display",effect:"live"},"display.language":{type:"str",default:"en",doc:"UI language for static user-facing messages (approval prompts, a handful of gateway slash-command replies). Does NOT affect agent responses, log lines, tool outputs, or slash-command descriptions. Supported: en, zh, ja, de, es, fr, tr, uk. Unknown values fall back to en.",group:"display",effect:"live"},"display.memory_notifications":{type:"str",default:"on",doc:'Background self-improvement review notifications surfaced in chat. "off" \u2014 no chat notification (the review still runs and writes) "on" \u2014 generic "\uD83D\uDCBE Memory updated" line (default) "verbose" \u2014 include a compact content preview of what changed Per-platform overrides via display.platforms.<platform>.memory_notifications.',group:"display",effect:"live"},"display.persist_prompts":{type:"bool",default:!0,doc:"Print a one-line summary of resolved modal prompts (approval / clarify) into scrollback so the question and decision survive the panel repaint. Set false to keep scrollback untouched.",group:"display",effect:"live"},"display.persistent_output":{type:"bool",default:!0,doc:"Preserve recent classic CLI output across Ctrl+L, /redraw, and terminal resize full-screen clears. Disable if a terminal emulator behaves badly with replayed scrollback.",group:"display",effect:"live"},"display.persistent_output_max_lines":{type:"int",default:200,doc:"",group:"display",effect:"live"},"display.personality":{type:"str",default:"",doc:"",group:"display",effect:"live"},"display.pet.enabled":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.pet.render_mode":{type:"str",default:"auto",doc:"Terminal render protocol for CLI/TUI: auto \u2014 detect kitty/iTerm2/sixel, else unicode half-blocks kitty | iterm | sixel | unicode | off",group:"display",effect:"live"},"display.pet.scale":{type:"float",default:0.33,doc:"Master size scalar (relative to native 192\xD7208 frames). One knob shrinks every surface: the desktop canvas scales its pixels by it and the CLI/TUI derive their terminal column width from it. The half-block fallback clamps to a legibility floor (it can't shrink as far as true-pixel kitty/GUI without turning to mush).",group:"display",effect:"live"},"display.pet.slug":{type:"str",default:"",doc:"Active pet slug; resolved against installed pets in get_hermes_home()/pets/. Empty \u2192 first installed pet.",group:"display",effect:"live"},"display.pet.unicode_cols":{type:"int",default:0,doc:"Hard override for terminal column width. 0 = auto (derive from scale); set a positive int only to pin the half-block/kitty width independently of scale.",group:"display",effect:"live"},"display.platforms.discord.streaming":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.platforms.telegram.streaming":{type:"bool",default:!0,doc:"",group:"display",effect:"live"},"display.reasoning_full":{type:"bool",default:!1,doc:'When reasoning display is on, the post-response "Reasoning" recap box collapses long thinking to the first 10 lines. Set true to print the complete thinking text uncollapsed (live streaming is always full).',group:"display",effect:"live"},"display.reasoning_style":{type:"str",default:"code",doc:'How a reasoning/thinking summary renders when show_reasoning is on. "code" (default) = \uD83D\uDCAD fenced code block; "blockquote" = "> " lines; "subtext" = "-# " lines (Discord small grey metadata text). Discord defaults to "subtext"; override per-platform via display.platforms.<platform>.reasoning_style.',group:"display",effect:"live"},"display.resume_display":{type:"str",default:"full",doc:"",group:"display",effect:"live"},"display.resume_exchanges":{type:"int",default:10,doc:"Recap tuning for /resume and startup resume. The defaults match the historical hardcoded values; expose them as config so power users can widen or tighten the snapshot to taste.",group:"display",effect:"live"},"display.resume_max_assistant_chars":{type:"int",default:200,doc:"truncate non-last assistant text",group:"display",effect:"live"},"display.resume_max_assistant_lines":{type:"int",default:3,doc:"truncate non-last assistant lines",group:"display",effect:"live"},"display.resume_max_user_chars":{type:"int",default:300,doc:"truncate user message text",group:"display",effect:"live"},"display.resume_skip_tool_only":{type:"bool",default:!0,doc:"When True (default), assistant entries that are *only* tool calls (no visible text) are skipped in the recap. This prevents the recap from being dominated by `[2 tool calls: terminal, read_file]` lines when an exchange was tool-heavy. Set False to restore the legacy behavior of showing tool-call summaries inline.",group:"display",effect:"live"},"display.runtime_footer.enabled":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.runtime_footer.fields":{type:"list",default:["model","context_pct","cwd"],doc:"Order shown; drop any to hide",group:"display",effect:"live"},"display.show_cost":{type:"bool",default:!1,doc:"Show $ cost in the status bar (off by default)",group:"display",effect:"live"},"display.show_reasoning":{type:"bool",default:!0,doc:"Stream the model's reasoning/thinking live before the response. Default ON: on thinking models the reasoning phase can run tens of seconds, and with this off the user stares at a spinner the whole time even though tokens are streaming. Set false for quiet output.",group:"display",effect:"live"},"display.skin":{type:"str",default:"default",doc:"",group:"display",effect:"live"},"display.status_phrases":{type:"dict",default:{},doc:'Optional custom phrases for generic long-running status messages. Built-in defaults live in gateway/assets/status_phrases.yaml. Users can set `path`/`paths` to HERMES_HOME-relative YAML files/directories (or rely on conventional status_phrases.yaml / status_phrases/*.yaml). Keys: status, generic. Use mode: "append" (default) to add phrases, or "replace" to fully replace configured surfaces. Per-platform overrides live under display.platforms.<platform>.status_phrases.',group:"display",effect:"live"},"display.streaming":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.thinking_mode":{type:"str",default:"collapsed",doc:"Reasoning display: collapsed | truncated | full.",group:"display",effect:"live"},"display.timestamp_format":{type:"str",default:"%H:%M",doc:'strftime format for timestamps (e.g. "%b-%d %H:%M")',group:"display",effect:"live"},"display.timestamps":{type:"bool",default:!1,doc:"Show timestamp on user and assistant labels",group:"display",effect:"live"},"display.tool_preview_length":{type:"int",default:0,doc:"Max chars for tool call previews (0 = no limit, show full paths/commands)",group:"display",effect:"live"},"display.tool_progress":{type:"str",default:"all",doc:"Tool-progress verbosity: off | new | all | verbose.",group:"display",effect:"live"},"display.tool_progress_command":{type:"bool",default:!1,doc:"Enable /verbose command in messaging gateway",group:"display",effect:"live"},"display.tool_progress_grouping":{type:"str",default:"accumulate",doc:'How gateway tool-progress is grouped on platforms that support message editing: "accumulate" (default) edits one bubble in place; "separate" sends one message per tool (the pre-v0.9 behavior, noisier). Only applies where tool_progress is already enabled. Per-platform override via display.platforms.<platform>.tool_progress_grouping.',group:"display",effect:"live"},"display.tool_progress_overrides":{type:"dict",default:{},doc:"DEPRECATED \u2014 use display.platforms instead",group:"display",effect:"live"},"display.tui_agents_nudge":{type:"bool",default:!0,doc:'When true (default), `hermes --tui` drops a one-time hint ("subagents working \xB7 /agents to watch live") the first time a turn starts delegating, nudging the user toward the live spawn-tree dashboard. Set false to suppress the hint.',group:"display",effect:"live"},"display.tui_auto_resume_recent":{type:"bool",default:!1,doc:"When true, `hermes --tui` auto-resumes the most recent human- facing session on launch instead of forging a fresh one. Mirrors `hermes -c` muscle memory. Default off so existing users aren't surprised. HERMES_TUI_RESUME=<id> always wins.",group:"display",effect:"live"},"display.tui_compact":{type:"bool",default:!1,doc:"Ink-TUI compact layout.",group:"display",effect:"live"},"display.tui_mouse":{type:"bool",default:!0,doc:"Ink-TUI mouse support.",group:"display",effect:"live"},"display.tui_status_indicator":{type:"str",default:"kaomoji",doc:"TUI busy indicator style: kaomoji (default), emoji, unicode (braille spinner), or ascii. Live-swappable via `/indicator <style>`.",group:"display",effect:"live"},"display.tui_statusbar":{type:"str",default:"top",doc:"Ink-TUI statusbar placement: top | bottom | off.",group:"display",effect:"live"},"display.turn_completion_explainer":{type:"bool",default:!0,doc:`Turn-completion explainer. When true (default), the agent appends a one-line explanation to its final response whenever a turn ends abnormally with no usable reply \u2014 empty content after retries, a partial/truncated stream, a still-pending tool result, or an iteration/budget limit. Replaces the bare "(empty)" sentinel so the failure isn't silent from the UI's perspective. Set false to suppress.`,group:"display",effect:"live"},"display.user_message_preview.first_lines":{type:"int",default:2,doc:"",group:"display",effect:"live"},"display.user_message_preview.last_lines":{type:"int",default:2,doc:"",group:"display",effect:"live"},fallback_model:{type:"dict",default:null,doc:"Fallback model (dict) or chain (list of dicts) for provider failover.",group:"general",effect:"live"},fallback_providers:{type:"list",default:[],doc:"",group:"general",effect:"live"},file_read_max_chars:{type:"int",default:1e5,doc:"Maximum characters returned by a single read_file call. Reads that exceed this are rejected with guidance to use offset+limit. 100K chars \u2248 25\u201335K tokens across typical tokenisers.",group:"general",effect:"live"},"gateway.api_server.max_concurrent_runs":{type:"int",default:10,doc:"Maximum number of agent runs the API server will service concurrently. Requests to /v1/chat/completions, /v1/responses, and /v1/runs that arrive while this many runs are already in flight are rejected with HTTP 429 + a Retry-After header, bounding CPU / memory / upstream-LLM-quota exhaustion from a request flood. Set to 0 to disable the cap entirely.",group:"gateway",effect:"live"},"gateway.max_inbound_media_bytes":{type:"int",default:134217728,doc:"Maximum bytes for an inbound image / audio / video payload the gateway will buffer into memory and cache to disk. Inbound media is read fully into RAM before being written, so an unbounded upload (Discord Nitro allows 500 MB) or a remote media URL pointing at a huge file can spike memory and OOM-kill the gateway on constrained deployments. Enforced in the shared cache helpers (gateway/platforms/base.py), so the cap holds across every platform adapter. ``0`` disables the cap. Default 128 MiB.",group:"gateway",effect:"live"},"gateway.media_delivery_allow_dirs":{type:"list",default:[],doc:"Extra directories from which model-emitted bare file paths may be uploaded as native gateway attachments. Files inside the Hermes cache (~/.hermes/cache/{documents,images,audio,video,screenshots}) are always trusted; this list adds operator-controlled roots (project dirs, scratch dirs, mounted shares). Accepts a list of absolute paths or a single os.pathsep-separated string. Bridged to HERMES_MEDIA_ALLOW_DIRS at gateway startup. Tilde paths are expanded. Honored in both default and strict mode.",group:"gateway",effect:"live"},"gateway.message_timestamps.enabled":{type:"bool",default:!1,doc:"",group:"gateway",effect:"live"},"gateway.platform_connect_timeout":{type:"int",default:30,doc:'Seconds the gateway waits for a single messaging platform to finish connecting during startup (and on reconnect). Discord in particular can blow past the old fixed 30s when an account has many slash commands to sync (#19776: 90-173 skills \u2192 ~28-31s sync). Raise this if your gateway hits "discord connect timed out" / "Timeout waiting for connection to Discord" restart loops. ``0`` or negative disables the timeout entirely (wait indefinitely). Bridged at startup to the internal HERMES_GATEWAY_PLATFORM_CONNECT_TIMEOUT env var, which still works as a manual override and wins if set explicitly.',group:"gateway",effect:"live"},"gateway.restart_loop_guard.max_restarts":{type:"int",default:3,doc:"",group:"gateway",effect:"live"},"gateway.restart_loop_guard.window_seconds":{type:"int",default:60,doc:"",group:"gateway",effect:"live"},"gateway.scale_to_zero.idle_timeout_minutes":{type:"int",default:5,doc:"",group:"gateway",effect:"live"},"gateway.strict":{type:"bool",default:!1,doc:"When false (default), any file path the agent emits is delivered as a native attachment as long as it isn't under the credential / system-path denylist (/etc, /proc, ~/.ssh, ~/.aws, ~/.hermes/.env, auth.json, etc.). This matches the symmetry of inbound delivery \u2014 we accept any document type the user uploads, and the agent can hand back any file that isn't a credential. When true, fall back to the older allowlist+recency-window behavior: files must live under the Hermes cache, under ``media_delivery_allow_dirs``, or be freshly produced inside the ``trust_recent_files_seconds`` window. Recommended for public-facing gateways where prompt injection from one user shouldn't be able to exfiltrate the host's secrets to that same user. Bridged to HERMES_MEDIA_DELIVERY_STRICT.",group:"gateway",effect:"live"},"gateway.trust_recent_files":{type:"bool",default:!0,doc:'When true, files whose mtime is within ``trust_recent_files_seconds`` of "now" are trusted for native delivery even outside the cache / operator allowlist \u2014 useful for ``pandoc -o /tmp/report.pdf`` or PDFs the agent writes into a working directory. System paths (/etc, /proc, ~/.ssh, ~/.aws, etc.) remain blocked regardless. Disable to fall back to pure-allowlist mode. Bridged to HERMES_MEDIA_TRUST_RECENT_FILES. Only consulted when ``strict`` is true; in default mode the denylist alone gates delivery.',group:"gateway",effect:"live"},"gateway.trust_recent_files_seconds":{type:"int",default:600,doc:"Recency window in seconds. 600 (10 min) comfortably covers a multi-tool agent turn. Bridged to HERMES_MEDIA_TRUST_RECENT_SECONDS. Only consulted when ``strict`` is true.",group:"gateway",effect:"live"},"gateway.write_sessions_json":{type:"bool",default:!0,doc:"Whether the gateway keeps writing the legacy sessions.json mirror of its routing index. The primary copy lives in state.db (the gateway_routing table). Default True for backward compatibility with external tooling and downgrade safety; set to false to stop producing ~/.hermes/sessions/sessions.json entirely.",group:"gateway",effect:"live"},"goals.max_turns":{type:"int",default:20,doc:"Max continuation turns before Hermes auto-pauses the goal and asks the user to /goal resume. Protects against judge false negatives (goal actually done but judge says continue) and unbounded model spend on fuzzy / unachievable goals.",group:"goals",effect:"live"},honcho:{type:"dict",default:{},doc:"Honcho AI-native memory -- reads ~/.honcho/config.json as single source of truth. This section is only needed for hermes-specific overrides; everything else (apiKey, workspace, peerName, sessions, enabled) comes from the global config.",group:"general",effect:"live"},hooks:{type:"dict",default:{},doc:"Shell-script hooks \u2014 declarative bridge that invokes shell scripts on plugin-hook events (pre_tool_call, post_tool_call, pre_llm_call, subagent_stop, etc.). Each entry maps an event name to a list of {matcher, command, timeout} dicts. First registration of a new command prompts the user for consent; subsequent runs reuse the stored approval from ~/.hermes/shell-hooks-allowlist.json. See `website/docs/user-guide/features/hooks.md` for schema + examples.",group:"general",effect:"live"},hooks_auto_accept:{type:"bool",default:!1,doc:"Auto-accept shell-hook registrations without a TTY prompt. Also toggleable per-invocation via --accept-hooks or HERMES_ACCEPT_HOOKS=1. Gateway / cron / non-interactive runs need this (or one of the other channels) to pick up newly-added hooks.",group:"general",effect:"live"},"human_delay.max_ms":{type:"int",default:2500,doc:"",group:"human_delay",effect:"live"},"human_delay.min_ms":{type:"int",default:800,doc:"",group:"human_delay",effect:"live"},"human_delay.mode":{type:"str",default:"off",doc:"",group:"human_delay",effect:"live"},"kanban.auto_decompose":{type:"bool",default:!0,doc:"When true, the kanban dispatcher auto-runs the decomposer on tasks that land in Triage (every dispatcher tick). When false, decomposition is manual via `hermes kanban decompose <id>` or the dashboard's Decompose button.",group:"kanban",effect:"live"},"kanban.auto_decompose_per_tick":{type:"int",default:3,doc:"Max triage tasks to decompose per dispatcher tick. Prevents a large bulk-load of triage tasks from spending a burst of aux LLM calls in one tick. Excess tasks defer to the next tick.",group:"kanban",effect:"live"},"kanban.default_assignee":{type:"str",default:"",doc:"Where a child task lands if the orchestrator can't match an assignee to any installed profile. When unset, falls back to the default profile. A task never ends up with assignee=None.",group:"kanban",effect:"live"},"kanban.dispatch_in_gateway":{type:"bool",default:!0,doc:"Run the dispatcher inside the gateway process. On by default \u2014 the cost is ~300\xB5s every `dispatch_interval_seconds` when idle, and gateway is the supervisor users already have. Set to false only if you run the dispatcher as a separate systemd unit or don't want the gateway to spawn workers.",group:"kanban",effect:"live"},"kanban.dispatch_interval_seconds":{type:"int",default:60,doc:"Seconds between dispatcher ticks (idle or not). Lower = snappier pickup of newly-ready tasks; higher = less SQL pressure.",group:"kanban",effect:"live"},"kanban.dispatch_stale_timeout_seconds":{type:"int",default:14400,doc:"Stale detection: running tasks that have exceeded this many seconds without a heartbeat (since ``last_heartbeat_at``) are auto-reclaimed to ``ready`` on the next dispatcher tick. The worker process (if still running host-locally) is terminated before the reclaim. 0 disables stale detection entirely.",group:"kanban",effect:"live"},"kanban.failure_limit":{type:"int",default:2,doc:"Auto-block after this many consecutive non-success attempts for the same task/profile (spawn_failed, timed_out, or crashed). Reassignment resets the streak for the new profile.",group:"kanban",effect:"live"},"kanban.max_in_progress_per_profile":{type:"null",default:null,doc:`Per-profile concurrency cap (#21582). When set to a positive int, no single profile can have more than N workers running at once, even if the global max_in_progress / max_spawn caps would allow it. Tasks blocked this way defer to the next dispatcher tick. Unset (None) means "no per-profile cap" \u2014 backward-compatible with existing installs. Useful for fan-out workflows that would otherwise saturate one profile's local model / API quota / browser pool while leaving other profiles idle.`,group:"kanban",effect:"live"},"kanban.orchestrator_profile":{type:"str",default:"",doc:"Profile assigned to the root/orchestration task after Triage decomposition. When unset, falls back to the default profile (the one `hermes` launches with no -p flag). This does not control the decomposer prompt, model, or skills; configure that LLM path under auxiliary.kanban_decomposer.",group:"kanban",effect:"live"},"kanban.worker_log_backup_count":{type:"int",default:1,doc:"",group:"kanban",effect:"live"},"kanban.worker_log_rotate_bytes":{type:"int",default:2097152,doc:"Worker stdout/stderr logs rotate at spawn time. Defaults preserve the historical 2 MiB + one-backup behavior; long-running workers can raise these to keep more early failure evidence.",group:"kanban",effect:"live"},"logging.backup_count":{type:"int",default:3,doc:"Number of rotated backup files to keep",group:"logging",effect:"live"},"logging.level":{type:"str",default:"INFO",doc:"Minimum level for agent.log: DEBUG, INFO, WARNING",group:"logging",effect:"live"},"logging.max_size_mb":{type:"int",default:5,doc:"Max size per log file before rotation",group:"logging",effect:"live"},"lsp.enabled":{type:"bool",default:!0,doc:"Master toggle. Setting this to false disables the entire subsystem \u2014 no servers spawn, no background event loop, no cost.",group:"lsp",effect:"live"},"lsp.install_strategy":{type:"str",default:"auto",doc:'How to handle missing server binaries. ``"auto"`` \u2014 try to install via npm/go/pip into ``<HERMES_HOME>/lsp/bin/`` on first use. ``"manual"`` \u2014 only use binaries already on PATH. ``"off"`` \u2014 alias for ``manual``.',group:"lsp",effect:"live"},"lsp.servers":{type:"dict",default:{},doc:'Per-server overrides. Each key is a server_id from the registry (``pyright``, ``typescript``, ``gopls``, ``rust-analyzer``, etc.) and accepts: disabled: true \u2014 skip this server even when its extensions match command: ["full/path/to/server", "--stdio"] \u2014 pin a custom binary path; bypasses auto-install env: {"KEY": "value"} \u2014 extra env vars passed to the spawned process initialization_options: {...} \u2014 merged into the LSP ``initializationOptions`` Empty by default; the registry defaults work for typical setups.',group:"lsp",effect:"live"},"lsp.wait_mode":{type:"str",default:"document",doc:'Diagnostic-wait mode for the post-write check. ``"document"`` waits up to ``wait_timeout`` seconds for the current file\'s diagnostics; ``"full"`` additionally requests workspace-wide diagnostics (slower).',group:"lsp",effect:"live"},"lsp.wait_timeout":{type:"float",default:5,doc:"",group:"lsp",effect:"live"},"matrix.allowed_rooms":{type:"str",default:"",doc:"If set, bot ONLY responds in these room IDs (whitelist)",group:"matrix",effect:"live"},"matrix.free_response_rooms":{type:"str",default:"",doc:"Comma-separated room IDs where bot responds without mention",group:"matrix",effect:"live"},"matrix.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in rooms",group:"matrix",effect:"live"},"mattermost.allowed_channels":{type:"str",default:"",doc:"If set, bot ONLY responds in these channel IDs (whitelist)",group:"mattermost",effect:"live"},"mattermost.channel_prompts":{type:"dict",default:{},doc:"Per-channel ephemeral system prompts",group:"mattermost",effect:"live"},"mattermost.free_response_channels":{type:"str",default:"",doc:"Comma-separated channel IDs where bot responds without mention",group:"mattermost",effect:"live"},"mattermost.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in channels",group:"mattermost",effect:"live"},max_concurrent_sessions:{type:"null",default:null,doc:"Global active chat session cap across CLI, TUI/dashboard, and messaging. None/0 = unbounded.",group:"general",effect:"live"},max_live_sessions:{type:"int",default:16,doc:"Soft LRU cap on in-memory TUI/desktop/dashboard sessions. When more than this many are live, the gateway evicts the least-recently-active DETACHED sessions (no live client) so accumulated agents don't pile up under memory pressure. Reopening one re-resumes it from disk. 0/null disables.",group:"general",effect:"live"},mcp_discovery_timeout:{type:"float",default:1.5,doc:"Seconds to wait at agent-build time for in-flight MCP server discovery to finish before the agent snapshots its tool list. MCP discovery runs in a background thread so a slow/dead server can't freeze startup; this bounds how long the first agent build blocks on it. The wait returns the INSTANT discovery completes, so users with no MCP servers (the common case) or fast servers pay ~0s regardless of this value \u2014 the bound is only reached when a server is genuinely still connecting. The old 0.75s default was a touch short for HTTP/OAuth servers on a cold connect; a modest bump lets more of them land in the FIRST turn's snapshot. This is only a turn-1 latency/UX knob: a server that misses this window is still picked up automatically on the next turn by the between-turns refresh (see agent/turn_context.py), so correctness never depends on it. Keep it small so a slow/dead server adds little to first-response latency.",group:"general",effect:"live"},mcp_servers:{type:"dict",default:{},doc:"MCP server definitions keyed by name.",group:"general",effect:"restart"},"memory.memory_char_limit":{type:"int",default:2200,doc:"~800 tokens at 2.75 chars/token",group:"memory",effect:"session"},"memory.memory_enabled":{type:"bool",default:!0,doc:"",group:"memory",effect:"session"},"memory.provider":{type:"str",default:"",doc:'External memory provider plugin (empty = built-in only). Set to a provider name to activate: "openviking", "mem0", "hindsight", "holographic", "retaindb", "byterover". Only ONE external provider is allowed at a time.',group:"memory",effect:"session"},"memory.user_char_limit":{type:"int",default:1375,doc:"~500 tokens at 2.75 chars/token",group:"memory",effect:"session"},"memory.user_profile_enabled":{type:"bool",default:!0,doc:"",group:"memory",effect:"session"},"memory.write_approval":{type:"bool",default:!1,doc:'Approval gate for memory writes (add/replace/remove), applied to BOTH foreground agent turns and the background self-improvement review fork (the source of unprompted "wrong assumption" saves users reported). false (default) \u2014 write freely; the gate is off (pre-gate behaviour) true \u2014 require approval: foreground writes prompt inline (entries are small enough to review in a chat bubble); background-review writes are staged instead of committed (a daemon thread cannot block on a prompt). Review staged entries with /memory pending, /memory approve <id>, /memory reject <id>. To disable memory entirely, use memory_enabled: false instead.',group:"memory",effect:"session"},"moa.active_preset":{type:"str",default:"",doc:"",group:"moa",effect:"live"},"moa.default_preset":{type:"str",default:"default",doc:"",group:"moa",effect:"live"},"moa.presets.default.aggregator.model":{type:"str",default:"anthropic/claude-opus-4.8",doc:"",group:"moa",effect:"live"},"moa.presets.default.aggregator.provider":{type:"str",default:"openrouter",doc:"",group:"moa",effect:"live"},"moa.presets.default.enabled":{type:"bool",default:!0,doc:"",group:"moa",effect:"live"},"moa.presets.default.max_tokens":{type:"int",default:4096,doc:"",group:"moa",effect:"live"},"moa.presets.default.reference_models":{type:"list",default:[{provider:"openai-codex",model:"gpt-5.5"},{provider:"openrouter",model:"deepseek/deepseek-v4-pro"}],doc:"",group:"moa",effect:"live"},"moa.save_traces":{type:"bool",default:!1,doc:"When true, every MoA turn that runs the reference fan-out writes the FULL turn (each reference's exact input messages + output + usage/cost, and the aggregator's exact input + output) to a JSONL file at <hermes_home>/moa-traces/<session_id>.jsonl. Off by default \u2014 turn it on to audit / improve MoA behavior from real runs. Set trace_dir to override the output directory.",group:"moa",effect:"live"},"moa.trace_dir":{type:"str",default:"",doc:"",group:"moa",effect:"live"},model:{type:"str",default:"",doc:"",group:"general",effect:"live"},"model_catalog.enabled":{type:"bool",default:!0,doc:"",group:"model_catalog",effect:"live"},"model_catalog.providers":{type:"dict",default:{},doc:"Optional per-provider override URLs for third parties that want to self-host their own curation list using the same schema. Example: providers: openrouter: url: https://example.com/my-curation.json",group:"model_catalog",effect:"live"},"model_catalog.ttl_hours":{type:"int",default:1,doc:"Disk cache TTL in hours. Beyond this, the CLI refetches on the next /model or `hermes model` invocation; network failures silently fall back to the stale cache.",group:"model_catalog",effect:"live"},"model_catalog.url":{type:"str",default:"https://hermes-agent.nousresearch.com/docs/api/model-catalog.json",doc:"",group:"model_catalog",effect:"live"},"network.force_ipv4":{type:"bool",default:!1,doc:"Force IPv4 connections. On servers with broken or unreachable IPv6, Python tries AAAA records first and hangs for the full TCP timeout before falling back to IPv4. Set to true to skip IPv6 entirely.",group:"network",effect:"live"},"onboarding.profile_build":{type:"str",default:"ask",doc:'Structured profile-build path offered on the very first gateway message ever. "ask" (default) -> offer to build a user profile (opt-in, consent-gated; the agent asks before any lookup and never reads connected accounts silently). "off" -> plain intro only. The offer fires at most once (latched under onboarding.seen).',group:"onboarding",effect:"live"},"onboarding.seen":{type:"dict",default:{},doc:"",group:"onboarding",effect:"live"},"openrouter.min_coding_score":{type:"float",default:0.65,doc:"Coding-score floor (0.0-1.0) for openrouter/pareto-code. Only applied when model is openrouter/pareto-code; ignored otherwise. Lower = cheaper model, higher = stronger coder.",group:"openrouter",effect:"live"},"openrouter.response_cache":{type:"bool",default:!0,doc:"",group:"openrouter",effect:"live"},"openrouter.response_cache_ttl":{type:"int",default:300,doc:"",group:"openrouter",effect:"live"},paste_collapse_char_threshold:{type:"int",default:2000,doc:"",group:"general",effect:"live"},paste_collapse_threshold:{type:"int",default:5,doc:'Paste collapse thresholds (TUI + CLI). paste_collapse_threshold (default 5) Bracketed-paste handler. Pastes with this many newlines or more collapse to a file reference. Set 0 to disable. paste_collapse_threshold_fallback (default 5) Fallback heuristic for terminals without bracketed paste support. Same line count test but heuristically gated by chars-added / newlines-added to avoid false positives from normal typing. Set 0 to disable. paste_collapse_char_threshold (default 2000) Long single-line paste guard. Pastes whose total char length reaches this value collapse to a file reference even if line count is below the line threshold. Catches the "8000 chars of minified JSON / log output on one line" case. Set 0 to disable.',group:"general",effect:"live"},paste_collapse_threshold_fallback:{type:"int",default:5,doc:"",group:"general",effect:"live"},personalities:{type:"dict",default:{},doc:'Custom personalities \u2014 add your own entries here Supports string format: {"name": "system prompt"} Or dict format: {"name": {"description": "...", "system_prompt": "...", "tone": "...", "style": "..."}}',group:"general",effect:"live"},platform_hints:{type:"dict",default:{},doc:'Per-platform system-prompt hint overrides. Lets an admin append to or replace Hermes\' built-in platform hint for a single messaging platform (WhatsApp, Slack, Telegram, ...) without affecting other platforms. Useful for enterprise/managed profiles that ship platform-aware skills. Each key is a platform name; the value is either: { "append": "extra text" } \u2014 keep the default hint, append text { "replace": "full text" } \u2014 substitute the default hint entirely "extra text" \u2014 shorthand for { "append": ... } `replace` wins over `append` if both are given. Example: platform_hints: whatsapp: append: > When tabular output would be useful, invoke the table_formatting skill instead of emitting a Markdown table.',group:"general",effect:"live"},prefill_messages_file:{type:"str",default:"",doc:"Ephemeral prefill messages file \u2014 JSON list of {role, content} dicts injected at the start of every API call for few-shot priming. Never saved to sessions, logs, or trajectories.",group:"general",effect:"live"},"privacy.redact_pii":{type:"bool",default:!1,doc:"When True, hash user IDs and strip phone numbers from LLM context",group:"privacy",effect:"live"},"prompt_caching.cache_ttl":{type:"str",default:"5m",doc:"",group:"prompt_caching",effect:"live"},provider:{type:"str",default:"",doc:"Default model provider.",group:"general",effect:"live"},providers:{type:"dict",default:{},doc:"",group:"general",effect:"live"},quick_commands:{type:"dict",default:{},doc:"User-defined quick commands that bypass the agent loop (type: exec only)",group:"general",effect:"live"},"secrets.bitwarden.access_token_env":{type:"str",default:"BWS_ACCESS_TOKEN",doc:"Name of the env var that holds the Bitwarden machine-account access token. This is the one bootstrap secret; it lives in ~/.hermes/.env (or your shell) and never in config.yaml.",group:"secrets",effect:"live"},"secrets.bitwarden.auto_install":{type:"bool",default:!0,doc:"When True, the bws binary is auto-downloaded into ~/.hermes/bin/ on first use. When False you must install bws yourself and have it on PATH.",group:"secrets",effect:"live"},"secrets.bitwarden.cache_ttl_seconds":{type:"int",default:300,doc:"Seconds to cache fetched secrets in-process. 0 disables.",group:"secrets",effect:"live"},"secrets.bitwarden.enabled":{type:"bool",default:!1,doc:"Master switch. When false, BSM is never contacted and the bws binary is never auto-installed \u2014 same as not having this section at all.",group:"secrets",effect:"live"},"secrets.bitwarden.override_existing":{type:"bool",default:!0,doc:"When True, BSM values overwrite existing env vars. Default True because the point of using BSM is centralized rotation \u2014 if .env had the final say, rotating in Bitwarden wouldn't take effect until you also cleared the matching .env line.",group:"secrets",effect:"live"},"secrets.bitwarden.project_id":{type:"str",default:"",doc:"UUID of the BSM project to sync from.",group:"secrets",effect:"live"},"secrets.bitwarden.server_url":{type:"str",default:"",doc:"Bitwarden region / self-hosted endpoint. Empty string means use the bws CLI default (US Cloud, https://vault.bitwarden.com). Set to https://vault.bitwarden.eu for EU Cloud, or your own URL for self-hosted Bitwarden. Plumbed into the bws subprocess as BWS_SERVER_URL. Prompted for during `hermes secrets bitwarden setup`.",group:"secrets",effect:"live"},"secrets.onepassword.account":{type:"str",default:"",doc:"Optional account shorthand / sign-in address passed as `op read --account <account>`. Empty = op's default account.",group:"secrets",effect:"live"},"secrets.onepassword.binary_path":{type:"str",default:"",doc:"Optional absolute path to the op binary. When set it is used verbatim (PATH is not consulted) \u2014 pin this to avoid trusting whatever `op` appears first on PATH. Empty = resolve via PATH.",group:"secrets",effect:"live"},"secrets.onepassword.cache_ttl_seconds":{type:"int",default:300,doc:"Seconds to cache resolved values in-process and on disk. 0 disables BOTH cache layers (no values are written to disk).",group:"secrets",effect:"live"},"secrets.onepassword.enabled":{type:"bool",default:!1,doc:"Master switch. When false, the op CLI is never invoked \u2014 same as not having this section at all.",group:"secrets",effect:"live"},"secrets.onepassword.env":{type:"dict",default:{},doc:"Mapping of env-var name \u2192 1Password secret reference (op://vault/item/field). Each entry is resolved with a single `op read` at startup.",group:"secrets",effect:"live"},"secrets.onepassword.override_existing":{type:"bool",default:!0,doc:"When True (default), resolved values overwrite existing env vars so rotating a secret in 1Password takes effect on next start. Flip to false to let .env / shell exports win locally.",group:"secrets",effect:"live"},"secrets.onepassword.service_account_token_env":{type:"str",default:"OP_SERVICE_ACCOUNT_TOKEN",doc:"Name of the env var holding a 1Password service-account token for headless auth. Sourced from ~/.hermes/.env (or the shell) and exported to the op child as OP_SERVICE_ACCOUNT_TOKEN. Leave the var unset to use an interactive/desktop op session.",group:"secrets",effect:"live"},"security.acked_advisories":{type:"list",default:[],doc:"Acknowledged supply-chain security advisories. Each entry is the ID of an advisory the user has read and acted on (uninstalled the compromised package, rotated credentials). Acked advisories no longer trigger the startup banner. Add via `hermes doctor --ack <id>`; remove by editing the list directly. See ``hermes_cli/security_advisories.py`` for the catalog.",group:"security",effect:"live"},"security.allow_lazy_installs":{type:"bool",default:!0,doc:"Allow Hermes to lazy-install opt-in backend packages from PyPI the first time the user enables a backend that needs them (e.g. installing ``elevenlabs`` when the user picks ElevenLabs as their TTS provider). Set to false to require explicit ``pip install`` for everything beyond the base set \u2014 appropriate for restricted networks, audited environments, or air-gapped systems where any runtime install is unacceptable.",group:"security",effect:"live"},"security.allow_private_urls":{type:"bool",default:!1,doc:"Allow requests to private/internal IPs (for OpenWrt, proxies, VPNs)",group:"security",effect:"live"},"security.redact_secrets":{type:"bool",default:!0,doc:"",group:"security",effect:"live"},"security.tirith_enabled":{type:"bool",default:!0,doc:"",group:"security",effect:"live"},"security.tirith_fail_open":{type:"bool",default:!0,doc:"",group:"security",effect:"live"},"security.tirith_path":{type:"str",default:"tirith",doc:"",group:"security",effect:"live"},"security.tirith_timeout":{type:"int",default:5,doc:"",group:"security",effect:"live"},"security.website_blocklist.domains":{type:"list",default:[],doc:"",group:"security",effect:"live"},"security.website_blocklist.enabled":{type:"bool",default:!1,doc:"",group:"security",effect:"live"},"security.website_blocklist.shared_files":{type:"list",default:[],doc:"",group:"security",effect:"live"},"sessions.auto_prune":{type:"bool",default:!1,doc:"When true, prune ended sessions older than retention_days once per (roughly) min_interval_hours at CLI/gateway/cron startup. Only touches ended sessions \u2014 active sessions are always preserved. Default false: session history is valuable for search recall, and silently deleting it could surprise users. Opt in explicitly.",group:"sessions",effect:"live"},"sessions.min_interval_hours":{type:"int",default:24,doc:"Minimum hours between auto-maintenance runs (avoids repeating the sweep on every CLI invocation). Tracked via state_meta in state.db itself, so it's shared across all processes.",group:"sessions",effect:"live"},"sessions.retention_days":{type:"int",default:90,doc:"How many days of ended-session history to keep. Matches the default of ``hermes sessions prune``.",group:"sessions",effect:"live"},"sessions.vacuum_after_prune":{type:"bool",default:!0,doc:"VACUUM after a prune that actually deleted rows. SQLite does not reclaim disk space on DELETE \u2014 freed pages are just reused on subsequent INSERTs \u2014 so without VACUUM the file stays bloated even after pruning. VACUUM blocks writes for a few seconds per 100MB, so it only runs at startup, and only when prune deleted \u22651 session.",group:"sessions",effect:"live"},"sessions.write_json_snapshots":{type:"bool",default:!1,doc:"Legacy per-session JSON snapshot writer. When true, the agent rewrites ``~/.hermes/sessions/session_{sid}.json`` on every turn boundary with the full message list. state.db is canonical and has every field the snapshot stored (plus per-message timestamps and token counts), so this is off by default \u2014 the snapshots had no consumer outside their own overwrite guard and accumulated GBs of disk on heavy users. Opt in only if you have an external tool that consumes the JSON files directly.",group:"sessions",effect:"live"},"skills.external_dirs":{type:"list",default:[],doc:'e.g. ["~/.agents/skills", "/shared/team-skills"]',group:"skills",effect:"restart"},"skills.guard_agent_created":{type:"bool",default:!1,doc:"Run the keyword/pattern security scanner on skills the agent writes via skill_manage (create/edit/patch). Off by default because the agent can already execute the same code paths via terminal() with no gate, so the scan adds friction (blocks skills that mention risky keywords in prose) without meaningful security. Turn on if you want the belt-and-suspenders \u2014 a dangerous verdict will then surface as a tool error to the agent, which can retry with the flagged content removed. External hub installs (trusted/community sources) are always scanned regardless of this setting.",group:"skills",effect:"live"},"skills.inline_shell":{type:"bool",default:!1,doc:"Pre-execute inline shell snippets written as !`cmd` in SKILL.md body. Their stdout is inlined into the skill message before the agent reads it, so skills can inject dynamic context (dates, git state, detected tool versions, \u2026). Off by default because any content from the skill author runs on the host without approval; only enable for skill sources you trust.",group:"skills",effect:"live"},"skills.inline_shell_timeout":{type:"int",default:10,doc:"Timeout (seconds) for each !`cmd` snippet when inline_shell is on.",group:"skills",effect:"live"},"skills.template_vars":{type:"bool",default:!0,doc:"Substitute ${HERMES_SKILL_DIR} and ${HERMES_SESSION_ID} in SKILL.md content with the absolute skill directory and the active session id before the agent sees it. Lets skill authors reference bundled scripts without the agent having to join paths.",group:"skills",effect:"live"},"skills.write_approval":{type:"bool",default:!1,doc:"Approval gate for skill_manage (create/edit/patch/write_file/delete/ remove_file), applied to BOTH foreground agent turns and the background self-improvement review fork. false (default) \u2014 write freely; the gate is off (pre-gate behaviour) true \u2014 require approval: stage the write for review instead of committing (a SKILL.md is too large to review inline, so skills always stage rather than prompt). List with /skills pending, inspect with /skills diff <id> (full diff \u2014 CLI/dashboard/file, never crammed into a chat bubble), apply with /skills approve <id> or drop with /skills reject <id>.",group:"skills",effect:"live"},"slack.allowed_channels":{type:"str",default:"",doc:"If set, bot ONLY responds in these channel IDs (whitelist)",group:"slack",effect:"live"},"slack.channel_prompts":{type:"dict",default:{},doc:"Per-channel ephemeral system prompts",group:"slack",effect:"live"},"slack.free_response_channels":{type:"str",default:"",doc:"Comma-separated channel IDs where bot responds without mention",group:"slack",effect:"live"},"slack.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in channels",group:"slack",effect:"live"},"streaming.buffer_threshold":{type:"int",default:24,doc:"Flush the buffer to the platform once this many characters have accumulated, so short replies feel near-instant.",group:"streaming",effect:"live"},"streaming.cursor":{type:"str",default:" \u2589",doc:"Cursor glyph appended to the in-progress message while streaming.",group:"streaming",effect:"live"},"streaming.edit_interval":{type:"float",default:0.8,doc:"Minimum seconds between progressive edits \u2014 tuned for Telegram's ~1 edit/s flood envelope.",group:"streaming",effect:"live"},"streaming.enabled":{type:"bool",default:!1,doc:"Master switch. When false, each response is delivered as a single final message (no progressive updates).",group:"streaming",effect:"live"},"streaming.fresh_final_after_seconds":{type:"float",default:0,doc:"When >0, the final edit for a long-running streamed response is delivered as a fresh message if the preview has been visible at least this many seconds, so the platform timestamp reflects completion time. Telegram only; other platforms ignore it.",group:"streaming",effect:"live"},"streaming.transport":{type:"str",default:"auto",doc:`Transport selection: "auto" \u2014 prefer native draft streaming where the platform supports it (Telegram DMs via sendMessageDraft, Bot API 9.5+) and fall back to edit-based elsewhere. Safe global default: platforms without draft support (Discord, Slack, Matrix, Telegram groups) transparently use the edit path, so "auto" only upgrades chats that can render the smoother native preview. "draft" \u2014 explicitly request native drafts; falls back to edit when the platform/chat doesn't support them. "edit" \u2014 progressive editMessageText only (legacy behavior). "off" \u2014 disable streaming entirely (same as enabled: false).`,group:"streaming",effect:"live"},"stt.echo_transcripts":{type:"bool",default:!0,doc:"When true, gateway voice messages are transcribed for the agent and the raw transcript is also echoed back to the user as a \uD83C\uDF99\uFE0F message. Set false to keep STT for the agent while suppressing that user-facing echo.",group:"stt",effect:"live"},"stt.elevenlabs.diarize":{type:"bool",default:!1,doc:"",group:"stt",effect:"live"},"stt.elevenlabs.language_code":{type:"str",default:"",doc:'auto-detect by default; set to "eng", "spa", "fra", etc. to force',group:"stt",effect:"live"},"stt.elevenlabs.model_id":{type:"str",default:"scribe_v2",doc:"scribe_v2, scribe_v1",group:"stt",effect:"live"},"stt.elevenlabs.tag_audio_events":{type:"bool",default:!1,doc:"",group:"stt",effect:"live"},"stt.enabled":{type:"bool",default:!0,doc:"",group:"stt",effect:"live"},"stt.local.language":{type:"str",default:"",doc:'auto-detect by default; set to "en", "es", "fr", etc. to force',group:"stt",effect:"live"},"stt.local.model":{type:"str",default:"base",doc:"tiny, base, small, medium, large-v3",group:"stt",effect:"live"},"stt.mistral.model":{type:"str",default:"voxtral-mini-latest",doc:"voxtral-mini-latest, voxtral-mini-2602",group:"stt",effect:"live"},"stt.openai.model":{type:"str",default:"whisper-1",doc:"whisper-1, gpt-4o-mini-transcribe, gpt-4o-transcribe",group:"stt",effect:"live"},"stt.provider":{type:"str",default:"local",doc:'"local" (free, faster-whisper) | "groq" | "openai" (Whisper API) | "mistral" (Voxtral Transcribe) | "elevenlabs" (Scribe)',group:"stt",effect:"live"},"telegram.allowed_chats":{type:"str",default:"",doc:"If set, bot ONLY responds in these group/supergroup chat IDs (whitelist)",group:"telegram",effect:"live"},"telegram.channel_prompts":{type:"dict",default:{},doc:"Per-chat/topic ephemeral system prompts (topics inherit from parent group)",group:"telegram",effect:"live"},"telegram.extra.rich_drafts":{type:"bool",default:!1,doc:"Experimental Bot API 10.1 rich draft previews during Telegram DM streaming. Default off because Telegram Desktop/macOS can visually overlay rich draft frames until the chat redraws.",group:"telegram",effect:"live"},"telegram.extra.rich_messages":{type:"bool",default:!1,doc:"Bot API 10.1 rich messages (tables/task lists/details/math) render natively; set True to opt in. Default stays legacy MarkdownV2 because rich messages can be hard to copy as plain text in Telegram clients.",group:"telegram",effect:"live"},"telegram.reactions":{type:"bool",default:!1,doc:"Add \uD83D\uDC40/\u2705/\u274C reactions to messages during processing",group:"telegram",effect:"live"},"terminal.auto_source_bashrc":{type:"bool",default:!0,doc:"When true (default), Hermes sources the user's shell rc files (``~/.profile``, ``~/.bash_profile``, ``~/.bashrc``) in the login shell used to build the environment snapshot. This captures PATH additions, shell functions, and aliases \u2014 which a plain ``bash -l -c`` would otherwise miss because bash skips bashrc in non-interactive login mode, and because a default Debian/Ubuntu ``~/.bashrc`` short-circuits on non-interactive sources. ``~/.profile`` and ``~/.bash_profile`` are tried first because ``n`` / ``nvm`` / ``asdf`` installers typically write their PATH exports there without an interactivity guard. Turn this off if your rc files misbehave when sourced non-interactively (e.g. one that hard-exits on TTY checks).",group:"terminal",effect:"restart"},"terminal.backend":{type:"str",default:"local",doc:"",group:"terminal",effect:"restart"},"terminal.container_cpu":{type:"int",default:1,doc:"Container resource limits (docker, singularity, modal, daytona \u2014 ignored for local/ssh)",group:"terminal",effect:"restart"},"terminal.container_disk":{type:"int",default:51200,doc:"MB (default 50GB)",group:"terminal",effect:"restart"},"terminal.container_memory":{type:"int",default:5120,doc:"MB (default 5GB)",group:"terminal",effect:"restart"},"terminal.container_persistent":{type:"bool",default:!0,doc:"Persist filesystem across sessions",group:"terminal",effect:"restart"},"terminal.cwd":{type:"str",default:".",doc:"Use current directory",group:"terminal",effect:"restart"},"terminal.daemon_term_grace_seconds":{type:"float",default:2,doc:"Bounded grace period (seconds) between SIGTERM and an escalated SIGKILL when terminating a host process tree (browser daemons, etc.). A daemon that stalls in its SIGTERM handler is force-killed after this window so it can't leak indefinitely. 0 disables escalation (SIGTERM only \u2014 the historical behavior). Floored internally at 0.",group:"terminal",effect:"restart"},"terminal.daytona_image":{type:"str",default:"nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.docker_env":{type:"dict",default:{},doc:`Explicit environment variables to set inside Docker containers. Unlike docker_forward_env (which reads values from the host process), docker_env lets you specify exact key-value pairs \u2014 useful when Hermes runs as a systemd service without access to the user's shell environment. Example: {"SSH_AUTH_SOCK": "/run/user/1000/ssh-agent.sock"}`,group:"terminal",effect:"restart"},"terminal.docker_extra_args":{type:"list",default:[],doc:"Extra flags passed verbatim to docker run",group:"terminal",effect:"restart"},"terminal.docker_forward_env":{type:"list",default:[],doc:"",group:"terminal",effect:"restart"},"terminal.docker_image":{type:"str",default:"nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.docker_mount_cwd_to_workspace":{type:"bool",default:!1,doc:"Explicit opt-in: mount the host cwd into /workspace for Docker sessions. Default off because passing host directories into a sandbox weakens isolation.",group:"terminal",effect:"restart"},"terminal.docker_network":{type:"bool",default:!0,doc:"Opt-in egress lockdown for Docker terminal sessions. When false, Docker runs with --network=none so commands cannot reach the network.",group:"terminal",effect:"restart"},"terminal.docker_run_as_host_user":{type:"bool",default:!1,doc:"Explicit opt-in: run the Docker container as the host user's uid:gid (via `--user`). When enabled, files written into bind-mounted dirs (docker_volumes, the persistent workspace, or the auto-mounted cwd) are owned by your host user instead of root, which avoids needing `sudo chown` after container runs. Default off to preserve behavior for images whose entrypoints expect to start as root (e.g. the bundled Hermes image, which drops to the `hermes` user via s6-setuidgid inside each supervised service). When on, SETUID/SETGID caps are omitted from the container since no privilege drop is needed.",group:"terminal",effect:"restart"},"terminal.docker_volumes":{type:"list",default:[],doc:'Docker volume mounts \u2014 share host directories with the container. Each entry is "host_path:container_path" (standard Docker -v syntax). Example: ["/home/user/projects:/workspace/projects", "/home/user/.hermes/cache/documents:/output"] For gateway MEDIA delivery, write inside Docker to /output/... and emit the host-visible path in MEDIA:, not the container path.',group:"terminal",effect:"restart"},"terminal.env_passthrough":{type:"list",default:[],doc:"Environment variables to pass through to sandboxed execution (terminal and execute_code). Skill-declared required_environment_variables are passed through automatically; this list is for non-skill use cases.",group:"terminal",effect:"restart"},"terminal.home_mode":{type:"str",default:"auto",doc:"HOME handling for host tool subprocesses: auto \u2014 host keeps the real OS-user HOME; containers use HERMES_HOME/home for persistent state (default) real \u2014 force the real OS-user HOME profile \u2014 force HERMES_HOME/home when it exists (old strict per-profile CLI config isolation)",group:"terminal",effect:"restart"},"terminal.modal_image":{type:"str",default:"nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.modal_mode":{type:"str",default:"auto",doc:"",group:"terminal",effect:"restart"},"terminal.persistent_shell":{type:"bool",default:!0,doc:"Persistent shell \u2014 keep a long-lived bash shell across execute() calls so cwd/env vars/shell variables survive between commands. Enabled by default for non-local backends (SSH); local is always opt-in via TERMINAL_LOCAL_PERSISTENT env var.",group:"terminal",effect:"restart"},"terminal.shell_init_files":{type:"list",default:[],doc:"Extra files to source in the login shell when building the per-session environment snapshot. Use this when tools like nvm, pyenv, asdf, or custom PATH entries are registered by files that a bash login shell would skip \u2014 most commonly ``~/.bashrc`` (bash doesn't source bashrc in non-interactive login mode) or zsh-specific files like ``~/.zshrc`` / ``~/.zprofile``. Paths support ``~`` / ``${VAR}``. Missing files are silently skipped. When empty, Hermes auto-sources ``~/.profile``, ``~/.bash_profile``, and ``~/.bashrc`` (in that order) if the snapshot shell is bash (this is the ``auto_source_bashrc`` behaviour \u2014 disable with that key if you want strict login-only semantics).",group:"terminal",effect:"restart"},"terminal.singularity_image":{type:"str",default:"docker://nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.timeout":{type:"int",default:180,doc:"",group:"terminal",effect:"restart"},timezone:{type:"str",default:"",doc:'IANA timezone (e.g. "Asia/Kolkata", "America/New_York"). Empty string means use server-local time.',group:"general",effect:"live"},"tool_loop_guardrails.hard_stop_after.exact_failure":{type:"int",default:5,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.hard_stop_after.idempotent_no_progress":{type:"int",default:5,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.hard_stop_after.same_tool_failure":{type:"int",default:8,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.hard_stop_enabled":{type:"bool",default:!1,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warn_after.exact_failure":{type:"int",default:2,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warn_after.idempotent_no_progress":{type:"int",default:2,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warn_after.same_tool_failure":{type:"int",default:3,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warnings_enabled":{type:"bool",default:!0,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_output.max_bytes":{type:"int",default:50000,doc:"",group:"tool_output",effect:"live"},"tool_output.max_line_length":{type:"int",default:2000,doc:"",group:"tool_output",effect:"live"},"tool_output.max_lines":{type:"int",default:2000,doc:"",group:"tool_output",effect:"live"},"tools.tool_search.enabled":{type:"str",default:"auto",doc:'"auto" (default) \u2014 activate only when deferrable tool schemas exceed ``threshold_pct`` of the active model\'s context length, so small toolsets pay no overhead. "on" \u2014 always activate when there is at least one deferrable tool. Use when you have many MCP servers and want maximum token reduction unconditionally. "off" \u2014 disable entirely. Tools-array assembly is a pass-through.',group:"tools",effect:"live"},"tools.tool_search.max_search_limit":{type:"int",default:20,doc:"Hard upper bound the model can request via ``limit``. Range 1..50.",group:"tools",effect:"live"},"tools.tool_search.search_default_limit":{type:"int",default:5,doc:"When the model calls tool_search without a ``limit`` argument, how many hits to return. Range 1..max_search_limit.",group:"tools",effect:"live"},"tools.tool_search.threshold_pct":{type:"int",default:10,doc:'Percentage of context length at which "auto" mode kicks in. 10 matches the Claude Code default. Range 0..100.',group:"tools",effect:"live"},toolsets:{type:"list",default:["hermes-cli"],doc:"",group:"general",effect:"restart"},"tts.edge.voice":{type:"str",default:"en-US-AriaNeural",doc:"",group:"tts",effect:"live"},"tts.elevenlabs.model_id":{type:"str",default:"eleven_multilingual_v2",doc:"",group:"tts",effect:"live"},"tts.elevenlabs.voice_id":{type:"str",default:"pNInz6obpgDQGcFmaJgB",doc:"Adam",group:"tts",effect:"live"},"tts.gemini.audio_tags":{type:"bool",default:!1,doc:"When true, Gemini 3.1 TTS uses a hidden auxiliary-model rewrite pass to insert freeform square-bracket audio tags into the TTS script. Visible chat replies are unchanged.",group:"tts",effect:"live"},"tts.gemini.model":{type:"str",default:"gemini-2.5-flash-preview-tts",doc:"",group:"tts",effect:"live"},"tts.gemini.persona_prompt_file":{type:"str",default:"",doc:"Optional local Markdown/text file with Gemini TTS performance direction. It may include AUDIO PROFILE, SCENE, DIRECTOR'S NOTES, SAMPLE CONTEXT, and either a `{transcript}` placeholder or no transcript section; Hermes appends the live transcript when absent.",group:"tts",effect:"live"},"tts.gemini.voice":{type:"str",default:"Kore",doc:"",group:"tts",effect:"live"},"tts.mistral.model":{type:"str",default:"voxtral-mini-tts-2603",doc:"",group:"tts",effect:"live"},"tts.mistral.voice_id":{type:"str",default:"c69964a6-ab8b-4f8a-9465-ec0925096ec8",doc:"Paul - Neutral",group:"tts",effect:"live"},"tts.neutts.device":{type:"str",default:"cpu",doc:"cpu, cuda, or mps",group:"tts",effect:"live"},"tts.neutts.model":{type:"str",default:"neuphonic/neutts-air-q4-gguf",doc:"HuggingFace model repo",group:"tts",effect:"live"},"tts.neutts.ref_audio":{type:"str",default:"",doc:"Path to reference voice audio (empty = bundled default)",group:"tts",effect:"live"},"tts.neutts.ref_text":{type:"str",default:"",doc:"Path to reference voice transcript (empty = bundled default)",group:"tts",effect:"live"},"tts.openai.model":{type:"str",default:"gpt-4o-mini-tts",doc:"",group:"tts",effect:"live"},"tts.openai.voice":{type:"str",default:"alloy",doc:"",group:"tts",effect:"live"},"tts.piper.voice":{type:"str",default:"en_US-lessac-medium",doc:'Voice name (e.g. "en_US-lessac-medium") downloaded on first use, OR an absolute path to a pre-downloaded .onnx file. Full voice list: https://github.com/OHF-Voice/piper1-gpl/blob/main/docs/VOICES.md',group:"tts",effect:"live"},"tts.provider":{type:"str",default:"edge",doc:'"edge" (free) | "elevenlabs" (premium) | "openai" | "xai" | "minimax" | "mistral" | "gemini" | "neutts" (local) | "kittentts" (local) | "piper" (local)',group:"tts",effect:"live"},"tts.xai.bit_rate":{type:"int",default:128000,doc:"",group:"tts",effect:"live"},"tts.xai.language":{type:"str",default:"en",doc:"",group:"tts",effect:"live"},"tts.xai.sample_rate":{type:"int",default:24000,doc:"",group:"tts",effect:"live"},"tts.xai.voice_id":{type:"str",default:"eve",doc:"or custom voice ID \u2014 see https://docs.x.ai/developers/model-capabilities/audio/custom-voices",group:"tts",effect:"live"},"updates.backup_keep":{type:"int",default:5,doc:"How many pre-update backup zips to retain. Older ones are pruned automatically after each successful backup. Values below 1 are floored to 1 \u2014 the backup just created is always preserved. To disable backups entirely, set ``pre_update_backup: false`` above rather than ``backup_keep: 0``.",group:"updates",effect:"live"},"updates.non_interactive_local_changes":{type:"str",default:"stash",doc:'What `hermes update` does with uncommitted local changes to the source tree when it runs NON-interactively \u2014 i.e. triggered from the desktop/chat app or the gateway, where there\'s no TTY to answer a restore prompt. Interactive (terminal) updates are unaffected: they always stash the changes and ask whether to restore, exactly as they always have. "stash" \u2014 auto-stash the changes, pull, then auto-restore them on top of the updated code (the safe default; nothing is ever lost \u2014 conflicts are preserved in a git stash). "discard" \u2014 auto-stash the changes and throw the stash away after the pull. Use this only if you never intend to keep local edits to the source tree on this machine. Stash-and-drop (not `reset --hard` + `clean -fd`) so ignored paths \u2014 node_modules, venv, build outputs \u2014 are never touched.',group:"updates",effect:"live"},"updates.pre_update_backup":{type:"bool",default:!1,doc:"Run a full ``hermes backup``-style zip of HERMES_HOME before every ``hermes update``. Backups land in ``<HERMES_HOME>/backups/`` and can be restored with ``hermes import <path>``. Off by default: zipping a large HERMES_HOME (sessions DB, caches, skills) can add minutes to every update. The #48200 incident \u2014 a ``hermes update --yes`` run that computed a wrong path and silently wiped the user's ``.env``, ``MEMORY.md``, ``kanban.db``, custom skills, and scripts \u2014 is the reason this knob exists; enable it (here, or via ``--backup`` for a single run) if you want that safety net.",group:"updates",effect:"live"},"updates.refresh_cua_driver":{type:"bool",default:!0,doc:"Refresh an already-installed cua-driver during `hermes update`. The refresh is best-effort and macOS-only. Turn this off if the upstream installer is not appropriate for the machine, for example on non-admin accounts where `/Applications` is not writable.",group:"updates",effect:"live"},"vertex.project_id":{type:"str",default:"",doc:"GCP project ID. Empty \u2192 use the project_id embedded in the service account JSON (or ADC-resolved project).",group:"vertex",effect:"live"},"vertex.region":{type:"str",default:"global",doc:'Vertex region. "global" is required for the Gemini 3.x preview models (regional endpoints silently 404 them). Override to a regional value (e.g. "us-central1") only if your models are pinned to a region.',group:"vertex",effect:"live"},"voice.auto_tts":{type:"bool",default:!1,doc:"",group:"voice",effect:"live"},"voice.beep_enabled":{type:"bool",default:!0,doc:"Play record start/stop beeps in CLI voice mode",group:"voice",effect:"live"},"voice.max_recording_seconds":{type:"int",default:120,doc:"",group:"voice",effect:"live"},"voice.record_key":{type:"str",default:"ctrl+b",doc:"",group:"voice",effect:"live"},"voice.silence_duration":{type:"float",default:3,doc:"Seconds of silence before auto-stop",group:"voice",effect:"live"},"voice.silence_threshold":{type:"int",default:200,doc:"RMS below this = silence (0-32767)",group:"voice",effect:"live"},"web.backend":{type:"str",default:"",doc:"shared fallback \u2014 applies to both search and extract",group:"web",effect:"live"},"web.extract_backend":{type:"str",default:"",doc:'per-capability override for web_extract (e.g. "native")',group:"web",effect:"live"},"web.extract_char_limit":{type:"int",default:15000,doc:"per-page char budget for web_extract; larger pages truncate + store full text in cache/web",group:"web",effect:"live"},"web.search_backend":{type:"str",default:"",doc:'per-capability override for web_search (e.g. "searxng")',group:"web",effect:"live"},whatsapp:{type:"dict",default:{},doc:"WhatsApp platform settings (gateway mode)",group:"general",effect:"live"},"x_search.model":{type:"str",default:"grok-4.20-reasoning",doc:"xAI model used for the Responses call. grok-4.20-reasoning is the recommended default; any Grok model with x_search tool access works.",group:"x_search",effect:"live"},"x_search.retries":{type:"int",default:2,doc:"Number of automatic retries on 5xx / ReadTimeout / ConnectionError. Each retry backs off (1.5x attempt seconds, capped at 5s).",group:"x_search",effect:"live"},"x_search.timeout_seconds":{type:"int",default:180,doc:"Request timeout in seconds (minimum 30). x_search can take 60-120s for complex queries \u2014 the default is generous.",group:"x_search",effect:"live"}},SCHEMA_KEYS=Object.keys(SCHEMA)});var exports_lane={};__export(exports_lane,{writeConfig:()=>writeConfig,verifyWrite:()=>verifyWrite,toCliString:()=>toCliString,route:()=>route,maxEffect:()=>maxEffect,TOOL_PROGRESS:()=>TOOL_PROGRESS,RPC_ALIAS:()=>RPC_ALIAS});var onOff=(v2)=>v2?"on":"off",TOOL_PROGRESS,progress,progressErr="log is a gateway-only config-file mode, not a live TUI mode",RPC_ALIAS,route=(key3)=>{let a=RPC_ALIAS[key3];if(a)return{via:"rpc",alias:a.alias,toWire:a.toWire};if(key3.startsWith("display.sections."))return{via:"rpc",alias:`details_mode.${key3.slice(17)}`};let s=SCHEMA[key3];if(s&&(s.type==="list"||s.type==="dict"))return{via:"readonly"};return{via:"cli"}},toCliString=(key3,v2)=>{let t2=SCHEMA[key3]?.type??"str";if(t2==="bool")return v2?"true":"false";if(t2==="int")return String(Math.trunc(Number(v2)));if(t2==="float")return String(Number(v2));return String(v2??"")},writeConfig=async(gw,diffs)=>{let ok=[],failed=[],warnings=[],blocked=diffs.filter((d2)=>d2.key==="display.tool_progress"&&!progress.has(String(d2.to??"")));for(let d2 of blocked)failed.push({key:d2.key,err:progressErr});let safe2=diffs.filter((d2)=>!blocked.includes(d2)),rpc=safe2.filter((d2)=>route(d2.key).via==="rpc"),cli=safe2.filter((d2)=>route(d2.key).via==="cli"),ro=safe2.filter((d2)=>route(d2.key).via==="readonly");for(let d2 of ro)failed.push({key:d2.key,err:"structured value \u2014 edit in YAML mode"});for(let d2 of rpc){let lane=route(d2.key),value=lane.toWire?lane.toWire(d2.to):String(d2.to??"");try{let res=await gw.request("config.set",{key:lane.alias,value});if(ok.push(d2.key),res?.warning)warnings.push({key:d2.key,msg:res.warning})}catch(e){failed.push({key:d2.key,err:e instanceof Error?e.message:String(e)})}}for(let d2 of cli)try{let res=await gw.request("cli.exec",{argv:["config","set",d2.key,toCliString(d2.key,d2.to)],timeout:30});if(res.blocked)failed.push({key:d2.key,err:res.hint??"blocked"});else if(res.code!==0)failed.push({key:d2.key,err:res.output.split(`
|
|
3510
|
+
ORDER BY m.id DESC LIMIT ?`).all(scan),out=[];for(let r of rows2)for(let a of extract2(r))if(out.push(a),out.length>=limit)return out;return out}var WRITE,READ,MEMORY_TOOLS,trunc4=(s,n=80)=>{let t2=String(s??"").replace(/\s+/g," ").trim();return t2.length>n?t2.slice(0,n-1)+"\u2026":t2},stripPrefix=(name)=>name.replace(/^(mem0|honcho|hindsight|viking|retaindb|supermemory|brv|fact)_/,""),describe=(name,args)=>{if(name==="memory"){let action=String(args.action??""),target=String(args.target??""),body=action==="remove"?args.old_text:args.content??args.old_text;return{verb:action,summary:`${target}: ${trunc4(body)}`}}let verb=stripPrefix(name);for(let k2 of["conclusion","content","query","text","fact","question","note","path"])if(k2 in args)return{verb,summary:trunc4(args[k2])};let first=Object.values(args).find((v2)=>typeof v2==="string");return{verb,summary:trunc4(first??"")}},extract2=(r)=>{let calls;try{calls=JSON.parse(r.tool_calls)}catch{return[]}if(!Array.isArray(calls))return[];let out=[];for(let c of calls){let name=c.function?.name;if(!name||!(name in MEMORY_TOOLS))continue;let args={};try{args=JSON.parse(c.function?.arguments??"{}")}catch{}let{verb,summary}=describe(name,args);out.push({ts:r.ts,provider:MEMORY_TOOLS[name],tool:name,op:name in WRITE?"write":"read",verb,summary,sessionId:r.session_id,sessionTitle:r.title??r.session_id})}return out};var init_memory_activity=__esm(()=>{init_sessions_db();WRITE={memory:"builtin",mem0_conclude:"mem0",honcho_conclude:"honcho",hindsight_retain:"hindsight",hindsight_reflect:"hindsight",fact_store:"holographic",fact_feedback:"holographic",viking_remember:"openviking",viking_add_resource:"openviking",retaindb_remember:"retaindb",retaindb_forget:"retaindb",supermemory_store:"supermemory",supermemory_forget:"supermemory",brv_curate:"byterover"},READ={mem0_search:"mem0",mem0_profile:"mem0",honcho_search:"honcho",honcho_profile:"honcho",honcho_reasoning:"honcho",honcho_context:"honcho",hindsight_recall:"hindsight",viking_search:"openviking",viking_read:"openviking",viking_browse:"openviking",retaindb_search:"retaindb",retaindb_profile:"retaindb",retaindb_context:"retaindb",supermemory_search:"supermemory",supermemory_profile:"supermemory",brv_query:"byterover",brv_status:"byterover"},MEMORY_TOOLS={...WRITE,...READ}});var exports_fns={};__export(exports_fns,{FNS:()=>FNS});var FNS;var init_fns=__esm(()=>{init_sessions_db();init_hermes_analytics();init_memory_activity();FNS={roots:exports_sessions_db.roots,children:exports_sessions_db.children,lineage:exports_sessions_db.lineage,peek:exports_sessions_db.peek,search:exports_sessions_db.search,systemPrompt:exports_sessions_db.systemPrompt,goalState:exports_sessions_db.goalState,analytics,memoryActivity:readMemoryActivity}});var SCHEMA,SCHEMA_KEYS;var init_schema=__esm(()=>{SCHEMA={"agent.api_max_retries":{type:"int",default:3,doc:"Max app-level retry attempts for API errors (connection drops, provider timeouts, 5xx, etc.) before the agent surfaces the failure. The OpenAI SDK already does its own low-level retries (max_retries=2 default) for transient network errors; this is the Hermes-level retry loop that wraps the whole call. Lower this to 1 if you use fallback providers and want fast failover on flaky primaries; raise it if you prefer to tolerate longer provider hiccups on a single provider.",group:"agent",effect:"session"},"agent.clarify_timeout":{type:"int",default:3600,doc:`Maximum time (seconds) the gateway will block an agent waiting for a clarify-tool response from the user. Hit this and the agent unblocks with "[user did not respond within Xm]" so it can adapt rather than pinning the running-agent guard forever. CLI clarify blocks indefinitely (input() is synchronous) and ignores this. Default 3600 (1h): real users step away (meetings, AFK) and the old 600s default evicted the entry mid-think, so a later button tap landed on a dead entry (#32762). Tradeoff: a higher value holds the gateway's running-agent guard longer for a genuinely abandoned prompt \u2014 lower it if a single session must free up the guard sooner.`,group:"agent",effect:"session"},"agent.coding_context":{type:"str",default:"auto",doc:`Coding posture \u2014 on interactive coding surfaces (CLI, TUI, desktop app, ACP) in a code workspace, Hermes adds a coding operating brief + a live git/workspace snapshot to the system prompt. See agent/coding_context.py. "auto" (default) \u2014 prompt-only posture when the surface is interactive AND cwd is a code workspace. Toolsets are never touched; messaging platforms unaffected. "focus" \u2014 auto + collapse the toolset to the lean coding set (+ enabled MCP servers) + demote non-coding skill categories to names-only in the prompt's skill index. Explicit opt-in. "on" \u2014 force the prompt posture everywhere. "off" \u2014 disable entirely.`,group:"agent",effect:"session"},"agent.coding_instructions":{type:"str",default:"",doc:`Standing operator instructions for the coding posture. A string (or list of strings) appended to the coding brief as an extra stable system block \u2014 pin project-wide workflow rules here instead of editing the shipped brief, e.g. "For UI work, don't run tsc/lint until I approve. Clean the diff before you commit and push." Cache-safe: takes effect next session. Empty by default.`,group:"agent",effect:"session"},"agent.disabled_toolsets":{type:"list",default:[],doc:"",group:"agent",effect:"session"},"agent.environment_hint":{type:"str",default:"",doc:"Embedder-supplied environment description appended to the system prompt's environment-hints block. Lets a host that wraps Hermes (sandbox runner, managed platform) explain the runtime environment \u2014 proxy, credential handling, mount layout \u2014 without editing the identity slot (SOUL.md). Empty by default. The HERMES_ENVIRONMENT_HINT env var overrides this (build-time/container mechanism).",group:"agent",effect:"session"},"agent.environment_probe":{type:"bool",default:!0,doc:"Local-environment toolchain probe \u2014 surfaces Python/pip/uv/PEP-668 state in the system prompt when something non-default is detected (e.g. python3 has no pip module, pip\u2192python version mismatch, PEP 668 enforcement without uv). Costs zero tokens when the env is clean (probe emits nothing). Skipped for remote terminal backends (docker/modal/ssh \u2014 they have their own probe). Set False to disable entirely.",group:"agent",effect:"session"},"agent.gateway_auto_continue_freshness":{type:"int",default:3600,doc:`Freshness window for the gateway auto-continue note (seconds). After a gateway crash/restart/SIGTERM mid-run, the next user message gets a "[System note: your previous turn was interrupted \u2014 process the unfinished tool result(s) first]" prepended so the model picks up where it left off. That's the right behaviour while the interruption is fresh, but stale markers (transcript last touched hours or days ago) can revive an unrelated old task when the user's next message starts new work. This window is the max age of the last persisted transcript row for which we still inject the continue note. Default 3600s comfortably covers a long turn (gateway_timeout default is 1800s) plus runtime slack. Set to 0 to disable the gate and restore pre-fix behaviour (always inject).`,group:"agent",effect:"session"},"agent.gateway_notify_interval":{type:"int",default:180,doc:`Periodic "still working" notification interval (seconds). Sends a status message every N seconds so the user knows the agent hasn't died during long tasks. 0 = disable notifications. Lower values mean faster feedback on slow tasks but more chat noise; 180s is a compromise that catches spinning weak-model runs (60+ tool iterations with tiny output) before users assume the bot is dead and /restart.`,group:"agent",effect:"session"},"agent.gateway_timeout":{type:"int",default:1800,doc:"Inactivity timeout for gateway agent execution (seconds). The agent can run indefinitely as long as it's actively calling tools or receiving API responses. Only fires when the agent has been completely idle for this duration. 0 = unlimited.",group:"agent",effect:"session"},"agent.gateway_timeout_warning":{type:"int",default:900,doc:"Staged inactivity warning: send a warning to the user at this threshold before escalating to a full timeout. The warning fires once per run and does not interrupt the agent. 0 = disable warning.",group:"agent",effect:"session"},"agent.image_input_mode":{type:"str",default:"auto",doc:`How user-attached images are presented to the main model on each turn. "auto" \u2014 attach natively when the active model reports supports_vision=True AND the user hasn't explicitly configured auxiliary.vision.provider. Otherwise fall back to text (vision_analyze pre-analysis). "native" \u2014 always attach natively; non-vision models will either error at the provider or get a last-chance text fallback (see run_agent._prepare_messages_for_api). "text" \u2014 always pre-analyze with vision_analyze and prepend the description as text; the main model never sees pixels. Affects gateway platforms, the TUI, and CLI /attach. vision_analyze remains available as a tool regardless of this setting \u2014 the routing only controls how inbound user images are presented.`,group:"agent",effect:"session"},"agent.intent_ack_continuation":{type:"str",default:"auto",doc:`Intent-ack continuation: when the model opens a turn by narrating an action it will take ("I'll go check the logs...") but emits no tool call, intercept the turn-end, inject a "continue now, execute the tools" nudge, and loop instead of ending the turn (capped at 2 nudges per turn). This is the corrective sibling of tool_use_enforcement (the preventive prompt-side guard). Values: "auto" (default \u2014 fires only on the codex_responses api_mode, the historical behavior), true (all api_modes \u2014 fixes the Gemini/Claude "stops after stating intent" case), false (never), or a list of model-name substrings to match.`,group:"agent",effect:"session"},"agent.max_turns":{type:"int",default:90,doc:"",group:"agent",effect:"session"},"agent.max_verify_nudges":{type:"int",default:3,doc:'Upper bound on consecutive `pre_verify` "continue" nudges in a single turn, so a user/plugin hook can never trap the loop.',group:"agent",effect:"session"},"agent.parallel_tool_call_guidance":{type:"bool",default:!0,doc:"Universal parallel-tool-call guidance \u2014 short prompt block applied to all models that tells the model to batch independent tool calls (reads, searches, web fetches, read-only commands) into one turn instead of one call per turn. The runtime already runs independent calls concurrently, so this just steers the model to produce the batch \u2014 cutting round-trips and the resent-context cost that compounds over a long conversation. Costs ~70 tokens in the cached system prompt. Set False to disable globally.",group:"agent",effect:"session"},"agent.reasoning_effort":{type:"str",default:"",doc:"Reasoning effort for the main agent: none | minimal | low | medium | high | xhigh.",group:"agent",effect:"live"},"agent.restart_drain_timeout":{type:"int",default:0,doc:`Graceful drain timeout for gateway stop/restart (seconds). The gateway stops accepting new work, waits for running agents to finish, then interrupts any remaining runs after the timeout. 0 = no drain, interrupt immediately (the default). Contract: if you restart the gateway, in-flight work stops. We do not hold the restart open for a grace window \u2014 a drain timeout large enough to "save" a long agent turn would have to outlast an unbounded task (some runs take days), which is impossible, and a drain timeout shorter than systemd's TimeoutStopSec invites a SIGKILL-mid-cleanup race that leaves a stale lock and crash-loops the service. 0 sidesteps both: interrupt now, clean up, exit fast. Set a positive value in config.yaml only if you explicitly want a grace window on /restart (and keep it well under TimeoutStopSec).`,group:"agent",effect:"session"},"agent.service_tier":{type:"str",default:"",doc:"",group:"agent",effect:"live"},"agent.system_prompt":{type:"str",default:"",doc:"System-prompt override applied by the active personality.",group:"agent",effect:"session"},"agent.task_completion_guidance":{type:"bool",default:!0,doc:'Universal "finish the job" guidance \u2014 short prompt block applied to all models that targets two cross-family failure modes: (1) stopping after a stub instead of finishing the artifact, (2) fabricating plausible-looking output when a real path is blocked. Costs ~80 tokens in the cached system prompt. Set False to disable globally.',group:"agent",effect:"session"},"agent.tool_use_enforcement":{type:"str",default:"auto",doc:'Tool-use enforcement: injects system prompt guidance that tells the model to actually call tools instead of describing intended actions. Values: "auto" (default \u2014 applies to gpt/codex models), true/false (force on/off for all models), or a list of model-name substrings to match (e.g. ["gpt", "codex", "gemini", "qwen"]).',group:"agent",effect:"session"},"agent.verify_guidance":{type:"bool",default:!0,doc:"When verify-on-stop finds edited code without fresh verification evidence, append guidance for creative UI work (avoid broad tsc/lint/test before visual approval) and clean-diff expectations. Set false to keep the evidence nudge terse.",group:"agent",effect:"session"},"agent.verify_on_stop":{type:"str",default:"auto",doc:'Verification closure: after the agent edits files in a code workspace, do not accept a final answer until fresh verification evidence exists or the agent explains why it cannot run checks. The loop is bounded and uses the passive verification ledger. Default is "auto" \u2014 surface-aware: on for interactive coding surfaces (CLI, TUI, desktop) and programmatic callers, off for conversational messaging surfaces (Telegram, Discord, etc.) where the verification narrative would reach a human as chat noise. Doc/markdown/skill-only edits never fire it. Set true to force on everywhere, or false to disable.',group:"agent",effect:"session"},"approvals.cron_mode":{type:"str",default:"deny",doc:"",group:"approvals",effect:"live"},"approvals.deny":{type:"list",default:[],doc:'User-defined deny rules: fnmatch globs matched against terminal commands. A match blocks the command unconditionally \u2014 BEFORE the --yolo / /yolo / mode=off bypass \u2014 making this the user-editable counterpart to the code-shipped hardline blocklist. Patterns are case-insensitive and must be quoted in YAML when they start with * or contain {}/!/: sequences. Example: deny: - "git push --force*" - "*curl*|*sh*"',group:"approvals",effect:"live"},"approvals.destructive_slash_confirm":{type:"bool",default:!0,doc:'When true, destructive session slash commands (/clear, /new, /reset, /undo) ask the user to confirm before discarding conversation state. Three-option prompt (Approve Once / Always Approve / Cancel) routed through tools.slash_confirm \u2014 native yes/no buttons on Telegram, Discord, and Slack; text fallback elsewhere. Users click "Always Approve" to silence the prompt permanently; that flips this key to false. TUI has its own modal overlay (HERMES_TUI_NO_CONFIRM=1 to opt out there).',group:"approvals",effect:"live"},"approvals.mcp_reload_confirm":{type:"bool",default:!0,doc:'When true, /reload-mcp asks the user to confirm before rebuilding the MCP tool set for the active session. Reloading invalidates the provider prompt cache (tool schemas are baked into the system prompt), so the next message re-sends full input tokens \u2014 this can be expensive on long-context or high-reasoning models. Users click "Always Approve" to silence the prompt permanently; that flips this key to false.',group:"approvals",effect:"live"},"approvals.mode":{type:"str",default:"manual",doc:"",group:"approvals",effect:"live"},"approvals.timeout":{type:"int",default:60,doc:"",group:"approvals",effect:"live"},"auxiliary.approval.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.model":{type:"str",default:"",doc:"fast/cheap model recommended (e.g. gemini-flash, haiku)",group:"auxiliary",effect:"session"},"auxiliary.approval.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.approval.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.background_review.timeout":{type:"int",default:120,doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.compression.timeout":{type:"int",default:120,doc:"seconds \u2014 compression summarises large contexts; increase for local models",group:"auxiliary",effect:"session"},"auxiliary.curator.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.curator.timeout":{type:"int",default:600,doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.kanban_decomposer.timeout":{type:"int",default:180,doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.mcp.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_aggregator.timeout":{type:"int",default:900,doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.moa_reference.timeout":{type:"int",default:900,doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.monitor.timeout":{type:"int",default:60,doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.profile_describer.timeout":{type:"int",default:60,doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.skills_hub.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.language":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.title_generation.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.transient_retries":{type:"int",default:2,doc:"Same-provider retries for a transient transport blip (connection reset / timeout / 5xx / 408) on ANY auxiliary call before falling back. Default 2 (\u2192 3 total attempts), clamped [0,6]. Matters most for pinned calls like MoA reference advisors, where provider fallback is not a meaningful recovery, so an unretried blip silently loses the call.",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.triage_specifier.timeout":{type:"int",default:120,doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.tts_audio_tags.timeout":{type:"int",default:30,doc:"",group:"auxiliary",effect:"session"},"auxiliary.vision.api_key":{type:"str",default:"",doc:"API key for base_url (falls back to OPENAI_API_KEY)",group:"auxiliary",effect:"session"},"auxiliary.vision.base_url":{type:"str",default:"",doc:"direct OpenAI-compatible endpoint (takes precedence over provider)",group:"auxiliary",effect:"session"},"auxiliary.vision.download_timeout":{type:"int",default:30,doc:"seconds \u2014 image HTTP download timeout; increase for slow connections",group:"auxiliary",effect:"session"},"auxiliary.vision.extra_body":{type:"dict",default:{},doc:"OpenAI-compatible provider-specific request fields",group:"auxiliary",effect:"session"},"auxiliary.vision.model":{type:"str",default:"",doc:'e.g. "google/gemini-2.5-flash", "gpt-4o"',group:"auxiliary",effect:"session"},"auxiliary.vision.provider":{type:"str",default:"auto",doc:"auto | openrouter | nous | codex | custom",group:"auxiliary",effect:"session"},"auxiliary.vision.timeout":{type:"int",default:120,doc:"seconds \u2014 LLM API call timeout; vision payloads need generous timeout",group:"auxiliary",effect:"session"},"auxiliary.web_extract.api_key":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.base_url":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.extra_body":{type:"dict",default:{},doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.model":{type:"str",default:"",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.provider":{type:"str",default:"auto",doc:"",group:"auxiliary",effect:"session"},"auxiliary.web_extract.timeout":{type:"int",default:360,doc:"seconds (6min) \u2014 per-attempt LLM summarization timeout; increase for slow local models",group:"auxiliary",effect:"session"},"bedrock.discovery.enabled":{type:"bool",default:!0,doc:"Auto-discover models via ListFoundationModels",group:"bedrock",effect:"live"},"bedrock.discovery.provider_filter":{type:"list",default:[],doc:'Only show models from these providers (e.g. ["anthropic", "amazon"])',group:"bedrock",effect:"live"},"bedrock.discovery.refresh_interval":{type:"int",default:3600,doc:"Cache discovery results for this many seconds",group:"bedrock",effect:"live"},"bedrock.guardrail.guardrail_identifier":{type:"str",default:"",doc:"Amazon Bedrock Guardrails \u2014 content filtering and safety policies. Create a guardrail in the Bedrock console, then set the ID and version here. See: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html",group:"bedrock",effect:"live"},"bedrock.guardrail.guardrail_version":{type:"str",default:"",doc:'e.g. "1" or "DRAFT"',group:"bedrock",effect:"live"},"bedrock.guardrail.stream_processing_mode":{type:"str",default:"async",doc:'"sync" or "async"',group:"bedrock",effect:"live"},"bedrock.guardrail.trace":{type:"str",default:"disabled",doc:'"enabled", "disabled", or "enabled_full"',group:"bedrock",effect:"live"},"bedrock.region":{type:"str",default:"",doc:"AWS region for Bedrock API calls (empty = AWS_REGION env var \u2192 us-east-1)",group:"bedrock",effect:"live"},"browser.allow_private_urls":{type:"bool",default:!1,doc:"Allow navigating to private/internal IPs (localhost, 192.168.x.x, etc.)",group:"browser",effect:"live"},"browser.allow_unsafe_evaluate":{type:"bool",default:!1,doc:"Allow browser_console(expression=...) to use sensitive JS primitives (cookies/storage/clipboard/network/form values)",group:"browser",effect:"live"},"browser.auto_local_for_private_urls":{type:"bool",default:!0,doc:"When a cloud provider is set, auto-spawn local Chromium for LAN/localhost URLs instead of sending them to the cloud",group:"browser",effect:"live"},"browser.camofox.adopt_existing_tab":{type:"bool",default:!1,doc:"Rehydrate tab_id from Camofox before creating a new tab.",group:"browser",effect:"live"},"browser.camofox.loopback_host_alias":{type:"str",default:"host.docker.internal",doc:"",group:"browser",effect:"live"},"browser.camofox.managed_persistence":{type:"bool",default:!1,doc:"When true, Hermes sends a stable profile-scoped userId to Camofox so the server maps it to a persistent Firefox profile automatically. When false (default), each session gets a random userId (ephemeral).",group:"browser",effect:"live"},"browser.camofox.rewrite_loopback_urls":{type:"bool",default:!1,doc:"Docker Camofox opens page URLs from inside the container. Enable this to rewrite loopback page URLs (localhost/127.0.0.1/::1) to a host alias while leaving CAMOFOX_URL itself unchanged.",group:"browser",effect:"live"},"browser.camofox.session_key":{type:"str",default:"",doc:"",group:"browser",effect:"live"},"browser.camofox.user_id":{type:"str",default:"",doc:"Optional externally managed Camofox identity. Useful when another app owns the visible browser and Hermes should operate in it.",group:"browser",effect:"live"},"browser.cdp_url":{type:"str",default:"",doc:"Optional persistent CDP endpoint for attaching to an existing Chromium/Chrome",group:"browser",effect:"live"},"browser.command_timeout":{type:"int",default:30,doc:"Timeout for browser commands in seconds (screenshot, navigate, etc.)",group:"browser",effect:"live"},"browser.dialog_policy":{type:"str",default:"must_respond",doc:"CDP supervisor \u2014 dialog + frame detection via a persistent WebSocket. Active only when a CDP-capable backend is attached (Browserbase or local Chrome via /browser connect). See website/docs/developer-guide/browser-supervisor.md.",group:"browser",effect:"live"},"browser.dialog_timeout_s":{type:"int",default:300,doc:"Safety auto-dismiss after N seconds under must_respond",group:"browser",effect:"live"},"browser.engine":{type:"str",default:"auto",doc:'Browser engine for local mode. Passed as ``--engine <value>`` to agent-browser v0.25.3+. "auto" \u2014 use Chrome (default, don\'t pass --engine at all) "lightpanda" \u2014 use Lightpanda (1.3-5.8x faster navigation, no screenshots) "chrome" \u2014 explicitly request Chrome Also settable via AGENT_BROWSER_ENGINE env var.',group:"browser",effect:"live"},"browser.inactivity_timeout":{type:"int",default:120,doc:"",group:"browser",effect:"live"},"browser.record_sessions":{type:"bool",default:!1,doc:"Auto-record browser sessions as WebM videos",group:"browser",effect:"live"},"checkpoints.auto_prune":{type:"bool",default:!0,doc:"Auto-maintenance: hermes sweeps the checkpoint base at startup (at most once per ``min_interval_hours``) and: * deletes project entries whose workdir no longer exists (orphan) * deletes project entries whose last_touch is older than ``retention_days`` * GCs the single shared store to reclaim unreachable objects * enforces ``max_total_size_mb`` across remaining projects * deletes ``legacy-*`` archives older than ``retention_days``",group:"checkpoints",effect:"live"},"checkpoints.delete_orphans":{type:"bool",default:!0,doc:"",group:"checkpoints",effect:"live"},"checkpoints.enabled":{type:"bool",default:!1,doc:"",group:"checkpoints",effect:"live"},"checkpoints.max_file_size_mb":{type:"int",default:10,doc:"Skip any single file larger than this when staging a checkpoint. Prevents accidental snapshotting of datasets, model weights, and other large generated assets. 0 disables the filter.",group:"checkpoints",effect:"live"},"checkpoints.max_snapshots":{type:"int",default:20,doc:"Max checkpoints to keep per working directory. Pre-v2 this only limited the `/rollback` listing; v2 actually rewrites the ref and garbage-collects older commits.",group:"checkpoints",effect:"live"},"checkpoints.max_total_size_mb":{type:"int",default:500,doc:"Hard ceiling on total ``~/.hermes/checkpoints/`` size (MB). When exceeded, the oldest checkpoint per project is dropped in a round-robin pass until total size falls under the cap. 0 disables the size cap.",group:"checkpoints",effect:"live"},"checkpoints.min_interval_hours":{type:"int",default:24,doc:"",group:"checkpoints",effect:"live"},"checkpoints.retention_days":{type:"int",default:7,doc:"",group:"checkpoints",effect:"live"},"code_execution.mode":{type:"str",default:"project",doc:"Execution mode: project (default) \u2014 scripts run in the session's working directory with the active virtualenv/conda env's python, so project deps (pandas, torch, project packages) and relative paths resolve. strict \u2014 scripts run in an isolated temp directory with hermes-agent's own python (sys.executable). Maximum isolation and reproducibility; project deps and relative paths won't work. Env scrubbing (strips *_API_KEY, *_TOKEN, *_SECRET, ...) and the tool whitelist apply identically in both modes.",group:"code_execution",effect:"live"},command_allowlist:{type:"list",default:[],doc:'Permanently allowed dangerous command patterns (added via "always" approval)',group:"general",effect:"live"},"compression.abort_on_summary_failure":{type:"bool",default:!1,doc:`When True, auto-compression that fails to generate a summary (aux LLM errored / returned non-JSON / timed out) aborts entirely instead of dropping the middle window with a static "summary unavailable" placeholder. Messages are preserved unchanged and the session "freezes" at its current size until the user runs /compress (which bypasses the failure cooldown) or /new. Default False matches historical behavior; set to True if you'd rather pause than silently lose context turns when your aux model is flaky.`,group:"compression",effect:"live"},"compression.codex_gpt55_autoraise":{type:"bool",default:!0,doc:"Historical key name kept for compatibility. When True, gpt-5.4 / gpt-5.5 on the ChatGPT Codex OAuth route raise their compaction trigger to 85% (vs the global `threshold` above). Codex hard-caps both families at a 272K window, so the default 50% would compact at ~136K and waste half the usable context. Set to False to opt back down to the global threshold (e.g. 0.50) for those Codex sessions. Only this exact route is affected \u2014 gpt-5.4 / 5.5 on OpenAI's direct API, OpenRouter, and Copilot keep the global threshold regardless.",group:"compression",effect:"live"},"compression.codex_gpt55_autoraise_notice":{type:"bool",default:!0,doc:"Display the one-time Codex gpt-5.4/5.5 autoraise banner. Set False to keep the 85% threshold autoraise but suppress the user-facing notice in CLI/gateway output.",group:"compression",effect:"live"},"compression.enabled":{type:"bool",default:!0,doc:"",group:"compression",effect:"live"},"compression.hygiene_hard_message_limit":{type:"int",default:5000,doc:"gateway session-hygiene force-compress threshold by message count",group:"compression",effect:"live"},"compression.in_place":{type:"bool",default:!0,doc:"When True, compaction rewrites the message list and rebuilds the system prompt WITHOUT rotating the session id \u2014 the conversation keeps one durable id for its whole life (no parent_session_id chain, no `name #N` renumbering). Eliminates the session-rotation bug cluster (#33618 /goal loss, #14238 lost response, #33907 orphans, #45117 search gaps, #42228 null cwd) \u2014 see #38763. Non-destructive: the live context is compacted (lossy for what the model reloads), but the pre-compaction turns are soft-archived under the same id (active=0, compacted=1) \u2014 still searchable via session_search and recoverable, not deleted. Default False during rollout; will flip on after live validation.",group:"compression",effect:"live"},"compression.protect_first_n":{type:"int",default:3,doc:"non-system head messages always preserved verbatim, in ADDITION to the system prompt (which is always implicitly protected). Set to 0 for long-running rolling-compaction sessions where you want nothing pinned except the system prompt + rolling summary + recent tail.",group:"compression",effect:"live"},"compression.protect_last_n":{type:"int",default:20,doc:"minimum recent messages to keep uncompressed",group:"compression",effect:"live"},"compression.target_ratio":{type:"float",default:0.2,doc:"fraction of threshold to preserve as recent tail",group:"compression",effect:"live"},"compression.threshold":{type:"float",default:0.5,doc:"compress when context usage exceeds this ratio",group:"compression",effect:"live"},"computer_use.cua_telemetry":{type:"bool",default:!1,doc:"cua-driver ships with anonymous usage telemetry (PostHog) ENABLED by default upstream. Hermes disables it for our users unless they explicitly opt in here. When false (default), Hermes sets CUA_DRIVER_RS_TELEMETRY_ENABLED=0 in the cua-driver child env for every invocation (MCP backend, status, doctor, install). Set true to let cua-driver use its own default (telemetry on).",group:"computer_use",effect:"live"},"context.engine":{type:"str",default:"compressor",doc:"",group:"context",effect:"live"},context_file_max_chars:{type:"null",default:null,doc:"Hard cap (chars) for a single automatic context file such as SOUL.md, AGENTS.md, CLAUDE.md, .hermes.md, or .cursorrules before Hermes applies head/tail truncation. ``null`` (the default) lets the cap scale with the model's context window (floor 20K, ceiling 500K) so large-context models rarely truncate a project doc. Set a positive integer to pin a fixed cap and override the dynamic behavior. Separate from read_file tool limits.",group:"general",effect:"live"},credential_pool_strategies:{type:"dict",default:{},doc:"",group:"general",effect:"live"},"cron.chronos.callback_url":{type:"str",default:"",doc:"The agent's OWN publicly-reachable base URL for NAS\u2192agent fires (NAS POSTs {callback_url}/api/cron/fire). Empty \u2192 Chronos is unavailable and the resolver falls back to the built-in ticker.",group:"cron",effect:"live"},"cron.chronos.expected_audience":{type:"str",default:"",doc:`This agent's expected JWT audience (e.g. "agent:{instance_id}").`,group:"cron",effect:"live"},"cron.chronos.nas_jwks_url":{type:"str",default:"",doc:"NAS JWKS URL for verifying the inbound fire JWT's signature. Empty \u2192 the fire endpoint refuses all tokens (no unsigned decode).",group:"cron",effect:"live"},"cron.chronos.portal_url":{type:"str",default:"https://portal.nousresearch.com",doc:"NAS / portal base URL the agent calls to arm/cancel one-shots and that mints the inbound fire JWT (used as the expected issuer).",group:"cron",effect:"live"},"cron.max_parallel_jobs":{type:"null",default:null,doc:"Maximum number of due jobs to run in parallel per tick. null/0 = unbounded (limited only by thread count). 1 = serial (pre-v0.9 behaviour). Also overridable via HERMES_CRON_MAX_PARALLEL env var.",group:"cron",effect:"live"},"cron.mirror_delivery":{type:"bool",default:!1,doc:"Make cron deliveries CONTINUABLE: a user can reply to a cron brief and the agent has it in context (no \"what is Task #2?\" amnesia). Default False preserves the historical isolation guarantee (cron deliveries live only in the cron job's own session). Per-job `attach_to_session` overrides this for a single job. Behaviour is THREAD-PREFERRED, scoped to the job's origin chat: - Thread-capable platforms (Telegram forum/DM topics, Discord threads, Slack threads): a dedicated thread is opened for the job via the adapter's create_handoff_thread, the brief is delivered into it, and that thread's session is seeded so the user's reply in-thread continues with full context. Each continuable job gets its own scrollback, isolated from the parent channel. - DM-only platforms (WhatsApp / Signal / SMS): no threads exist, so the brief is mirrored into the origin DM session instead \u2014 the DM itself is the continuation surface. Both paths ride the shipped gateway.mirror.mirror_to_session and are alternation- and cache-safe (appended at a turn boundary, never mid-loop, never mutating the cached system prompt). Only the origin chat is ever touched \u2014 fan-out / broadcast targets are never mirrored.",group:"cron",effect:"live"},"cron.output_retention":{type:"int",default:50,doc:"Per-job output-file retention: save_job_output keeps the N most recent .md files and prunes older ones. 0 or negative disables pruning (for operators who manage cleanup externally). Default 50.",group:"cron",effect:"live"},"cron.provider":{type:"str",default:"",doc:'Active cron SCHEDULER provider (Axis B \u2014 the trigger that decides WHEN a due job fires). Empty string = the built-in in-process 60s ticker (default). Name an installed provider (plugins/cron_providers/<name>/ or $HERMES_HOME/plugins/<name>/) to relocate the trigger \u2014 e.g. "chronos", the NAS-mediated managed-cron provider for scale-to-zero deployments. An unknown or unavailable provider falls back to the built-in, so cron never loses its trigger.',group:"cron",effect:"live"},"cron.wrap_response":{type:"bool",default:!0,doc:'Wrap delivered cron responses with a header (task name) and footer ("The agent cannot see this message"). Set to false for clean output.',group:"cron",effect:"live"},"curator.archive_after_days":{type:"int",default:90,doc:"Archive a skill (move to skills/.archive/) after this many days without use. Archived skills are recoverable \u2014 no auto-deletion.",group:"curator",effect:"live"},"curator.backup.enabled":{type:"bool",default:!0,doc:"",group:"curator",effect:"live"},"curator.backup.keep":{type:"int",default:5,doc:"retain last N regular snapshots",group:"curator",effect:"live"},"curator.consolidate":{type:"bool",default:!1,doc:"Run the LLM consolidation (umbrella-building) pass. OFF by default. When off, a curator run does ONLY the deterministic inactivity prune (mark stale / archive long-unused skills) and skips the forked aux-model review entirely \u2014 no umbrella-building, no aux-model cost. Set to true to opt back into merging overlapping skills into class-level umbrellas. `hermes curator run --consolidate` overrides this for a single invocation.",group:"curator",effect:"live"},"curator.enabled":{type:"bool",default:!0,doc:"",group:"curator",effect:"live"},"curator.interval_hours":{type:"int",default:168,doc:"How long to wait between curator runs (hours). Default: 7 days.",group:"curator",effect:"live"},"curator.min_idle_hours":{type:"int",default:2,doc:"Only run when the agent has been idle at least this long (hours).",group:"curator",effect:"live"},"curator.prune_builtins":{type:"bool",default:!0,doc:"Also prune (archive) bundled built-in skills after the inactivity period, not just agent-created ones. ON by default. Built-ins are normally restored on every `hermes update`, so pruning them only sticks because a suppression list tells the re-seeder to leave them archived. Hub-installed skills are NEVER pruned here \u2014 they have an external upstream owner. Built-ins accrue usage telemetry and their inactivity clock starts the first time the curator sees them, so a long-unused built-in is archived only after archive_after_days of genuine non-use (never a mass-prune on the first run). Set to false to keep all bundled built-ins permanently.",group:"curator",effect:"live"},"curator.stale_after_days":{type:"int",default:30,doc:'Mark a skill as "stale" after this many days without use.',group:"curator",effect:"live"},custom_prompt:{type:"str",default:"",doc:"Ad-hoc system-prompt addendum set via /prompt.",group:"general",effect:"live"},custom_providers:{type:"dict",default:{},doc:"OpenAI-compatible provider definitions keyed by name. Entries support ssl_ca_cert and ssl_verify.",group:"general",effect:"live"},"dashboard.basic_auth.password":{type:"str",default:"",doc:"plaintext fallback (hashed in-memory at load)",group:"dashboard",effect:"live"},"dashboard.basic_auth.password_hash":{type:"str",default:"",doc:"scrypt$... (preferred \u2014 no plaintext at rest)",group:"dashboard",effect:"live"},"dashboard.basic_auth.secret":{type:"str",default:"",doc:"token-signing key; blank \u2192 random per-process",group:"dashboard",effect:"live"},"dashboard.basic_auth.session_ttl_seconds":{type:"int",default:0,doc:"0 \u2192 plugin default (12h)",group:"dashboard",effect:"live"},"dashboard.basic_auth.username":{type:"str",default:"",doc:"blank \u2192 plugin no-op (no password provider)",group:"dashboard",effect:"live"},"dashboard.drain_auth.min_secret_chars":{type:"int",default:43,doc:"",group:"dashboard",effect:"live"},"dashboard.drain_auth.scope":{type:"str",default:"drain",doc:"",group:"dashboard",effect:"live"},"dashboard.oauth.client_id":{type:"str",default:"",doc:"agent:{instance_id} \u2014 Portal provisions this",group:"dashboard",effect:"live"},"dashboard.oauth.portal_url":{type:"str",default:"",doc:"blank \u2192 use plugin default (production Portal)",group:"dashboard",effect:"live"},"dashboard.public_url":{type:"str",default:"",doc:"Public URL override (env: ``HERMES_DASHBOARD_PUBLIC_URL``). When set, this is the complete authority \u2014 scheme + host + optional path prefix (e.g. ``https://example.com/hermes``) \u2014 the OAuth ``redirect_uri`` is built from. Set this for deploys behind reverse proxies that don't reliably forward ``X-Forwarded-Host`` / ``X-Forwarded-Proto`` / ``X-Forwarded-Prefix`` (manual nginx setups, on-prem ingresses, custom-domain Fly deploys without proper proxy headers). When set, ``X-Forwarded-Prefix`` is IGNORED on the OAuth path because the operator has declared the public URL \u2014 we no longer need to guess from proxy headers, and stacking the prefix on top would double-prefix the common case where the prefix is already baked into ``public_url``. Leave empty to use the existing proxy-header reconstruction (the default). Validation: rejects values without ``http(s)://`` scheme or without a host, and any string containing quote / angle / whitespace / control characters. A malformed value silently falls through to request reconstruction rather than breaking the login flow.",group:"dashboard",effect:"live"},"dashboard.show_token_analytics":{type:"bool",default:!1,doc:"Hide the token/cost analytics surfaces (Analytics page, token bars and cost figures on the Models page) by default. The numbers shown there are a local debug estimate: they only count successful main-agent responses with a usable ``response.usage``, and silently exclude every auxiliary call (context compression, title generation, vision, session search, web extract, smart approval, MCP routing, plugin LLM access) plus provider-side retries, fallback attempts, and any call whose usage block didn't come back. Cache writes are also missing from the API response. On models with heavy auxiliary traffic (Kimi K2.6, MiniMax M2.7) the local total can be 10x-100x lower than the provider bill, which is worse than hiding the numbers entirely because they look precise enough to compare against the provider. Set this to True to re-enable the surfaces with the understanding that the numbers are a local lower-bound estimate, not billing.",group:"dashboard",effect:"live"},"dashboard.theme":{type:"str",default:"default",doc:'Dashboard visual theme: "default", "midnight", "ember", "mono", "cyberpunk", "rose"',group:"dashboard",effect:"live"},"delegation.api_key":{type:"str",default:"",doc:"API key for delegation.base_url (falls back to OPENAI_API_KEY)",group:"delegation",effect:"session"},"delegation.api_mode":{type:"str",default:"",doc:`wire protocol for delegation.base_url: "chat_completions", "codex_responses", or "anthropic_messages". Empty = auto-detect from URL (e.g. /anthropic suffix \u2192 anthropic_messages). Set this explicitly for non-standard endpoints the heuristic can't detect.`,group:"delegation",effect:"session"},"delegation.base_url":{type:"str",default:"",doc:"direct OpenAI-compatible endpoint for subagents",group:"delegation",effect:"session"},"delegation.child_timeout_seconds":{type:"int",default:0,doc:"optional wall-clock cap per child agent. 0 (default) = no timeout: children fail only from real errors (API, tools, iteration budget), never a delegation stopwatch. Set a positive number of seconds (floor 30s) to enforce a hard cap.",group:"delegation",effect:"session"},"delegation.inherit_mcp_toolsets":{type:"bool",default:!0,doc:'When delegate_task narrows child toolsets explicitly, preserve any MCP toolsets the parent already has enabled. On by default so narrowing (e.g. toolsets=["web","browser"]) expresses "I want these extras" without silently stripping MCP tools the parent already has. Set to false for strict intersection.',group:"delegation",effect:"session"},"delegation.max_concurrent_children":{type:"int",default:3,doc:"unified concurrency cap: max parallel children per batch AND max concurrent background (background=true) delegation units. New async dispatches beyond the cap fall back to synchronous execution. Floor of 1, no ceiling. (Replaces the deprecated max_async_children.)",group:"delegation",effect:"session"},"delegation.max_iterations":{type:"int",default:50,doc:"per-subagent iteration cap (each subagent gets its own budget, independent of the parent's max_iterations)",group:"delegation",effect:"session"},"delegation.max_spawn_depth":{type:"int",default:1,doc:"Orchestrator role controls (see tools/delegate_tool.py:_get_max_spawn_depth and _get_orchestrator_enabled). Floored at 1, no upper ceiling \u2014 raise deliberately, each level multiplies API cost.",group:"delegation",effect:"session"},"delegation.max_summary_chars":{type:"int",default:24000,doc:`Subagent summaries return to the parent's context verbatim. A batch fan-out (N children) returns N summaries at once, which can exceed the parent's context window and trigger a compression/429 death spiral. delegate_task sizes each summary against the parent's remaining context headroom (split across the batch); when it must trim, the full text is spilled to ~/.hermes/cache/delegation/ (mounted into remote backends) and the in-context summary becomes a head+tail window plus a footer with the exact read_file offset to page the omitted middle \u2014 the same convention web_extract uses for large pages. Nothing is lost. max_summary_chars is a hard per-summary character ceiling layered on top of that dynamic budget (belt-and-suspenders for models that ignore the "be concise" instruction). 0 disables the hard ceiling; the dynamic headroom budget still applies.`,group:"delegation",effect:"session"},"delegation.model":{type:"str",default:"",doc:'e.g. "google/gemini-3-flash-preview" (empty = inherit parent model)',group:"delegation",effect:"session"},"delegation.orchestrator_enabled":{type:"bool",default:!0,doc:'kill switch for role="orchestrator"',group:"delegation",effect:"session"},"delegation.provider":{type:"str",default:"",doc:'e.g. "openrouter" (empty = inherit parent provider + credentials)',group:"delegation",effect:"session"},"delegation.reasoning_effort":{type:"str",default:"",doc:`reasoning effort for subagents: "xhigh", "high", "medium", "low", "minimal", "none" (empty = inherit parent's level)`,group:"delegation",effect:"session"},"delegation.subagent_auto_approve":{type:"bool",default:!1,doc:`When a subagent hits a dangerous-command approval prompt, the parent's prompt_toolkit TUI owns stdin \u2014 a thread-local input() call from the subagent worker would deadlock the parent UI. To avoid the deadlock, subagent threads ALWAYS resolve approvals non-interactively: false (default) \u2192 auto-deny with a logger.warning audit line (safe) true \u2192 auto-approve "once" with a logger.warning audit line Flip to true only if you trust delegated work to run dangerous cmds without human review (cron pipelines, batch automation, etc.).`,group:"delegation",effect:"session"},"desktop.disable_gpu":{type:"str",default:"auto",doc:'GPU hardware acceleration policy for the desktop app: "auto" - let the app detect remote displays (SSH/VNC/RDP) and disable GPU only then (default; current behavior). true - always disable GPU acceleration (software rendering). Use on no-GPU VMs / Proxmox hosts where the GPU path hangs. false - always keep GPU acceleration on, even over a remote display. Bridged to the HERMES_DESKTOP_DISABLE_GPU env var the Electron app reads.',group:"desktop",effect:"live"},"desktop.electron_flags":{type:"list",default:[],doc:'Extra Electron command-line flags appended to every desktop launch, e.g. ["--ozone-platform=x11"] on headless/VM X11 hosts that need an explicit ozone backend, or GPU workaround flags. A list of strings; a single string is also accepted and shell-split.',group:"desktop",effect:"live"},"discord.allow_any_attachment":{type:"bool",default:!1,doc:"DEPRECATED / no-op. Any uploaded file is now always cached and surfaced to the agent regardless of file type \u2014 authorization to message the agent is the gate, not the extension. Kept so existing configs that set it do not error. Env override: DISCORD_ALLOW_ANY_ATTACHMENT.",group:"discord",effect:"live"},"discord.allowed_channels":{type:"str",default:"",doc:"If set, bot ONLY responds in these channel IDs (whitelist)",group:"discord",effect:"live"},"discord.auto_thread":{type:"bool",default:!0,doc:"Auto-create threads on @mention in channels (like Slack)",group:"discord",effect:"live"},"discord.bots_require_inline_mention":{type:"bool",default:!1,doc:"Multi-bot rooms: if True, another bot must type @thisbot in its message to trigger a reply; a Discord reply/quote alone won't. Prevents two bots auto-replying to each other forever. Does not affect humans.",group:"discord",effect:"live"},"discord.channel_prompts":{type:"dict",default:{},doc:"Per-channel ephemeral system prompts (forum parents apply to child threads)",group:"discord",effect:"live"},"discord.dm_role_auth_guild":{type:"str",default:"",doc:"Opt-in DM role-based auth (#12136). By default, DISCORD_ALLOWED_ROLES authorizes only guild messages in the role's own guild \u2014 DMs require DISCORD_ALLOWED_USERS. Set dm_role_auth_guild to a guild ID to also authorize DMs from members of that one trusted guild holding the allowed role. Unset / empty / 0 = secure default (DM role-auth off).",group:"discord",effect:"live"},"discord.free_response_channels":{type:"str",default:"",doc:"Comma-separated channel IDs where bot responds without mention",group:"discord",effect:"live"},"discord.history_backfill":{type:"bool",default:!0,doc:"If True, prepend recent channel scrollback when bot is triggered (recovers messages missed while require_mention gated them out)",group:"discord",effect:"live"},"discord.history_backfill_limit":{type:"int",default:50,doc:"Max number of recent messages to scan when assembling the backfill block",group:"discord",effect:"live"},"discord.max_attachment_bytes":{type:"int",default:33554432,doc:"Maximum bytes per attachment the gateway will cache. The whole file is held in memory while being written, so unlimited uploads carry a real memory cost. Default 32 MiB matches the historical hardcoded cap. Set to 0 for no cap. Env override: DISCORD_MAX_ATTACHMENT_BYTES.",group:"discord",effect:"live"},"discord.reactions":{type:"bool",default:!0,doc:"Add \uD83D\uDC40/\u2705/\u274C reactions to messages during processing",group:"discord",effect:"live"},"discord.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in server channels",group:"discord",effect:"live"},"discord.server_actions":{type:"str",default:"",doc:'discord / discord_admin tools: restrict which actions the agent may call. Default (empty) = all actions allowed (subject to bot privileged intents). Accepts comma-separated string ("list_guilds,list_channels,fetch_messages") or YAML list. Unknown names are dropped with a warning at load time. Actions: list_guilds, server_info, list_channels, channel_info, list_roles, member_info, search_members, fetch_messages, list_pins, pin_message, unpin_message, create_thread, add_role, remove_role.',group:"discord",effect:"live"},"discord.thread_require_mention":{type:"bool",default:!1,doc:"If True, require @mention in threads too (multi-bot threads)",group:"discord",effect:"live"},"discord.voice_fx.ack_enabled":{type:"bool",default:!0,doc:"speak a short phrase before the first tool call",group:"discord",effect:"live"},"discord.voice_fx.ack_phrases":{type:"list",default:["Let me look into that.","One moment.","Checking on that now.","Give me a sec.","On it."],doc:"picked at random; set [] to disable phrases",group:"discord",effect:"live"},"discord.voice_fx.ambient_enabled":{type:"bool",default:!0,doc:'play the idle "thinking" bed while tools run',group:"discord",effect:"live"},"discord.voice_fx.ambient_gain":{type:"float",default:0.18,doc:"idle bed loudness, 0.0\u20131.0",group:"discord",effect:"live"},"discord.voice_fx.ambient_path":{type:"str",default:"",doc:'custom loop audio file; "" = synthesised pad',group:"discord",effect:"live"},"discord.voice_fx.duck_gain":{type:"float",default:0.06,doc:"ambient loudness while speech plays",group:"discord",effect:"live"},"discord.voice_fx.enabled":{type:"bool",default:!1,doc:"master switch for the mixer subsystem",group:"discord",effect:"live"},"discord.voice_fx.speech_gain":{type:"float",default:1,doc:"TTS / ack loudness, 0.0\u20131.0",group:"discord",effect:"live"},"display.bell_on_complete":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.busy_input_mode":{type:"str",default:"interrupt",doc:"interrupt | queue | steer",group:"display",effect:"live"},"display.busy_steer_ack_enabled":{type:"bool",default:!0,doc:'When busy_input_mode="steer", suppress only the visible "Steered into current run" confirmation bubble by setting this false. The mid-turn steering itself still happens.',group:"display",effect:"live"},"display.cli_refresh_interval":{type:"float",default:1,doc:"Seconds between prompt_toolkit redraws in the classic CLI when idle. Default 1.0 keeps the wall-clock status-bar read-outs (idle-since- last-turn) ticking and keeps the bottom chrome alive during idle \u2014 without it prompt_toolkit stops repainting the status bar after a turn and it can go stale/disappear (#45592). Set 0 to disable the background refresh if it fights terminal auto-scroll in non-fullscreen mode on some emulators (#48309).",group:"display",effect:"live"},"display.compact":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.copy_shortcut":{type:"str",default:"auto",doc:'"auto" (platform default) | "ctrl_c" | "ctrl_shift_c" | "disabled"',group:"display",effect:"live"},"display.credits_notices":{type:"bool",default:!0,doc:"Nous credits status-bar notices (usage bands, grant-spent, depleted / restored). When false, no credits notices are emitted \u2014 balance data is still captured and /usage keeps working. Off switch for sub + top-up users who find the gauge noisy.",group:"display",effect:"live"},"display.details_mode":{type:"str",default:"collapsed",doc:"Tool-progress section fold state: hidden | collapsed | expanded.",group:"display",effect:"live"},"display.ephemeral_system_ttl":{type:"int",default:0,doc:'Auto-delete system-notice replies (e.g. "\u2728 New session started!", "\u267B Restarting gateway\u2026", "\u26A1 Stopped\u2026") after N seconds on platforms that support message deletion (currently Telegram; other platforms ignore and leave the message in place). Only affects slash-command replies wrapped with gateway.platforms.base.EphemeralReply \u2014 agent responses and content messages are never touched. Default 0 (disabled) preserves prior behavior.',group:"display",effect:"live"},"display.file_mutation_verifier":{type:"bool",default:!0,doc:'File-mutation verifier footer. When true (default), the agent appends a one-line advisory to its final response whenever a write_file / patch call failed during the turn and was never superseded by a successful write to the same path. This catches the "batch of parallel patches, half fail, model claims success" class of over-claim that otherwise forces users to run `git status` to verify edits landed. Set false to suppress.',group:"display",effect:"live"},"display.final_response_markdown":{type:"str",default:"strip",doc:"render | strip | raw",group:"display",effect:"live"},"display.friendly_tool_labels":{type:"bool",default:!0,doc:'Human-phrased tool status labels for built-in tools: "Searching the web for ...", "Reading <file>", "Browsing <url>" instead of the raw tool name. Applies to CLI spinner + gateway/desktop tool-progress. Custom/plugin/MCP tools always fall back to the raw preview.',group:"display",effect:"live"},"display.inline_diffs":{type:"bool",default:!0,doc:"Show inline diff previews for write actions (write_file, patch, skill_manage)",group:"display",effect:"live"},"display.interface":{type:"str",default:"cli",doc:'Which interface bare `hermes` (and `hermes chat`) launches by default: "cli" \u2014 the classic prompt_toolkit REPL (default, preserves prior behavior) "tui" \u2014 the modern Ink TUI (same as passing `--tui`) Explicit flags always win over this setting: `--cli` forces the classic REPL and `--tui` (or HERMES_TUI=1) forces the TUI regardless of config.',group:"display",effect:"live"},"display.interim_assistant_messages":{type:"bool",default:!0,doc:"Gateway: show natural mid-turn assistant status messages",group:"display",effect:"live"},"display.language":{type:"str",default:"en",doc:"UI language for static user-facing messages (approval prompts, a handful of gateway slash-command replies). Does NOT affect agent responses, log lines, tool outputs, or slash-command descriptions. Supported: en, zh, ja, de, es, fr, tr, uk. Unknown values fall back to en.",group:"display",effect:"live"},"display.memory_notifications":{type:"str",default:"on",doc:'Background self-improvement review notifications surfaced in chat. "off" \u2014 no chat notification (the review still runs and writes) "on" \u2014 generic "\uD83D\uDCBE Memory updated" line (default) "verbose" \u2014 include a compact content preview of what changed Per-platform overrides via display.platforms.<platform>.memory_notifications.',group:"display",effect:"live"},"display.persist_prompts":{type:"bool",default:!0,doc:"Print a one-line summary of resolved modal prompts (approval / clarify) into scrollback so the question and decision survive the panel repaint. Set false to keep scrollback untouched.",group:"display",effect:"live"},"display.persistent_output":{type:"bool",default:!0,doc:"Preserve recent classic CLI output across Ctrl+L, /redraw, and terminal resize full-screen clears. Disable if a terminal emulator behaves badly with replayed scrollback.",group:"display",effect:"live"},"display.persistent_output_max_lines":{type:"int",default:200,doc:"",group:"display",effect:"live"},"display.personality":{type:"str",default:"",doc:"",group:"display",effect:"live"},"display.pet.enabled":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.pet.render_mode":{type:"str",default:"auto",doc:"Terminal render protocol for CLI/TUI: auto \u2014 detect kitty/iTerm2/sixel, else unicode half-blocks kitty | iterm | sixel | unicode | off",group:"display",effect:"live"},"display.pet.scale":{type:"float",default:0.33,doc:"Master size scalar (relative to native 192\xD7208 frames). One knob shrinks every surface: the desktop canvas scales its pixels by it and the CLI/TUI derive their terminal column width from it. The half-block fallback clamps to a legibility floor (it can't shrink as far as true-pixel kitty/GUI without turning to mush).",group:"display",effect:"live"},"display.pet.slug":{type:"str",default:"",doc:"Active pet slug; resolved against installed pets in get_hermes_home()/pets/. Empty \u2192 first installed pet.",group:"display",effect:"live"},"display.pet.unicode_cols":{type:"int",default:0,doc:"Hard override for terminal column width. 0 = auto (derive from scale); set a positive int only to pin the half-block/kitty width independently of scale.",group:"display",effect:"live"},"display.platforms.discord.streaming":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.platforms.telegram.streaming":{type:"bool",default:!0,doc:"",group:"display",effect:"live"},"display.reasoning_full":{type:"bool",default:!1,doc:'When reasoning display is on, the post-response "Reasoning" recap box collapses long thinking to the first 10 lines. Set true to print the complete thinking text uncollapsed (live streaming is always full).',group:"display",effect:"live"},"display.reasoning_style":{type:"str",default:"code",doc:'How a reasoning/thinking summary renders when show_reasoning is on. "code" (default) = \uD83D\uDCAD fenced code block; "blockquote" = "> " lines; "subtext" = "-# " lines (Discord small grey metadata text). Discord defaults to "subtext"; override per-platform via display.platforms.<platform>.reasoning_style.',group:"display",effect:"live"},"display.resume_display":{type:"str",default:"full",doc:"",group:"display",effect:"live"},"display.resume_exchanges":{type:"int",default:10,doc:"Recap tuning for /resume and startup resume. The defaults match the historical hardcoded values; expose them as config so power users can widen or tighten the snapshot to taste.",group:"display",effect:"live"},"display.resume_max_assistant_chars":{type:"int",default:200,doc:"truncate non-last assistant text",group:"display",effect:"live"},"display.resume_max_assistant_lines":{type:"int",default:3,doc:"truncate non-last assistant lines",group:"display",effect:"live"},"display.resume_max_user_chars":{type:"int",default:300,doc:"truncate user message text",group:"display",effect:"live"},"display.resume_skip_tool_only":{type:"bool",default:!0,doc:"When True (default), assistant entries that are *only* tool calls (no visible text) are skipped in the recap. This prevents the recap from being dominated by `[2 tool calls: terminal, read_file]` lines when an exchange was tool-heavy. Set False to restore the legacy behavior of showing tool-call summaries inline.",group:"display",effect:"live"},"display.runtime_footer.enabled":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.runtime_footer.fields":{type:"list",default:["model","context_pct","cwd"],doc:"Order shown; drop any to hide",group:"display",effect:"live"},"display.show_cost":{type:"bool",default:!1,doc:"Show $ cost in the status bar (off by default)",group:"display",effect:"live"},"display.show_reasoning":{type:"bool",default:!0,doc:"Stream the model's reasoning/thinking live before the response. Default ON: on thinking models the reasoning phase can run tens of seconds, and with this off the user stares at a spinner the whole time even though tokens are streaming. Set false for quiet output.",group:"display",effect:"live"},"display.skin":{type:"str",default:"default",doc:"",group:"display",effect:"live"},"display.status_phrases":{type:"dict",default:{},doc:'Optional custom phrases for generic long-running status messages. Built-in defaults live in gateway/assets/status_phrases.yaml. Users can set `path`/`paths` to HERMES_HOME-relative YAML files/directories (or rely on conventional status_phrases.yaml / status_phrases/*.yaml). Keys: status, generic. Use mode: "append" (default) to add phrases, or "replace" to fully replace configured surfaces. Per-platform overrides live under display.platforms.<platform>.status_phrases.',group:"display",effect:"live"},"display.streaming":{type:"bool",default:!1,doc:"",group:"display",effect:"live"},"display.thinking_mode":{type:"str",default:"collapsed",doc:"Reasoning display: collapsed | truncated | full.",group:"display",effect:"live"},"display.timestamp_format":{type:"str",default:"%H:%M",doc:'strftime format for timestamps (e.g. "%b-%d %H:%M")',group:"display",effect:"live"},"display.timestamps":{type:"bool",default:!1,doc:"Show timestamp on user and assistant labels",group:"display",effect:"live"},"display.tool_preview_length":{type:"int",default:0,doc:"Max chars for tool call previews (0 = no limit, show full paths/commands)",group:"display",effect:"live"},"display.tool_progress":{type:"str",default:"all",doc:"Tool-progress verbosity: off | new | all | verbose.",group:"display",effect:"live"},"display.tool_progress_command":{type:"bool",default:!1,doc:"Enable /verbose command in messaging gateway",group:"display",effect:"live"},"display.tool_progress_grouping":{type:"str",default:"accumulate",doc:'How gateway tool-progress is grouped on platforms that support message editing: "accumulate" (default) edits one bubble in place; "separate" sends one message per tool (the pre-v0.9 behavior, noisier). Only applies where tool_progress is already enabled. Per-platform override via display.platforms.<platform>.tool_progress_grouping.',group:"display",effect:"live"},"display.tool_progress_overrides":{type:"dict",default:{},doc:"DEPRECATED \u2014 use display.platforms instead",group:"display",effect:"live"},"display.tui_agents_nudge":{type:"bool",default:!0,doc:'When true (default), `hermes --tui` drops a one-time hint ("subagents working \xB7 /agents to watch live") the first time a turn starts delegating, nudging the user toward the live spawn-tree dashboard. Set false to suppress the hint.',group:"display",effect:"live"},"display.tui_auto_resume_recent":{type:"bool",default:!1,doc:"When true, `hermes --tui` auto-resumes the most recent human- facing session on launch instead of forging a fresh one. Mirrors `hermes -c` muscle memory. Default off so existing users aren't surprised. HERMES_TUI_RESUME=<id> always wins.",group:"display",effect:"live"},"display.tui_compact":{type:"bool",default:!1,doc:"Ink-TUI compact layout.",group:"display",effect:"live"},"display.tui_mouse":{type:"bool",default:!0,doc:"Ink-TUI mouse support.",group:"display",effect:"live"},"display.tui_status_indicator":{type:"str",default:"kaomoji",doc:"TUI busy indicator style: kaomoji (default), emoji, unicode (braille spinner), or ascii. Live-swappable via `/indicator <style>`.",group:"display",effect:"live"},"display.tui_statusbar":{type:"str",default:"top",doc:"Ink-TUI statusbar placement: top | bottom | off.",group:"display",effect:"live"},"display.turn_completion_explainer":{type:"bool",default:!0,doc:`Turn-completion explainer. When true (default), the agent appends a one-line explanation to its final response whenever a turn ends abnormally with no usable reply \u2014 empty content after retries, a partial/truncated stream, a still-pending tool result, or an iteration/budget limit. Replaces the bare "(empty)" sentinel so the failure isn't silent from the UI's perspective. Set false to suppress.`,group:"display",effect:"live"},"display.user_message_preview.first_lines":{type:"int",default:2,doc:"",group:"display",effect:"live"},"display.user_message_preview.last_lines":{type:"int",default:2,doc:"",group:"display",effect:"live"},fallback_model:{type:"dict",default:null,doc:"Fallback model (dict) or chain (list of dicts) for provider failover.",group:"general",effect:"live"},fallback_providers:{type:"list",default:[],doc:"",group:"general",effect:"live"},file_read_max_chars:{type:"int",default:1e5,doc:"Maximum characters returned by a single read_file call. Reads that exceed this are rejected with guidance to use offset+limit. 100K chars \u2248 25\u201335K tokens across typical tokenisers.",group:"general",effect:"live"},"gateway.api_server.max_concurrent_runs":{type:"int",default:10,doc:"Maximum number of agent runs the API server will service concurrently. Requests to /v1/chat/completions, /v1/responses, and /v1/runs that arrive while this many runs are already in flight are rejected with HTTP 429 + a Retry-After header, bounding CPU / memory / upstream-LLM-quota exhaustion from a request flood. Set to 0 to disable the cap entirely.",group:"gateway",effect:"live"},"gateway.max_inbound_media_bytes":{type:"int",default:134217728,doc:"Maximum bytes for an inbound image / audio / video payload the gateway will buffer into memory and cache to disk. Inbound media is read fully into RAM before being written, so an unbounded upload (Discord Nitro allows 500 MB) or a remote media URL pointing at a huge file can spike memory and OOM-kill the gateway on constrained deployments. Enforced in the shared cache helpers (gateway/platforms/base.py), so the cap holds across every platform adapter. ``0`` disables the cap. Default 128 MiB.",group:"gateway",effect:"live"},"gateway.media_delivery_allow_dirs":{type:"list",default:[],doc:"Extra directories from which model-emitted bare file paths may be uploaded as native gateway attachments. Files inside the Hermes cache (~/.hermes/cache/{documents,images,audio,video,screenshots}) are always trusted; this list adds operator-controlled roots (project dirs, scratch dirs, mounted shares). Accepts a list of absolute paths or a single os.pathsep-separated string. Bridged to HERMES_MEDIA_ALLOW_DIRS at gateway startup. Tilde paths are expanded. Honored in both default and strict mode.",group:"gateway",effect:"live"},"gateway.message_timestamps.enabled":{type:"bool",default:!1,doc:"",group:"gateway",effect:"live"},"gateway.platform_connect_timeout":{type:"int",default:30,doc:'Seconds the gateway waits for a single messaging platform to finish connecting during startup (and on reconnect). Discord in particular can blow past the old fixed 30s when an account has many slash commands to sync (#19776: 90-173 skills \u2192 ~28-31s sync). Raise this if your gateway hits "discord connect timed out" / "Timeout waiting for connection to Discord" restart loops. ``0`` or negative disables the timeout entirely (wait indefinitely). Bridged at startup to the internal HERMES_GATEWAY_PLATFORM_CONNECT_TIMEOUT env var, which still works as a manual override and wins if set explicitly.',group:"gateway",effect:"live"},"gateway.restart_loop_guard.max_restarts":{type:"int",default:3,doc:"",group:"gateway",effect:"live"},"gateway.restart_loop_guard.window_seconds":{type:"int",default:60,doc:"",group:"gateway",effect:"live"},"gateway.scale_to_zero.idle_timeout_minutes":{type:"int",default:5,doc:"",group:"gateway",effect:"live"},"gateway.strict":{type:"bool",default:!1,doc:"When false (default), any file path the agent emits is delivered as a native attachment as long as it isn't under the credential / system-path denylist (/etc, /proc, ~/.ssh, ~/.aws, ~/.hermes/.env, auth.json, etc.). This matches the symmetry of inbound delivery \u2014 we accept any document type the user uploads, and the agent can hand back any file that isn't a credential. When true, fall back to the older allowlist+recency-window behavior: files must live under the Hermes cache, under ``media_delivery_allow_dirs``, or be freshly produced inside the ``trust_recent_files_seconds`` window. Recommended for public-facing gateways where prompt injection from one user shouldn't be able to exfiltrate the host's secrets to that same user. Bridged to HERMES_MEDIA_DELIVERY_STRICT.",group:"gateway",effect:"live"},"gateway.trust_recent_files":{type:"bool",default:!0,doc:'When true, files whose mtime is within ``trust_recent_files_seconds`` of "now" are trusted for native delivery even outside the cache / operator allowlist \u2014 useful for ``pandoc -o /tmp/report.pdf`` or PDFs the agent writes into a working directory. System paths (/etc, /proc, ~/.ssh, ~/.aws, etc.) remain blocked regardless. Disable to fall back to pure-allowlist mode. Bridged to HERMES_MEDIA_TRUST_RECENT_FILES. Only consulted when ``strict`` is true; in default mode the denylist alone gates delivery.',group:"gateway",effect:"live"},"gateway.trust_recent_files_seconds":{type:"int",default:600,doc:"Recency window in seconds. 600 (10 min) comfortably covers a multi-tool agent turn. Bridged to HERMES_MEDIA_TRUST_RECENT_SECONDS. Only consulted when ``strict`` is true.",group:"gateway",effect:"live"},"gateway.write_sessions_json":{type:"bool",default:!0,doc:"Whether the gateway keeps writing the legacy sessions.json mirror of its routing index. The primary copy lives in state.db (the gateway_routing table). Default True for backward compatibility with external tooling and downgrade safety; set to false to stop producing ~/.hermes/sessions/sessions.json entirely.",group:"gateway",effect:"live"},"goals.max_turns":{type:"int",default:20,doc:"Max continuation turns before Hermes auto-pauses the goal and asks the user to /goal resume. Protects against judge false negatives (goal actually done but judge says continue) and unbounded model spend on fuzzy / unachievable goals.",group:"goals",effect:"live"},honcho:{type:"dict",default:{},doc:"Honcho AI-native memory -- reads ~/.honcho/config.json as single source of truth. This section is only needed for hermes-specific overrides; everything else (apiKey, workspace, peerName, sessions, enabled) comes from the global config.",group:"general",effect:"live"},hooks:{type:"dict",default:{},doc:"Shell-script hooks \u2014 declarative bridge that invokes shell scripts on plugin-hook events (pre_tool_call, post_tool_call, pre_llm_call, subagent_stop, etc.). Each entry maps an event name to a list of {matcher, command, timeout} dicts. First registration of a new command prompts the user for consent; subsequent runs reuse the stored approval from ~/.hermes/shell-hooks-allowlist.json. See `website/docs/user-guide/features/hooks.md` for schema + examples.",group:"general",effect:"live"},hooks_auto_accept:{type:"bool",default:!1,doc:"Auto-accept shell-hook registrations without a TTY prompt. Also toggleable per-invocation via --accept-hooks or HERMES_ACCEPT_HOOKS=1. Gateway / cron / non-interactive runs need this (or one of the other channels) to pick up newly-added hooks.",group:"general",effect:"live"},"human_delay.max_ms":{type:"int",default:2500,doc:"",group:"human_delay",effect:"live"},"human_delay.min_ms":{type:"int",default:800,doc:"",group:"human_delay",effect:"live"},"human_delay.mode":{type:"str",default:"off",doc:"",group:"human_delay",effect:"live"},"kanban.auto_decompose":{type:"bool",default:!0,doc:"When true, the kanban dispatcher auto-runs the decomposer on tasks that land in Triage (every dispatcher tick). When false, decomposition is manual via `hermes kanban decompose <id>` or the dashboard's Decompose button.",group:"kanban",effect:"live"},"kanban.auto_decompose_per_tick":{type:"int",default:3,doc:"Max triage tasks to decompose per dispatcher tick. Prevents a large bulk-load of triage tasks from spending a burst of aux LLM calls in one tick. Excess tasks defer to the next tick.",group:"kanban",effect:"live"},"kanban.default_assignee":{type:"str",default:"",doc:"Where a child task lands if the orchestrator can't match an assignee to any installed profile. When unset, falls back to the default profile. A task never ends up with assignee=None.",group:"kanban",effect:"live"},"kanban.dispatch_in_gateway":{type:"bool",default:!0,doc:"Run the dispatcher inside the gateway process. On by default \u2014 the cost is ~300\xB5s every `dispatch_interval_seconds` when idle, and gateway is the supervisor users already have. Set to false only if you run the dispatcher as a separate systemd unit or don't want the gateway to spawn workers.",group:"kanban",effect:"live"},"kanban.dispatch_interval_seconds":{type:"int",default:60,doc:"Seconds between dispatcher ticks (idle or not). Lower = snappier pickup of newly-ready tasks; higher = less SQL pressure.",group:"kanban",effect:"live"},"kanban.dispatch_stale_timeout_seconds":{type:"int",default:14400,doc:"Stale detection: running tasks that have exceeded this many seconds without a heartbeat (since ``last_heartbeat_at``) are auto-reclaimed to ``ready`` on the next dispatcher tick. The worker process (if still running host-locally) is terminated before the reclaim. 0 disables stale detection entirely.",group:"kanban",effect:"live"},"kanban.failure_limit":{type:"int",default:2,doc:"Auto-block after this many consecutive non-success attempts for the same task/profile (spawn_failed, timed_out, or crashed). Reassignment resets the streak for the new profile.",group:"kanban",effect:"live"},"kanban.max_in_progress_per_profile":{type:"null",default:null,doc:`Per-profile concurrency cap (#21582). When set to a positive int, no single profile can have more than N workers running at once, even if the global max_in_progress / max_spawn caps would allow it. Tasks blocked this way defer to the next dispatcher tick. Unset (None) means "no per-profile cap" \u2014 backward-compatible with existing installs. Useful for fan-out workflows that would otherwise saturate one profile's local model / API quota / browser pool while leaving other profiles idle.`,group:"kanban",effect:"live"},"kanban.orchestrator_profile":{type:"str",default:"",doc:"Profile assigned to the root/orchestration task after Triage decomposition. When unset, falls back to the default profile (the one `hermes` launches with no -p flag). This does not control the decomposer prompt, model, or skills; configure that LLM path under auxiliary.kanban_decomposer.",group:"kanban",effect:"live"},"kanban.worker_log_backup_count":{type:"int",default:1,doc:"",group:"kanban",effect:"live"},"kanban.worker_log_rotate_bytes":{type:"int",default:2097152,doc:"Worker stdout/stderr logs rotate at spawn time. Defaults preserve the historical 2 MiB + one-backup behavior; long-running workers can raise these to keep more early failure evidence.",group:"kanban",effect:"live"},"logging.backup_count":{type:"int",default:3,doc:"Number of rotated backup files to keep",group:"logging",effect:"live"},"logging.level":{type:"str",default:"INFO",doc:"Minimum level for agent.log: DEBUG, INFO, WARNING",group:"logging",effect:"live"},"logging.max_size_mb":{type:"int",default:5,doc:"Max size per log file before rotation",group:"logging",effect:"live"},"lsp.enabled":{type:"bool",default:!0,doc:"Master toggle. Setting this to false disables the entire subsystem \u2014 no servers spawn, no background event loop, no cost.",group:"lsp",effect:"live"},"lsp.install_strategy":{type:"str",default:"auto",doc:'How to handle missing server binaries. ``"auto"`` \u2014 try to install via npm/go/pip into ``<HERMES_HOME>/lsp/bin/`` on first use. ``"manual"`` \u2014 only use binaries already on PATH. ``"off"`` \u2014 alias for ``manual``.',group:"lsp",effect:"live"},"lsp.servers":{type:"dict",default:{},doc:'Per-server overrides. Each key is a server_id from the registry (``pyright``, ``typescript``, ``gopls``, ``rust-analyzer``, etc.) and accepts: disabled: true \u2014 skip this server even when its extensions match command: ["full/path/to/server", "--stdio"] \u2014 pin a custom binary path; bypasses auto-install env: {"KEY": "value"} \u2014 extra env vars passed to the spawned process initialization_options: {...} \u2014 merged into the LSP ``initializationOptions`` Empty by default; the registry defaults work for typical setups.',group:"lsp",effect:"live"},"lsp.wait_mode":{type:"str",default:"document",doc:'Diagnostic-wait mode for the post-write check. ``"document"`` waits up to ``wait_timeout`` seconds for the current file\'s diagnostics; ``"full"`` additionally requests workspace-wide diagnostics (slower).',group:"lsp",effect:"live"},"lsp.wait_timeout":{type:"float",default:5,doc:"",group:"lsp",effect:"live"},"matrix.allowed_rooms":{type:"str",default:"",doc:"If set, bot ONLY responds in these room IDs (whitelist)",group:"matrix",effect:"live"},"matrix.free_response_rooms":{type:"str",default:"",doc:"Comma-separated room IDs where bot responds without mention",group:"matrix",effect:"live"},"matrix.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in rooms",group:"matrix",effect:"live"},"mattermost.allowed_channels":{type:"str",default:"",doc:"If set, bot ONLY responds in these channel IDs (whitelist)",group:"mattermost",effect:"live"},"mattermost.channel_prompts":{type:"dict",default:{},doc:"Per-channel ephemeral system prompts",group:"mattermost",effect:"live"},"mattermost.free_response_channels":{type:"str",default:"",doc:"Comma-separated channel IDs where bot responds without mention",group:"mattermost",effect:"live"},"mattermost.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in channels",group:"mattermost",effect:"live"},max_concurrent_sessions:{type:"null",default:null,doc:"Global active chat session cap across CLI, TUI/dashboard, and messaging. None/0 = unbounded.",group:"general",effect:"live"},max_live_sessions:{type:"int",default:16,doc:"Soft LRU cap on in-memory TUI/desktop/dashboard sessions. When more than this many are live, the gateway evicts the least-recently-active DETACHED sessions (no live client) so accumulated agents don't pile up under memory pressure. Reopening one re-resumes it from disk. 0/null disables.",group:"general",effect:"live"},mcp_discovery_timeout:{type:"float",default:1.5,doc:"Seconds to wait at agent-build time for in-flight MCP server discovery to finish before the agent snapshots its tool list. MCP discovery runs in a background thread so a slow/dead server can't freeze startup; this bounds how long the first agent build blocks on it. The wait returns the INSTANT discovery completes, so users with no MCP servers (the common case) or fast servers pay ~0s regardless of this value \u2014 the bound is only reached when a server is genuinely still connecting. The old 0.75s default was a touch short for HTTP/OAuth servers on a cold connect; a modest bump lets more of them land in the FIRST turn's snapshot. This is only a turn-1 latency/UX knob: a server that misses this window is still picked up automatically on the next turn by the between-turns refresh (see agent/turn_context.py), so correctness never depends on it. Keep it small so a slow/dead server adds little to first-response latency.",group:"general",effect:"live"},mcp_servers:{type:"dict",default:{},doc:"MCP server definitions keyed by name.",group:"general",effect:"restart"},"memory.memory_char_limit":{type:"int",default:2200,doc:"~800 tokens at 2.75 chars/token",group:"memory",effect:"session"},"memory.memory_enabled":{type:"bool",default:!0,doc:"",group:"memory",effect:"session"},"memory.provider":{type:"str",default:"",doc:'External memory provider plugin (empty = built-in only). Set to a provider name to activate: "openviking", "mem0", "hindsight", "holographic", "retaindb", "byterover". Only ONE external provider is allowed at a time.',group:"memory",effect:"session"},"memory.user_char_limit":{type:"int",default:1375,doc:"~500 tokens at 2.75 chars/token",group:"memory",effect:"session"},"memory.user_profile_enabled":{type:"bool",default:!0,doc:"",group:"memory",effect:"session"},"memory.write_approval":{type:"bool",default:!1,doc:'Approval gate for memory writes (add/replace/remove), applied to BOTH foreground agent turns and the background self-improvement review fork (the source of unprompted "wrong assumption" saves users reported). false (default) \u2014 write freely; the gate is off (pre-gate behaviour) true \u2014 require approval: foreground writes prompt inline (entries are small enough to review in a chat bubble); background-review writes are staged instead of committed (a daemon thread cannot block on a prompt). Review staged entries with /memory pending, /memory approve <id>, /memory reject <id>. To disable memory entirely, use memory_enabled: false instead.',group:"memory",effect:"session"},"moa.active_preset":{type:"str",default:"",doc:"",group:"moa",effect:"live"},"moa.default_preset":{type:"str",default:"default",doc:"",group:"moa",effect:"live"},"moa.presets.default.aggregator.model":{type:"str",default:"anthropic/claude-opus-4.8",doc:"",group:"moa",effect:"live"},"moa.presets.default.aggregator.provider":{type:"str",default:"openrouter",doc:"",group:"moa",effect:"live"},"moa.presets.default.enabled":{type:"bool",default:!0,doc:"",group:"moa",effect:"live"},"moa.presets.default.max_tokens":{type:"int",default:4096,doc:"",group:"moa",effect:"live"},"moa.presets.default.reference_models":{type:"list",default:[{provider:"openai-codex",model:"gpt-5.5"},{provider:"openrouter",model:"deepseek/deepseek-v4-pro"}],doc:"",group:"moa",effect:"live"},"moa.save_traces":{type:"bool",default:!1,doc:"When true, every MoA turn that runs the reference fan-out writes the FULL turn (each reference's exact input messages + output + usage/cost, and the aggregator's exact input + output) to a JSONL file at <hermes_home>/moa-traces/<session_id>.jsonl. Off by default \u2014 turn it on to audit / improve MoA behavior from real runs. Set trace_dir to override the output directory.",group:"moa",effect:"live"},"moa.trace_dir":{type:"str",default:"",doc:"",group:"moa",effect:"live"},model:{type:"str",default:"",doc:"",group:"general",effect:"live"},"model_catalog.enabled":{type:"bool",default:!0,doc:"",group:"model_catalog",effect:"live"},"model_catalog.providers":{type:"dict",default:{},doc:"Optional per-provider override URLs for third parties that want to self-host their own curation list using the same schema. Example: providers: openrouter: url: https://example.com/my-curation.json",group:"model_catalog",effect:"live"},"model_catalog.ttl_hours":{type:"int",default:1,doc:"Disk cache TTL in hours. Beyond this, the CLI refetches on the next /model or `hermes model` invocation; network failures silently fall back to the stale cache.",group:"model_catalog",effect:"live"},"model_catalog.url":{type:"str",default:"https://hermes-agent.nousresearch.com/docs/api/model-catalog.json",doc:"",group:"model_catalog",effect:"live"},"network.force_ipv4":{type:"bool",default:!1,doc:"Force IPv4 connections. On servers with broken or unreachable IPv6, Python tries AAAA records first and hangs for the full TCP timeout before falling back to IPv4. Set to true to skip IPv6 entirely.",group:"network",effect:"live"},"onboarding.profile_build":{type:"str",default:"ask",doc:'Structured profile-build path offered on the very first gateway message ever. "ask" (default) -> offer to build a user profile (opt-in, consent-gated; the agent asks before any lookup and never reads connected accounts silently). "off" -> plain intro only. The offer fires at most once (latched under onboarding.seen).',group:"onboarding",effect:"live"},"onboarding.seen":{type:"dict",default:{},doc:"",group:"onboarding",effect:"live"},"openrouter.min_coding_score":{type:"float",default:0.65,doc:"Coding-score floor (0.0-1.0) for openrouter/pareto-code. Only applied when model is openrouter/pareto-code; ignored otherwise. Lower = cheaper model, higher = stronger coder.",group:"openrouter",effect:"live"},"openrouter.response_cache":{type:"bool",default:!0,doc:"",group:"openrouter",effect:"live"},"openrouter.response_cache_ttl":{type:"int",default:300,doc:"",group:"openrouter",effect:"live"},paste_collapse_char_threshold:{type:"int",default:2000,doc:"",group:"general",effect:"live"},paste_collapse_threshold:{type:"int",default:5,doc:'Paste collapse thresholds (TUI + CLI). paste_collapse_threshold (default 5) Bracketed-paste handler. Pastes with this many newlines or more collapse to a file reference. Set 0 to disable. paste_collapse_threshold_fallback (default 5) Fallback heuristic for terminals without bracketed paste support. Same line count test but heuristically gated by chars-added / newlines-added to avoid false positives from normal typing. Set 0 to disable. paste_collapse_char_threshold (default 2000) Long single-line paste guard. Pastes whose total char length reaches this value collapse to a file reference even if line count is below the line threshold. Catches the "8000 chars of minified JSON / log output on one line" case. Set 0 to disable.',group:"general",effect:"live"},paste_collapse_threshold_fallback:{type:"int",default:5,doc:"",group:"general",effect:"live"},personalities:{type:"dict",default:{},doc:'Custom personalities \u2014 add your own entries here Supports string format: {"name": "system prompt"} Or dict format: {"name": {"description": "...", "system_prompt": "...", "tone": "...", "style": "..."}}',group:"general",effect:"live"},platform_hints:{type:"dict",default:{},doc:'Per-platform system-prompt hint overrides. Lets an admin append to or replace Hermes\' built-in platform hint for a single messaging platform (WhatsApp, Slack, Telegram, ...) without affecting other platforms. Useful for enterprise/managed profiles that ship platform-aware skills. Each key is a platform name; the value is either: { "append": "extra text" } \u2014 keep the default hint, append text { "replace": "full text" } \u2014 substitute the default hint entirely "extra text" \u2014 shorthand for { "append": ... } `replace` wins over `append` if both are given. Example: platform_hints: whatsapp: append: > When tabular output would be useful, invoke the table_formatting skill instead of emitting a Markdown table.',group:"general",effect:"live"},prefill_messages_file:{type:"str",default:"",doc:"Ephemeral prefill messages file \u2014 JSON list of {role, content} dicts injected at the start of every API call for few-shot priming. Never saved to sessions, logs, or trajectories.",group:"general",effect:"live"},"privacy.redact_pii":{type:"bool",default:!1,doc:"When True, hash user IDs and strip phone numbers from LLM context",group:"privacy",effect:"live"},"prompt_caching.cache_ttl":{type:"str",default:"5m",doc:"",group:"prompt_caching",effect:"live"},provider:{type:"str",default:"",doc:"Default model provider.",group:"general",effect:"live"},providers:{type:"dict",default:{},doc:"Provider definitions keyed by name. Custom/OpenAI-compatible entries support ssl_ca_cert and ssl_verify.",group:"general",effect:"live"},quick_commands:{type:"dict",default:{},doc:"User-defined quick commands that bypass the agent loop (type: exec only)",group:"general",effect:"live"},"secrets.bitwarden.access_token_env":{type:"str",default:"BWS_ACCESS_TOKEN",doc:"Name of the env var that holds the Bitwarden machine-account access token. This is the one bootstrap secret; it lives in ~/.hermes/.env (or your shell) and never in config.yaml.",group:"secrets",effect:"live"},"secrets.bitwarden.auto_install":{type:"bool",default:!0,doc:"When True, the bws binary is auto-downloaded into ~/.hermes/bin/ on first use. When False you must install bws yourself and have it on PATH.",group:"secrets",effect:"live"},"secrets.bitwarden.cache_ttl_seconds":{type:"int",default:300,doc:"Seconds to cache fetched secrets in-process. 0 disables.",group:"secrets",effect:"live"},"secrets.bitwarden.enabled":{type:"bool",default:!1,doc:"Master switch. When false, BSM is never contacted and the bws binary is never auto-installed \u2014 same as not having this section at all.",group:"secrets",effect:"live"},"secrets.bitwarden.override_existing":{type:"bool",default:!0,doc:"When True, BSM values overwrite existing env vars. Default True because the point of using BSM is centralized rotation \u2014 if .env had the final say, rotating in Bitwarden wouldn't take effect until you also cleared the matching .env line.",group:"secrets",effect:"live"},"secrets.bitwarden.project_id":{type:"str",default:"",doc:"UUID of the BSM project to sync from.",group:"secrets",effect:"live"},"secrets.bitwarden.server_url":{type:"str",default:"",doc:"Bitwarden region / self-hosted endpoint. Empty string means use the bws CLI default (US Cloud, https://vault.bitwarden.com). Set to https://vault.bitwarden.eu for EU Cloud, or your own URL for self-hosted Bitwarden. Plumbed into the bws subprocess as BWS_SERVER_URL. Prompted for during `hermes secrets bitwarden setup`.",group:"secrets",effect:"live"},"secrets.onepassword.account":{type:"str",default:"",doc:"Optional account shorthand / sign-in address passed as `op read --account <account>`. Empty = op's default account.",group:"secrets",effect:"live"},"secrets.onepassword.binary_path":{type:"str",default:"",doc:"Optional absolute path to the op binary. When set it is used verbatim (PATH is not consulted) \u2014 pin this to avoid trusting whatever `op` appears first on PATH. Empty = resolve via PATH.",group:"secrets",effect:"live"},"secrets.onepassword.cache_ttl_seconds":{type:"int",default:300,doc:"Seconds to cache resolved values in-process and on disk. 0 disables BOTH cache layers (no values are written to disk).",group:"secrets",effect:"live"},"secrets.onepassword.enabled":{type:"bool",default:!1,doc:"Master switch. When false, the op CLI is never invoked \u2014 same as not having this section at all.",group:"secrets",effect:"live"},"secrets.onepassword.env":{type:"dict",default:{},doc:"Mapping of env-var name \u2192 1Password secret reference (op://vault/item/field). Each entry is resolved with a single `op read` at startup.",group:"secrets",effect:"live"},"secrets.onepassword.override_existing":{type:"bool",default:!0,doc:"When True (default), resolved values overwrite existing env vars so rotating a secret in 1Password takes effect on next start. Flip to false to let .env / shell exports win locally.",group:"secrets",effect:"live"},"secrets.onepassword.service_account_token_env":{type:"str",default:"OP_SERVICE_ACCOUNT_TOKEN",doc:"Name of the env var holding a 1Password service-account token for headless auth. Sourced from ~/.hermes/.env (or the shell) and exported to the op child as OP_SERVICE_ACCOUNT_TOKEN. Leave the var unset to use an interactive/desktop op session.",group:"secrets",effect:"live"},"security.acked_advisories":{type:"list",default:[],doc:"Acknowledged supply-chain security advisories. Each entry is the ID of an advisory the user has read and acted on (uninstalled the compromised package, rotated credentials). Acked advisories no longer trigger the startup banner. Add via `hermes doctor --ack <id>`; remove by editing the list directly. See ``hermes_cli/security_advisories.py`` for the catalog.",group:"security",effect:"live"},"security.allow_lazy_installs":{type:"bool",default:!0,doc:"Allow Hermes to lazy-install opt-in backend packages from PyPI the first time the user enables a backend that needs them (e.g. installing ``elevenlabs`` when the user picks ElevenLabs as their TTS provider). Set to false to require explicit ``pip install`` for everything beyond the base set \u2014 appropriate for restricted networks, audited environments, or air-gapped systems where any runtime install is unacceptable.",group:"security",effect:"live"},"security.allow_private_urls":{type:"bool",default:!1,doc:"Allow requests to private/internal IPs (for OpenWrt, proxies, VPNs)",group:"security",effect:"live"},"security.redact_secrets":{type:"bool",default:!0,doc:"",group:"security",effect:"live"},"security.tirith_enabled":{type:"bool",default:!0,doc:"",group:"security",effect:"live"},"security.tirith_fail_open":{type:"bool",default:!0,doc:"",group:"security",effect:"live"},"security.tirith_path":{type:"str",default:"tirith",doc:"",group:"security",effect:"live"},"security.tirith_timeout":{type:"int",default:5,doc:"",group:"security",effect:"live"},"security.website_blocklist.domains":{type:"list",default:[],doc:"",group:"security",effect:"live"},"security.website_blocklist.enabled":{type:"bool",default:!1,doc:"",group:"security",effect:"live"},"security.website_blocklist.shared_files":{type:"list",default:[],doc:"",group:"security",effect:"live"},"sessions.auto_prune":{type:"bool",default:!1,doc:"When true, prune ended sessions older than retention_days once per (roughly) min_interval_hours at CLI/gateway/cron startup. Only touches ended sessions \u2014 active sessions are always preserved. Default false: session history is valuable for search recall, and silently deleting it could surprise users. Opt in explicitly.",group:"sessions",effect:"live"},"sessions.min_interval_hours":{type:"int",default:24,doc:"Minimum hours between auto-maintenance runs (avoids repeating the sweep on every CLI invocation). Tracked via state_meta in state.db itself, so it's shared across all processes.",group:"sessions",effect:"live"},"sessions.retention_days":{type:"int",default:90,doc:"How many days of ended-session history to keep. Matches the default of ``hermes sessions prune``.",group:"sessions",effect:"live"},"sessions.vacuum_after_prune":{type:"bool",default:!0,doc:"VACUUM after a prune that actually deleted rows. SQLite does not reclaim disk space on DELETE \u2014 freed pages are just reused on subsequent INSERTs \u2014 so without VACUUM the file stays bloated even after pruning. VACUUM blocks writes for a few seconds per 100MB, so it only runs at startup, and only when prune deleted \u22651 session.",group:"sessions",effect:"live"},"sessions.write_json_snapshots":{type:"bool",default:!1,doc:"Legacy per-session JSON snapshot writer. When true, the agent rewrites ``~/.hermes/sessions/session_{sid}.json`` on every turn boundary with the full message list. state.db is canonical and has every field the snapshot stored (plus per-message timestamps and token counts), so this is off by default \u2014 the snapshots had no consumer outside their own overwrite guard and accumulated GBs of disk on heavy users. Opt in only if you have an external tool that consumes the JSON files directly.",group:"sessions",effect:"live"},"skills.external_dirs":{type:"list",default:[],doc:'e.g. ["~/.agents/skills", "/shared/team-skills"]',group:"skills",effect:"restart"},"skills.guard_agent_created":{type:"bool",default:!1,doc:"Run the keyword/pattern security scanner on skills the agent writes via skill_manage (create/edit/patch). Off by default because the agent can already execute the same code paths via terminal() with no gate, so the scan adds friction (blocks skills that mention risky keywords in prose) without meaningful security. Turn on if you want the belt-and-suspenders \u2014 a dangerous verdict will then surface as a tool error to the agent, which can retry with the flagged content removed. External hub installs (trusted/community sources) are always scanned regardless of this setting.",group:"skills",effect:"live"},"skills.inline_shell":{type:"bool",default:!1,doc:"Pre-execute inline shell snippets written as !`cmd` in SKILL.md body. Their stdout is inlined into the skill message before the agent reads it, so skills can inject dynamic context (dates, git state, detected tool versions, \u2026). Off by default because any content from the skill author runs on the host without approval; only enable for skill sources you trust.",group:"skills",effect:"live"},"skills.inline_shell_timeout":{type:"int",default:10,doc:"Timeout (seconds) for each !`cmd` snippet when inline_shell is on.",group:"skills",effect:"live"},"skills.template_vars":{type:"bool",default:!0,doc:"Substitute ${HERMES_SKILL_DIR} and ${HERMES_SESSION_ID} in SKILL.md content with the absolute skill directory and the active session id before the agent sees it. Lets skill authors reference bundled scripts without the agent having to join paths.",group:"skills",effect:"live"},"skills.write_approval":{type:"bool",default:!1,doc:"Approval gate for skill_manage (create/edit/patch/write_file/delete/ remove_file), applied to BOTH foreground agent turns and the background self-improvement review fork. false (default) \u2014 write freely; the gate is off (pre-gate behaviour) true \u2014 require approval: stage the write for review instead of committing (a SKILL.md is too large to review inline, so skills always stage rather than prompt). List with /skills pending, inspect with /skills diff <id> (full diff \u2014 CLI/dashboard/file, never crammed into a chat bubble), apply with /skills approve <id> or drop with /skills reject <id>.",group:"skills",effect:"live"},"slack.allowed_channels":{type:"str",default:"",doc:"If set, bot ONLY responds in these channel IDs (whitelist)",group:"slack",effect:"live"},"slack.channel_prompts":{type:"dict",default:{},doc:"Per-channel ephemeral system prompts",group:"slack",effect:"live"},"slack.free_response_channels":{type:"str",default:"",doc:"Comma-separated channel IDs where bot responds without mention",group:"slack",effect:"live"},"slack.require_mention":{type:"bool",default:!0,doc:"Require @mention to respond in channels",group:"slack",effect:"live"},"streaming.buffer_threshold":{type:"int",default:24,doc:"Flush the buffer to the platform once this many characters have accumulated, so short replies feel near-instant.",group:"streaming",effect:"live"},"streaming.cursor":{type:"str",default:" \u2589",doc:"Cursor glyph appended to the in-progress message while streaming.",group:"streaming",effect:"live"},"streaming.edit_interval":{type:"float",default:0.8,doc:"Minimum seconds between progressive edits \u2014 tuned for Telegram's ~1 edit/s flood envelope.",group:"streaming",effect:"live"},"streaming.enabled":{type:"bool",default:!1,doc:"Master switch. When false, each response is delivered as a single final message (no progressive updates).",group:"streaming",effect:"live"},"streaming.fresh_final_after_seconds":{type:"float",default:0,doc:"When >0, the final edit for a long-running streamed response is delivered as a fresh message if the preview has been visible at least this many seconds, so the platform timestamp reflects completion time. Telegram only; other platforms ignore it.",group:"streaming",effect:"live"},"streaming.transport":{type:"str",default:"auto",doc:`Transport selection: "auto" \u2014 prefer native draft streaming where the platform supports it (Telegram DMs via sendMessageDraft, Bot API 9.5+) and fall back to edit-based elsewhere. Safe global default: platforms without draft support (Discord, Slack, Matrix, Telegram groups) transparently use the edit path, so "auto" only upgrades chats that can render the smoother native preview. "draft" \u2014 explicitly request native drafts; falls back to edit when the platform/chat doesn't support them. "edit" \u2014 progressive editMessageText only (legacy behavior). "off" \u2014 disable streaming entirely (same as enabled: false).`,group:"streaming",effect:"live"},"stt.echo_transcripts":{type:"bool",default:!0,doc:"When true, gateway voice messages are transcribed for the agent and the raw transcript is also echoed back to the user as a \uD83C\uDF99\uFE0F message. Set false to keep STT for the agent while suppressing that user-facing echo.",group:"stt",effect:"live"},"stt.elevenlabs.diarize":{type:"bool",default:!1,doc:"",group:"stt",effect:"live"},"stt.elevenlabs.language_code":{type:"str",default:"",doc:'auto-detect by default; set to "eng", "spa", "fra", etc. to force',group:"stt",effect:"live"},"stt.elevenlabs.model_id":{type:"str",default:"scribe_v2",doc:"scribe_v2, scribe_v1",group:"stt",effect:"live"},"stt.elevenlabs.tag_audio_events":{type:"bool",default:!1,doc:"",group:"stt",effect:"live"},"stt.enabled":{type:"bool",default:!0,doc:"",group:"stt",effect:"live"},"stt.local.language":{type:"str",default:"",doc:'auto-detect by default; set to "en", "es", "fr", etc. to force',group:"stt",effect:"live"},"stt.local.model":{type:"str",default:"base",doc:"tiny, base, small, medium, large-v3",group:"stt",effect:"live"},"stt.mistral.model":{type:"str",default:"voxtral-mini-latest",doc:"voxtral-mini-latest, voxtral-mini-2602",group:"stt",effect:"live"},"stt.openai.model":{type:"str",default:"whisper-1",doc:"whisper-1, gpt-4o-mini-transcribe, gpt-4o-transcribe",group:"stt",effect:"live"},"stt.provider":{type:"str",default:"local",doc:'"local" (free, faster-whisper) | "groq" | "openai" (Whisper API) | "mistral" (Voxtral Transcribe) | "elevenlabs" (Scribe)',group:"stt",effect:"live"},"telegram.allowed_chats":{type:"str",default:"",doc:"If set, bot ONLY responds in these group/supergroup chat IDs (whitelist)",group:"telegram",effect:"live"},"telegram.channel_prompts":{type:"dict",default:{},doc:"Per-chat/topic ephemeral system prompts (topics inherit from parent group)",group:"telegram",effect:"live"},"telegram.extra.rich_drafts":{type:"bool",default:!1,doc:"Experimental Bot API 10.1 rich draft previews during Telegram DM streaming. Default off because Telegram Desktop/macOS can visually overlay rich draft frames until the chat redraws.",group:"telegram",effect:"live"},"telegram.extra.rich_messages":{type:"bool",default:!1,doc:"Bot API 10.1 rich messages (tables/task lists/details/math) render natively; set True to opt in. Default stays legacy MarkdownV2 because rich messages can be hard to copy as plain text in Telegram clients.",group:"telegram",effect:"live"},"telegram.reactions":{type:"bool",default:!1,doc:"Add \uD83D\uDC40/\u2705/\u274C reactions to messages during processing",group:"telegram",effect:"live"},"terminal.auto_source_bashrc":{type:"bool",default:!0,doc:"When true (default), Hermes sources the user's shell rc files (``~/.profile``, ``~/.bash_profile``, ``~/.bashrc``) in the login shell used to build the environment snapshot. This captures PATH additions, shell functions, and aliases \u2014 which a plain ``bash -l -c`` would otherwise miss because bash skips bashrc in non-interactive login mode, and because a default Debian/Ubuntu ``~/.bashrc`` short-circuits on non-interactive sources. ``~/.profile`` and ``~/.bash_profile`` are tried first because ``n`` / ``nvm`` / ``asdf`` installers typically write their PATH exports there without an interactivity guard. Turn this off if your rc files misbehave when sourced non-interactively (e.g. one that hard-exits on TTY checks).",group:"terminal",effect:"restart"},"terminal.backend":{type:"str",default:"local",doc:"",group:"terminal",effect:"restart"},"terminal.container_cpu":{type:"int",default:1,doc:"Container resource limits (docker, singularity, modal, daytona \u2014 ignored for local/ssh)",group:"terminal",effect:"restart"},"terminal.container_disk":{type:"int",default:51200,doc:"MB (default 50GB)",group:"terminal",effect:"restart"},"terminal.container_memory":{type:"int",default:5120,doc:"MB (default 5GB)",group:"terminal",effect:"restart"},"terminal.container_persistent":{type:"bool",default:!0,doc:"Persist filesystem across sessions",group:"terminal",effect:"restart"},"terminal.cwd":{type:"str",default:".",doc:"Use current directory",group:"terminal",effect:"restart"},"terminal.daemon_term_grace_seconds":{type:"float",default:2,doc:"Bounded grace period (seconds) between SIGTERM and an escalated SIGKILL when terminating a host process tree (browser daemons, etc.). A daemon that stalls in its SIGTERM handler is force-killed after this window so it can't leak indefinitely. 0 disables escalation (SIGTERM only \u2014 the historical behavior). Floored internally at 0.",group:"terminal",effect:"restart"},"terminal.daytona_image":{type:"str",default:"nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.docker_env":{type:"dict",default:{},doc:`Explicit environment variables to set inside Docker containers. Unlike docker_forward_env (which reads values from the host process), docker_env lets you specify exact key-value pairs \u2014 useful when Hermes runs as a systemd service without access to the user's shell environment. Example: {"SSH_AUTH_SOCK": "/run/user/1000/ssh-agent.sock"}`,group:"terminal",effect:"restart"},"terminal.docker_extra_args":{type:"list",default:[],doc:"Extra flags passed verbatim to docker run",group:"terminal",effect:"restart"},"terminal.docker_forward_env":{type:"list",default:[],doc:"",group:"terminal",effect:"restart"},"terminal.docker_image":{type:"str",default:"nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.docker_mount_cwd_to_workspace":{type:"bool",default:!1,doc:"Explicit opt-in: mount the host cwd into /workspace for Docker sessions. Default off because passing host directories into a sandbox weakens isolation.",group:"terminal",effect:"restart"},"terminal.docker_network":{type:"bool",default:!0,doc:"Opt-in egress lockdown for Docker terminal sessions. When false, Docker runs with --network=none so commands cannot reach the network.",group:"terminal",effect:"restart"},"terminal.docker_run_as_host_user":{type:"bool",default:!1,doc:"Explicit opt-in: run the Docker container as the host user's uid:gid (via `--user`). When enabled, files written into bind-mounted dirs (docker_volumes, the persistent workspace, or the auto-mounted cwd) are owned by your host user instead of root, which avoids needing `sudo chown` after container runs. Default off to preserve behavior for images whose entrypoints expect to start as root (e.g. the bundled Hermes image, which drops to the `hermes` user via s6-setuidgid inside each supervised service). When on, SETUID/SETGID caps are omitted from the container since no privilege drop is needed.",group:"terminal",effect:"restart"},"terminal.docker_volumes":{type:"list",default:[],doc:'Docker volume mounts \u2014 share host directories with the container. Each entry is "host_path:container_path" (standard Docker -v syntax). Example: ["/home/user/projects:/workspace/projects", "/home/user/.hermes/cache/documents:/output"] For gateway MEDIA delivery, write inside Docker to /output/... and emit the host-visible path in MEDIA:, not the container path.',group:"terminal",effect:"restart"},"terminal.env_passthrough":{type:"list",default:[],doc:"Environment variables to pass through to sandboxed execution (terminal and execute_code). Skill-declared required_environment_variables are passed through automatically; this list is for non-skill use cases.",group:"terminal",effect:"restart"},"terminal.home_mode":{type:"str",default:"auto",doc:"HOME handling for host tool subprocesses: auto \u2014 host keeps the real OS-user HOME; containers use HERMES_HOME/home for persistent state (default) real \u2014 force the real OS-user HOME profile \u2014 force HERMES_HOME/home when it exists (old strict per-profile CLI config isolation)",group:"terminal",effect:"restart"},"terminal.modal_image":{type:"str",default:"nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.modal_mode":{type:"str",default:"auto",doc:"",group:"terminal",effect:"restart"},"terminal.persistent_shell":{type:"bool",default:!0,doc:"Persistent shell \u2014 keep a long-lived bash shell across execute() calls so cwd/env vars/shell variables survive between commands. Enabled by default for non-local backends (SSH); local is always opt-in via TERMINAL_LOCAL_PERSISTENT env var.",group:"terminal",effect:"restart"},"terminal.shell_init_files":{type:"list",default:[],doc:"Extra files to source in the login shell when building the per-session environment snapshot. Use this when tools like nvm, pyenv, asdf, or custom PATH entries are registered by files that a bash login shell would skip \u2014 most commonly ``~/.bashrc`` (bash doesn't source bashrc in non-interactive login mode) or zsh-specific files like ``~/.zshrc`` / ``~/.zprofile``. Paths support ``~`` / ``${VAR}``. Missing files are silently skipped. When empty, Hermes auto-sources ``~/.profile``, ``~/.bash_profile``, and ``~/.bashrc`` (in that order) if the snapshot shell is bash (this is the ``auto_source_bashrc`` behaviour \u2014 disable with that key if you want strict login-only semantics).",group:"terminal",effect:"restart"},"terminal.singularity_image":{type:"str",default:"docker://nikolaik/python-nodejs:python3.11-nodejs20",doc:"",group:"terminal",effect:"restart"},"terminal.timeout":{type:"int",default:180,doc:"",group:"terminal",effect:"restart"},timezone:{type:"str",default:"",doc:'IANA timezone (e.g. "Asia/Kolkata", "America/New_York"). Empty string means use server-local time.',group:"general",effect:"live"},"tool_loop_guardrails.hard_stop_after.exact_failure":{type:"int",default:5,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.hard_stop_after.idempotent_no_progress":{type:"int",default:5,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.hard_stop_after.same_tool_failure":{type:"int",default:8,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.hard_stop_enabled":{type:"bool",default:!1,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warn_after.exact_failure":{type:"int",default:2,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warn_after.idempotent_no_progress":{type:"int",default:2,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warn_after.same_tool_failure":{type:"int",default:3,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_loop_guardrails.warnings_enabled":{type:"bool",default:!0,doc:"",group:"tool_loop_guardrails",effect:"live"},"tool_output.max_bytes":{type:"int",default:50000,doc:"",group:"tool_output",effect:"live"},"tool_output.max_line_length":{type:"int",default:2000,doc:"",group:"tool_output",effect:"live"},"tool_output.max_lines":{type:"int",default:2000,doc:"",group:"tool_output",effect:"live"},"tools.tool_search.enabled":{type:"str",default:"auto",doc:'"auto" (default) \u2014 activate only when deferrable tool schemas exceed ``threshold_pct`` of the active model\'s context length, so small toolsets pay no overhead. "on" \u2014 always activate when there is at least one deferrable tool. Use when you have many MCP servers and want maximum token reduction unconditionally. "off" \u2014 disable entirely. Tools-array assembly is a pass-through.',group:"tools",effect:"live"},"tools.tool_search.max_search_limit":{type:"int",default:20,doc:"Hard upper bound the model can request via ``limit``. Range 1..50.",group:"tools",effect:"live"},"tools.tool_search.search_default_limit":{type:"int",default:5,doc:"When the model calls tool_search without a ``limit`` argument, how many hits to return. Range 1..max_search_limit.",group:"tools",effect:"live"},"tools.tool_search.threshold_pct":{type:"int",default:10,doc:'Percentage of context length at which "auto" mode kicks in. 10 matches the Claude Code default. Range 0..100.',group:"tools",effect:"live"},toolsets:{type:"list",default:["hermes-cli"],doc:"",group:"general",effect:"restart"},"tts.edge.voice":{type:"str",default:"en-US-AriaNeural",doc:"",group:"tts",effect:"live"},"tts.elevenlabs.model_id":{type:"str",default:"eleven_multilingual_v2",doc:"",group:"tts",effect:"live"},"tts.elevenlabs.voice_id":{type:"str",default:"pNInz6obpgDQGcFmaJgB",doc:"Adam",group:"tts",effect:"live"},"tts.gemini.audio_tags":{type:"bool",default:!1,doc:"When true, Gemini 3.1 TTS uses a hidden auxiliary-model rewrite pass to insert freeform square-bracket audio tags into the TTS script. Visible chat replies are unchanged.",group:"tts",effect:"live"},"tts.gemini.model":{type:"str",default:"gemini-2.5-flash-preview-tts",doc:"",group:"tts",effect:"live"},"tts.gemini.persona_prompt_file":{type:"str",default:"",doc:"Optional local Markdown/text file with Gemini TTS performance direction. It may include AUDIO PROFILE, SCENE, DIRECTOR'S NOTES, SAMPLE CONTEXT, and either a `{transcript}` placeholder or no transcript section; Hermes appends the live transcript when absent.",group:"tts",effect:"live"},"tts.gemini.voice":{type:"str",default:"Kore",doc:"",group:"tts",effect:"live"},"tts.mistral.model":{type:"str",default:"voxtral-mini-tts-2603",doc:"",group:"tts",effect:"live"},"tts.mistral.voice_id":{type:"str",default:"c69964a6-ab8b-4f8a-9465-ec0925096ec8",doc:"Paul - Neutral",group:"tts",effect:"live"},"tts.neutts.device":{type:"str",default:"cpu",doc:"cpu, cuda, or mps",group:"tts",effect:"live"},"tts.neutts.model":{type:"str",default:"neuphonic/neutts-air-q4-gguf",doc:"HuggingFace model repo",group:"tts",effect:"live"},"tts.neutts.ref_audio":{type:"str",default:"",doc:"Path to reference voice audio (empty = bundled default)",group:"tts",effect:"live"},"tts.neutts.ref_text":{type:"str",default:"",doc:"Path to reference voice transcript (empty = bundled default)",group:"tts",effect:"live"},"tts.openai.model":{type:"str",default:"gpt-4o-mini-tts",doc:"",group:"tts",effect:"live"},"tts.openai.voice":{type:"str",default:"alloy",doc:"",group:"tts",effect:"live"},"tts.piper.voice":{type:"str",default:"en_US-lessac-medium",doc:'Voice name (e.g. "en_US-lessac-medium") downloaded on first use, OR an absolute path to a pre-downloaded .onnx file. Full voice list: https://github.com/OHF-Voice/piper1-gpl/blob/main/docs/VOICES.md',group:"tts",effect:"live"},"tts.provider":{type:"str",default:"edge",doc:'"edge" (free) | "elevenlabs" (premium) | "openai" | "xai" | "minimax" | "mistral" | "gemini" | "neutts" (local) | "kittentts" (local) | "piper" (local)',group:"tts",effect:"live"},"tts.xai.bit_rate":{type:"int",default:128000,doc:"",group:"tts",effect:"live"},"tts.xai.language":{type:"str",default:"en",doc:"",group:"tts",effect:"live"},"tts.xai.sample_rate":{type:"int",default:24000,doc:"",group:"tts",effect:"live"},"tts.xai.voice_id":{type:"str",default:"eve",doc:"or custom voice ID \u2014 see https://docs.x.ai/developers/model-capabilities/audio/custom-voices",group:"tts",effect:"live"},"updates.backup_keep":{type:"int",default:5,doc:"How many pre-update backup zips to retain. Older ones are pruned automatically after each successful backup. Values below 1 are floored to 1 \u2014 the backup just created is always preserved. To disable backups entirely, set ``pre_update_backup: false`` above rather than ``backup_keep: 0``.",group:"updates",effect:"live"},"updates.non_interactive_local_changes":{type:"str",default:"stash",doc:'What `hermes update` does with uncommitted local changes to the source tree when it runs NON-interactively \u2014 i.e. triggered from the desktop/chat app or the gateway, where there\'s no TTY to answer a restore prompt. Interactive (terminal) updates are unaffected: they always stash the changes and ask whether to restore, exactly as they always have. "stash" \u2014 auto-stash the changes, pull, then auto-restore them on top of the updated code (the safe default; nothing is ever lost \u2014 conflicts are preserved in a git stash). "discard" \u2014 auto-stash the changes and throw the stash away after the pull. Use this only if you never intend to keep local edits to the source tree on this machine. Stash-and-drop (not `reset --hard` + `clean -fd`) so ignored paths \u2014 node_modules, venv, build outputs \u2014 are never touched.',group:"updates",effect:"live"},"updates.pre_update_backup":{type:"bool",default:!1,doc:"Run a full ``hermes backup``-style zip of HERMES_HOME before every ``hermes update``. Backups land in ``<HERMES_HOME>/backups/`` and can be restored with ``hermes import <path>``. Off by default: zipping a large HERMES_HOME (sessions DB, caches, skills) can add minutes to every update. The #48200 incident \u2014 a ``hermes update --yes`` run that computed a wrong path and silently wiped the user's ``.env``, ``MEMORY.md``, ``kanban.db``, custom skills, and scripts \u2014 is the reason this knob exists; enable it (here, or via ``--backup`` for a single run) if you want that safety net.",group:"updates",effect:"live"},"updates.refresh_cua_driver":{type:"bool",default:!0,doc:"Refresh an already-installed cua-driver during `hermes update`. The refresh is best-effort and macOS-only. Turn this off if the upstream installer is not appropriate for the machine, for example on non-admin accounts where `/Applications` is not writable.",group:"updates",effect:"live"},"vertex.project_id":{type:"str",default:"",doc:"GCP project ID. Empty \u2192 use the project_id embedded in the service account JSON (or ADC-resolved project).",group:"vertex",effect:"live"},"vertex.region":{type:"str",default:"global",doc:'Vertex region. "global" is required for the Gemini 3.x preview models (regional endpoints silently 404 them). Override to a regional value (e.g. "us-central1") only if your models are pinned to a region.',group:"vertex",effect:"live"},"voice.auto_tts":{type:"bool",default:!1,doc:"",group:"voice",effect:"live"},"voice.beep_enabled":{type:"bool",default:!0,doc:"Play record start/stop beeps in CLI voice mode",group:"voice",effect:"live"},"voice.max_recording_seconds":{type:"int",default:120,doc:"",group:"voice",effect:"live"},"voice.record_key":{type:"str",default:"ctrl+b",doc:"",group:"voice",effect:"live"},"voice.silence_duration":{type:"float",default:3,doc:"Seconds of silence before auto-stop",group:"voice",effect:"live"},"voice.silence_threshold":{type:"int",default:200,doc:"RMS below this = silence (0-32767)",group:"voice",effect:"live"},"web.backend":{type:"str",default:"",doc:"shared fallback \u2014 applies to both search and extract",group:"web",effect:"live"},"web.extract_backend":{type:"str",default:"",doc:'per-capability override for web_extract (e.g. "native")',group:"web",effect:"live"},"web.extract_char_limit":{type:"int",default:15000,doc:"per-page char budget for web_extract; larger pages truncate + store full text in cache/web",group:"web",effect:"live"},"web.search_backend":{type:"str",default:"",doc:'per-capability override for web_search (e.g. "searxng")',group:"web",effect:"live"},whatsapp:{type:"dict",default:{},doc:"WhatsApp platform settings (gateway mode)",group:"general",effect:"live"},"x_search.model":{type:"str",default:"grok-4.20-reasoning",doc:"xAI model used for the Responses call. grok-4.20-reasoning is the recommended default; any Grok model with x_search tool access works.",group:"x_search",effect:"live"},"x_search.retries":{type:"int",default:2,doc:"Number of automatic retries on 5xx / ReadTimeout / ConnectionError. Each retry backs off (1.5x attempt seconds, capped at 5s).",group:"x_search",effect:"live"},"x_search.timeout_seconds":{type:"int",default:180,doc:"Request timeout in seconds (minimum 30). x_search can take 60-120s for complex queries \u2014 the default is generous.",group:"x_search",effect:"live"}},SCHEMA_KEYS=Object.keys(SCHEMA)});var exports_lane={};__export(exports_lane,{writeConfig:()=>writeConfig,verifyWrite:()=>verifyWrite,toCliString:()=>toCliString,route:()=>route,maxEffect:()=>maxEffect,TOOL_PROGRESS:()=>TOOL_PROGRESS,RPC_ALIAS:()=>RPC_ALIAS});var onOff=(v2)=>v2?"on":"off",TOOL_PROGRESS,progress,progressErr="log is a gateway-only config-file mode, not a live TUI mode",RPC_ALIAS,route=(key3)=>{let a=RPC_ALIAS[key3];if(a)return{via:"rpc",alias:a.alias,toWire:a.toWire};if(key3.startsWith("display.sections."))return{via:"rpc",alias:`details_mode.${key3.slice(17)}`};let s=SCHEMA[key3];if(s&&(s.type==="list"||s.type==="dict"))return{via:"readonly"};return{via:"cli"}},toCliString=(key3,v2)=>{let t2=SCHEMA[key3]?.type??"str";if(t2==="bool")return v2?"true":"false";if(t2==="int")return String(Math.trunc(Number(v2)));if(t2==="float")return String(Number(v2));return String(v2??"")},writeConfig=async(gw,diffs)=>{let ok=[],failed=[],warnings=[],blocked=diffs.filter((d2)=>d2.key==="display.tool_progress"&&!progress.has(String(d2.to??"")));for(let d2 of blocked)failed.push({key:d2.key,err:progressErr});let safe2=diffs.filter((d2)=>!blocked.includes(d2)),rpc=safe2.filter((d2)=>route(d2.key).via==="rpc"),cli=safe2.filter((d2)=>route(d2.key).via==="cli"),ro=safe2.filter((d2)=>route(d2.key).via==="readonly");for(let d2 of ro)failed.push({key:d2.key,err:"structured value \u2014 edit in YAML mode"});for(let d2 of rpc){let lane=route(d2.key),value=lane.toWire?lane.toWire(d2.to):String(d2.to??"");try{let res=await gw.request("config.set",{key:lane.alias,value});if(ok.push(d2.key),res?.warning)warnings.push({key:d2.key,msg:res.warning})}catch(e){failed.push({key:d2.key,err:e instanceof Error?e.message:String(e)})}}for(let d2 of cli)try{let res=await gw.request("cli.exec",{argv:["config","set",d2.key,toCliString(d2.key,d2.to)],timeout:30});if(res.blocked)failed.push({key:d2.key,err:res.hint??"blocked"});else if(res.code!==0)failed.push({key:d2.key,err:res.output.split(`
|
|
3511
3511
|
`)[0]||`exit ${res.code}`});else ok.push(d2.key)}catch(e){failed.push({key:d2.key,err:e instanceof Error?e.message:String(e)})}return{ok,failed,warnings}},EFFECT_RANK,maxEffect=(keys)=>keys.reduce((acc,k2)=>{let e=SCHEMA[k2]?.effect??"live";return EFFECT_RANK[e]>EFFECT_RANK[acc]?e:acc},"live"),get3=(obj,path4)=>{let cur=obj;for(let p of path4.split("."))if(cur&&typeof cur==="object"&&!Array.isArray(cur))cur=cur[p];else return;return cur},eq2=(a,b2)=>JSON.stringify(a)===JSON.stringify(b2),verifyWrite=async(gw,applied)=>{let cfg=(await gw.request("config.get",{key:"full"})).config??{},miss=[];for(let d2 of applied){if(route(d2.key).via!=="cli")continue;if(!eq2(get3(cfg,d2.key),d2.to))miss.push(d2.key)}return miss};var init_lane=__esm(()=>{init_schema();TOOL_PROGRESS=["off","new","all","verbose"],progress=new Set(TOOL_PROGRESS),RPC_ALIAS={model:{alias:"model"},provider:{alias:"model"},"agent.service_tier":{alias:"fast"},"agent.reasoning_effort":{alias:"reasoning"},"display.show_reasoning":{alias:"reasoning",toWire:(v2)=>v2?"show":"hide"},"display.tool_progress":{alias:"verbose"},"display.busy_input_mode":{alias:"busy"},"display.details_mode":{alias:"details_mode"},"display.thinking_mode":{alias:"thinking_mode"},"display.tui_compact":{alias:"compact",toWire:onOff},"display.tui_statusbar":{alias:"statusbar"},"display.tui_mouse":{alias:"mouse",toWire:onOff},"display.skin":{alias:"skin"},"display.personality":{alias:"personality"},custom_prompt:{alias:"prompt"}},EFFECT_RANK={live:0,session:1,restart:2}});import{createRequire as createRequire2}from"module";import{fileURLToPath}from"url";import{existsSync}from"fs";import{mkdir,writeFile as writeFileNode}from"fs/promises";import{dirname,isAbsolute,resolve}from"path";import{fileURLToPath as fileURLToPath2}from"url";import{existsSync as existsSync3,writeFileSync}from"fs";import{EventEmitter as EventEmitter4}from"events";import{EventEmitter}from"events";import{Buffer as Buffer2}from"buffer";import{Buffer as Buffer3}from"buffer";import{EventEmitter as EventEmitter2}from"events";import{resolve as resolve2,isAbsolute as isAbsolute2,parse}from"path";import{existsSync as existsSync2}from"fs";import{basename,join}from"path";import os from"os";import path from"path";import{EventEmitter as EventEmitter3}from"events";import path2 from"path";var{create:__create2,getPrototypeOf:__getProtoOf2,defineProperty:__defProp2,getOwnPropertyNames:__getOwnPropNames2}=Object,__hasOwnProp2=Object.prototype.hasOwnProperty;function __accessProp2(key){return this[key]}var __toESMCache_node2,__toESMCache_esm2,__toESM2=(mod,isNodeMode,target)=>{var canCache=mod!=null&&typeof mod==="object";if(canCache){var cache=isNodeMode?__toESMCache_node2??=new WeakMap:__toESMCache_esm2??=new WeakMap,cached=cache.get(mod);if(cached)return cached}target=mod!=null?__create2(__getProtoOf2(mod)):{};let to=isNodeMode||!mod||!mod.__esModule?__defProp2(target,"default",{value:mod,enumerable:!0}):target;for(let key of __getOwnPropNames2(mod))if(!__hasOwnProp2.call(to,key))__defProp2(to,key,{get:__accessProp2.bind(mod,key),enumerable:!0});if(canCache)cache.set(mod,to);return to},__commonJS2=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports),__returnValue2=(v)=>v;function __exportSetter2(name,newValue){this[name]=__returnValue2.bind(null,newValue)}var __export2=(target,all)=>{for(var name in all)__defProp2(target,name,{get:all[name],enumerable:!0,configurable:!0,set:__exportSetter2.bind(all,name)})};var require_emoji_regex=__commonJS2((exports,module)=>{module.exports=()=>{return/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g}}),exports_yoga={};__export2(exports_yoga,{default:()=>yoga_default,Wrap:()=>Wrap,WRAP_WRAP_REVERSE:()=>WRAP_WRAP_REVERSE,WRAP_WRAP:()=>WRAP_WRAP,WRAP_NO_WRAP:()=>WRAP_NO_WRAP,Unit:()=>Unit,UNIT_UNDEFINED:()=>UNIT_UNDEFINED,UNIT_POINT:()=>UNIT_POINT,UNIT_PERCENT:()=>UNIT_PERCENT,UNIT_AUTO:()=>UNIT_AUTO,PositionType:()=>PositionType,POSITION_TYPE_STATIC:()=>POSITION_TYPE_STATIC,POSITION_TYPE_RELATIVE:()=>POSITION_TYPE_RELATIVE,POSITION_TYPE_ABSOLUTE:()=>POSITION_TYPE_ABSOLUTE,Overflow:()=>Overflow,OVERFLOW_VISIBLE:()=>OVERFLOW_VISIBLE,OVERFLOW_SCROLL:()=>OVERFLOW_SCROLL,OVERFLOW_HIDDEN:()=>OVERFLOW_HIDDEN,NodeType:()=>NodeType,Node:()=>Node,NODE_TYPE_TEXT:()=>NODE_TYPE_TEXT,NODE_TYPE_DEFAULT:()=>NODE_TYPE_DEFAULT,MeasureMode:()=>MeasureMode,MEASURE_MODE_UNDEFINED:()=>MEASURE_MODE_UNDEFINED,MEASURE_MODE_EXACTLY:()=>MEASURE_MODE_EXACTLY,MEASURE_MODE_AT_MOST:()=>MEASURE_MODE_AT_MOST,LogLevel:()=>LogLevel,LOG_LEVEL_WARN:()=>LOG_LEVEL_WARN,LOG_LEVEL_VERBOSE:()=>LOG_LEVEL_VERBOSE,LOG_LEVEL_INFO:()=>LOG_LEVEL_INFO,LOG_LEVEL_FATAL:()=>LOG_LEVEL_FATAL,LOG_LEVEL_ERROR:()=>LOG_LEVEL_ERROR,LOG_LEVEL_DEBUG:()=>LOG_LEVEL_DEBUG,Justify:()=>Justify,JUSTIFY_SPACE_EVENLY:()=>JUSTIFY_SPACE_EVENLY,JUSTIFY_SPACE_BETWEEN:()=>JUSTIFY_SPACE_BETWEEN,JUSTIFY_SPACE_AROUND:()=>JUSTIFY_SPACE_AROUND,JUSTIFY_FLEX_START:()=>JUSTIFY_FLEX_START,JUSTIFY_FLEX_END:()=>JUSTIFY_FLEX_END,JUSTIFY_CENTER:()=>JUSTIFY_CENTER,Gutter:()=>Gutter,GUTTER_ROW:()=>GUTTER_ROW,GUTTER_COLUMN:()=>GUTTER_COLUMN,GUTTER_ALL:()=>GUTTER_ALL,FlexDirection:()=>FlexDirection,FLEX_DIRECTION_ROW_REVERSE:()=>FLEX_DIRECTION_ROW_REVERSE,FLEX_DIRECTION_ROW:()=>FLEX_DIRECTION_ROW,FLEX_DIRECTION_COLUMN_REVERSE:()=>FLEX_DIRECTION_COLUMN_REVERSE,FLEX_DIRECTION_COLUMN:()=>FLEX_DIRECTION_COLUMN,ExperimentalFeature:()=>ExperimentalFeature,Errata:()=>Errata,Edge:()=>Edge,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:()=>EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,ERRATA_STRETCH_FLEX_BASIS:()=>ERRATA_STRETCH_FLEX_BASIS,ERRATA_NONE:()=>ERRATA_NONE,ERRATA_CLASSIC:()=>ERRATA_CLASSIC,ERRATA_ALL:()=>ERRATA_ALL,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:()=>ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:()=>ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE,EDGE_VERTICAL:()=>EDGE_VERTICAL,EDGE_TOP:()=>EDGE_TOP,EDGE_START:()=>EDGE_START,EDGE_RIGHT:()=>EDGE_RIGHT,EDGE_LEFT:()=>EDGE_LEFT,EDGE_HORIZONTAL:()=>EDGE_HORIZONTAL,EDGE_END:()=>EDGE_END,EDGE_BOTTOM:()=>EDGE_BOTTOM,EDGE_ALL:()=>EDGE_ALL,Display:()=>Display,Direction:()=>Direction,Dimension:()=>Dimension,DISPLAY_NONE:()=>DISPLAY_NONE,DISPLAY_FLEX:()=>DISPLAY_FLEX,DISPLAY_CONTENTS:()=>DISPLAY_CONTENTS,DIRECTION_RTL:()=>DIRECTION_RTL,DIRECTION_LTR:()=>DIRECTION_LTR,DIRECTION_INHERIT:()=>DIRECTION_INHERIT,DIMENSION_WIDTH:()=>DIMENSION_WIDTH,DIMENSION_HEIGHT:()=>DIMENSION_HEIGHT,Config:()=>Config,BoxSizing:()=>BoxSizing,BOX_SIZING_CONTENT_BOX:()=>BOX_SIZING_CONTENT_BOX,BOX_SIZING_BORDER_BOX:()=>BOX_SIZING_BORDER_BOX,Align:()=>Align,ALIGN_STRETCH:()=>ALIGN_STRETCH,ALIGN_SPACE_EVENLY:()=>ALIGN_SPACE_EVENLY,ALIGN_SPACE_BETWEEN:()=>ALIGN_SPACE_BETWEEN,ALIGN_SPACE_AROUND:()=>ALIGN_SPACE_AROUND,ALIGN_FLEX_START:()=>ALIGN_FLEX_START,ALIGN_FLEX_END:()=>ALIGN_FLEX_END,ALIGN_CENTER:()=>ALIGN_CENTER,ALIGN_BASELINE:()=>ALIGN_BASELINE,ALIGN_AUTO:()=>ALIGN_AUTO});var FFIType={char:"char",int8_t:"int8_t",i8:"i8",uint8_t:"uint8_t",u8:"u8",int16_t:"int16_t",i16:"i16",uint16_t:"uint16_t",u16:"u16",int32_t:"int32_t",i32:"i32",int:"int",uint32_t:"uint32_t",u32:"u32",int64_t:"int64_t",i64:"i64",uint64_t:"uint64_t",u64:"u64",double:"double",f64:"f64",float:"float",f32:"f32",bool:"bool",ptr:"ptr",pointer:"pointer",void:"void",cstring:"cstring",function:"function",usize:"usize",callback:"callback",napi_env:"napi_env",napi_value:"napi_value",buffer:"buffer"},FFI_UNAVAILABLE="OpenTUI native FFI is not available for this runtime yet",BUN_DLOPEN_NULL="Bun FFI backend does not support dlopen(null)",LIBRARY_CLOSED="Cannot create FFI callback after library.close() has been called",NODE_CALLBACK_THREADSAFE="Node FFI callbacks are same-thread only and do not support threadsafe callbacks",NODE_NAPI_UNSUPPORTED="Node FFI backend does not support Bun N-API FFI types",NODE_POINTER_OVERRIDE="Node FFI backend does not support FFIFunction.ptr overrides",NODE_POINTER_ARGUMENT="Node FFI pointer arguments must be a Pointer, ArrayBuffer, or ArrayBufferView",NODE_PTR_VALUE="node:ffi ptr() only supports ArrayBuffer and ArrayBufferView values backed by ArrayBuffer",NODE_STRING_RETURN="Node FFI backend does not normalize string return values (yet)",NODE_USIZE_UNSUPPORTED="Node FFI backend does not support usize yet",POINTER_NEGATIVE="Pointer must be non-negative",POINTER_OFFSET_NEGATIVE="Pointer offset must be non-negative",POINTER_OFFSET_UNSAFE="Pointer offset must be a safe integer",POINTER_UNSAFE="Pointer exceeds safe integer range";function unavailable(cause){throw Error(FFI_UNAVAILABLE,{cause})}function createUnsupportedBackend(cause){return{dlopen(){return unavailable(cause)},ptr(){return unavailable(cause)},suffix:"",toArrayBuffer(){return unavailable(cause)}}}var isBun=typeof process<"u"&&typeof process.versions==="object"&&process.versions!==null&&typeof process.versions.bun==="string",requireModule=createRequire2(import.meta.url),backend=loadBackend();function loadBackend(){if(isBun)return createBunBackend(requireModule("bun:ffi"));try{let nodeFfi=requireModule("node:ffi");return createNodeBackend(nodeFfi.default??nodeFfi)}catch(error){return createUnsupportedBackend(error)}}function toPointer(value){if(isBun&&typeof value==="bigint")return toSafeNumberPointer(value);if(!isBun&&typeof value==="number")return toSafeBigIntPointer(value);return value}function ffiBool(value){return value?1:0}function toSafeNumberPointer(pointer){if(pointer<0n)throw Error(POINTER_NEGATIVE);if(pointer>BigInt(Number.MAX_SAFE_INTEGER))throw Error(POINTER_UNSAFE);return Number(pointer)}function toSafeBigIntPointer(pointer){if(pointer<0)throw Error(POINTER_NEGATIVE);if(!Number.isSafeInteger(pointer))throw Error(POINTER_UNSAFE);return BigInt(pointer)}function createManagedCallback(raw,callbacks){let ptr=raw.ptr,closed=!1,instance={get ptr(){return ptr},get threadsafe(){return raw.threadsafe},close(){if(closed)return;closed=!0,callbacks.delete(instance);try{raw.close()}finally{ptr=null}}};return callbacks.add(instance),instance}function normalizeBunDefinitions(definitions){return Object.fromEntries(Object.entries(definitions).map(([name,definition])=>[name,normalizeBunDefinition(definition)]))}function normalizeBunDefinition(definition){return{args:definition.args,returns:definition.returns,ptr:definition.ptr==null?void 0:toBunPointer(definition.ptr),threadsafe:definition.threadsafe}}function toBunPointer(pointer){return typeof pointer==="bigint"?toSafeNumberPointer(pointer):pointer}function createBunBackend(bun){return{dlopen(path3,symbols){if(path3===null)throw Error(BUN_DLOPEN_NULL);let library=bun.dlopen(path3,normalizeBunDefinitions(symbols)),callbacks=new Set,closed=!1;return{symbols:library.symbols,createCallback(callback,definition){if(closed)throw Error(LIBRARY_CLOSED);let raw=new bun.JSCallback(callback,normalizeBunDefinition(definition));return createManagedCallback(raw,callbacks)},close(){if(closed)return;closed=!0;try{library.close()}finally{for(let callback of[...callbacks])callback.close()}}}},ptr:bun.ptr,suffix:bun.suffix,toArrayBuffer(pointer,offset,length){return bun.toArrayBuffer(toBunPointer(pointer),offset,length)}}}function createNodeBackend(nodeFfi){return{dlopen(path3,symbols){let{lib,functions}=nodeFfi.dlopen(toNodeLibraryPath(path3),normalizeNodeDefinitions(symbols)),callbacks=new Set,closed=!1,libraryClosed=!1;return{symbols:wrapNodeSymbols(functions,symbols),createCallback(callback,definition){if(closed)throw Error(LIBRARY_CLOSED);if(definition.threadsafe)throw Error(NODE_CALLBACK_THREADSAFE);let callbackPointer=lib.registerCallback(normalizeNodeDefinition(definition),callback);return createManagedCallback({ptr:callbackPointer,threadsafe:!1,close(){if(!libraryClosed)lib.unregisterCallback(callbackPointer)}},callbacks)},close(){if(closed)return;closed=!0;try{libraryClosed=!0,lib.close()}finally{for(let callback of[...callbacks])callback.close()}}}},ptr(value){return toNodeSourcePointer(nodeFfi,value)},suffix:nodeFfi.suffix,toArrayBuffer(pointer,offset,length){return nodeFfi.toArrayBuffer(toBigIntPointer(pointer)+toNodePointerOffset(offset),length,!1)}}}function toNodeLibraryPath(path3){return path3 instanceof URL?fileURLToPath(path3):path3}function normalizeNodeDefinitions(definitions){return Object.fromEntries(Object.entries(definitions).map(([name,definition])=>[name,normalizeNodeDefinition(definition)]))}function wrapNodeSymbols(functions,definitions){return Object.fromEntries(Object.entries(functions).map(([name,fn])=>[name,wrapNodeSymbol(fn,definitions[name])]))}function wrapNodeSymbol(fn,definition){let pointerArgIndexes=(definition.args??[]).flatMap((type,index)=>isNodePointerArgumentType(type)?[index]:[]);if(pointerArgIndexes.length===0)return fn;return(...args)=>{let normalizedArgs=args.slice();for(let index of pointerArgIndexes)normalizedArgs[index]=toNodePointerArgument(normalizedArgs[index]);return fn(...normalizedArgs)}}function isNodePointerArgumentType(type){return type===FFIType.ptr||type===FFIType.pointer||type===FFIType.function||type===FFIType.callback}function toNodePointerArgument(value){if(value==null)return 0n;if(typeof value==="number"||typeof value==="bigint")return toBigIntPointer(value);if(ArrayBuffer.isView(value)){if(!(value.buffer instanceof ArrayBuffer))throw TypeError(NODE_PTR_VALUE);if(value.byteLength===0)return 0n;return value}if(value instanceof ArrayBuffer){if(value.byteLength===0)return 0n;return value}throw TypeError(NODE_POINTER_ARGUMENT)}function toNodeSourcePointer(nodeFfi,value){if(ArrayBuffer.isView(value)){if(!(value.buffer instanceof ArrayBuffer))throw TypeError(NODE_PTR_VALUE);return nodeFfi.getRawPointer(value.buffer)+BigInt(value.byteOffset)}if(value instanceof ArrayBuffer)return nodeFfi.getRawPointer(value);throw TypeError(NODE_PTR_VALUE)}function toNodePointerOffset(offset){if(offset==null)return 0n;if(offset<0)throw Error(POINTER_OFFSET_NEGATIVE);if(!Number.isSafeInteger(offset))throw Error(POINTER_OFFSET_UNSAFE);return BigInt(offset)}function normalizeNodeDefinition(definition){if(definition.ptr!=null)throw Error(NODE_POINTER_OVERRIDE);return{arguments:(definition.args??[]).map((type)=>toNodeFFIType(type,"parameter")),return:toNodeFFIType(definition.returns??FFIType.void,"result")}}function toNodeFFIType(type,position){switch(type){case FFIType.char:return"char";case FFIType.int8_t:case FFIType.i8:return"i8";case FFIType.uint8_t:case FFIType.u8:return"u8";case FFIType.int16_t:case FFIType.i16:return"i16";case FFIType.uint16_t:case FFIType.u16:return"u16";case FFIType.int32_t:case FFIType.int:case FFIType.i32:return"i32";case FFIType.uint32_t:case FFIType.u32:return"u32";case FFIType.int64_t:case FFIType.i64:return"i64";case FFIType.uint64_t:case FFIType.u64:return"u64";case FFIType.double:case FFIType.f64:return"f64";case FFIType.float:case FFIType.f32:return"f32";case FFIType.bool:return"bool";case FFIType.ptr:case FFIType.pointer:return"pointer";case FFIType.void:return"void";case FFIType.cstring:if(position==="result")throw Error(NODE_STRING_RETURN);return"string";case FFIType.function:case FFIType.callback:return"pointer";case FFIType.usize:throw Error(NODE_USIZE_UNSUPPORTED);case FFIType.napi_env:case FFIType.napi_value:throw Error(NODE_NAPI_UNSUPPORTED);case FFIType.buffer:return"buffer";default:return unsupportedNodeFFIType(type)}}function unsupportedNodeFFIType(type){throw Error(`Unsupported FFIType for node:ffi: ${String(type)}`)}function toBigIntPointer(pointer){if(typeof pointer==="bigint"){if(pointer<0n)throw Error(POINTER_NEGATIVE);return pointer}return toSafeBigIntPointer(pointer)}var{dlopen,ptr,suffix,toArrayBuffer}=backend;function ansiRegex({onlyFirst=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",onlyFirst?void 0:"g")}var regex=ansiRegex();function stripAnsi(string){if(typeof string!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof string}\``);return string.replace(regex,"")}function isAmbiguous(x){return x===161||x===164||x===167||x===168||x===170||x===173||x===174||x>=176&&x<=180||x>=182&&x<=186||x>=188&&x<=191||x===198||x===208||x===215||x===216||x>=222&&x<=225||x===230||x>=232&&x<=234||x===236||x===237||x===240||x===242||x===243||x>=247&&x<=250||x===252||x===254||x===257||x===273||x===275||x===283||x===294||x===295||x===299||x>=305&&x<=307||x===312||x>=319&&x<=322||x===324||x>=328&&x<=331||x===333||x===338||x===339||x===358||x===359||x===363||x===462||x===464||x===466||x===468||x===470||x===472||x===474||x===476||x===593||x===609||x===708||x===711||x>=713&&x<=715||x===717||x===720||x>=728&&x<=731||x===733||x===735||x>=768&&x<=879||x>=913&&x<=929||x>=931&&x<=937||x>=945&&x<=961||x>=963&&x<=969||x===1025||x>=1040&&x<=1103||x===1105||x===8208||x>=8211&&x<=8214||x===8216||x===8217||x===8220||x===8221||x>=8224&&x<=8226||x>=8228&&x<=8231||x===8240||x===8242||x===8243||x===8245||x===8251||x===8254||x===8308||x===8319||x>=8321&&x<=8324||x===8364||x===8451||x===8453||x===8457||x===8467||x===8470||x===8481||x===8482||x===8486||x===8491||x===8531||x===8532||x>=8539&&x<=8542||x>=8544&&x<=8555||x>=8560&&x<=8569||x===8585||x>=8592&&x<=8601||x===8632||x===8633||x===8658||x===8660||x===8679||x===8704||x===8706||x===8707||x===8711||x===8712||x===8715||x===8719||x===8721||x===8725||x===8730||x>=8733&&x<=8736||x===8739||x===8741||x>=8743&&x<=8748||x===8750||x>=8756&&x<=8759||x===8764||x===8765||x===8776||x===8780||x===8786||x===8800||x===8801||x>=8804&&x<=8807||x===8810||x===8811||x===8814||x===8815||x===8834||x===8835||x===8838||x===8839||x===8853||x===8857||x===8869||x===8895||x===8978||x>=9312&&x<=9449||x>=9451&&x<=9547||x>=9552&&x<=9587||x>=9600&&x<=9615||x>=9618&&x<=9621||x===9632||x===9633||x>=9635&&x<=9641||x===9650||x===9651||x===9654||x===9655||x===9660||x===9661||x===9664||x===9665||x>=9670&&x<=9672||x===9675||x>=9678&&x<=9681||x>=9698&&x<=9701||x===9711||x===9733||x===9734||x===9737||x===9742||x===9743||x===9756||x===9758||x===9792||x===9794||x===9824||x===9825||x>=9827&&x<=9829||x>=9831&&x<=9834||x===9836||x===9837||x===9839||x===9886||x===9887||x===9919||x>=9926&&x<=9933||x>=9935&&x<=9939||x>=9941&&x<=9953||x===9955||x===9960||x===9961||x>=9963&&x<=9969||x===9972||x>=9974&&x<=9977||x===9979||x===9980||x===9982||x===9983||x===10045||x>=10102&&x<=10111||x>=11094&&x<=11097||x>=12872&&x<=12879||x>=57344&&x<=63743||x>=65024&&x<=65039||x===65533||x>=127232&&x<=127242||x>=127248&&x<=127277||x>=127280&&x<=127337||x>=127344&&x<=127373||x===127375||x===127376||x>=127387&&x<=127404||x>=917760&&x<=917999||x>=983040&&x<=1048573||x>=1048576&&x<=1114109}function isFullWidth(x){return x===12288||x>=65281&&x<=65376||x>=65504&&x<=65510}function isWide(x){return x>=4352&&x<=4447||x===8986||x===8987||x===9001||x===9002||x>=9193&&x<=9196||x===9200||x===9203||x===9725||x===9726||x===9748||x===9749||x>=9776&&x<=9783||x>=9800&&x<=9811||x===9855||x>=9866&&x<=9871||x===9875||x===9889||x===9898||x===9899||x===9917||x===9918||x===9924||x===9925||x===9934||x===9940||x===9962||x===9970||x===9971||x===9973||x===9978||x===9981||x===9989||x===9994||x===9995||x===10024||x===10060||x===10062||x>=10067&&x<=10069||x===10071||x>=10133&&x<=10135||x===10160||x===10175||x===11035||x===11036||x===11088||x===11093||x>=11904&&x<=11929||x>=11931&&x<=12019||x>=12032&&x<=12245||x>=12272&&x<=12287||x>=12289&&x<=12350||x>=12353&&x<=12438||x>=12441&&x<=12543||x>=12549&&x<=12591||x>=12593&&x<=12686||x>=12688&&x<=12773||x>=12783&&x<=12830||x>=12832&&x<=12871||x>=12880&&x<=42124||x>=42128&&x<=42182||x>=43360&&x<=43388||x>=44032&&x<=55203||x>=63744&&x<=64255||x>=65040&&x<=65049||x>=65072&&x<=65106||x>=65108&&x<=65126||x>=65128&&x<=65131||x>=94176&&x<=94180||x>=94192&&x<=94198||x>=94208&&x<=101589||x>=101631&&x<=101662||x>=101760&&x<=101874||x>=110576&&x<=110579||x>=110581&&x<=110587||x===110589||x===110590||x>=110592&&x<=110882||x===110898||x>=110928&&x<=110930||x===110933||x>=110948&&x<=110951||x>=110960&&x<=111355||x>=119552&&x<=119638||x>=119648&&x<=119670||x===126980||x===127183||x===127374||x>=127377&&x<=127386||x>=127488&&x<=127490||x>=127504&&x<=127547||x>=127552&&x<=127560||x===127568||x===127569||x>=127584&&x<=127589||x>=127744&&x<=127776||x>=127789&&x<=127797||x>=127799&&x<=127868||x>=127870&&x<=127891||x>=127904&&x<=127946||x>=127951&&x<=127955||x>=127968&&x<=127984||x===127988||x>=127992&&x<=128062||x===128064||x>=128066&&x<=128252||x>=128255&&x<=128317||x>=128331&&x<=128334||x>=128336&&x<=128359||x===128378||x===128405||x===128406||x===128420||x>=128507&&x<=128591||x>=128640&&x<=128709||x===128716||x>=128720&&x<=128722||x>=128725&&x<=128728||x>=128732&&x<=128735||x===128747||x===128748||x>=128756&&x<=128764||x>=128992&&x<=129003||x===129008||x>=129292&&x<=129338||x>=129340&&x<=129349||x>=129351&&x<=129535||x>=129648&&x<=129660||x>=129664&&x<=129674||x>=129678&&x<=129734||x===129736||x>=129741&&x<=129756||x>=129759&&x<=129770||x>=129775&&x<=129784||x>=131072&&x<=196605||x>=196608&&x<=262141}function validate(codePoint){if(!Number.isSafeInteger(codePoint))throw TypeError(`Expected a code point, got \`${typeof codePoint}\`.`)}function eastAsianWidth(codePoint,{ambiguousAsWide=!1}={}){if(validate(codePoint),isFullWidth(codePoint)||isWide(codePoint)||ambiguousAsWide&&isAmbiguous(codePoint))return 2;return 1}var import_emoji_regex=__toESM2(require_emoji_regex(),1),segmenter=new Intl.Segmenter,defaultIgnorableCodePointRegex=/^\p{Default_Ignorable_Code_Point}$/u;function stringWidth(string,options={}){if(typeof string!=="string"||string.length===0)return 0;let{ambiguousIsNarrow=!0,countAnsiEscapeCodes=!1}=options;if(!countAnsiEscapeCodes)string=stripAnsi(string);if(string.length===0)return 0;let width=0,eastAsianWidthOptions={ambiguousAsWide:!ambiguousIsNarrow};for(let{segment:character}of segmenter.segment(string)){let codePoint=character.codePointAt(0);if(codePoint<=31||codePoint>=127&&codePoint<=159)continue;if(codePoint>=8203&&codePoint<=8207||codePoint===65279)continue;if(codePoint>=768&&codePoint<=879||codePoint>=6832&&codePoint<=6911||codePoint>=7616&&codePoint<=7679||codePoint>=8400&&codePoint<=8447||codePoint>=65056&&codePoint<=65071)continue;if(codePoint>=55296&&codePoint<=57343)continue;if(codePoint>=65024&&codePoint<=65039)continue;if(defaultIgnorableCodePointRegex.test(character))continue;if(import_emoji_regex.default().test(character)){width+=2;continue}width+=eastAsianWidth(codePoint,eastAsianWidthOptions)}return width}var TEXT_ENCODER=new TextEncoder,bun=globalThis.Bun,sleep=bun?.sleep??standardSleep,stringWidth2=bun?.stringWidth??stringWidth,stripANSI=bun?.stripANSI??stripAnsi,writeFile=bun?.write??writeFilePortable;async function resolveBundledFilePath(loadBundledFile,fallbackPath,metaUrl){if(!bun){let path3=resolveFallbackFilePath(fallbackPath,metaUrl);if(existsSync(path3))return path3;return await loadBundledFilePath(loadBundledFile,metaUrl)??path3}return normalizeLoadedFilePath((await loadBundledFile()).default,metaUrl)}function resolveFallbackFilePath(fallbackPath,metaUrl){let path3=typeof fallbackPath==="function"?fallbackPath():fallbackPath;return fileURLToPath2(path3 instanceof URL?path3:new URL(path3,metaUrl))}function normalizeLoadedFilePath(loadedPath,baseUrl){if(loadedPath.startsWith("file:"))return fileURLToPath2(loadedPath);if(isAbsolute(loadedPath))return loadedPath;return resolve(dirname(fileURLToPath2(baseUrl)),loadedPath)}async function loadBundledFilePath(loadBundledFile,metaUrl){let specifier=extractBundledImportSpecifier(loadBundledFile);if(!specifier)return;try{let moduleUrl=new URL(specifier,metaUrl),loaded=await import(moduleUrl.href);return normalizeLoadedFilePath(loaded.default,moduleUrl.href)}catch{return}}function extractBundledImportSpecifier(loadBundledFile){return String(loadBundledFile).match(/\bimport\(\s*(["'`])([^"'`]+)\1/)?.[2]}function standardSleep(msOrDate){let ms=msOrDate instanceof Date?msOrDate.getTime()-Date.now():msOrDate;return new Promise((resolve22)=>setTimeout(resolve22,ms))}async function writeFilePortable(destination,data,options){let destinationPath=destination instanceof URL?fileURLToPath2(destination):destination;if(options?.createPath)await mkdir(dirname(destinationPath),{recursive:!0});let bytes=typeof data==="string"?TEXT_ENCODER.encode(data):new Uint8Array(data.buffer,data.byteOffset,data.byteLength);return await writeFileNode(destinationPath,bytes,{mode:options?.mode}),bytes.byteLength}var DEFAULT_FOREGROUND_RGB=[255,255,255],DEFAULT_BACKGROUND_RGB=[0,0,0],INTENT_RGB=0,INTENT_INDEXED=1,INTENT_DEFAULT=2,ANSI16_RGB=[[0,0,0],[128,0,0],[0,128,0],[128,128,0],[0,0,128],[128,0,128],[0,128,128],[192,192,192],[128,128,128],[255,0,0],[0,255,0],[255,255,0],[0,0,255],[255,0,255],[0,255,255],[255,255,255]],ANSI_256_CUBE_LEVELS=[0,95,135,175,215,255];function packMeta(intent,slot=0){return(slot&255|(intent&255)<<8)>>>0}function toU8(value){return Math.round(Math.max(0,Math.min(1,Number.isFinite(value)?value:0))*255)}function toByte(value){return Math.round(Math.max(0,Math.min(255,Number.isFinite(value)?value:0)))}function packRGBA8(r,g,b,a,meta){return new Uint16Array([toByte(r)&255|(meta>>>0&255)<<8,toByte(g)&255|(meta>>>8&255)<<8,toByte(b)&255|(meta>>>16&255)<<8,toByte(a)&255|(meta>>>24&255)<<8])}function rgbaForAnsi256Index(index){let[r,g,b]=ansi256IndexToRgb(index);return RGBA.fromInts(r,g,b)}function normalizeIndexedColorIndex(index){if(!Number.isInteger(index)||index<0||index>255)throw RangeError(`Indexed color must be an integer in the range 0..255, got ${index}`);return index}function ansi256IndexToRgb(index){let normalizedIndex=normalizeIndexedColorIndex(index);if(normalizedIndex<ANSI16_RGB.length)return ANSI16_RGB[normalizedIndex];if(normalizedIndex<232){let cubeIndex=normalizedIndex-16,r=Math.floor(cubeIndex/36),g=Math.floor(cubeIndex/6)%6,b=cubeIndex%6;return[ANSI_256_CUBE_LEVELS[r],ANSI_256_CUBE_LEVELS[g],ANSI_256_CUBE_LEVELS[b]]}let value=8+(normalizedIndex-232)*10;return[value,value,value]}class RGBA{buffer;constructor(buffer){this.buffer=new Uint16Array(4),this.buffer.set(buffer.subarray(0,4))}static fromArray(array){return new RGBA(array)}static fromValues(r,g,b,a=1){return new RGBA(packRGBA8(toU8(r),toU8(g),toU8(b),toU8(a),packMeta(INTENT_RGB)))}static clone(rgba){return new RGBA(rgba.buffer)}static fromInts(r,g,b,a=255){return new RGBA(packRGBA8(r,g,b,a,packMeta(INTENT_RGB)))}static fromHex(hex){return hexToRgb(hex)}static fromIndex(index,snapshot){let normalized=normalizeIndexedColorIndex(index),rgba=snapshot?parseColor(snapshot):rgbaForAnsi256Index(normalized),[r,g,b,a]=rgba.toInts();return new RGBA(packRGBA8(r,g,b,a,packMeta(INTENT_INDEXED,normalized)))}static defaultForeground(snapshot){let rgba=snapshot?parseColor(snapshot):RGBA.fromInts(...DEFAULT_FOREGROUND_RGB),[r,g,b,a]=rgba.toInts();return new RGBA(packRGBA8(r,g,b,a,packMeta(INTENT_DEFAULT)))}static defaultBackground(snapshot){let rgba=snapshot?parseColor(snapshot):RGBA.fromInts(...DEFAULT_BACKGROUND_RGB),[r,g,b,a]=rgba.toInts();return new RGBA(packRGBA8(r,g,b,a,packMeta(INTENT_DEFAULT)))}toInts(){return[this.buffer[0]&255,this.buffer[1]&255,this.buffer[2]&255,this.buffer[3]&255]}get r(){return(this.buffer[0]&255)/255}set r(value){this.buffer[0]=this.buffer[0]&65280|toU8(value)}get g(){return(this.buffer[1]&255)/255}set g(value){this.buffer[1]=this.buffer[1]&65280|toU8(value)}get b(){return(this.buffer[2]&255)/255}set b(value){this.buffer[2]=this.buffer[2]&65280|toU8(value)}get a(){return(this.buffer[3]&255)/255}set a(value){this.buffer[3]=this.buffer[3]&65280|toU8(value)}get meta(){return(this.buffer[0]>>>8|this.buffer[1]>>>8<<8|this.buffer[2]>>>8<<16|this.buffer[3]>>>8<<24)>>>0}get intent(){switch(this.meta>>>8&255){case INTENT_INDEXED:return"indexed";case INTENT_DEFAULT:return"default";default:return"rgb"}}get slot(){return this.meta&255}map(fn){return[fn(this.r),fn(this.g),fn(this.b),fn(this.a)]}toString(){return`rgba(${this.r.toFixed(2)}, ${this.g.toFixed(2)}, ${this.b.toFixed(2)}, ${this.a.toFixed(2)})`}equals(other){if(!other)return!1;return this.buffer[0]===other.buffer[0]&&this.buffer[1]===other.buffer[1]&&this.buffer[2]===other.buffer[2]&&this.buffer[3]===other.buffer[3]}}function normalizeColorValue(value){if(value==null)return null;return{rgba:parseColor(value)}}function hexToRgb(hex){if(hex=hex.replace(/^#/,""),hex.length===3)hex=hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];else if(hex.length===4)hex=hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];if(!/^[0-9A-Fa-f]{6}$/.test(hex)&&!/^[0-9A-Fa-f]{8}$/.test(hex))return console.warn(`Invalid hex color: ${hex}, defaulting to magenta`),RGBA.fromValues(1,0,1,1);let r=parseInt(hex.substring(0,2),16),g=parseInt(hex.substring(2,4),16),b=parseInt(hex.substring(4,6),16),a=hex.length===8?parseInt(hex.substring(6,8),16):255;return RGBA.fromInts(r,g,b,a)}var CSS_COLOR_NAMES={black:"#000000",white:"#FFFFFF",red:"#FF0000",green:"#008000",blue:"#0000FF",yellow:"#FFFF00",cyan:"#00FFFF",magenta:"#FF00FF",silver:"#C0C0C0",gray:"#808080",grey:"#808080",maroon:"#800000",olive:"#808000",lime:"#00FF00",aqua:"#00FFFF",teal:"#008080",navy:"#000080",fuchsia:"#FF00FF",purple:"#800080",orange:"#FFA500",brightblack:"#666666",brightred:"#FF6666",brightgreen:"#66FF66",brightblue:"#6666FF",brightyellow:"#FFFF66",brightcyan:"#66FFFF",brightmagenta:"#FF66FF",brightwhite:"#FFFFFF"};function parseColor(color){if(typeof color==="string"){let lowerColor=color.toLowerCase();if(lowerColor==="transparent")return RGBA.fromValues(0,0,0,0);if(CSS_COLOR_NAMES[lowerColor])return hexToRgb(CSS_COLOR_NAMES[lowerColor]);return hexToRgb(color)}return color}var VALID_BORDER_STYLES=["single","double","rounded","heavy"];function isValidBorderStyle(value){return typeof value==="string"&&VALID_BORDER_STYLES.includes(value)}function parseBorderStyle(value,fallback="single"){if(isValidBorderStyle(value))return value;if(value!==void 0&&value!==null)console.warn(`Invalid borderStyle "${value}", falling back to "${fallback}". Valid values are: ${VALID_BORDER_STYLES.join(", ")}`);return fallback}var BorderChars={single:{topLeft:"\u250C",topRight:"\u2510",bottomLeft:"\u2514",bottomRight:"\u2518",horizontal:"\u2500",vertical:"\u2502",topT:"\u252C",bottomT:"\u2534",leftT:"\u251C",rightT:"\u2524",cross:"\u253C"},double:{topLeft:"\u2554",topRight:"\u2557",bottomLeft:"\u255A",bottomRight:"\u255D",horizontal:"\u2550",vertical:"\u2551",topT:"\u2566",bottomT:"\u2569",leftT:"\u2560",rightT:"\u2563",cross:"\u256C"},rounded:{topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",topT:"\u252C",bottomT:"\u2534",leftT:"\u251C",rightT:"\u2524",cross:"\u253C"},heavy:{topLeft:"\u250F",topRight:"\u2513",bottomLeft:"\u2517",bottomRight:"\u251B",horizontal:"\u2501",vertical:"\u2503",topT:"\u2533",bottomT:"\u253B",leftT:"\u2523",rightT:"\u252B",cross:"\u254B"}};function getBorderSides(border){return border===!0?{top:!0,right:!0,bottom:!0,left:!0}:Array.isArray(border)?{top:border.includes("top"),right:border.includes("right"),bottom:border.includes("bottom"),left:border.includes("left")}:{top:!1,right:!1,bottom:!1,left:!1}}function borderCharsToArray(chars){let array=new Uint32Array(11);return array[0]=chars.topLeft.codePointAt(0),array[1]=chars.topRight.codePointAt(0),array[2]=chars.bottomLeft.codePointAt(0),array[3]=chars.bottomRight.codePointAt(0),array[4]=chars.horizontal.codePointAt(0),array[5]=chars.vertical.codePointAt(0),array[6]=chars.topT.codePointAt(0),array[7]=chars.bottomT.codePointAt(0),array[8]=chars.leftT.codePointAt(0),array[9]=chars.rightT.codePointAt(0),array[10]=chars.cross.codePointAt(0),array}var BorderCharArrays={single:borderCharsToArray(BorderChars.single),double:borderCharsToArray(BorderChars.double),rounded:borderCharsToArray(BorderChars.rounded),heavy:borderCharsToArray(BorderChars.heavy)};class KeyEvent{name;ctrl;meta;shift;option;sequence;number;raw;eventType;source;code;super;hyper;capsLock;numLock;baseCode;repeated;_defaultPrevented=!1;_propagationStopped=!1;constructor(key){this.name=key.name,this.ctrl=key.ctrl,this.meta=key.meta,this.shift=key.shift,this.option=key.option,this.sequence=key.sequence,this.number=key.number,this.raw=key.raw,this.eventType=key.eventType,this.source=key.source,this.code=key.code,this.super=key.super,this.hyper=key.hyper,this.capsLock=key.capsLock,this.numLock=key.numLock,this.baseCode=key.baseCode,this.repeated=key.repeated}get defaultPrevented(){return this._defaultPrevented}get propagationStopped(){return this._propagationStopped}preventDefault(){this._defaultPrevented=!0}stopPropagation(){this._propagationStopped=!0}}class PasteEvent{type="paste";bytes;metadata;_defaultPrevented=!1;_propagationStopped=!1;constructor(bytes,metadata){this.bytes=bytes,this.metadata=metadata}get defaultPrevented(){return this._defaultPrevented}get propagationStopped(){return this._propagationStopped}preventDefault(){this._defaultPrevented=!0}stopPropagation(){this._propagationStopped=!0}}class KeyHandler extends EventEmitter{processParsedKey(parsedKey){try{switch(parsedKey.eventType){case"press":this.emit("keypress",new KeyEvent(parsedKey));break;case"release":this.emit("keyrelease",new KeyEvent(parsedKey));break;default:this.emit("keypress",new KeyEvent(parsedKey));break}}catch(error){return console.error("[KeyHandler] Error processing parsed key:",error),!0}return!0}processPaste(bytes,metadata){try{this.emit("paste",new PasteEvent(bytes,metadata))}catch(error){console.error("[KeyHandler] Error processing paste:",error)}}}class InternalKeyHandler extends KeyHandler{renderableHandlers=new Map;emit(event,...args){return this.emitWithPriority(event,...args)}emitWithPriority(event,...args){let hasGlobalListeners=!1,globalListeners=this.listeners(event);if(globalListeners.length>0){hasGlobalListeners=!0;for(let listener of globalListeners){try{listener(...args)}catch(error){console.error(`[KeyHandler] Error in global ${event} handler:`,error)}if(event==="keypress"||event==="keyrelease"||event==="paste"){if(args[0].propagationStopped)return hasGlobalListeners}}}let renderableSet=this.renderableHandlers.get(event),renderableHandlers=renderableSet&&renderableSet.size>0?[...renderableSet]:[],hasRenderableListeners=!1;if(renderableSet&&renderableSet.size>0){if(hasRenderableListeners=!0,event==="keypress"||event==="keyrelease"||event==="paste"){let keyEvent=args[0];if(keyEvent.defaultPrevented)return hasGlobalListeners||hasRenderableListeners;if(keyEvent.propagationStopped)return hasGlobalListeners||hasRenderableListeners}for(let handler of renderableHandlers){try{handler(...args)}catch(error){console.error(`[KeyHandler] Error in renderable ${event} handler:`,error)}if(event==="keypress"||event==="keyrelease"||event==="paste"){if(args[0].propagationStopped)return hasGlobalListeners||hasRenderableListeners}}}return hasGlobalListeners||hasRenderableListeners}onInternal(event,handler){if(!this.renderableHandlers.has(event))this.renderableHandlers.set(event,new Set);this.renderableHandlers.get(event).add(handler)}offInternal(event,handler){let handlers=this.renderableHandlers.get(event);if(handlers)handlers.delete(handler)}}var block_default={name:"block",version:"0.2.0",homepage:"https://github.com/dominikwilkowski/cfonts",colors:2,lines:6,buffer:["","","","","",""],letterspace:[" "," "," "," "," "," "],letterspace_size:1,chars:{A:[" <c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2> ","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u255D</c2>"],B:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],C:[" <c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],D:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],E:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u255D </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],F:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u255D </c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2>","<c2>\u255A\u2550\u255D </c2>"],G:[" <c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D </c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],H:["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u255D</c2>"],I:["<c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u255D</c2>"],J:["<c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588 \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u255D </c2>"],K:["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u255D</c2>"],L:["<c1>\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],M:["<c1>\u2588\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2554</c2><c1>\u2588\u2588\u2588\u2588</c1><c2>\u2554</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551\u255A</c2><c1>\u2588\u2588</c1><c2>\u2554\u255D</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551 \u255A\u2550\u255D</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u255D</c2>"],N:["<c1>\u2588\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2554</c2><c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551\u255A</c2><c1>\u2588\u2588</c1><c2>\u2557</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551 \u255A</c2><c1>\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D</c2>"],O:[" <c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],P:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u255D </c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2>","<c2>\u255A\u2550\u255D </c2>"],Q:[" <c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1>\u2584\u2584 \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550</c2><c1>\u2580\u2580</c1><c2>\u2550\u255D </c2>"],R:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u255D</c2>"],S:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],T:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u255D</c2>","<c1> \u2588\u2588</c1><c2>\u2551 </c2>","<c1> \u2588\u2588</c1><c2>\u2551 </c2>","<c1> \u2588\u2588</c1><c2>\u2551 </c2>","<c2> \u255A\u2550\u255D </c2>"],U:["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],V:["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A</c2><c1>\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c2> \u255A\u2550\u2550\u2550\u255D </c2>"],W:["<c1>\u2588\u2588</c1><c2>\u2557 </c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551 </c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1>\u2588\u2588\u2588</c1><c2>\u2557</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588</c1><c2>\u2554</c2><c1>\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u255D\u255A\u2550\u2550\u255D </c2>"],X:["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2557</c2><c1>\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A</c2><c1>\u2588\u2588\u2588</c1><c2>\u2554\u255D </c2>"," <c1>\u2588\u2588</c1><c2>\u2554</c2><c1>\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u255D</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u255D</c2>"],Y:["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A</c2><c1>\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c2> \u255A</c2><c1>\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c1> \u2588\u2588</c1><c2>\u2551 </c2>","<c2> \u255A\u2550\u255D </c2>"],Z:["<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550</c2><c1>\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1> \u2588\u2588\u2588</c1><c2>\u2554\u255D </c2>"," <c1>\u2588\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],"0":[" <c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550</c2><c1>\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1>\u2588\u2588</c1><c2>\u2554</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],"1":[" <c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>"," <c1>\u2588\u2588</c1><c2>\u2551</c2>"," <c1>\u2588\u2588</c1><c2>\u2551</c2>","<c2> \u255A\u2550\u255D</c2>"],"2":["<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>"," <c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u255D </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],"3":["<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>"," <c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],"4":["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1> \u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1> \u2588\u2588</c1><c2>\u2551</c2>","<c2> \u255A\u2550\u255D</c2>"],"5":["<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],"6":[" <c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],"7":["<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1> \u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1> \u2588\u2588</c1><c2>\u2554\u255D </c2>","<c1> \u2588\u2588</c1><c2>\u2551 </c2>","<c2> \u255A\u2550\u255D </c2>"],"8":[" <c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u255D </c2>"],"9":[" <c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c2> \u255A\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>"," <c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u2550\u2550\u2550\u255D </c2>"],"!":["<c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D</c2>"],"?":["<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1> \u2584\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1> \u2580\u2580</c1><c2>\u2550\u2550\u255D </c2>","<c1> \u2588\u2588</c1><c2>\u2557 </c2>","<c2> \u255A\u2550\u255D </c2>"],".":[" "," "," "," ","<c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D</c2>"],"+":[" ","<c1> \u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2> \u255A</c2><c1>\u2588\u2588</c1><c2>\u2554\u2550\u255D</c2>","<c2> \u255A\u2550\u255D </c2>"," "],"-":[" "," ","<c1>\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u255D</c2>"," "," "],_:[" "," "," "," ","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D</c2>"],"=":[" ","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u255D</c2>"," "],"@":[" <c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1>\u2588\u2588</c1><c2>\u2557</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2551</c2><c1>\u2588\u2588</c1><c2>\u2551</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A</c2><c1>\u2588</c1><c2>\u2551</c2><c1>\u2588\u2588\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u255D\u255A\u2550\u2550\u2550\u255D </c2>"],"#":[" <c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557 </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2554\u2550</c2><c1>\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2554\u2550</c2><c1>\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2> \u255A\u2550\u255D \u255A\u2550\u255D </c2>"],$:["<c1>\u2584\u2584\u2588\u2588\u2588\u2584\u2584</c1><c2>\xB7</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550\u2550\u2550\u2550\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u2550\u2550\u2550</c2><c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551</c2>","<c2>\u255A\u2550</c2><c1>\u2580\u2580\u2580</c1><c2>\u2550\u2550\u255D</c2>"],"%":["<c1>\u2588\u2588</c1><c2>\u2557</c2><c1> \u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D</c2><c1>\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1> \u2588\u2588</c1><c2>\u2554\u255D </c2>"," <c1>\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u255D</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D \u255A\u2550\u255D</c2>"],"&":["<c1> \u2588\u2588</c1><c2>\u2557 </c2>","<c1> \u2588\u2588</c1><c2>\u2551 </c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u2550</c2><c1>\u2588\u2588</c1><c2>\u2554\u2550\u255D</c2>","<c1>\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2551 </c2>","<c2>\u255A\u2550\u2550\u2550\u2550\u2550\u255D </c2>"],"(":[" <c1>\u2588\u2588</c1><c2>\u2557</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2551 ","<c1>\u2588\u2588</c1><c2>\u2551 ","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2> \u255A\u2550\u255D</c2>"],")":["<c1>\u2588\u2588</c1><c2>\u2557 </c2>","<c2>\u255A</c2><c1>\u2588\u2588</c1><c2>\u2557</c2>"," <c1>\u2588\u2588</c1><c2>\u2551</c2>"," <c1>\u2588\u2588</c1><c2>\u2551</c2>","<c1>\u2588\u2588</c1><c2>\u2554\u255D</c2>","<c2>\u255A\u2550\u255D </c2>"],"/":["<c1> \u2588\u2588</c1><c2>\u2557</c2>","<c1> \u2588\u2588</c1><c2>\u2554\u255D</c2>","<c1> \u2588\u2588</c1><c2>\u2554\u255D </c2>"," <c1>\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c1>\u2588\u2588</c1><c2>\u2554\u255D </c2>","<c2>\u255A\u2550\u255D </c2>"],":":[" ","<c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D</c2>","<c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D</c2>"," "],";":[" "," ","<c1>\u2588\u2588</c1><c2>\u2557</c2>","<c2>\u255A\u2550\u255D</c2>","<c1>\u2584\u2588</c1><c2>\u2557</c2>","<c1>\u2580</c1><c2>\u2550\u255D</c2>"],",":[" "," "," "," ","<c1>\u2584\u2588</c1><c2>\u2557</c2>","<c1>\u2580</c1><c2>\u2550\u255D</c2>"],"'":["<c1>\u2588</c1><c2>\u2557</c2> ","<c2>\u255A\u255D</c2> "," "," "," "," "],'"':["<c1>\u2588</c1><c2>\u2557</c2><c1>\u2588</c1><c2>\u2557</c2> ","<c2>\u255A\u255D\u255A\u255D</c2> "," "," "," "," "]," ":[" "," "," "," "," "," "]}},shade_default={name:"shade",version:"0.2.0",homepage:"https://github.com/dominikwilkowski/cfonts",colors:2,lines:8,buffer:["","","","","","","",""],letterspace:["<c2>\u2591</c2>","<c2>\u2591</c2>","<c2>\u2591</c2>","<c2>\u2591</c2>","<c2>\u2591</c2>","<c2>\u2591</c2>","<c2>\u2591</c2>","<c2>\u2591</c2>"],letterspace_size:1,chars:{A:["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],B:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588\u2588\u2588</c1> ","<c1>\u2588 \u2588</c1>","<c1>\u2588\u2588\u2588</c1> "," <c2>\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],C:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588</c1> ","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>"],D:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588\u2588\u2588</c1> "," <c2>\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],E:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588</c1> ","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588</c1> <c2>\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>"],F:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588</c1> ","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588</c1> <c2>\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>"," <c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],G:["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588\u2588</c1>","<c1>\u2588</c1> ","<c1>\u2588</c1><c2>\u2591</c2><c1>\u2588\u2588</c1>","<c1>\u2588</c1><c2>\u2591</c2> <c1>\u2588</c1>","<c1>\u2588\u2588\u2588</c1> "," <c2>\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],H:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],I:["<c2>\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1>"," <c1>\u2588</c1> ","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c1>\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591</c2>"],J:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>"," <c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>"," <c2>\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],K:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588\u2588\u2588</c1> ","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],L:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>"],M:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],N:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588\u2588</c1><c2>\u2591</c2><c1>\u2588</c1>","<c1>\u2588 \u2588\u2588</c1>","<c1>\u2588</c1><c2>\u2591</c2> <c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],O:["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c1>\u2588\u2588</c1> ","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],P:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588\u2588\u2588</c1> ","<c1>\u2588</c1> <c2>\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>"," <c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],Q:["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c1>\u2588\u2588\u2588</c1>","<c2>\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],R:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588\u2588\u2588</c1> ","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],S:["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588\u2588</c1>","<c1>\u2588</c1> "," <c1>\u2588\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2> <c1>\u2588</c1>","<c1>\u2588\u2588\u2588</c1> "," <c2>\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],T:["<c2>\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1>"," <c1>\u2588</c1> ","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591</c2>"],U:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c1>\u2588\u2588</c1> ","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],V:["<c2>\u2591\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2><c1>\u2588</c1>"," <c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1> ","<c2>\u2591</c2> <c1>\u2588</c1> <c2>\u2591</c2>","<c2>\u2591\u2591 \u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591\u2591</c2>"],W:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588 \u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],X:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c1>\u2588\u2588</c1> ","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588</c1>"," <c2>\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],Y:["<c2>\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1>","<c1>\u2588\u2588\u2588</c1>"," <c1>\u2588</c1> ","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591</c2>"],Z:["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," <c1>\u2588</c1> ","<c2>\u2591</c2><c1>\u2588</c1> <c2>\u2591</c2>","<c1>\u2588</c1> <c2>\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>"],"0":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591</c2><c1>\u258C\u2588</c1>","<c1>\u2588</c1><c2>\u2591</c2> <c1>\u2588</c1>"," <c1>\u2588\u2588</c1> ","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"1":["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588</c1><c2>\u2591\u2591</c2>"," <c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>"," <c2>\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"2":["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2590\u2588\u2588</c1><c2>\u2591</c2>"," <c1>\u2588</c1>","<c2>\u2591\u2591</c2><c1>\u2588</c1> ","<c2>\u2591</c2><c1>\u2588</c1> <c2>\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>"],"3":["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," <c1>\u2588</c1>","<c2>\u2591\u2591</c2><c1>\u2588\u2588</c1>","<c2>\u2591\u2591</c2> <c1>\u2588</c1>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>"],"4":["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," <c1>\u2588</c1>","<c2>\u2591\u2591\u2591</c2><c1>\u2588</c1>","<c2>\u2591\u2591\u2591</c2> ","<c2>\u2591\u2591\u2591\u2591</c2>"],"5":["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>","<c1>\u2588</c1> ","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>"," <c1>\u2588</c1>","<c1>\u2588\u2588\u2588</c1> "," <c2>\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"6":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588\u2588</c1>","<c1>\u2588</c1> ","<c1>\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>"," <c1>\u2588\u2588</c1> ","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"7":["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," <c1>\u2588</c1>","<c1>\u2588\u2588\u2588\u2588</c1>"," <c1>\u2588</c1> ","<c1>\u2588</c1> <c2>\u2591\u2591</c2>"," <c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"8":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>"," <c1>\u2588\u2588</c1> ","<c1>\u2588 \u2588</c1>"," <c1>\u2588\u2588</c1> ","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"9":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>"," <c1>\u2588\u2588\u2588</c1>","<c2>\u2591</c2> <c1>\u2588</c1>","<c2>\u2591\u2591</c2><c1>\u2588</c1> ","<c2>\u2591\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"!":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c2>\u2591 \u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"?":["<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2590\u2588\u2588</c1><c2>\u2591</c2>"," <c1>\u2588</c1>","<c2>\u2591\u2591</c2><c1>\u2588</c1> ","<c2>\u2591\u2591 \u2591</c2>","<c2>\u2591\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],".":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"+":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588\u2588</c1>","<c2>\u2591</c2> <c1>\u2588</c1> ","<c2>\u2591\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"-":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],_:["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," "],"=":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c1>\u2588\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],"@":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588</c1><c2>\u2591</c2>","<c1>\u2588 \u2588</c1>","<c1>\u2588</c1><c2>\u2591</c2><c1>\u258C\u2588</c1>","<c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1> "," <c1>\u2588\u2588\u2588</c1>"," ","<c2>\u2591\u2591\u2591\u2591</c2>"],"#":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2>","<c1>\u2588\u2588\u2588\u2588</c1>"," <c1>\u258C\u2590</c1> ","<c1>\u2588\u2588\u2588\u2588</c1>"," <c1>\u258C\u2590</c1> ","<c2>\u2591 \u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],$:["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591</c2><c1>\u258C</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588\u2588\u2588</c1>","<c1>\u2588 \u2588</c1> "," <c1>\u2588\u2588</c1><c2>\u2591</c2>","<c2>\u2591\u2591</c2><c1>\u258C\u2588</c1>","<c1>\u2588\u2588\u2588</c1> "," <c2>\u2591</c2>"],"%":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1> "," <c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1> <c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1>","<c1>\u2588</c1> <c2>\u2591</c2> "," <c2>\u2591\u2591\u2591</c2>"],"&":["<c2>\u2591\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>","<c1>\u2588\u2588\u2588\u2588\u2588</c1>","<c1>\u2588 \u2588</c1> ","<c1>\u2588\u2588\u2588\u2588</c1><c2>\u2591</c2>","<c2> </c2> ","<c2>\u2591\u2591\u2591\u2591\u2591</c2>"],"(":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1> <c2>\u2591</c2>","<c1>\u2588</c1> <c2>\u2591\u2591</c2>","<c1>\u2588</c1><c2>\u2591\u2591\u2591</c2>"," <c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591</c2> <c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591\u2591 \u2591</c2>"],")":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591</c2> <c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591\u2591</c2> <c1>\u2588</c1>","<c2>\u2591\u2591\u2591</c2><c1>\u2588</c1>","<c2>\u2591\u2591</c2><c1>\u2588</c1> ","<c2>\u2591</c2><c1>\u2588</c1> <c2>\u2591</c2>","<c2>\u2591 \u2591\u2591</c2>"],"/":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2><c1>\u2588</c1>","<c2>\u2591\u2591</c2><c1>\u2588</c1> ","<c2>\u2591\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1> <c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c1>\u2588</c1> <c2>\u2591\u2591</c2>"," <c2>\u2591\u2591\u2591</c2>"],":":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591 \u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591 \u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],";":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591 \u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>"],",":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591</c2><c1>\u2588</c1><c2>\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1> <c2>\u2591</c2>"],"'":["<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591 \u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591</c2>"],'"':["<c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2>","<c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2><c1>\u2588</c1><c2>\u2591\u2591</c2>","<c2>\u2591 \u2591 \u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2>"]," ":["<c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2>","<c2>\u2591\u2591\u2591</c2>"]}},slick_default={name:"slick",version:"0.1.0",homepage:"https://github.com/dominikwilkowski/cfonts",colors:2,lines:6,buffer:["","","","","",""],letterspace:["<c2>\u2571</c2>","<c2>\u2571</c2>","<c2>\u2571</c2>","<c2>\u2571</c2>","<c2>\u2571</c2>","<c2>\u2571</c2>"],letterspace_size:1,chars:{A:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2570\u256F</c1><c2>\u2571</c2><c1>\u2570\u256F</c1>"],B:["<c1>\u256D\u2501\u2501\u256E</c1><c2>\u2571</c2>","<c1>\u2503\u256D\u256E\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2570\u256F\u2570\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],C:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2570\u256F</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],D:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2570\u256E\u256D\u256E\u2503</c1>","<c2>\u2571</c2><c1>\u2503\u2503\u2503\u2503</c1>","<c2>\u2571</c2><c1>\u2503\u2503\u2503\u2503</c1>","<c1>\u256D\u256F\u2570\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],E:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u2501\u256F</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u2501\u256F</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],F:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u2501\u256F</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u2501\u256F</c1>","<c1>\u2503\u2503</c1><c2>\u2571\u2571\u2571</c2>","<c1>\u2570\u256F</c1><c2>\u2571\u2571\u2571</c2>"],G:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2570\u256F</c1>","<c1>\u2503\u2503\u256D\u2501\u256E</c1>","<c1>\u2503\u2570\u253B\u2501\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],H:["<c1>\u256D\u256E</c1><c2>\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2570\u256F</c1><c2>\u2571</c2><c1>\u2570\u256F</c1>"],I:["<c1>\u256D\u2501\u2501\u256E</c1>","<c1>\u2570\u252B\u2523\u256F</c1>","<c2>\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571</c2>","<c1>\u256D\u252B\u2523\u256E</c1>","<c1>\u2570\u2501\u2501\u256F</c1>"],J:["<c2>\u2571\u2571</c2><c1>\u256D\u256E</c1>","<c2>\u2571\u2571</c2><c1>\u2503\u2503</c1>","<c2>\u2571\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u256D\u256E\u2503\u2503</c1>","<c1>\u2503\u2570\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u256F</c1>"],K:["<c1>\u256D\u256E\u256D\u2501\u256E</c1>","<c1>\u2503\u2503\u2503\u256D\u256F</c1>","<c1>\u2503\u2570\u256F\u256F</c1><c2>\u2571</c2>","<c1>\u2503\u256D\u256E\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2503\u2503\u2570\u256E</c1>","<c1>\u2570\u256F\u2570\u2501\u256F</c1>"],L:["<c1>\u256D\u256E</c1><c2>\u2571\u2571\u2571</c2>","<c1>\u2503\u2503</c1><c2>\u2571\u2571\u2571</c2>","<c1>\u2503\u2503</c1><c2>\u2571\u2571\u2571</c2>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],M:["<c1>\u256D\u2501\u256E\u256D\u2501\u256E</c1>","<c1>\u2503\u2503\u2570\u256F\u2503\u2503</c1>","<c1>\u2503\u256D\u256E\u256D\u256E\u2503</c1>","<c1>\u2503\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2570\u256F\u2570\u256F\u2570\u256F</c1>"],N:["<c1>\u256D\u2501\u256E</c1><c2>\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2503\u2570\u256E\u2503\u2503</c1>","<c1>\u2503\u256D\u256E\u2570\u256F\u2503</c1>","<c1>\u2503\u2503\u2570\u256E\u2503\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503\u2503</c1>","<c1>\u2570\u256F</c1><c2>\u2571</c2><c1>\u2570\u2501\u256F</c1>"],O:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],P:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2503\u256D\u2501\u2501\u256F</c1>","<c1>\u2503\u2503</c1><c2>\u2571\u2571\u2571</c2>","<c1>\u2570\u256F</c1><c2>\u2571\u2571\u2571</c2>"],Q:["<c1>\u256D\u2501\u2501\u2501\u256E</c1><c2>\u2571</c2>","<c1>\u2503\u256D\u2501\u256E\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2570\u2501\u256F\u2503\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u2501\u256F</c1>"],R:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2503\u256D\u256E\u256D\u256F</c1>","<c1>\u2503\u2503\u2503\u2570\u256E</c1>","<c1>\u2570\u256F\u2570\u2501\u256F</c1>"],S:["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],T:["<c1>\u256D\u2501\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u256E\u256D\u256E\u2503</c1>","<c1>\u2570\u256F\u2503\u2503\u2570\u256F</c1>","<c2>\u2571\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2><c1>\u2570\u256F</c1><c2>\u2571\u2571</c2>"],U:["<c1>\u256D\u256E</c1><c2>\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],V:["<c1>\u256D\u256E</c1><c2>\u2571\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2570\u256E\u256D\u256F\u2503</c1>","<c1>\u2570\u256E\u2503\u2503\u256D\u256F</c1>","<c2>\u2571</c2><c1>\u2503\u2570\u256F\u2503</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u2570\u256E\u256D\u256F</c1><c2>\u2571</c2>","<c2>\u2571\u2571</c2><c1>\u2570\u256F</c1><c2>\u2571\u2571</c2>"],W:["<c1>\u256D\u256E\u256D\u256E\u256D\u256E</c1>","<c1>\u2503\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2570\u256F\u2570\u256F\u2503</c1>","<c1>\u2570\u256E\u256D\u256E\u256D\u256F</c1>","<c2>\u2571</c2><c1>\u2570\u256F\u2570\u256F</c1><c2>\u2571</c2>"],X:["<c1>\u256D\u2501\u256E\u256D\u2501\u256E</c1>","<c1>\u2570\u256E\u2570\u256F\u256D\u256F</c1>","<c2>\u2571</c2><c1>\u2570\u256E\u256D\u256F</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u256D\u256F\u2570\u256E</c1><c2>\u2571</c2>","<c1>\u256D\u256F\u256D\u256E\u2570\u256E</c1>","<c1>\u2570\u2501\u256F\u2570\u2501\u256F</c1>"],Y:["<c1>\u256D\u256E</c1><c2>\u2571\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2570\u256E\u256D\u256F\u2503</c1>","<c1>\u2570\u256E\u2570\u256F\u256D\u256F</c1>","<c2>\u2571</c2><c1>\u2570\u256E\u256D\u256F</c1><c2>\u2571</c2>","<c2>\u2571\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2><c1>\u2570\u256F</c1><c2>\u2571\u2571</c2>"],Z:["<c1>\u256D\u2501\u2501\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u256E\u2501\u2503</c1>","<c2>\u2571\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1>","<c2>\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571</c2>","<c1>\u256D\u256F\u2501\u2570\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u2501\u256F</c1>"],"0":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"1":["<c2>\u2571</c2><c1>\u256D\u256E</c1><c2>\u2571</c2>","<c1>\u256D\u256F\u2503</c1><c2>\u2571</c2>","<c1>\u2570\u256E\u2503</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571</c2>","<c1>\u256D\u256F\u2570\u256E</c1>","<c1>\u2570\u2501\u2501\u256F</c1>"],"2":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2570\u256F\u256D\u256F\u2503</c1>","<c1>\u256D\u2501\u256F\u256D\u256F</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"3":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2570\u256F\u256D\u256F\u2503</c1>","<c1>\u256D\u256E\u2570\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"4":["<c1>\u256D\u256E</c1><c2>\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2503\u2503</c1><c2>\u2571</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u256E\u2503</c1>","<c2>\u2571\u2571\u2571</c2><c1>\u2503\u2503</c1>","<c2>\u2571\u2571\u2571</c2><c1>\u2570\u256F</c1>"],"5":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u2501\u256F</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u256E\u2503</c1>","<c1>\u256D\u2501\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"6":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u2501\u256F</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"7":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2570\u256F\u256D\u256F\u2503</c1>","<c2>\u2571\u2571</c2><c1>\u2503\u256D\u256F</c1>","<c2>\u2571\u2571</c2><c1>\u2503\u2503</c1><c2>\u2571</c2>","<c2>\u2571\u2571</c2><c1>\u2570\u256F</c1><c2>\u2571</c2>"],"8":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"9":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2503\u2570\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u256E\u2503</c1>","<c1>\u256D\u2501\u2501\u256F\u2503</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"!":["<c1>\u256D\u256E</c1>","<c1>\u2503\u2503</c1>","<c1>\u2503\u2503</c1>","<c1>\u2570\u256F</c1>","<c1>\u256D\u256E</c1>","<c1>\u2570\u256F</c1>"],"?":["<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2503\u256D\u2501\u256E\u2503</c1>","<c1>\u2570\u256F\u256D\u256F\u2503</c1>","<c2>\u2571\u2571</c2><c1>\u2503\u256D\u256F</c1>","<c2>\u2571\u2571</c2><c1>\u256D\u256E</c1><c2>\u2571</c2>","<c2>\u2571\u2571</c2><c1>\u2570\u256F</c1><c2>\u2571</c2>"],".":["<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>","<c1>\u256D\u256E</c1>","<c1>\u2570\u256F</c1>"],"+":["<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571</c2><c1>\u256D\u256E</c1><c2>\u2571</c2>","<c1>\u256D\u256F\u2570\u256E</c1>","<c1>\u2570\u256E\u256D\u256F</c1>","<c2>\u2571</c2><c1>\u2570\u256F</c1><c2>\u2571</c2>"],"-":["<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c1>\u256D\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u256F</c1>","<c2>\u2571\u2571\u2571\u2571</c2>"],_:["<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c1>\u256D\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u256F</c1>"],"=":["<c2>\u2571\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571\u2571</c2>","<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>","<c1>\u256D\u2501\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"@":["<c1>\u256D\u2501\u2501\u2501\u2501\u256E</c1><c2>\u2571</c2>","<c1>\u2503\u256D\u2501\u2501\u256E\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2503\u256D\u2501\u2503\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2503\u2570\u256F\u2503\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2570\u2501\u2501\u256F\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u2501\u2501\u256F</c1>"],"#":["<c2>\u2571</c2><c1>\u256D\u2501\u2501\u256E</c1><c2>\u2571</c2>","<c1>\u256D\u256F\u256D\u256E\u2570\u256E</c1>","<c1>\u2570\u256E\u2503\u2503\u256D\u256F</c1>","<c1>\u256D\u256F\u2503\u2503\u2570\u256E</c1>","<c1>\u2570\u256E\u2570\u256F\u256D\u256F</c1>","<c2>\u2571</c2><c1>\u2570\u2501\u2501\u256F</c1><c2>\u2571</c2>"],$:["<c2>\u2571\u2571</c2><c1>\u256D\u256E</c1><c2>\u2571</c2>","<c1>\u256D\u2501\u256F\u2570\u256E</c1>","<c1>\u2503\u2570\u2501\u2501\u256E</c1>","<c1>\u2570\u2501\u2501\u256E\u2503</c1>","<c1>\u2570\u256E\u256D\u2501\u256F</c1>","<c2>\u2571</c2><c1>\u2570\u256F</c1><c2>\u2571\u2571</c2>"],"%":["<c1>\u256D\u256E</c1><c2>\u2571\u2571</c2><c1>\u256D\u2501\u256E</c1>","<c1>\u2570\u256F</c1><c2>\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1>","<c2>\u2571\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571\u2571</c2>","<c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571</c2><c1>\u256D\u256E</c1>","<c1>\u2570\u2501\u256F</c1><c2>\u2571\u2571</c2><c1>\u2570\u256F</c1>"],"&":["<c2>\u2571</c2><c1>\u256D\u2501\u2501\u256E</c1>","<c2>\u2571</c2><c1>\u2503\u256D\u2501\u256F</c1>","<c1>\u256D\u256F\u2570\u256E</c1><c2>\u2571</c2>","<c1>\u2503\u256D\u256E\u2503</c1><c2>\u2571</c2>","<c1>\u2503\u2570\u256F\u2503\u256E</c1>","<c1>\u2570\u2501\u2501\u2501\u256F</c1>"],"(":["<c2>\u2571\u2571</c2><c1>\u256D\u2501\u256E</c1>","<c2>\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1>","<c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571</c2>","<c1>\u2570\u256E\u2570\u256E</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u2570\u256E\u2570\u256E</c1>","<c2>\u2571\u2571</c2><c1>\u2570\u2501\u256F</c1>"],")":["<c1>\u256D\u2501\u256E</c1><c2>\u2571\u2571</c2>","<c1>\u2570\u256E\u2570\u256E</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u2570\u256E\u2570\u256E</c1>","<c2>\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1>","<c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571</c2>","<c1>\u2570\u2501\u256F</c1><c2>\u2571\u2571</c2>"],"/":["<c2>\u2571\u2571\u2571\u2571</c2><c1>\u256D\u2501\u256E</c1>","<c2>\u2571\u2571\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1>","<c2>\u2571\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571</c2>","<c2>\u2571</c2><c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571\u2571</c2>","<c1>\u256D\u256F\u256D\u256F</c1><c2>\u2571\u2571\u2571</c2>","<c1>\u2570\u2501\u256F</c1><c2>\u2571\u2571\u2571\u2571</c2>"],":":["<c2>\u2571\u2571</c2>","<c1>\u256D\u256E</c1>","<c1>\u2570\u256F</c1>","<c1>\u256D\u256E</c1>","<c1>\u2570\u256F</c1>","<c2>\u2571\u2571</c2>"],";":["<c1>\u256D\u256E</c1>","<c1>\u2503\u2503</c1>","<c1>\u2570\u256F</c1>","<c1>\u256D\u256E</c1>","<c1>\u2570\u252B</c1>","<c2>\u2571</c2><c1>\u256F</c1>"],",":["<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>","<c1>\u256D\u256E</c1>","<c1>\u2570\u252B</c1>","<c2>\u2571</c2><c1>\u256F</c1>"],"'":["<c1>\u256D\u256E</c1>","<c1>\u2570\u256F</c1>","<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>","<c2>\u2571\u2571</c2>"],'"':["<c1>\u256D\u256E\u256D\u256E</c1>","<c1>\u2570\u256F\u2570\u256F</c1>","<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571\u2571</c2>"]," ":["<c2>\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571</c2>","<c2>\u2571\u2571\u2571</c2>"]}},tiny_default={name:"tiny",version:"0.2.0",homepage:"https://github.com/dominikwilkowski/cfonts",colors:1,lines:2,buffer:["",""],letterspace:[" "," "],letterspace_size:1,chars:{A:["\u2584\u2580\u2588","\u2588\u2580\u2588"],B:["\u2588\u2584\u2584","\u2588\u2584\u2588"],C:["\u2588\u2580\u2580","\u2588\u2584\u2584"],D:["\u2588\u2580\u2584","\u2588\u2584\u2580"],E:["\u2588\u2580\u2580","\u2588\u2588\u2584"],F:["\u2588\u2580\u2580","\u2588\u2580 "],G:["\u2588\u2580\u2580","\u2588\u2584\u2588"],H:["\u2588 \u2588","\u2588\u2580\u2588"],I:["\u2588","\u2588"],J:[" \u2588","\u2588\u2584\u2588"],K:["\u2588\u2584\u2580","\u2588 \u2588"],L:["\u2588 ","\u2588\u2584\u2584"],M:["\u2588\u2580\u2584\u2580\u2588","\u2588 \u2580 \u2588"],N:["\u2588\u2584 \u2588","\u2588 \u2580\u2588"],O:["\u2588\u2580\u2588","\u2588\u2584\u2588"],P:["\u2588\u2580\u2588","\u2588\u2580\u2580"],Q:["\u2588\u2580\u2588","\u2580\u2580\u2588"],R:["\u2588\u2580\u2588","\u2588\u2580\u2584"],S:["\u2588\u2580\u2580","\u2584\u2584\u2588"],T:["\u2580\u2588\u2580"," \u2588 "],U:["\u2588 \u2588","\u2588\u2584\u2588"],V:["\u2588 \u2588","\u2580\u2584\u2580"],W:["\u2588 \u2588 \u2588","\u2580\u2584\u2580\u2584\u2580"],X:["\u2580\u2584\u2580","\u2588 \u2588"],Y:["\u2588\u2584\u2588"," \u2588 "],Z:["\u2580\u2588","\u2588\u2584"],"0":["\u259E\u2588\u259A","\u259A\u2588\u259E"],"1":["\u2584\u2588"," \u2588"],"2":["\u2580\u2588","\u2588\u2584"],"3":["\u2580\u2580\u2588","\u2584\u2588\u2588"],"4":["\u2588 \u2588","\u2580\u2580\u2588"],"5":["\u2588\u2580","\u2584\u2588"],"6":["\u2588\u2584\u2584","\u2588\u2584\u2588"],"7":["\u2580\u2580\u2588"," \u2588"],"8":["\u2588\u2588\u2588","\u2588\u2584\u2588"],"9":["\u2588\u2580\u2588","\u2580\u2580\u2588"],"!":["\u2588","\u2584"],"?":["\u2580\u2588"," \u2584"],".":[" ","\u2584"],"+":["\u2584\u2588\u2584"," \u2580 "],"-":["\u2584\u2584"," "],_:[" ","\u2584\u2584"],"=":["\u2580\u2580","\u2580\u2580"],"@":["\u259B\u2588\u259C","\u2599\u259F\u2583"],"#":["\u259F\u2584\u2599","\u259C\u2580\u259B"],$:["\u2596\u2588\u2597","\u2598\u2588\u259D"],"%":["\u2580 \u2584\u2580","\u2584\u2580 \u2584"],"&":["\u2584\u2584\u2588","\u2588\u2584\u2588"],"(":["\u2584\u2580","\u2580\u2584"],")":["\u2580\u2584","\u2584\u2580"],"/":[" \u2584\u2580","\u2584\u2580 "],":":["\u2580","\u2584"],";":[" ","\u2584\u2580"],",":[" ","\u2588"],"'":["\u2580"," "],'"':["\u259B \u259C"," "]," ":[" "," "]}},huge_default={name:"huge",version:"0.2.0",homepage:"https://github.com/dominikwilkowski/cfonts",colors:2,lines:11,buffer:["","","","","","","","","","",""],letterspace:[" "," "," "," "," "," "," "," "," "," "," "],letterspace_size:1,chars:{A:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2580 \u2580</c1> "],B:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],C:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],D:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],E:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],F:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],G:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],H:[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2580 \u2580</c1> "],I:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],J:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],K:[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2580 \u2580</c1> "],L:[" <c1>\u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],M:[" <c1>\u2584\u2584 \u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2580 \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2580 \u2580</c1> "],N:[" <c1>\u2584\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580 \u2580\u2580</c1> "],O:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],P:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],Q:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],R:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2580 \u2580</c1> "],S:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],T:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],U:[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],V:[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],W:[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2584 \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580 \u2580\u2580</c1> "],X:[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2580 \u2580</c1> "],Y:[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],Z:[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"0":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> "," <c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"1":[" <c1>\u2584\u2584\u2584\u2584</c1> "," <c1>\u2584\u2588</c1><c2>\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580 \u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"2":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"3":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"4":[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2580</c1> "],"5":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"6":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"7":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],"8":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"9":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"!":[" <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580</c1> "," <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580</c1> "],"?":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> "," <c1>\u2584\u2588</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u2588\u2584</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580 \u2584\u2584\u2584\u2588</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2588</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u2588</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C\u2580\u2580\u2580\u2580</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580</c1> "," <c1>\u2584\u2584</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580</c1> "],".":[" "," "," "," "," "," "," "," "," <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580</c1> "],"+":[" "," "," <c1>\u2584\u2584</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2584\u2584\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2588</c1><c2>\u2591\u2591</c2><c1>\u2588\u2580\u2580</c1> "," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580</c1> "," "," "],"-":[" "," "," "," "," <c1>\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580</c1> "," "," "," "," "],_:[" "," "," "," "," "," "," "," <c1>\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580</c1> "," "],"=":[" "," "," <c1>\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580</c1> "," "," <c1>\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580</c1> "," "," "],"@":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2584\u2584\u2584\u2584 \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2588</c1><c2>\u2591\u2591\u2591\u2591</c2><c1>\u2588 \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u2588\u2588\u2588\u2588</c1><c2>\u2591</c2><c1>\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2588</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C\u2584\u2584\u2588\u2588\u2588\u2588\u2588\u2588\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2580</c1> "],"#":[" <c1>\u2584 \u2584</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580 \u2580</c1> "],$:[" <c1>\u2584</c1> "," <c1>\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580</c1> "," <c1>\u2580</c1> "],"%":[" <c1>\u2584</c1> "," <c1>\u2584 \u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580 \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2584</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2580</c1> "," <c1>\u2580</c1> "],"&":[" <c1>\u2584\u2584\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2580\u2580\u2580\u2580\u2588</c1><c2>\u2591</c2><c1>\u258C \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C \u2590</c1><c2>\u2591</c2><c1>\u2588</c1><c2>\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2588\u2584\u2584\u2584\u2584\u2588</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580\u2580\u2580\u2580\u2580 \u2580</c1> "],"(":[" <c1>\u2584\u2584\u2584\u2584\u2584</c1> "," <c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u2588\u2580\u2580\u2580</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u2588\u2584\u2584\u2584</c1> "," <c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580\u2580\u2580\u2580</c1> "],")":[" <c1>\u2584\u2584\u2584\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580\u2580\u2588</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2584\u2584\u2584\u2588</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>","<c1>\u2590</c1><c2>\u2591\u2591\u2591\u2591\u2591</c2><c1>\u258C</c1> "," <c1>\u2580\u2580\u2580\u2580\u2580</c1> "],"/":[" <c1>\u2584</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1>"," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u258C</c1> "," <c1>\u2580</c1> "],":":[" "," "," <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580</c1> "," "," <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580</c1> "," "," "],";":[" "," "," <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u2580</c1> "," "," <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u258C</c1> "," <c1>\u2580</c1> "," "],",":[" "," "," "," "," "," "," "," <c1>\u2584\u2584</c1> ","<c1>\u2590</c1><c2>\u2591\u2591</c2><c1>\u258C</c1>"," <c1>\u2580\u258C</c1> "," <c1>\u2580</c1> "],"'":[" <c1>\u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2590</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2590</c1>"," <c1>\u2580</c1> "," "," "," "," "," "," "," "],'"':[" <c1>\u2584 \u2584</c1> ","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2590\u2590</c1><c2>\u2591</c2><c1>\u2590</c1>","<c1>\u2590</c1><c2>\u2591</c2><c1>\u2590\u2590</c1><c2>\u2591</c2><c1>\u2590</c1>"," <c1>\u2580 \u2580</c1> "," "," "," "," "," "," "," "]," ":[" "," "," "," "," "," "," "," "," "," "," "]}},grid_default={name:"grid",version:"0.1.0",homepage:"https://github.com/dominikwilkowski/cfonts",colors:2,lines:6,buffer:["","","","","",""],letterspace:["<c2>\u254B</c2>","<c2>\u254B</c2>","<c2>\u254B</c2>","<c2>\u254B</c2>","<c2>\u254B</c2>","<c2>\u254B</c2>"],letterspace_size:1,chars:{A:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2517\u251B\u2517\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],B:["<c1>\u250F\u2513</c1><c2>\u254B\u254B</c2>","<c1>\u2503\u2517\u2501\u2513</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],C:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u251B</c1>","<c1>\u2503\u2517\u2501\u2513</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],D:["<c2>\u254B\u254B</c2><c1>\u250F\u2513</c1>","<c1>\u250F\u2501\u251B\u2503</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],E:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u2503\u2501\u252B</c1>","<c1>\u2503\u2503\u2501\u252B</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],F:["<c2>\u254B</c2><c1>\u250F\u2501\u2513</c1>","<c1>\u250F\u251B\u2517\u2513</c1>","<c1>\u2517\u2513\u250F\u251B</c1>","<c2>\u254B</c2><c1>\u2503\u2503</c1><c2>\u254B</c2>","<c2>\u254B</c2><c1>\u2517\u251B</c1><c2>\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>"],G:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2517\u2501\u2513\u2503</c1>","<c1>\u2517\u2501\u2501\u251B</c1>"],H:["<c1>\u250F\u2513</c1><c2>\u254B\u254B</c2>","<c1>\u2503\u2517\u2501\u2513</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u2503\u2503\u2503</c1>","<c1>\u2517\u251B\u2517\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],I:["<c1>\u250F\u2513</c1>","<c1>\u2517\u251B</c1>","<c1>\u250F\u2513</c1>","<c1>\u2503\u2503</c1>","<c1>\u2517\u251B</c1>","<c2>\u254B\u254B</c2>"],J:["<c2>\u254B</c2><c1>\u250F\u2513</c1>","<c2>\u254B</c2><c1>\u2517\u251B</c1>","<c2>\u254B</c2><c1>\u250F\u2513</c1>","<c2>\u254B</c2><c1>\u2503\u2503</c1>","<c1>\u250F\u251B\u2503</c1>","<c1>\u2517\u2501\u251B</c1>"],K:["<c1>\u250F\u2513</c1><c2>\u254B\u254B</c2>","<c1>\u2503\u2503\u250F\u2513</c1>","<c1>\u2503\u2517\u251B\u251B</c1>","<c1>\u2503\u250F\u2513\u2513</c1>","<c1>\u2517\u251B\u2517\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],L:["<c1>\u250F\u2513</c1><c2>\u254B</c2>","<c1>\u2503\u2503</c1><c2>\u254B</c2>","<c1>\u2503\u2503</c1><c2>\u254B</c2>","<c1>\u2503\u2517\u2513</c1>","<c1>\u2517\u2501\u251B</c1>","<c2>\u254B\u254B\u254B</c2>"],M:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2513\u250F\u2513</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2503\u2503\u2503\u2503</c1>","<c1>\u2517\u253B\u253B\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],N:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2513</c1><c2>\u254B</c2>","<c1>\u2503\u250F\u2513\u2513</c1>","<c1>\u2503\u2503\u2503\u2503</c1>","<c1>\u2517\u251B\u2517\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],O:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],P:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2503\u250F\u2501\u251B</c1>","<c1>\u2517\u251B</c1><c2>\u254B\u254B</c2>"],Q:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2513\u2503</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2517\u2501\u2513\u2503</c1>","<c2>\u254B\u254B</c2><c1>\u2517\u251B</c1>"],R:["<c2>\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2513</c1>","<c1>\u2503\u250F\u251B</c1>","<c1>\u2503\u2503</c1><c2>\u254B</c2>","<c1>\u2517\u251B</c1><c2>\u254B</c2>","<c2>\u254B\u254B\u254B</c2>"],S:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2503\u2501\u2501\u252B</c1>","<c1>\u2523\u2501\u2501\u2503</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],T:["<c2>\u254B</c2><c1>\u250F\u2513</c1><c2>\u254B</c2>","<c1>\u250F\u251B\u2517\u2513</c1>","<c1>\u2517\u2513\u250F\u251B</c1>","<c2>\u254B</c2><c1>\u2503\u2517\u2513</c1>","<c2>\u254B</c2><c1>\u2517\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],U:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2513\u250F\u2513</c1>","<c1>\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],V:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2513\u250F\u2513</c1>","<c1>\u2503\u2517\u251B\u2503</c1>","<c1>\u2517\u2513\u250F\u251B</c1>","<c2>\u254B</c2><c1>\u2517\u251B</c1><c2>\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>"],W:["<c2>\u254B\u254B\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2513\u250F\u2513\u250F\u2513</c1>","<c1>\u2503\u2517\u251B\u2517\u251B\u2503</c1>","<c1>\u2517\u2513\u250F\u2513\u250F\u251B</c1>","<c2>\u254B</c2><c1>\u2517\u251B\u2517\u251B</c1><c2>\u254B</c2>","<c2>\u254B\u254B\u254B\u254B\u254B\u254B</c2>"],X:["<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2513\u250F\u2513</c1>","<c1>\u2517\u254B\u254B\u251B</c1>","<c1>\u250F\u254B\u254B\u2513</c1>","<c1>\u2517\u251B\u2517\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>"],Y:["<c2>\u254B\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2513</c1><c2>\u254B</c2><c1>\u250F\u2513</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2513\u250F\u251B</c1>","<c1>\u2517\u2501\u2501\u251B</c1><c2>\u254B</c2>","<c2>\u254B\u254B\u254B\u254B\u254B</c2>"],Z:["<c2>\u254B\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2523\u2501\u2501\u2503\u2503</c1>","<c1>\u2503\u2503\u2501\u2501\u252B</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B\u254B</c2>"],"0":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2503\u2503\u2503\u2503</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>"],"1":["<c2>\u254B</c2><c1>\u250F\u2513</c1><c2>\u254B</c2>","<c1>\u250F\u251B\u2503</c1><c2>\u254B</c2>","<c1>\u2517\u2513\u2503</c1><c2>\u254B</c2>","<c2>\u254B</c2><c1>\u2503\u2503</c1><c2>\u254B</c2>","<c1>\u250F\u251B\u2517\u2513</c1>","<c1>\u2517\u2501\u2501\u251B</c1>"],"2":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2517\u251B\u250F\u251B\u2503</c1>","<c1>\u250F\u2501\u251B\u250F\u251B</c1>","<c1>\u2503\u2517\u2501\u253B\u2513</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>"],"3":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2517\u251B\u250F\u251B\u2503</c1>","<c1>\u250F\u2513\u2517\u2513\u2503</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>"],"4":["<c1>\u250F\u2513</c1><c2>\u254B</c2><c1>\u250F\u2513</c1>","<c1>\u2503\u2503</c1><c2>\u254B</c2><c1>\u2503\u2503</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2513\u2503</c1>","<c2>\u254B\u254B\u254B</c2><c1>\u2503\u2503</c1>","<c2>\u254B\u254B\u254B</c2><c1>\u2517\u251B</c1>"],"5":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2501\u251B</c1>","<c1>\u2503\u2517\u2501\u2501\u2513</c1>","<c1>\u2517\u2501\u2501\u2513\u2503</c1>","<c1>\u250F\u2501\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>"],"6":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2501\u251B</c1>","<c1>\u2503\u2517\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>"],"7":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2517\u251B\u250F\u251B\u2503</c1>","<c2>\u254B\u254B</c2><c1>\u2503\u250F\u251B</c1>","<c2>\u254B\u254B</c2><c1>\u2503\u2503</c1><c2>\u254B</c2>","<c2>\u254B\u254B</c2><c1>\u2517\u251B</c1><c2>\u254B</c2>"],"8":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>"],"9":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2503\u2517\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2513\u2503</c1>","<c1>\u250F\u2501\u2501\u251B\u2503</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>"],"!":["<c1>\u250F\u2513</c1>","<c1>\u2503\u2503</c1>","<c1>\u2503\u2503</c1>","<c1>\u2517\u251B</c1>","<c1>\u250F\u2513</c1>","<c1>\u2517\u251B</c1>"],"?":["<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2503\u250F\u2501\u2513\u2503</c1>","<c1>\u2517\u251B\u250F\u251B\u2503</c1>","<c2>\u254B\u254B</c2><c1>\u2503\u250F\u251B</c1>","<c2>\u254B\u254B</c2><c1>\u250F\u2513</c1><c2>\u254B</c2>","<c2>\u254B\u254B</c2><c1>\u2517\u251B</c1><c2>\u254B</c2>"],".":["<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c1>\u250F\u2513</c1>","<c1>\u2517\u251B</c1>"],"+":["<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B</c2><c1>\u250F\u2513</c1><c2>\u254B</c2>","<c1>\u250F\u251B\u2517\u2513</c1>","<c1>\u2517\u2513\u250F\u251B</c1>","<c2>\u254B</c2><c1>\u2517\u251B</c1><c2>\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>"],"-":["<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2517\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>"],_:["<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2513</c1>","<c1>\u2517\u2501\u2501\u251B</c1>"],"=":["<c2>\u254B\u254B\u254B\u254B\u254B</c2>","<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>","<c1>\u250F\u2501\u2501\u2501\u2513</c1>","<c1>\u2517\u2501\u2501\u2501\u251B</c1>","<c2>\u254B\u254B\u254B\u254B\u254B</c2>"],"@":["<c1>\u250F\u2501\u2501\u2501\u2501\u2513</c1><c2>\u254B</c2>","<c1>\u2503\u250F\u2501\u2501\u2513\u2503</c1><c2>\u254B</c2>","<c1>\u2503\u2503\u250F\u2501\u2503\u2503</c1><c2>\u254B</c2>","<c1>\u2503\u2503\u2517\u251B\u2503\u2503</c1><c2>\u254B</c2>","<c1>\u2503\u2517\u2501\u2501\u251B\u2517\u2513</c1>","<c1>\u2517\u2501\u2501\u2501\u2501\u2501\u251B</c1>"],"#":["<c2>\u254B</c2><c1>\u250F\u2501\u2501\u2501\u2513</c1><c2>\u254B</c2>","<c1>\u250F\u251B\u250F\u2501\u2513\u2517\u2513</c1>","<c1>\u2517\u2513\u2503\u2503\u2503\u250F\u251B</c1>","<c1>\u250F\u251B\u2503\u2503\u2503\u2517\u2513</c1>","<c1>\u2517\u2513\u2517\u2501\u251B\u250F\u251B</c1>","<c2>\u254B</c2><c1>\u2517\u2501\u2501\u2501\u251B</c1><c2>\u254B</c2>"],$:["<c2>\u254B</c2><c1>\u250F\u2513</c1><c2>\u254B</c2>","<c1>\u250F\u251B\u2517\u2513</c1>","<c1>\u2503\u2501\u2501\u252B</c1>","<c1>\u2523\u2501\u2501\u2503</c1>","<c1>\u2517\u2513\u250F\u251B</c1>","<c2>\u254B</c2><c1>\u2517\u251B</c1><c2>\u254B</c2>"],"%":["<c1>\u250F\u2513</c1><c2>\u254B\u254B</c2><c1>\u250F\u2501\u2513</c1>","<c1>\u2517\u251B</c1><c2>\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1>","<c2>\u254B\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B</c2>","<c2>\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B\u254B</c2>","<c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B</c2><c1>\u250F\u2513</c1>","<c1>\u2517\u2501\u251B</c1><c2>\u254B\u254B</c2><c1>\u2517\u251B</c1>"],"&":["<c2>\u254B\u254B</c2><c1>\u250F\u2513</c1><c2>\u254B</c2>","<c2>\u254B\u254B</c2><c1>\u2503\u2503</c1><c2>\u254B</c2>","<c1>\u250F\u2501\u251B\u2517\u2513</c1>","<c1>\u2503\u250F\u2513\u250F\u251B</c1>","<c1>\u2503\u2517\u251B\u2503</c1><c2>\u254B</c2>","<c1>\u2517\u2501\u2501\u251B</c1><c2>\u254B</c2>"],"(":["<c2>\u254B\u254B</c2><c1>\u250F\u2501\u2513</c1>","<c2>\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1>","<c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B</c2>","<c1>\u2517\u2513\u2517\u2513</c1><c2>\u254B</c2>","<c2>\u254B</c2><c1>\u2517\u2513\u2517\u2513</c1>","<c2>\u254B\u254B</c2><c1>\u2517\u2501\u251B</c1>"],")":["<c1>\u250F\u2501\u2513</c1><c2>\u254B\u254B</c2>","<c1>\u2517\u2513\u2517\u2513</c1><c2>\u254B</c2>","<c2>\u254B</c2><c1>\u2517\u2513\u2517\u2513</c1>","<c2>\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1>","<c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B</c2>","<c1>\u2517\u2501\u251B</c1><c2>\u254B\u254B</c2>"],"/":["<c2>\u254B\u254B\u254B\u254B</c2><c1>\u250F\u2501\u2513</c1>","<c2>\u254B\u254B\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1>","<c2>\u254B\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B</c2>","<c2>\u254B</c2><c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B\u254B</c2>","<c1>\u250F\u251B\u250F\u251B</c1><c2>\u254B\u254B\u254B</c2>","<c1>\u2517\u2501\u251B</c1><c2>\u254B\u254B\u254B\u254B</c2>"],":":["<c2>\u254B\u254B</c2>","<c1>\u250F\u2513</c1>","<c1>\u2517\u251B</c1>","<c1>\u250F\u2513</c1>","<c1>\u2517\u251B</c1>","<c2>\u254B\u254B</c2>"],";":["<c2>\u254B\u254B</c2>","<c1>\u250F\u2513</c1>","<c1>\u2517\u251B</c1>","<c2>\u254B\u254B</c2>","<c1>\u250F\u2513</c1>","<c1>\u2517\u252B</c1>"],",":["<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c1>\u250F\u2513</c1>","<c1>\u2517\u252B</c1>"],"'":["<c1>\u250F\u2513</c1>","<c1>\u2517\u251B</c1>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>"],'"':["<c1>\u250F\u2513\u250F\u2513</c1>","<c1>\u2517\u251B\u2517\u251B</c1>","<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>","<c2>\u254B\u254B\u254B\u254B</c2>"]," ":["<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>","<c2>\u254B\u254B</c2>"]}},pallet_default={name:"pallet",version:"0.1.0",homepage:"https://github.com/dominikwilkowski/cfonts",colors:2,lines:6,buffer:["","","","","",""],letterspace:["<c2>\u2500</c2>","<c2>\u2500</c2>","<c2>\u2500</c2>","<c2>\u2500</c2>","<c2>\u2500</c2>","<c2>\u2500</c2>"],letterspace_size:1,chars:{A:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u255A\u255D</c1><c2>\u2500</c2><c1>\u255A\u255D</c1>"],B:["<c1>\u2554\u2550\u2550\u2557</c1><c2>\u2500</c2>","<c1>\u2551\u2554\u2557\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u255A\u255D\u255A\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],C:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u255A\u255D</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],D:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u255A\u2557\u2554\u2557\u2551</c1>","<c2>\u2500</c2><c1>\u2551\u2551\u2551\u2551</c1>","<c2>\u2500</c2><c1>\u2551\u2551\u2551\u2551</c1>","<c1>\u2554\u255D\u255A\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],E:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2550\u255D</c1>","<c1>\u2551\u255A\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2550\u255D</c1>","<c1>\u2551\u255A\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],F:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2550\u255D</c1>","<c1>\u2551\u255A\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2550\u255D</c1>","<c1>\u2551\u2551</c1><c2>\u2500\u2500\u2500</c2>","<c1>\u255A\u255D</c1><c2>\u2500\u2500\u2500</c2>"],G:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u255A\u255D</c1>","<c1>\u2551\u2551\u2554\u2550\u2557</c1>","<c1>\u2551\u255A\u2569\u2550\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],H:["<c1>\u2554\u2557</c1><c2>\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u255A\u255D</c1><c2>\u2500</c2><c1>\u255A\u255D</c1>"],I:["<c1>\u2554\u2550\u2550\u2557</c1>","<c1>\u255A\u2563\u2560\u255D</c1>","<c2>\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500</c2>","<c1>\u2554\u2563\u2560\u2557</c1>","<c1>\u255A\u2550\u2550\u255D</c1>"],J:["<c2>\u2500\u2500</c2><c1>\u2554\u2557</c1>","<c2>\u2500\u2500</c2><c1>\u2551\u2551</c1>","<c2>\u2500\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2554\u2557\u2551\u2551</c1>","<c1>\u2551\u255A\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u255D</c1>"],K:["<c1>\u2554\u2557\u2554\u2550\u2557</c1>","<c1>\u2551\u2551\u2551\u2554\u255D</c1>","<c1>\u2551\u255A\u255D\u255D</c1><c2>\u2500</c2>","<c1>\u2551\u2554\u2557\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u2551\u2551\u255A\u2557</c1>","<c1>\u255A\u255D\u255A\u2550\u255D</c1>"],L:["<c1>\u2554\u2557</c1><c2>\u2500\u2500\u2500</c2>","<c1>\u2551\u2551</c1><c2>\u2500\u2500\u2500</c2>","<c1>\u2551\u2551</c1><c2>\u2500\u2500\u2500</c2>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],M:["<c1>\u2554\u2550\u2557\u2554\u2550\u2557</c1>","<c1>\u2551\u2551\u255A\u255D\u2551\u2551</c1>","<c1>\u2551\u2554\u2557\u2554\u2557\u2551</c1>","<c1>\u2551\u2551\u2551\u2551\u2551\u2551</c1>","<c1>\u2551\u2551\u2551\u2551\u2551\u2551</c1>","<c1>\u255A\u255D\u255A\u255D\u255A\u255D</c1>"],N:["<c1>\u2554\u2550\u2557</c1><c2>\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u2551\u255A\u2557\u2551\u2551</c1>","<c1>\u2551\u2554\u2557\u255A\u255D\u2551</c1>","<c1>\u2551\u2551\u255A\u2557\u2551\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551\u2551</c1>","<c1>\u255A\u255D</c1><c2>\u2500</c2><c1>\u255A\u2550\u255D</c1>"],O:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],P:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u2551\u2554\u2550\u2550\u255D</c1>","<c1>\u2551\u2551</c1><c2>\u2500\u2500\u2500</c2>","<c1>\u255A\u255D</c1><c2>\u2500\u2500\u2500</c2>"],Q:["<c1>\u2554\u2550\u2550\u2550\u2557</c1><c2>\u2500</c2>","<c1>\u2551\u2554\u2550\u2557\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u255A\u2550\u255D\u2560\u2557</c1>","<c1>\u255A\u2550\u2550\u2550\u2550\u255D</c1>"],R:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u2551\u2554\u2557\u2554\u255D</c1>","<c1>\u2551\u2551\u2551\u255A\u2557</c1>","<c1>\u255A\u255D\u255A\u2550\u255D</c1>"],S:["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],T:["<c1>\u2554\u2550\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2557\u2554\u2557\u2551</c1>","<c1>\u255A\u255D\u2551\u2551\u255A\u255D</c1>","<c2>\u2500\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u255A\u255D</c1><c2>\u2500\u2500</c2>"],U:["<c1>\u2554\u2557</c1><c2>\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],V:["<c1>\u2554\u2557</c1><c2>\u2500\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u255A\u2557\u2554\u255D\u2551</c1>","<c1>\u255A\u2557\u2551\u2551\u2554\u255D</c1>","<c2>\u2500</c2><c1>\u2551\u255A\u255D\u2551</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u255A\u2557\u2554\u255D</c1><c2>\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u255A\u255D</c1><c2>\u2500\u2500</c2>"],W:["<c1>\u2554\u2557\u2554\u2557\u2554\u2557</c1>","<c1>\u2551\u2551\u2551\u2551\u2551\u2551</c1>","<c1>\u2551\u2551\u2551\u2551\u2551\u2551</c1>","<c1>\u2551\u255A\u255D\u255A\u255D\u2551</c1>","<c1>\u255A\u2557\u2554\u2557\u2554\u255D</c1>","<c2>\u2500</c2><c1>\u255A\u255D\u255A\u255D</c1><c2>\u2500</c2>"],X:["<c1>\u2554\u2550\u2557\u2554\u2550\u2557</c1>","<c1>\u255A\u2557\u255A\u255D\u2554\u255D</c1>","<c2>\u2500</c2><c1>\u255A\u2557\u2554\u255D</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u2554\u255D\u255A\u2557</c1><c2>\u2500</c2>","<c1>\u2554\u255D\u2554\u2557\u255A\u2557</c1>","<c1>\u255A\u2550\u255D\u255A\u2550\u255D</c1>"],Y:["<c1>\u2554\u2557</c1><c2>\u2500\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u255A\u2557\u2554\u255D\u2551</c1>","<c1>\u255A\u2557\u255A\u255D\u2554\u255D</c1>","<c2>\u2500</c2><c1>\u255A\u2557\u2554\u255D</c1><c2>\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u255A\u255D</c1><c2>\u2500\u2500</c2>"],Z:["<c1>\u2554\u2550\u2550\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2557\u2550\u2551</c1>","<c2>\u2500\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1>","<c2>\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500</c2>","<c1>\u2554\u255D\u2550\u255A\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2550\u2550\u255D</c1>"],"0":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u2551\u2551\u2551\u2551</c1>","<c1>\u2551\u2551\u2551\u2551\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],"1":["<c2>\u2500</c2><c1>\u2554\u2557</c1><c2>\u2500</c2>","<c1>\u2554\u255D\u2551</c1><c2>\u2500</c2>","<c1>\u255A\u2557\u2551</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500</c2>","<c1>\u2554\u255D\u255A\u2557</c1>","<c1>\u255A\u2550\u2550\u255D</c1>"],"2":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u255A\u255D\u2554\u255D\u2551</c1>","<c1>\u2554\u2550\u255D\u2554\u255D</c1>","<c1>\u2551\u2551\u255A\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],"3":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u255A\u255D\u2554\u255D\u2551</c1>","<c1>\u2554\u2557\u255A\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],"4":["<c1>\u2554\u2557</c1><c2>\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u2551\u2551</c1><c2>\u2500</c2><c1>\u2551\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2557\u2551</c1>","<c2>\u2500\u2500\u2500</c2><c1>\u2551\u2551</c1>","<c2>\u2500\u2500\u2500</c2><c1>\u255A\u255D</c1>"],"5":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2550\u255D</c1>","<c1>\u2551\u255A\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2557\u2551</c1>","<c1>\u2554\u2550\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],"6":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2550\u255D</c1>","<c1>\u2551\u255A\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],"7":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u255A\u255D\u2554\u255D\u2551</c1>","<c2>\u2500\u2500</c2><c1>\u2551\u2554\u255D</c1>","<c2>\u2500\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u255A\u255D</c1><c2>\u2500</c2>"],"8":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],"9":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2557\u2551</c1>","<c1>\u2554\u2550\u2550\u255D\u2551</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>"],"!":["<c1>\u2554\u2557</c1>","<c1>\u2551\u2551</c1>","<c1>\u2551\u2551</c1>","<c1>\u255A\u255D</c1>","<c1>\u2554\u2557</c1>","<c1>\u255A\u255D</c1>"],"?":["<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u255A\u255D\u2554\u255D\u2551</c1>","<c2>\u2500\u2500</c2><c1>\u2551\u2554\u255D</c1>","<c2>\u2500\u2500</c2><c1>\u2554\u2557</c1><c2>\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u255A\u255D</c1><c2>\u2500</c2>"],".":["<c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2>","<c1>\u2554\u2557</c1>","<c1>\u255A\u255D</c1>"],"+":["<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500</c2><c1>\u2554\u2557</c1><c2>\u2500</c2>","<c1>\u2554\u255D\u255A\u2557</c1>","<c1>\u255A\u2557\u2554\u255D</c1>","<c2>\u2500</c2><c1>\u255A\u255D</c1><c2>\u2500</c2>"],"-":["<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>","<c1>\u2554\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u255D</c1>","<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>"],_:["<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>","<c1>\u2554\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u255D</c1>"],"=":["<c2>\u2500\u2500\u2500\u2500\u2500</c2>","<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>","<c1>\u2554\u2550\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2550\u255D</c1>","<c2>\u2500\u2500\u2500\u2500\u2500</c2>"],"@":["<c1>\u2554\u2550\u2550\u2550\u2550\u2557</c1><c2>\u2500</c2>","<c1>\u2551\u2554\u2550\u2550\u2557\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u2551\u2554\u2550\u2551\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u2551\u255A\u255D\u2551\u2551</c1><c2>\u2500</c2>","<c1>\u2551\u255A\u2550\u2550\u255D\u2560\u2557</c1>","<c1>\u255A\u2550\u2550\u2550\u2550\u2550\u255D</c1>"],"#":["<c2>\u2500</c2><c1>\u2554\u2569\u2569\u2569\u2557</c1><c2>\u2500</c2>","<c1>\u2554\u255D\u2554\u2550\u2557\u255A\u2557</c1>","<c1>\u255A\u2557\u2560\u2550\u2563\u2554\u255D</c1>","<c1>\u2554\u255D\u2560\u2550\u2563\u255A\u2557</c1>","<c1>\u255A\u2557\u255A\u2550\u255D\u2554\u255D</c1>","<c2>\u2500</c2><c1>\u255A\u2566\u2566\u2566\u255D</c1><c2>\u2500</c2>"],$:["<c1>\u2554\u255D\u2569\u255A\u2557</c1>","<c1>\u2551\u2554\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u2550\u2557</c1>","<c1>\u255A\u2550\u2550\u2557\u2551</c1>","<c1>\u2551\u255A\u2550\u255D\u2551</c1>","<c1>\u255A\u2557\u2566\u2554\u255D</c1>"],"%":["<c1>\u2554\u2557</c1><c2>\u2500\u2500</c2><c1>\u2554\u2550\u2557</c1>","<c1>\u255A\u255D</c1><c2>\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1>","<c2>\u2500\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500\u2500</c2>","<c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500</c2><c1>\u2554\u2557</c1>","<c1>\u255A\u2550\u255D</c1><c2>\u2500\u2500</c2><c1>\u255A\u255D</c1>"],"&":["<c2>\u2500\u2500</c2><c1>\u2554\u2557</c1><c2>\u2500</c2>","<c2>\u2500\u2500</c2><c1>\u2551\u2551</c1><c2>\u2500</c2>","<c1>\u2554\u2550\u255D\u255A\u2557</c1>","<c1>\u2551\u2554\u2557\u2554\u255D</c1>","<c1>\u2551\u255A\u255D\u2551</c1><c2>\u2500</c2>","<c1>\u255A\u2550\u2550\u255D</c1><c2>\u2500</c2>"],"(":["<c2>\u2500\u2500</c2><c1>\u2554\u2550\u2557</c1>","<c2>\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1>","<c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500</c2>","<c1>\u255A\u2557\u255A\u2557</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u255A\u2557\u255A\u2557</c1>","<c2>\u2500\u2500</c2><c1>\u255A\u2550\u255D</c1>"],")":["<c1>\u2554\u2550\u2557</c1><c2>\u2500\u2500</c2>","<c1>\u255A\u2557\u255A\u2557</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u255A\u2557\u255A\u2557</c1>","<c2>\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1>","<c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500</c2>","<c1>\u255A\u2550\u255D</c1><c2>\u2500\u2500</c2>"],"/":["<c2>\u2500\u2500\u2500\u2500</c2><c1>\u2554\u2550\u2557</c1>","<c2>\u2500\u2500\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1>","<c2>\u2500\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500</c2>","<c2>\u2500</c2><c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500\u2500</c2>","<c1>\u2554\u255D\u2554\u255D</c1><c2>\u2500\u2500\u2500</c2>","<c1>\u255A\u2550\u255D</c1><c2>\u2500\u2500\u2500\u2500</c2>"],":":["<c2>\u2500\u2500</c2>","<c1>\u2554\u2557</c1>","<c1>\u255A\u255D</c1>","<c1>\u2554\u2557</c1>","<c1>\u255A\u255D</c1>","<c2>\u2500\u2500</c2>"],";":["<c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2>","<c1>\u2554\u2557</c1>","<c1>\u255A\u2563</c1>","<c2>\u2500</c2><c1>\u255D</c1>"],",":["<c1>\u2554\u2557</c1>","<c1>\u2551\u2551</c1>","<c1>\u255A\u255D</c1>","<c1>\u2554\u2557</c1>","<c1>\u255A\u2563</c1>","<c2>\u2500</c2><c1>\u255D</c1>"],"'":["<c1>\u2554\u2557</c1>","<c1>\u2551\u2551</c1>","<c1>\u255A\u255D</c1>","<c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2>","<c2>\u2500\u2500</c2>"],'"':["<c1>\u2554\u2557\u2554\u2557</c1>","<c1>\u2551\u2551\u2551\u2551</c1>","<c1>\u255A\u255D\u255A\u255D</c1>","<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500\u2500</c2>"]," ":["<c2>\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500</c2>","<c2>\u2500\u2500\u2500</c2>"]}},fonts={tiny:tiny_default,block:block_default,shade:shade_default,slick:slick_default,huge:huge_default,grid:grid_default,pallet:pallet_default},parsedFonts={};function parseColorTags(text){let segments=[],currentIndex=0,colorTagRegex=/<c(\d+)>(.*?)<\/c\d+>/g,lastIndex=0,match;while((match=colorTagRegex.exec(text))!==null){if(match.index>lastIndex){let plainText=text.slice(lastIndex,match.index);if(plainText)segments.push({text:plainText,colorIndex:0})}let colorIndex=parseInt(match[1])-1,taggedText=match[2];segments.push({text:taggedText,colorIndex:Math.max(0,colorIndex)}),lastIndex=match.index+match[0].length}if(lastIndex<text.length){let remainingText=text.slice(lastIndex);if(remainingText)segments.push({text:remainingText,colorIndex:0})}return segments}function getParsedFont(fontKey){if(!parsedFonts[fontKey]){let fontDef=fonts[fontKey],parsedChars={};for(let[char,lines]of Object.entries(fontDef.chars))parsedChars[char]=lines.map((line)=>parseColorTags(line));parsedFonts[fontKey]={...fontDef,colors:fontDef.colors||1,chars:parsedChars}}return parsedFonts[fontKey]}function measureText({text,font="tiny"}){let fontDef=getParsedFont(font);if(!fontDef)return console.warn(`Font '${font}' not found`),{width:0,height:0};let currentX=0;for(let i=0;i<text.length;i++){let char=text[i].toUpperCase(),charDef=fontDef.chars[char];if(!charDef){let spaceChar=fontDef.chars[" "];if(spaceChar&&spaceChar[0]){let spaceWidth=0;for(let segment of spaceChar[0])spaceWidth+=segment.text.length;currentX+=spaceWidth}else currentX+=1;continue}let charWidth=0;if(charDef[0])for(let segment of charDef[0])charWidth+=segment.text.length;if(currentX+=charWidth,i<text.length-1)currentX+=fontDef.letterspace_size}return{width:currentX,height:fontDef.lines}}function getCharacterPositions(text,font="tiny"){let fontDef=getParsedFont(font);if(!fontDef)return[0];let positions=[0],currentX=0;for(let i=0;i<text.length;i++){let char=text[i].toUpperCase(),charDef=fontDef.chars[char],charWidth=0;if(!charDef){let spaceChar=fontDef.chars[" "];if(spaceChar&&spaceChar[0])for(let segment of spaceChar[0])charWidth+=segment.text.length;else charWidth=1}else if(charDef[0])for(let segment of charDef[0])charWidth+=segment.text.length;if(currentX+=charWidth,i<text.length-1)currentX+=fontDef.letterspace_size;positions.push(currentX)}return positions}function coordinateToCharacterIndex(x,text,font="tiny"){let positions=getCharacterPositions(text,font);if(x<0)return 0;for(let i=0;i<positions.length-1;i++){let currentPos=positions[i],nextPos=positions[i+1];if(x>=currentPos&&x<nextPos){let charMidpoint=currentPos+(nextPos-currentPos)/2;return x<charMidpoint?i:i+1}}if(positions.length>0&&x>=positions[positions.length-1])return text.length;return 0}function renderFontToFrameBuffer(buffer,{text,x=0,y=0,color=[RGBA.fromInts(255,255,255,255)],backgroundColor=RGBA.fromInts(0,0,0,255),font="tiny"}){let{width,height}=buffer,fontDef=getParsedFont(font);if(!fontDef)return console.warn(`Font '${font}' not found`),{width:0,height:0};let colors=Array.isArray(color)?color:[color];if(y<0||y+fontDef.lines>height)return{width:0,height:fontDef.lines};let currentX=x,startX=x;for(let i=0;i<text.length;i++){let char=text[i].toUpperCase(),charDef=fontDef.chars[char];if(!charDef){let spaceChar=fontDef.chars[" "];if(spaceChar&&spaceChar[0]){let spaceWidth=0;for(let segment of spaceChar[0])spaceWidth+=segment.text.length;currentX+=spaceWidth}else currentX+=1;continue}let charWidth=0;if(charDef[0])for(let segment of charDef[0])charWidth+=segment.text.length;if(currentX>=width)break;if(currentX+charWidth<0){currentX+=charWidth+fontDef.letterspace_size;continue}for(let lineIdx=0;lineIdx<fontDef.lines&&lineIdx<charDef.length;lineIdx++){let segments=charDef[lineIdx],renderY=y+lineIdx;if(renderY>=0&&renderY<height){let segmentX=currentX;for(let segment of segments){let segmentColor=colors[segment.colorIndex]||colors[0];for(let charIdx=0;charIdx<segment.text.length;charIdx++){let renderX=segmentX+charIdx;if(renderX>=0&&renderX<width){let fontChar=segment.text[charIdx];if(fontChar!==" ")buffer.setCellWithAlphaBlending(renderX,renderY,fontChar,parseColor(segmentColor),parseColor(backgroundColor))}}segmentX+=segment.text.length}}}if(currentX+=charWidth,i<text.length-1)currentX+=fontDef.letterspace_size}return{width:currentX-startX,height:fontDef.lines}}var TextAttributes={NONE:0,BOLD:1,DIM:2,ITALIC:4,UNDERLINE:8,BLINK:16,INVERSE:32,HIDDEN:64,STRIKETHROUGH:128};var DebugOverlayCorner;((DebugOverlayCorner2)=>{DebugOverlayCorner2[DebugOverlayCorner2.topLeft=0]="topLeft",DebugOverlayCorner2[DebugOverlayCorner2.topRight=1]="topRight",DebugOverlayCorner2[DebugOverlayCorner2.bottomLeft=2]="bottomLeft",DebugOverlayCorner2[DebugOverlayCorner2.bottomRight=3]="bottomRight"})(DebugOverlayCorner||={});var TargetChannel;((TargetChannel2)=>{TargetChannel2[TargetChannel2.FG=1]="FG",TargetChannel2[TargetChannel2.BG=2]="BG",TargetChannel2[TargetChannel2.Both=3]="Both"})(TargetChannel||={});function createTextAttributes({bold=!1,italic=!1,underline=!1,dim=!1,blink=!1,inverse=!1,hidden=!1,strikethrough=!1}={}){let attributes=TextAttributes.NONE;if(bold)attributes|=TextAttributes.BOLD;if(italic)attributes|=TextAttributes.ITALIC;if(underline)attributes|=TextAttributes.UNDERLINE;if(dim)attributes|=TextAttributes.DIM;if(blink)attributes|=TextAttributes.BLINK;if(inverse)attributes|=TextAttributes.INVERSE;if(hidden)attributes|=TextAttributes.HIDDEN;if(strikethrough)attributes|=TextAttributes.STRIKETHROUGH;return attributes}var BrandedStyledText=Symbol.for("@opentui/core/StyledText");function isStyledText(obj){return obj&&obj[BrandedStyledText]}class StyledText{[BrandedStyledText]=!0;chunks;constructor(chunks){this.chunks=chunks}}function stringToStyledText(content){return new StyledText([{__isChunk:!0,text:content}])}function applyStyle(input,style){if(typeof input==="object"&&"__isChunk"in input){let existingChunk=input,fg=style.fg?parseColor(style.fg):existingChunk.fg,bg=style.bg?parseColor(style.bg):existingChunk.bg,newAttrs=createTextAttributes(style),mergedAttrs=existingChunk.attributes?existingChunk.attributes|newAttrs:newAttrs;return{__isChunk:!0,text:existingChunk.text,fg,bg,attributes:mergedAttrs,link:existingChunk.link}}else{let plainTextStr=String(input),fg=style.fg?parseColor(style.fg):void 0,bg=style.bg?parseColor(style.bg):void 0,attributes=createTextAttributes(style);return{__isChunk:!0,text:plainTextStr,fg,bg,attributes}}}var fg=(color)=>(input)=>applyStyle(input,{fg:color});class SystemClock{now(){if(!globalThis.performance||typeof globalThis.performance.now!=="function")throw Error("SystemClock requires globalThis.performance.now()");return globalThis.performance.now()}setTimeout(fn,delayMs){return globalThis.setTimeout(fn,delayMs)}clearTimeout(handle){globalThis.clearTimeout(handle)}setInterval(fn,delayMs){return globalThis.setInterval(fn,delayMs)}clearInterval(handle){globalThis.clearInterval(handle)}}var kittyKeyMap={27:"escape",9:"tab",13:"return",127:"backspace",57344:"escape",57345:"return",57346:"tab",57347:"backspace",57348:"insert",57349:"delete",57350:"left",57351:"right",57352:"up",57353:"down",57354:"pageup",57355:"pagedown",57356:"home",57357:"end",57358:"capslock",57359:"scrolllock",57360:"numlock",57361:"printscreen",57362:"pause",57363:"menu",57364:"f1",57365:"f2",57366:"f3",57367:"f4",57368:"f5",57369:"f6",57370:"f7",57371:"f8",57372:"f9",57373:"f10",57374:"f11",57375:"f12",57376:"f13",57377:"f14",57378:"f15",57379:"f16",57380:"f17",57381:"f18",57382:"f19",57383:"f20",57384:"f21",57385:"f22",57386:"f23",57387:"f24",57388:"f25",57389:"f26",57390:"f27",57391:"f28",57392:"f29",57393:"f30",57394:"f31",57395:"f32",57396:"f33",57397:"f34",57398:"f35",57399:"kp0",57400:"kp1",57401:"kp2",57402:"kp3",57403:"kp4",57404:"kp5",57405:"kp6",57406:"kp7",57407:"kp8",57408:"kp9",57409:"kpdecimal",57410:"kpdivide",57411:"kpmultiply",57412:"kpminus",57413:"kpplus",57414:"kpenter",57415:"kpequal",57416:"kpseparator",57417:"kpleft",57418:"kpright",57419:"kpup",57420:"kpdown",57421:"kppageup",57422:"kppagedown",57423:"kphome",57424:"kpend",57425:"kpinsert",57426:"kpdelete",57427:"clear",57428:"mediaplay",57429:"mediapause",57430:"mediaplaypause",57431:"mediareverse",57432:"mediastop",57433:"mediafastforward",57434:"mediarewind",57435:"medianext",57436:"mediaprev",57437:"mediarecord",57438:"volumedown",57439:"volumeup",57440:"mute",57441:"leftshift",57442:"leftctrl",57443:"leftalt",57444:"leftsuper",57445:"lefthyper",57446:"leftmeta",57447:"rightshift",57448:"rightctrl",57449:"rightalt",57450:"rightsuper",57451:"righthyper",57452:"rightmeta",57453:"iso_level3_shift",57454:"iso_level5_shift"},kittyNamedSingleStrokeKeys=[...new Set(Object.values(kittyKeyMap))],printableKeypadText={kp0:"0",kp1:"1",kp2:"2",kp3:"3",kp4:"4",kp5:"5",kp6:"6",kp7:"7",kp8:"8",kp9:"9",kpdecimal:".",kpdivide:"/",kpmultiply:"*",kpminus:"-",kpplus:"+",kpequal:"=",kpseparator:","};function getPrintableKittyKeyText(key){return printableKeypadText[key.name]}function fromKittyMods(mod){return{shift:!!(mod&1),alt:!!(mod&2),ctrl:!!(mod&4),super:!!(mod&8),hyper:!!(mod&16),meta:!!(mod&32),capsLock:!!(mod&64),numLock:!!(mod&128)}}var functionalKeyMap={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end",E:"clear",P:"f1",Q:"f2",S:"f4"},tildeKeyMap={"1":"home","2":"insert","3":"delete","4":"end","5":"pageup","6":"pagedown","7":"home","8":"end","11":"f1","12":"f2","13":"f3","14":"f4","15":"f5","17":"f6","18":"f7","19":"f8","20":"f9","21":"f10","23":"f11","24":"f12","29":"menu","57427":"clear"};function parseKittySpecialKey(sequence){let match=/^\x1b\[(\d+);(\d+):(\d+)([A-Z~])$/.exec(sequence);if(!match)return null;let keyNumOrOne=match[1],modifierStr=match[2],eventTypeStr=match[3],terminator=match[4],keyName;if(terminator==="~")keyName=tildeKeyMap[keyNumOrOne];else{if(keyNumOrOne!=="1")return null;keyName=functionalKeyMap[terminator]}if(!keyName)return null;let key={name:keyName,ctrl:!1,meta:!1,shift:!1,option:!1,number:!1,sequence,raw:sequence,eventType:"press",source:"kitty",super:!1,hyper:!1,capsLock:!1,numLock:!1};if(modifierStr){let modifierMask=parseInt(modifierStr,10);if(!isNaN(modifierMask)&&modifierMask>1){let mods=fromKittyMods(modifierMask-1);key.shift=mods.shift,key.ctrl=mods.ctrl,key.meta=mods.alt||mods.meta,key.option=mods.alt,key.super=mods.super,key.hyper=mods.hyper,key.capsLock=mods.capsLock,key.numLock=mods.numLock}}if(eventTypeStr==="1"||!eventTypeStr)key.eventType="press";else if(eventTypeStr==="2")key.eventType="press",key.repeated=!0;else if(eventTypeStr==="3")key.eventType="release";return key}function parseKittyKeyboard(sequence){let specialResult=parseKittySpecialKey(sequence);if(specialResult)return specialResult;let match=/^\x1b\[([^\x1b]+)u$/.exec(sequence);if(!match)return null;let fields=match[1].split(";");if(fields.length<1)return null;let key={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,number:!1,sequence,raw:sequence,eventType:"press",source:"kitty",super:!1,hyper:!1,capsLock:!1,numLock:!1},text="",field1=fields[0]?.split(":")||[],codepointStr=field1[0];if(!codepointStr)return null;let codepoint=parseInt(codepointStr,10);if(isNaN(codepoint))return null;let shiftedCodepoint,baseCodepoint;if(field1[1]){let shifted=parseInt(field1[1],10);if(!isNaN(shifted)&&shifted>0&&shifted<=1114111)shiftedCodepoint=shifted}if(field1[2]){let base=parseInt(field1[2],10);if(!isNaN(base)&&base>0&&base<=1114111)baseCodepoint=base}let knownKey=kittyKeyMap[codepoint];if(knownKey)key.name=knownKey,key.code=`[${codepoint}u`;else if(codepoint===0)key.name="";else if(codepoint>0&&codepoint<=1114111){let char=String.fromCodePoint(codepoint);if(key.name=char===" "?"space":char,baseCodepoint)key.baseCode=baseCodepoint}else return null;if(fields[1]){let field2=fields[1].split(":"),modifierStr=field2[0],eventTypeStr=field2[1];if(modifierStr){let modifierMask=parseInt(modifierStr,10);if(!isNaN(modifierMask)&&modifierMask>1){let mods=fromKittyMods(modifierMask-1);key.shift=mods.shift,key.ctrl=mods.ctrl,key.meta=mods.alt||mods.meta,key.option=mods.alt,key.super=mods.super,key.hyper=mods.hyper,key.capsLock=mods.capsLock,key.numLock=mods.numLock}}if(eventTypeStr==="1"||!eventTypeStr)key.eventType="press";else if(eventTypeStr==="2")key.eventType="press",key.repeated=!0;else if(eventTypeStr==="3")key.eventType="release";else key.eventType="press"}if(fields[2]){let codepoints=fields[2].split(":");for(let cpStr of codepoints){let cp=parseInt(cpStr,10);if(!isNaN(cp)&&cp>0&&cp<=1114111)text+=String.fromCodePoint(cp)}}if(text==="")text=getPrintableKittyKeyText(key)??"";if(text===""){if(key.name.length>0&&!kittyKeyMap[codepoint])if(codepoint===32)text=" ";else if(key.shift&&shiftedCodepoint)text=String.fromCodePoint(shiftedCodepoint);else if(key.shift&&key.name.length===1)text=key.name.toLocaleUpperCase();else text=key.name}if(text){if(codepoint===0)key.name=text;key.sequence=text}if(codepoint===0&&text==="")return null;return key}var metaKeyCodeRe=/^(?:\x1b)([a-zA-Z0-9])$/,fnKeyRe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,keyName={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[29~":"menu","[57427~":"clear","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home","[P":"f1","[Q":"f2","[S":"f4",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home",OM:"return",Oj:"*",Ok:"+",Ol:",",Om:"-",On:".",Oo:"/",Op:"0",Oq:"1",Or:"2",Os:"3",Ot:"4",Ou:"5",Ov:"6",Ow:"7",Ox:"8",Oy:"9",OX:"=","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear",f:"right",b:"left",p:"up",n:"down","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},nonAlphanumericKeys=[...Object.values(keyName),"backspace"],terminalNamedSingleStrokeKeys=[...new Set(["return","linefeed","tab","escape","space",...nonAlphanumericKeys,...kittyNamedSingleStrokeKeys])],isShiftKey=(code)=>{return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(code)},isCtrlKey=(code)=>{return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(code)},getCtrlKeyName=(charCode)=>{if(charCode===0)return"space";if(charCode>=1&&charCode<=26)return String.fromCharCode(charCode+97-1);if(charCode>=28&&charCode<=31)return String.fromCharCode(charCode+64);return},ss3NumpadPrintable={Op:"0",Oq:"1",Or:"2",Os:"3",Ot:"4",Ou:"5",Ov:"6",Ow:"7",Ox:"8",Oy:"9",Oj:"*",Ok:"+",Ol:",",Om:"-",On:".",Oo:"/",OX:"="},modifyOtherKeysRe=/^\x1b\[27;(\d+);(\d+)~$/,parseKeypress=(s="",options={})=>{let parts;if(Buffer2.isBuffer(s))if(s[0]>127&&s[1]===void 0)s[0]-=128,s="\x1B"+String(s);else s=String(s);else if(s!==void 0&&typeof s!=="string")s=String(s);else if(!s)s="";if(/^\x1b\[<\d+;\d+;\d+[Mm]$/.test(s))return null;if(/^\[<\d+;\d+;\d+[Mm]$/.test(s))return null;if(/^\x1b\[<[\d;]*$/.test(s))return null;if(/^\[<[\d;]*$/.test(s))return null;if(s.startsWith("\x1B[M")&&s.length>=6)return null;if(/^\x1b\[\d+;\d+;\d+t$/.test(s))return null;if(/^\x1b\[\d+;\d+R$/.test(s))return null;if(/^\x1b\[\?[\d;]+c$/.test(s))return null;if(/^\x1b\[\?[\d;]+\$y$/.test(s))return null;if(s==="\x1B[I"||s==="\x1B[O")return null;if(/^\x1b\][\d;].*(\x1b\\|\x07)$/.test(s))return null;if(s==="\x1B[200~"||s==="\x1B[201~")return null;let key={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,number:!1,sequence:s,raw:s,eventType:"press",source:"raw"};key.sequence=key.sequence||s||key.name;let ctrlKeyName=s.length===1?getCtrlKeyName(s.charCodeAt(0)):void 0,metaCtrlKeyName=s.length===2&&s[0]==="\x1B"?getCtrlKeyName(s.charCodeAt(1)):void 0;if(options.useKittyKeyboard){let kittyResult=parseKittyKeyboard(s);if(kittyResult)return kittyResult}let modifyOtherKeysMatch=modifyOtherKeysRe.exec(s);if(modifyOtherKeysMatch){let modifier=parseInt(modifyOtherKeysMatch[1],10)-1,charCode=parseInt(modifyOtherKeysMatch[2],10);if(key.ctrl=!!(modifier&4),key.meta=!!(modifier&2),key.shift=!!(modifier&1),key.option=!!(modifier&2),key.super=!!(modifier&8),key.hyper=!!(modifier&16),charCode===13)key.name="return";else if(charCode===27)key.name="escape";else if(charCode===9)key.name="tab";else if(charCode===32)key.name="space";else if(charCode===127||charCode===8)key.name="backspace";else{let char=String.fromCharCode(charCode);if(key.name=char,key.sequence=char,charCode>=48&&charCode<=57)key.number=!0}return key}if(s==="\r"||s==="\x1B\r")key.name="return",key.meta=s.length===2;else if(s===`
|
|
3512
3512
|
`||s===`\x1B
|
|
3513
3513
|
`)key.name="linefeed",key.meta=s.length===2;else if(s==="\t")key.name="tab";else if(s==="\b"||s==="\x1B\b"||s==="\x7F"||s==="\x1B\x7F")key.name="backspace",key.meta=s.charAt(0)==="\x1B";else if(s==="\x1B"||s==="\x1B\x1B")key.name="escape",key.meta=s.length===2;else if(s===" "||s==="\x1B ")key.name="space",key.meta=s.length===2;else if(ctrlKeyName)key.name=ctrlKeyName,key.ctrl=!0;else if(s.length===1&&s>="0"&&s<="9")key.name=s,key.number=!0;else if(s.length===1&&s>="a"&&s<="z")key.name=s;else if(s.length===1&&s>="A"&&s<="Z")key.name=s.toLowerCase(),key.shift=!0;else if(s.length===1||s.length===2&&s.codePointAt(0)>65535)key.name=s;else if(parts=metaKeyCodeRe.exec(s)){key.meta=!0;let char=parts[1],isUpperCase=/^[A-Z]$/.test(char);if(char==="F")key.name="right";else if(char==="B")key.name="left";else if(isUpperCase)key.shift=!0,key.name=char;else key.name=char}else if(metaCtrlKeyName)key.meta=!0,key.ctrl=!0,key.name=metaCtrlKeyName;else if(parts=fnKeyRe.exec(s)){let segs=[...s];if(segs[0]==="\x1B"&&segs[1]==="\x1B")key.option=!0,key.meta=!0;let code=[parts[1],parts[2],parts[4],parts[6]].filter(Boolean).join(""),modifier=parseInt(parts[3]||parts[5]||"1",10)-1;key.ctrl=key.ctrl||!!(modifier&4),key.meta=key.meta||!!(modifier&2),key.shift=key.shift||!!(modifier&1),key.option=key.option||!!(modifier&2),key.super=!!(modifier&8),key.hyper=!!(modifier&16),key.code=code;let keyNameResult=keyName[code];if(keyNameResult){key.name=keyNameResult,key.shift=isShiftKey(code)||key.shift,key.ctrl=isCtrlKey(code)||key.ctrl;let ss3Char=ss3NumpadPrintable[code];if(ss3Char!==void 0){if(key.sequence=ss3Char,key.name>="0"&&key.name<="9")key.number=!0}}else key.name="",key.code=void 0}else if(s==="\x1B[3~")key.name="delete",key.meta=!1,key.code="[3~";return key};class LinearScrollAccel{tick(_now){return 1}reset(){}}function parseAlign(value){if(value==null)return 0;switch(value.toLowerCase()){case"auto":return 0;case"flex-start":return 1;case"center":return 2;case"flex-end":return 3;case"stretch":return 4;case"baseline":return 5;case"space-between":return 6;case"space-around":return 7;case"space-evenly":return 8;default:return 0}}function parseAlignItems(value){if(value==null)return 4;switch(value.toLowerCase()){case"auto":return 0;case"flex-start":return 1;case"center":return 2;case"flex-end":return 3;case"stretch":return 4;case"baseline":return 5;case"space-between":return 6;case"space-around":return 7;case"space-evenly":return 8;default:return 4}}function parseFlexDirection(value){if(value==null)return 0;switch(value.toLowerCase()){case"column":return 0;case"column-reverse":return 1;case"row":return 2;case"row-reverse":return 3;default:return 0}}function parseJustify(value){if(value==null)return 0;switch(value.toLowerCase()){case"flex-start":return 0;case"center":return 1;case"flex-end":return 2;case"space-between":return 3;case"space-around":return 4;case"space-evenly":return 5;default:return 0}}function parseOverflow(value){if(value==null)return 0;switch(value.toLowerCase()){case"visible":return 0;case"hidden":return 1;case"scroll":return 2;default:return 0}}function parsePositionType(value){if(value==null)return 1;switch(value.toLowerCase()){case"static":return 0;case"relative":return 1;case"absolute":return 2;default:return 0}}function parseWrap(value){if(value==null)return 0;switch(value.toLowerCase()){case"no-wrap":return 0;case"wrap":return 1;case"wrap-reverse":return 2;default:return 0}}class MouseParser{mouseButtonsPressed=new Set;static SCROLL_DIRECTIONS={0:"up",1:"down",2:"left",3:"right"};reset(){this.mouseButtonsPressed.clear()}decodeInput(data){return(Buffer.isBuffer(data)?data:Buffer.from(data.buffer,data.byteOffset,data.byteLength)).toString("latin1")}parseMouseEvent(data){let str=this.decodeInput(data);return this.parseMouseSequenceAt(str,0)?.event??null}parseAllMouseEvents(data){let str=this.decodeInput(data),events=[],offset=0;while(offset<str.length){let parsed=this.parseMouseSequenceAt(str,offset);if(!parsed)break;events.push(parsed.event),offset+=parsed.consumed}return events}parseMouseSequenceAt(str,offset){if(!str.startsWith("\x1B[",offset))return null;let introducer=str[offset+2];if(introducer==="<")return this.parseSgrSequence(str,offset);if(introducer==="M")return this.parseBasicSequence(str,offset);return null}parseSgrSequence(str,offset){let index=offset+3,values=[0,0,0],part=0,hasDigit=!1;while(index<str.length){let char=str[index],charCode=str.charCodeAt(index);if(charCode>=48&&charCode<=57){hasDigit=!0,values[part]=values[part]*10+(charCode-48),index++;continue}switch(char){case";":{if(!hasDigit||part>=2)return null;part++,hasDigit=!1,index++;break}case"M":case"m":{if(!hasDigit||part!==2)return null;return{event:this.decodeSgrEvent(values[0],values[1],values[2],char),consumed:index-offset+1}}default:return null}}return null}parseBasicSequence(str,offset){if(offset+6>str.length)return null;let buttonByte=str.charCodeAt(offset+3)-32,x=str.charCodeAt(offset+4)-33,y=str.charCodeAt(offset+5)-33;return{event:this.decodeBasicEvent(buttonByte,x,y),consumed:6}}decodeSgrEvent(rawButtonCode,wireX,wireY,pressRelease){let button=rawButtonCode&3,isScroll=(rawButtonCode&64)!==0,scrollDirection=!isScroll?void 0:MouseParser.SCROLL_DIRECTIONS[button],isMotion=(rawButtonCode&32)!==0,modifiers={shift:(rawButtonCode&4)!==0,alt:(rawButtonCode&8)!==0,ctrl:(rawButtonCode&16)!==0},type,scrollInfo;if(isMotion){let isDragging=this.mouseButtonsPressed.size>0;if(button===3)type="move";else if(isDragging)type="drag";else type="move"}else if(isScroll&&pressRelease==="M")type="scroll",scrollInfo={direction:scrollDirection,delta:1};else if(type=pressRelease==="M"?"down":"up",type==="down"&&button!==3)this.mouseButtonsPressed.add(button);else if(type==="up")this.mouseButtonsPressed.clear();return{type,button:button===3?0:button,x:wireX-1,y:wireY-1,modifiers,scroll:scrollInfo}}decodeBasicEvent(buttonByte,x,y){let button=buttonByte&3,isScroll=(buttonByte&64)!==0,isMotion=(buttonByte&32)!==0,scrollDirection=!isScroll?void 0:MouseParser.SCROLL_DIRECTIONS[button],modifiers={shift:(buttonByte&4)!==0,alt:(buttonByte&8)!==0,ctrl:(buttonByte&16)!==0},type,actualButton,scrollInfo;if(isMotion)type="move",actualButton=button===3?-1:button;else if(isScroll)type="scroll",actualButton=0,scrollInfo={direction:scrollDirection,delta:1};else type=button===3?"up":"down",actualButton=button===3?0:button;return{type,button:actualButton,x,y,modifiers,scroll:scrollInfo}}}class SelectionAnchor{renderable;relativeX;relativeY;constructor(renderable,absoluteX,absoluteY){this.renderable=renderable,this.relativeX=absoluteX-this.renderable.x,this.relativeY=absoluteY-this.renderable.y}get x(){return this.renderable.x+this.relativeX}get y(){return this.renderable.y+this.relativeY}}class Selection{_anchor;_focus;_selectedRenderables=[];_touchedRenderables=[];_isActive=!0;_isDragging=!0;_isStart=!1;constructor(anchorRenderable,anchor,focus){this._anchor=new SelectionAnchor(anchorRenderable,anchor.x,anchor.y),this._focus={...focus}}get isStart(){return this._isStart}set isStart(value){this._isStart=value}get anchor(){return{x:this._anchor.x,y:this._anchor.y}}get focus(){return{...this._focus}}set focus(value){this._focus={...value}}get isActive(){return this._isActive}set isActive(value){this._isActive=value}get isDragging(){return this._isDragging}set isDragging(value){this._isDragging=value}get bounds(){let minX=Math.min(this._anchor.x,this._focus.x),maxX=Math.max(this._anchor.x,this._focus.x),minY=Math.min(this._anchor.y,this._focus.y),maxY=Math.max(this._anchor.y,this._focus.y),width=maxX-minX+1,height=maxY-minY+1;return{x:minX,y:minY,width,height}}updateSelectedRenderables(selectedRenderables){this._selectedRenderables=selectedRenderables}get selectedRenderables(){return this._selectedRenderables}updateTouchedRenderables(touchedRenderables){this._touchedRenderables=touchedRenderables}get touchedRenderables(){return this._touchedRenderables}getSelectedText(){let selectedTextsByLine=new Map,selectedRenderables=this._selectedRenderables.sort((a,b)=>{let aY=a.y,bY=b.y;if(aY!==bY)return aY-bY;return a.x-b.x}).filter((renderable)=>!renderable.isDestroyed);for(let renderable of selectedRenderables){let text=renderable.getSelectedText();if(!text)continue;let lines=text.split(`
|
|
@@ -4076,7 +4076,7 @@ tell application "System Events" to get value of property list item "CFBundleNam
|
|
|
4076
4076
|
`).filter((l)=>!STRIPS.some((re2)=>re2.test(l))).join(`
|
|
4077
4077
|
`)}var base=(p)=>p.split(/[\\/]/).filter(Boolean).pop()??p,parent=(p)=>{let parts2=p.split(/[\\/]/).filter(Boolean);return parts2.length>=2?parts2[parts2.length-2]:""},trunc2=(s,n)=>s.length<=n?s:"\u2026"+s.slice(-(n-1));function buildTabs(tools){let raw=tools.flatMap((t2)=>{let rawDiff=t2.diff??(isDiff(t2.result)?t2.result:void 0);if(!rawDiff)return[];return[{tool:t2,path:pathFor(t2),diff:sanitizeDiff(rawDiff)}]}),counts=new Map;return raw.forEach((r)=>counts.set(base(r.path),(counts.get(base(r.path))??0)+1)),raw.map(({tool,path:path4,diff})=>{let b2=base(path4),dup=(counts.get(b2)??0)>1&&parent(path4),label=trunc2(dup?`${parent(path4)}/${b2}`:b2,24),lines3=diff.split(`
|
|
4078
4078
|
`),add=lines3.filter((l)=>/^\+(?!\+\+)/.test(l)).length,del=lines3.filter((l)=>/^-(?!--)/.test(l)).length;return{id:tool.id||`${tool.name}-${path4}`,label,diff,add,del}})}var DiffTabs=import_react44.memo(({tools})=>{let theme=useTheme().theme,tabs=import_react44.useMemo(()=>buildTabs(tools),[tools]),[active,setActive]=import_react44.useState(null);if(tabs.length===0)return null;let idx=active===null?null:Math.min(active,tabs.length-1),cur=idx===null?null:tabs[idx];return $jsxs("box",{flexDirection:"column",marginTop:1,border:["left"],borderColor:theme.border,customBorderChars:LEFT_BAR,backgroundColor:theme.backgroundPanel,paddingLeft:1,children:[$jsx("box",{flexDirection:"row",flexWrap:"wrap",backgroundColor:theme.backgroundElement,paddingX:1,children:tabs.map((t2,i)=>{let on=i===idx;return $jsx("box",{height:1,flexShrink:0,marginRight:1,paddingX:1,backgroundColor:on?theme.backgroundPanel:void 0,onMouseDown:(e)=>{e.stopPropagation(),setActive((n)=>{return(n===null?null:Math.min(n,tabs.length-1))===i?null:i})},children:$jsx("text",{fg:on?theme.primary:theme.textMuted,children:on?$jsx("strong",{children:t2.label}):t2.label})},t2.id)})}),cur?$jsxs($Fragment,{children:[$jsx("box",{height:1,paddingX:1,children:$jsxs("text",{children:[$jsxs("span",{fg:theme.success,children:["+",cur.add]}),$jsx("span",{fg:theme.textMuted,children:" / "}),$jsxs("span",{fg:theme.error,children:["-",cur.del]})]})}),$jsx("box",{paddingX:1,paddingBottom:1,children:$jsx(DiffBlock,{text:cur.diff})})]}):null]})});var import_react45=__toESM(require_react_production(),1);var group="approval";function question(req){return(req.description||"Shell command").trim()}function subject(req){if(req.pattern_keys?.length)return req.pattern_keys.join("|");return req.command.trim()}function mkApproval(req){return{...req,group,question:question(req),subject:subject(req)}}function shouldRemember(req){let cur=get2("neverPrompts")??[],p=mkApproval(req);return cur.some((x2)=>x2.group===p.group&&x2.question===p.question&&x2.subject===p.subject)}function remember(req){let cur=get2("neverPrompts")??[],p=mkApproval(req);if(cur.some((x2)=>x2.group===p.group&&x2.question===p.question&&x2.subject===p.subject))return;set("neverPrompts",[...cur,{group:p.group,question:p.question,subject:p.subject}])}var MaskInput=(props)=>{let theme=useTheme().theme;return $jsxs("box",{flexDirection:"row",height:1,position:"relative",children:[$jsx("text",{fg:theme.textMuted,children:"> "}),$jsx("input",{value:props.value,onInput:props.input,onSubmit:props.submit,focused:!0,flexGrow:1,textColor:theme.backgroundElement,cursorColor:theme.accent,backgroundColor:theme.backgroundElement,focusedBackgroundColor:theme.backgroundElement}),$jsx("box",{position:"absolute",left:2,top:0,height:1,children:$jsx("text",{fg:theme.text,bg:theme.backgroundElement,children:"\u2022".repeat(props.value.length)})})]})};function digit(name){let n=parseInt(name,10);return Number.isFinite(n)?n:null}var Frame=(p)=>{let theme=useTheme().theme;return $jsx("box",{flexDirection:"column",border:["left"],borderColor:p.tint,customBorderChars:LEFT_BAR,backgroundColor:theme.backgroundPanel,marginBottom:1,children:p.children})},Pill=(p)=>{let theme=useTheme().theme;return $jsx("box",{height:1,paddingX:1,backgroundColor:p.on?theme.primary:void 0,onMouseDown:p.onPick,children:$jsxs("text",{children:[$jsxs("span",{fg:p.on?theme.background:theme.textMuted,children:[p.hot," "]}),$jsx("span",{fg:p.on?theme.background:theme.text,children:p.label})]})})},CHOICES=["once","session","never","deny"],LABELS={once:"Allow once",session:"Allow this session",never:"Never ask",deny:"Deny"},RESPOND={once:"once",session:"session",never:"always",deny:"deny"},Approval=import_react45.forwardRef((p,ref)=>{let theme=useTheme().theme,gw=useGateway(),[sel,setSel]=import_react45.useState(0),[steering,setSteering]=import_react45.useState(!1),[custom,setCustom]=import_react45.useState(""),[note,setNote]=import_react45.useState(""),done=import_react45.useRef(!1),prompt=mkApproval(p.req),send=(c)=>{if(done.current)return;done.current=!0,setNote(""),gw.request("approval.respond",{choice:RESPOND[c]}).then(()=>{if(c==="never")remember(prompt);p.onAnswer(LABELS[c],c!=="deny")}).catch((e)=>{done.current=!1,setNote(e.message)})},steer=(text4)=>{let body=text4.trim();if(!body){setSteering(!1);return}setCustom(""),setSteering(!1),setNote("steer sent \u2014 approval still pending"),gw.request("session.steer",{text:body}).catch(()=>setNote("steer failed \u2014 approval still pending"))};return import_react45.useImperativeHandle(ref,()=>({masked:steering,feed:(key3)=>{if(steering){if(key3.name==="escape")return setSteering(!1),!0;return!1}if(key3.name==="s")return setSteering(!0),setNote(""),!0;if(key3.name==="left"||key3.name==="h")return setSel((s)=>(s+CHOICES.length-1)%CHOICES.length),!0;if(key3.name==="right"||key3.name==="l")return setSel((s)=>(s+1)%CHOICES.length),!0;if(key3.name==="return")return send(CHOICES[sel]),!0;if(key3.name==="escape")return send("deny"),!0;let n=digit(key3.name);if(n!==null&&n>=1&&n<=CHOICES.length)return send(CHOICES[n-1]),!0;return!1}}),[sel,steering]),$jsxs(Frame,{tint:theme.warning,children:[$jsxs("box",{flexDirection:"column",gap:1,paddingLeft:1,paddingRight:2,paddingY:1,children:[$jsxs("box",{flexDirection:"row",gap:1,height:1,children:[$jsx("text",{fg:theme.warning,children:"\u25B3"}),$jsx("text",{fg:theme.text,children:"Permission required"}),$jsxs("text",{fg:theme.textMuted,children:["\xB7 ",prompt.question]})]}),$jsxs("box",{flexDirection:"row",gap:1,paddingLeft:2,minHeight:1,children:[$jsx("text",{fg:theme.textMuted,children:"#"}),$jsx("text",{fg:theme.text,wrapMode:"word",children:p.req.description||"Shell command"})]}),$jsx("box",{paddingLeft:2,minHeight:1,children:$jsxs("text",{fg:theme.text,wrapMode:"word",children:["$ ",p.req.command]})}),p.req.pattern_keys?.length?$jsx("box",{paddingLeft:2,minHeight:1,children:$jsxs("text",{fg:theme.textMuted,wrapMode:"word",children:["matched: ",p.req.pattern_keys.join(", ")]})}):null]}),steering?$jsxs("box",{flexDirection:"column",gap:1,flexShrink:0,paddingX:2,paddingY:1,backgroundColor:theme.backgroundElement,children:[$jsxs("box",{flexDirection:"row",height:1,children:[$jsx("text",{fg:theme.textMuted,children:"> "}),$jsx("input",{value:custom,onInput:setCustom,onSubmit:()=>steer(custom),focused:!0,flexGrow:1,textColor:theme.text,backgroundColor:theme.backgroundElement,focusedBackgroundColor:theme.backgroundElement})]}),$jsx("text",{fg:theme.textMuted,children:"Enter steer \xB7 Esc back to approval"})]}):$jsxs("box",{flexDirection:"row",gap:2,flexShrink:0,paddingX:2,paddingY:1,backgroundColor:theme.backgroundElement,children:[CHOICES.map((c,i)=>$jsx(Pill,{on:sel===i,hot:String(i+1),label:LABELS[c],onPick:()=>send(c)},c)),$jsx(Pill,{on:!1,hot:"s",label:"Steer",onPick:()=>{setSteering(!0),setNote("")}}),$jsx("box",{height:1,children:$jsxs("text",{fg:theme.textMuted,children:["subject: ",prompt.subject]})}),$jsx("box",{flexGrow:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2190/\u2192 \xB7 enter \xB7 s steer \xB7 esc deny"})})]}),note?$jsx("box",{paddingLeft:2,paddingBottom:1,backgroundColor:theme.backgroundElement,children:$jsx("text",{fg:theme.textMuted,children:note})}):null]})}),Clarify=import_react45.forwardRef((p,ref)=>{let theme=useTheme().theme,gw=useGateway(),choices=p.req.choices??[],[sel,setSel]=import_react45.useState(0),[typing,setTyping]=import_react45.useState(choices.length===0),[custom,setCustom]=import_react45.useState(""),[err,setErr]=import_react45.useState(""),done=import_react45.useRef(!1),send=(answer)=>{if(done.current)return;done.current=!0,setErr(""),gw.request("clarify.respond",{request_id:p.req.request_id,answer}).then(()=>p.onAnswer(answer||"(cancelled)",answer!=="")).catch((e)=>{done.current=!1,setErr(e.message)})};import_react45.useImperativeHandle(ref,()=>({masked:typing,feed:(key3)=>{if(typing){if(key3.name==="escape"){if(choices.length)return setTyping(!1),!0;return send(""),!0}return!1}if(key3.name==="escape")return send(""),!0;if(key3.name==="up")return setSel((s)=>Math.max(0,s-1)),!0;if(key3.name==="down")return setSel((s)=>Math.min(choices.length,s+1)),!0;if(key3.name==="return"){if(sel===choices.length)return setTyping(!0),!0;let c=choices[sel];if(c)send(c);return!0}let n=digit(key3.name);if(n!==null&&n>=1&&n<=choices.length)return send(choices[n-1]),!0;return!1}}),[typing,sel,choices]);let head=$jsx("box",{minHeight:1,children:$jsxs("text",{wrapMode:"word",children:[$jsx("span",{fg:theme.accent,children:$jsx("strong",{children:"ask "})}),$jsx("span",{fg:theme.text,children:$jsx("strong",{children:p.req.question})})]})});return $jsx(Frame,{tint:theme.accent,children:$jsxs("box",{flexDirection:"column",paddingLeft:1,paddingRight:2,paddingY:1,children:[head,$jsx("box",{height:1}),typing?$jsxs($Fragment,{children:[$jsxs("box",{flexDirection:"row",height:1,children:[$jsx("text",{fg:theme.textMuted,children:"> "}),$jsx("input",{value:custom,onInput:setCustom,onSubmit:()=>send(custom),focused:!0,flexGrow:1,textColor:theme.text,backgroundColor:theme.backgroundElement,focusedBackgroundColor:theme.backgroundElement})]}),$jsxs("text",{fg:theme.textMuted,children:["Enter send \xB7 Esc ",choices.length?"back":"cancel"]})]}):$jsxs($Fragment,{children:[[...choices,"Other (type your answer)"].map((c,i)=>$jsx("box",{height:1,onMouseDown:()=>i===choices.length?setTyping(!0):send(choices[i]),children:$jsxs("text",{fg:sel===i?theme.text:theme.textMuted,children:[sel===i?"\u25B8 ":" ",i+1,". ",c]})},i)),$jsx("box",{height:1}),$jsxs("text",{fg:theme.textMuted,children:["\u2191/\u2193 \xB7 Enter \xB7 1-",choices.length," \xB7 Esc cancel"]})]}),err?$jsx("text",{fg:theme.error,children:err}):null]})})}),Masked=import_react45.forwardRef((p,ref)=>{let theme=useTheme().theme,[value,setValue]=import_react45.useState(""),[err,setErr]=import_react45.useState(""),done=import_react45.useRef(!1),go=(v2)=>{if(done.current)return;done.current=!0,setErr(""),p.onSubmit(v2).then(()=>p.onAnswer(v2?"(provided)":"(cancelled)",v2!=="")).catch((e)=>{done.current=!1,setErr(e.message)})};return import_react45.useImperativeHandle(ref,()=>({masked:!0,feed:(key3)=>{if(key3.name==="escape")return go(""),!0;return!1}}),[]),$jsx(Frame,{tint:theme.warning,children:$jsxs("box",{flexDirection:"column",paddingLeft:1,paddingRight:2,paddingY:1,children:[$jsx("text",{fg:theme.warning,children:$jsx("strong",{children:p.title})}),$jsx("text",{fg:theme.text,children:p.note}),$jsx("box",{height:1}),$jsx(MaskInput,{value,input:setValue,submit:()=>go(value)}),err?$jsx("text",{fg:theme.error,children:err}):null,$jsx("text",{fg:theme.textMuted,children:"Enter submit \xB7 Esc cancel"})]})})});function same2(a,b2){return Boolean(a&&b2&&b2.toLowerCase().includes(a.toLowerCase()))}function cap3(s,n=160){return s.length<=n?s:s.slice(0,n-1)+"\u2026"}function question2(part){let a=part.answered?.question;if(a)return a;if(part.req.variant==="clarify")return part.req.question;if(part.req.variant==="approval")return mkApproval(part.req).question;if(part.req.variant==="sudo")return"Sudo required";return part.req.env_var?`Secret: ${part.req.env_var}`:"Secret required"}function outcome(part){let a=part.answered;if(part.variant==="clarify"){let q2=cap3(question2(part)),body=cap3(a.label);return same2(q2,a.label)?{head:body}:{head:q2,body}}if(part.variant==="approval"){let q2=cap3(question2(part),96);return{head:a.label,body:q2}}if(part.variant==="sudo")return{head:`sudo ${a.label}`};return{head:`${part.req.env_var??"secret"} ${a.label}`}}var Outcome=import_react45.memo(({part})=>{let theme=useTheme().theme,a=part.answered,glyph=a.ok?"\u2713":"\u2717",fg2=a.ok?theme.success:theme.error,text4=outcome(part);return $jsxs("box",{flexDirection:"row",paddingLeft:3,marginBottom:1,children:[$jsx("box",{width:2,flexShrink:0,children:$jsx("text",{fg:fg2,children:glyph})}),$jsxs("box",{flexDirection:"column",flexGrow:1,flexShrink:1,children:[$jsx("text",{fg:theme.textMuted,wrapMode:"word",children:text4.head}),text4.body?$jsx("text",{fg:theme.textMuted,wrapMode:"word",children:text4.body}):null]})]})}),PromptCard=import_react45.memo(import_react45.forwardRef((p,ref)=>{let gw=useGateway();if(p.part.answered)return $jsx(Outcome,{part:p.part});let answer=(label,ok)=>p.onAnswer(p.part.id,label,ok),req=p.part.req;if(req.variant==="approval")return $jsx(Approval,{ref,req,onAnswer:answer});if(req.variant==="clarify")return $jsx(Clarify,{ref,req,onAnswer:answer});if(req.variant==="sudo")return $jsx(Masked,{ref,title:"\uD83D\uDD12 Sudo required",note:"Enter your password to elevate privileges.",onSubmit:(v2)=>gw.request("sudo.respond",{request_id:req.request_id,password:v2}),onAnswer:answer});return $jsx(Masked,{ref,title:`\uD83D\uDD11 Secret: ${req.env_var}`,note:req.prompt,onSubmit:(v2)=>gw.request("secret.respond",{request_id:req.request_id,value:v2}),onAnswer:answer})}));function pending2(messages){for(let i=messages.length-1;i>=0;i--){let m2=messages[i];if(m2.role!=="assistant")continue;for(let j2=m2.parts.length-1;j2>=0;j2--){let part=m2.parts[j2];if(part.type==="prompt"&&!part.answered)return part}}return null}var import_react46=__toESM(require_react_production(),1);import{existsSync as existsSync13,statSync as statSync5}from"fs";function parseChafaLine(line){let out=[],fg2=null,bg2=null,reverse2=!1,i=0,N2=line.length;while(i<N2){if(line.charCodeAt(i)===27&&line.charCodeAt(i+1)===91){let end=line.indexOf("m",i+2);if(end<0){i=N2;break}let params=line.slice(i+2,end).split(";").map((x2)=>parseInt(x2,10)||0),p=0;while(p<params.length){let n=params[p];if(n===0){fg2=null,bg2=null,reverse2=!1,p++;continue}if(n===7){reverse2=!0,p++;continue}if(n===27){reverse2=!1,p++;continue}if(n===38&¶ms[p+1]===2){fg2={r:params[p+2]|0,g:params[p+3]|0,b:params[p+4]|0},p+=5;continue}if(n===48&¶ms[p+1]===2){bg2={r:params[p+2]|0,g:params[p+3]|0,b:params[p+4]|0},p+=5;continue}if(n===39){fg2=null,p++;continue}if(n===49){bg2=null,p++;continue}p++}i=end+1;continue}let cp=line.codePointAt(i),ch=String.fromCodePoint(cp);i+=ch.length;let efg=reverse2?bg2:fg2,ebg=reverse2?fg2:bg2;out.push({ch,fg:efg,bg:ebg})}return out}function parseChafa(text4){return text4.split(`
|
|
4079
|
-
`).filter((s)=>s.length>0).map(parseChafaLine)}function hex(c){if(!c)return;return`#${c.r.toString(16).padStart(2,"0")}${c.g.toString(16).padStart(2,"0")}${c.b.toString(16).padStart(2,"0")}`}var CHAFA_PATHS=["/usr/sbin/chafa","/usr/bin/chafa","/usr/local/bin/chafa","/opt/homebrew/bin/chafa","/home/linuxbrew/.linuxbrew/bin/chafa"],cachedBin=void 0;function chafaBin(){if(cachedBin!==void 0)return cachedBin;let bin=Bun.which?.("chafa")??null;if(bin)return cachedBin=bin,bin;for(let p of CHAFA_PATHS)if(existsSync13(p))return cachedBin=p,p;return cachedBin=null,null}function resolveImage(path4){let full=path4.startsWith("~")?(process.env.HOME??"")+path4.slice(1):path4;return existsSync13(full)?full:null}var CACHE=new Map,INFLIGHT=new Map,CACHE_CAP=50;function cacheGet(k2){let v2=CACHE.get(k2);if(!v2)return;return CACHE.delete(k2),CACHE.set(k2,v2),v2}function cachePut(k2,v2){if(CACHE.size>=CACHE_CAP)CACHE.delete(CACHE.keys().next().value);CACHE.set(k2,v2)}async function renderChafa(path4,width,height){let bin=chafaBin();if(!bin)return{err:"chafa not installed"};let full=resolveImage(path4);if(!full)return{err:`not found: ${path4}`};let mtime=0;try{mtime=statSync5(full).mtimeMs|0}catch{}let h2=height??Math.max(6,Math.round(width/3)),key3=`${full}:${mtime}:${width}x${h2}`,cached2=cacheGet(key3);if(cached2)return{rows:cached2};let hit=INFLIGHT.get(key3);if(hit)return hit;let task=(async()=>{try{let proc=Bun.spawn([bin,`--size=${width}x${h2}`,"--format=symbols","--symbols=block","--colors=full",full],{stdout:"pipe",stderr:"pipe"}),timeout=!1,timer2=setTimeout(()=>{timeout=!0,proc.kill()},5000),[code,stdout,stderr]=await Promise.all([proc.exited,new Response(proc.stdout).text(),new Response(proc.stderr).text()]).finally(()=>clearTimeout(timer2));if(timeout)return{err:"chafa timed out"};if(code!==0)return{err:(stderr||`chafa exit ${code}`).trim()};let rows2=parseChafa(stdout);return cachePut(key3,rows2),{rows:rows2}}catch(err){return{err:err instanceof Error?err.message:String(err)}}})();INFLIGHT.set(key3,task);let clear=()=>{if(INFLIGHT.get(key3)===task)INFLIGHT.delete(key3)};return task.then(clear,clear),task}var basename7=(p)=>p.split(/[/\\]/).pop()||p,ChafaImage=import_react46.memo(({path:path4,width,bare,chafa,load:load4=renderChafa})=>{let theme=useTheme().theme,[collapsed,setCollapsed]=import_react46.useState(!1),[result,setResult]=import_react46.useState(null),w2=Math.max(20,Math.min(80,width??60)),preview=strategy(path4,chafa??chafaBin()!==null);if(import_react46.useEffect(()=>{let live=!0;if(setResult(null),preview.kind!=="chafa")return()=>{live=!1};return load4(path4,w2).then((value)=>{if(live)setResult(value)},(err)=>{if(live)setResult({err:err instanceof Error?err.message:String(err)})}),()=>{live=!1}},[path4,w2,preview.kind,load4]),preview.kind!=="chafa"||!result||"err"in result)return $jsx(MediaChip,{path:path4,bare});if(collapsed)return $jsx(MediaChip,{path:path4,bare,onMouseDown:(e)=>{e.stopPropagation(),setCollapsed(!1)}});return $jsxs("box",{flexDirection:"column",marginTop:bare?0:1,children:[$jsx("box",{flexDirection:"column",onMouseDown:(e)=>{if(e.stopPropagation(),!bare)setCollapsed(!0)},children:result.rows.map((row3,i)=>$jsx("text",{children:row3.map((c,j2)=>$jsx("span",{fg:hex(c.fg),bg:hex(c.bg),children:c.ch},j2))},i))}),bare?null:$jsx("box",{height:1,onMouseDown:(e)=>{e.stopPropagation(),openFile(path4)},children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" "}),$jsx("span",{fg:theme.accent,children:"\u25C9 "}),$jsx("span",{fg:theme.text,children:basename7(path4)}),$jsx("span",{fg:theme.textMuted,children:" click image to collapse \xB7 click name to open"})]})})]})});var import_react47=__toESM(require_react_production(),1);import{existsSync as existsSync14,readFileSync as readFileSync9,readdirSync as readdirSync7}from"fs";import{homedir as homedir3}from"os";import{join as join10}from"path";var composer=require_composer(),Document=require_Document(),Schema=require_Schema(),errors=require_errors(),Alias=require_Alias(),identity=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit=require_visit();var $Composer=composer.Composer,$Document=Document.Document,$Schema=Schema.Schema,$YAMLError=errors.YAMLError,$YAMLParseError=errors.YAMLParseError,$YAMLWarning=errors.YAMLWarning,$Alias=Alias.Alias,$isAlias=identity.isAlias,$isCollection=identity.isCollection,$isDocument=identity.isDocument,$isMap=identity.isMap,$isNode=identity.isNode,$isPair=identity.isPair,$isScalar=identity.isScalar,$isSeq=identity.isSeq,$Pair=Pair.Pair,$Scalar=Scalar.Scalar,$YAMLMap=YAMLMap.YAMLMap,$YAMLSeq=YAMLSeq.YAMLSeq;var $Lexer=lexer.Lexer,$LineCounter=lineCounter.LineCounter,$Parser=parser.Parser,$parse=publicApi.parse,$parseAllDocuments=publicApi.parseAllDocuments,$parseDocument=publicApi.parseDocument,$stringify=publicApi.stringify,$visit=visit.visit,$visitAsync=visit.visitAsync;var SKINS=["default","ares","mono","slate","daylight","warm-lightmode","poseidon","sisyphus","charizard"],home=()=>process.env.HERMES_HOME||join10(process.env.HOME||homedir3(),".hermes"),skin=(path4)=>{try{let raw=$parse(readFileSync9(path4,"utf8"));if(raw&&typeof raw==="object"&&!Array.isArray(raw)){let name=raw.name;if(typeof name==="string"&&name.trim())return name.trim()}}catch{}return null};function skins(){let dir=join10(home(),"skins");if(!existsSync14(dir))return[...SKINS];let extra=readdirSync7(dir,{withFileTypes:!0}).filter((e)=>e.isFile()&&e.name.endsWith(".yaml")).map((e)=>skin(join10(dir,e.name))).filter((name)=>name!==null&&!SKINS.includes(name)).sort();return[...SKINS,...new Set(extra)]}function mode(name){let n=name.toLowerCase();if(n.includes("light")||n==="tango-adapted")return"light";if(n==="tokyo-storm")return"dark";return}var DEFAULT={agentName:"Hermes"},Ctx5=import_react47.createContext(DEFAULT);function deriveSkin(skin2){let name=skin2?.branding?.agent_name?.trim();return{skin:skin2??void 0,agentName:name||"Hermes"}}var SkinProvider=import_react47.memo(({value,children})=>$jsx(Ctx5.Provider,{value,children}));function useSkin(){return import_react47.useContext(Ctx5)}var SYMBOLS={"\\alpha":"\u03B1","\\beta":"\u03B2","\\gamma":"\u03B3","\\delta":"\u03B4","\\epsilon":"\u03B5","\\varepsilon":"\u03B5","\\zeta":"\u03B6","\\eta":"\u03B7","\\theta":"\u03B8","\\vartheta":"\u03D1","\\iota":"\u03B9","\\kappa":"\u03BA","\\lambda":"\u03BB","\\mu":"\u03BC","\\nu":"\u03BD","\\xi":"\u03BE","\\pi":"\u03C0","\\varpi":"\u03D6","\\rho":"\u03C1","\\varrho":"\u03F1","\\sigma":"\u03C3","\\varsigma":"\u03C2","\\tau":"\u03C4","\\upsilon":"\u03C5","\\phi":"\u03C6","\\varphi":"\u03C6","\\chi":"\u03C7","\\psi":"\u03C8","\\omega":"\u03C9","\\Gamma":"\u0393","\\Delta":"\u0394","\\Theta":"\u0398","\\Lambda":"\u039B","\\Xi":"\u039E","\\Pi":"\u03A0","\\Sigma":"\u03A3","\\Upsilon":"\u03A5","\\Phi":"\u03A6","\\Psi":"\u03A8","\\Omega":"\u03A9","\\sum":"\u2211","\\prod":"\u220F","\\coprod":"\u2210","\\int":"\u222B","\\iint":"\u222C","\\iiint":"\u222D","\\oint":"\u222E","\\bigcup":"\u22C3","\\bigcap":"\u22C2","\\bigvee":"\u22C1","\\bigwedge":"\u22C0","\\bigoplus":"\u2A01","\\bigotimes":"\u2A02","\\partial":"\u2202","\\nabla":"\u2207","\\sqrt":"\u221A","\\emptyset":"\u2205","\\varnothing":"\u2205","\\infty":"\u221E","\\in":"\u2208","\\notin":"\u2209","\\ni":"\u220B","\\subset":"\u2282","\\supset":"\u2283","\\subseteq":"\u2286","\\supseteq":"\u2287","\\subsetneq":"\u228A","\\supsetneq":"\u228B","\\cup":"\u222A","\\cap":"\u2229","\\setminus":"\u2216","\\complement":"\u2201","\\forall":"\u2200","\\exists":"\u2203","\\nexists":"\u2204","\\land":"\u2227","\\lor":"\u2228","\\lnot":"\xAC","\\neg":"\xAC","\\therefore":"\u2234","\\because":"\u2235","\\le":"\u2264","\\leq":"\u2264","\\ge":"\u2265","\\geq":"\u2265","\\ne":"\u2260","\\neq":"\u2260","\\ll":"\u226A","\\gg":"\u226B","\\approx":"\u2248","\\equiv":"\u2261","\\cong":"\u2245","\\sim":"\u223C","\\simeq":"\u2243","\\propto":"\u221D","\\perp":"\u22A5","\\parallel":"\u2225","\\models":"\u22A8","\\vdash":"\u22A2","\\mid":"\u2223","\\nmid":"\u2224","\\divides":"\u2223","\\blacksquare":"\u25A0","\\square":"\u25A1","\\Box":"\u25A1","\\qed":"\u220E","\\bigstar":"\u2605","\\bmod":"mod","\\mod":"mod","\\langle":"\u27E8","\\rangle":"\u27E9","\\lceil":"\u2308","\\rceil":"\u2309","\\lfloor":"\u230A","\\rfloor":"\u230B","\\|":"\u2016","\\to":"\u2192","\\rightarrow":"\u2192","\\leftarrow":"\u2190","\\leftrightarrow":"\u2194","\\Rightarrow":"\u21D2","\\Leftarrow":"\u21D0","\\Leftrightarrow":"\u21D4","\\implies":"\u27F9","\\impliedby":"\u27F8","\\iff":"\u27FA","\\mapsto":"\u21A6","\\hookrightarrow":"\u21AA","\\hookleftarrow":"\u21A9","\\uparrow":"\u2191","\\downarrow":"\u2193","\\updownarrow":"\u2195","\\cdot":"\u22C5","\\cdots":"\u22EF","\\ldots":"\u2026","\\dots":"\u2026","\\dotsb":"\u2026","\\dotsc":"\u2026","\\vdots":"\u22EE","\\ddots":"\u22F1","\\times":"\xD7","\\div":"\xF7","\\pm":"\xB1","\\mp":"\u2213","\\circ":"\u2218","\\bullet":"\u2022","\\star":"\u22C6","\\ast":"\u2217","\\oplus":"\u2295","\\ominus":"\u2296","\\otimes":"\u2297","\\odot":"\u2299","\\diamond":"\u22C4","\\angle":"\u2220","\\triangle":"\u25B3","\\,":" ","\\;":" ","\\:":" ","\\!":"","\\ ":" ","\\quad":" ","\\qquad":" ","\\sin":"sin","\\cos":"cos","\\tan":"tan","\\cot":"cot","\\sec":"sec","\\csc":"csc","\\arcsin":"arcsin","\\arccos":"arccos","\\arctan":"arctan","\\sinh":"sinh","\\cosh":"cosh","\\tanh":"tanh","\\log":"log","\\ln":"ln","\\exp":"exp","\\det":"det","\\dim":"dim","\\ker":"ker","\\lim":"lim","\\liminf":"liminf","\\limsup":"limsup","\\sup":"sup","\\inf":"inf","\\max":"max","\\min":"min","\\arg":"arg","\\gcd":"gcd","\\&":"&","\\%":"%","\\$":"$","\\#":"#","\\_":"_","\\{":"{","\\}":"}"},BB={A:"\uD835\uDD38",B:"\uD835\uDD39",C:"\u2102",D:"\uD835\uDD3B",E:"\uD835\uDD3C",F:"\uD835\uDD3D",G:"\uD835\uDD3E",H:"\u210D",I:"\uD835\uDD40",J:"\uD835\uDD41",K:"\uD835\uDD42",L:"\uD835\uDD43",M:"\uD835\uDD44",N:"\u2115",O:"\uD835\uDD46",P:"\u2119",Q:"\u211A",R:"\u211D",S:"\uD835\uDD4A",T:"\uD835\uDD4B",U:"\uD835\uDD4C",V:"\uD835\uDD4D",W:"\uD835\uDD4E",X:"\uD835\uDD4F",Y:"\uD835\uDD50",Z:"\u2124"},CAL={A:"\uD835\uDC9C",B:"\u212C",C:"\uD835\uDC9E",D:"\uD835\uDC9F",E:"\u2130",F:"\u2131",G:"\uD835\uDCA2",H:"\u210B",I:"\u2110",J:"\uD835\uDCA5",K:"\uD835\uDCA6",L:"\u2112",M:"\u2133",N:"\uD835\uDCA9",O:"\uD835\uDCAA",P:"\uD835\uDCAB",Q:"\uD835\uDCAC",R:"\u211B",S:"\uD835\uDCAE",T:"\uD835\uDCAF",U:"\uD835\uDCB0",V:"\uD835\uDCB1",W:"\uD835\uDCB2",X:"\uD835\uDCB3",Y:"\uD835\uDCB4",Z:"\uD835\uDCB5"},FRAK={A:"\uD835\uDD04",B:"\uD835\uDD05",C:"\u212D",D:"\uD835\uDD07",E:"\uD835\uDD08",F:"\uD835\uDD09",G:"\uD835\uDD0A",H:"\u210C",I:"\u2111",J:"\uD835\uDD0D",K:"\uD835\uDD0E",L:"\uD835\uDD0F",M:"\uD835\uDD10",N:"\uD835\uDD11",O:"\uD835\uDD12",P:"\uD835\uDD13",Q:"\uD835\uDD14",R:"\u211C",S:"\uD835\uDD16",T:"\uD835\uDD17",U:"\uD835\uDD18",V:"\uD835\uDD19",W:"\uD835\uDD1A",X:"\uD835\uDD1B",Y:"\uD835\uDD1C",Z:"\u2128"},SUPERSCRIPT={"0":"\u2070","1":"\xB9","2":"\xB2","3":"\xB3","4":"\u2074","5":"\u2075","6":"\u2076","7":"\u2077","8":"\u2078","9":"\u2079","+":"\u207A","-":"\u207B","=":"\u207C","(":"\u207D",")":"\u207E",a:"\u1D43",b:"\u1D47",c:"\u1D9C",d:"\u1D48",e:"\u1D49",f:"\u1DA0",g:"\u1D4D",h:"\u02B0",i:"\u2071",j:"\u02B2",k:"\u1D4F",l:"\u02E1",m:"\u1D50",n:"\u207F",o:"\u1D52",p:"\u1D56",r:"\u02B3",s:"\u02E2",t:"\u1D57",u:"\u1D58",v:"\u1D5B",w:"\u02B7",x:"\u02E3",y:"\u02B8",z:"\u1DBB"},SUBSCRIPT={"0":"\u2080","1":"\u2081","2":"\u2082","3":"\u2083","4":"\u2084","5":"\u2085","6":"\u2086","7":"\u2087","8":"\u2088","9":"\u2089","+":"\u208A","-":"\u208B","=":"\u208C","(":"\u208D",")":"\u208E",a:"\u2090",e:"\u2091",h:"\u2095",i:"\u1D62",j:"\u2C7C",k:"\u2096",l:"\u2097",m:"\u2098",n:"\u2099",o:"\u2092",p:"\u209A",r:"\u1D63",s:"\u209B",t:"\u209C",u:"\u1D64",v:"\u1D65",x:"\u2093"};var escapeRe=(s)=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),splitByEnding=(keys)=>{let letter=[],punct=[];for(let k2 of keys)if(/[A-Za-z]$/.test(k2))letter.push(k2);else punct.push(k2);return{letter,punct}},buildAlt=(cmds)=>cmds.sort((a,b2)=>b2.length-a.length).map(escapeRe).join("|"),{letter:LETTER_CMDS,punct:PUNCT_CMDS}=splitByEnding(Object.keys(SYMBOLS)),SYMBOL_LETTER_RE=new RegExp("(?:"+buildAlt(LETTER_CMDS)+")(?![A-Za-z])","g"),SYMBOL_PUNCT_RE=new RegExp("(?:"+buildAlt(PUNCT_CMDS)+")","g"),convertScript=(input,table,sigil)=>{let out="",allMapped=!0;for(let ch of input){let mapped=table[ch];if(!mapped){allMapped=!1;break}out+=mapped}if(allMapped)return out;let trimmed=input.trim();if([...trimmed].length===1)return`${sigil}${trimmed}`;return`${sigil}(${trimmed})`},readBraced=(s,start)=>{if(s[start]!=="{")return null;let depth=1,i=start+1;while(i<s.length&&depth>0){let c=s[i];if(c==="\\"&&i+1<s.length){i+=2;continue}if(c==="{")depth++;else if(c==="}")depth--;if(depth>0)i++}if(depth!==0)return null;return{content:s.slice(start+1,i),end:i+1}},replaceBracedCommand=(input,command,render)=>{let cmdLen=command.length,out="",i=0;while(i<input.length){let idx=input.indexOf(command,i);if(idx<0)return out+=input.slice(i),out;let after=input[idx+cmdLen];if(after&&/[A-Za-z]/.test(after)){out+=input.slice(i,idx+cmdLen),i=idx+cmdLen;continue}out+=input.slice(i,idx);let p=idx+cmdLen;while(input[p]===" "||input[p]==="\t")p++;let arg=readBraced(input,p);if(!arg){out+=input.slice(idx,p+1),i=p+1;continue}out+=render(replaceBracedCommand(arg.content,command,render)),i=arg.end}return out},replaceFracs=(input)=>{let out="",i=0;while(i<input.length){let idx=input.indexOf("\\frac",i);if(idx<0)return out+=input.slice(i),out;let after=input[idx+5];if(after&&/[A-Za-z]/.test(after)){out+=input.slice(i,idx+5),i=idx+5;continue}out+=input.slice(i,idx);let p=idx+5;while(input[p]===" "||input[p]==="\t")p++;let num2=readBraced(input,p);if(!num2){out+=input.slice(idx,p+1),i=p+1;continue}p=num2.end;while(input[p]===" "||input[p]==="\t")p++;let den=readBraced(input,p);if(!den){out+=input.slice(idx,p+1),i=p+1;continue}out+=`${wrapForFrac(replaceFracs(num2.content))}/${wrapForFrac(replaceFracs(den.content))}`,i=den.end}return out},wrapForFrac=(expr)=>{let trimmed=expr.trim();if(!trimmed)return trimmed;if(/^\(.*\)$/.test(trimmed))return trimmed;if(/[+\-/*]|\s/.test(trimmed))return`(${trimmed})`;return trimmed};function texToUnicode(input){let s=input;return s=s.replace(/\\mathbb\s*\{([A-Za-z])\}/g,(raw,c)=>BB[c]??raw),s=s.replace(/\\mathcal\s*\{([A-Za-z])\}/g,(raw,c)=>CAL[c]??raw),s=s.replace(/\\mathfrak\s*\{([A-Za-z])\}/g,(raw,c)=>FRAK[c]??raw),s=s.replace(/\\mathbf\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\mathit\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\mathrm\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\text\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\operatorname\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\overline\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0305`),s=s.replace(/\\hat\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0302`),s=s.replace(/\\bar\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0304`),s=s.replace(/\\tilde\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0303`),s=s.replace(/\\vec\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u20D7`),s=s.replace(/\\dot\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0307`),s=s.replace(/\\ddot\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0308`),s=replaceFracs(s),s=replaceBracedCommand(s,"\\boxed",(body)=>`**${body.trim()}**`),s=replaceBracedCommand(s,"\\fbox",(body)=>`**${body.trim()}**`),s=s.replace(/\\xrightarrow\s*\{([^{}]*)\}/g,(_2,label)=>`\u2500${label.trim()}\u2192`),s=s.replace(/\\xleftarrow\s*\{([^{}]*)\}/g,(_2,label)=>`\u2190${label.trim()}\u2500`),s=s.replace(/\\Longrightarrow/g,"\u27F9"),s=s.replace(/\\Longleftarrow/g,"\u27F8"),s=s.replace(/\\Longleftrightarrow/g,"\u27FA"),s=s.replace(/\s*\\pmod\s*\{([^{}]*)\}/g,(_2,p)=>` (mod ${p.trim()})`),s=s.replace(/\s*\\pod\s*\{([^{}]*)\}/g,(_2,p)=>` (${p.trim()})`),s=s.replace(/\s*\\tag\s*\{([^{}]*)\}/g,(_2,n)=>` (${n.trim()})`),s=s.replace(/\\(?:Bigg|bigg|Big|big)[lrm]?(?![A-Za-z])/g,""),s=s.replace(/\\(?:scriptscriptstyle|displaystyle|scriptstyle|textstyle|nolimits|limits)(?![A-Za-z])\s*/g,""),s=s.replace(/\\left(?![A-Za-z])\.?/g,""),s=s.replace(/\\right(?![A-Za-z])\.?/g,""),s=s.replace(SYMBOL_PUNCT_RE,(m2)=>SYMBOLS[m2]??m2),s=s.replace(SYMBOL_LETTER_RE,(m2)=>SYMBOLS[m2]??m2),s=s.replace(/\^\s*\{([^{}]+)\}/g,(_2,body)=>convertScript(body,SUPERSCRIPT,"^")),s=s.replace(/\^([A-Za-z0-9+\-=])/g,(raw,ch)=>SUPERSCRIPT[ch]??raw),s=s.replace(/_\s*\{([^{}]+)\}/g,(_2,body)=>convertScript(body,SUBSCRIPT,"_")),s=s.replace(/_([A-Za-z0-9+\-=])/g,(raw,ch)=>SUBSCRIPT[ch]??raw),s}var CODE_SPAN_RE=/(`{1,2})[^`\n]+?\1/g,MATH_SPAN_RE=new RegExp([String.raw`\$\$([^$]+?)\$\$`,String.raw`\\\[([\s\S]+?)\\\]`,String.raw`\\\(([^\n]+?)\\\)`,String.raw`(?<!\$)\$([^\s$](?:[^$\n]*?[^\s$])?)\$(?!\$)`].join("|"),"g");function mathify(md){if(!/[$\\]/.test(md))return md;let out="",i=0;CODE_SPAN_RE.lastIndex=0;for(let m2 of md.matchAll(CODE_SPAN_RE))out+=md.slice(i,m2.index).replace(MATH_SPAN_RE,(_2,a,b2,c,d2)=>texToUnicode(a??b2??c??d2)),out+=m2[0],i=m2.index+m2[0].length;return out+=md.slice(i).replace(MATH_SPAN_RE,(_2,a,b2,c,d2)=>texToUnicode(a??b2??c??d2)),out}function duration(ms2){if(ms2<1000)return`${ms2}ms`;let s=ms2/1000;if(s<60)return`${s.toFixed(1)}s`;return`${Math.floor(s/60)}m${Math.floor(s%60)}s`}function tokens2(n){if(n<1000)return String(n);if(n<1e6)return`${(n/1000).toFixed(1)}k`;return`${(n/1e6).toFixed(2)}M`}function extract(msg){return msg.parts.filter((p)=>p.type==="text").map((p)=>p.content).join("")}var trunc3=(s,max)=>s.length<=max?s:s.slice(0,max-1)+"\u2026";function mix(a,b2,n=0.5){return RGBA.fromValues(a.r+(b2.r-a.r)*n,a.g+(b2.g-a.g)*n,a.b+(b2.b-a.b)*n,a.a+(b2.a-a.a)*n)}function darken(c,n=0.95){return RGBA.fromValues(c.r*n,c.g*n,c.b*n,c.a)}function lighten(c,n=0.05){return RGBA.fromValues(c.r+(1-c.r)*n,c.g+(1-c.g)*n,c.b+(1-c.b)*n,c.a)}var TOP_RULE={topLeft:"\u2594",topRight:"\u2594",horizontal:"\u2594",bottomLeft:"",bottomRight:"",vertical:"",topT:"",bottomT:"",leftT:"",rightT:"",cross:""},BOTTOM_RULE={bottomLeft:"\u2581",bottomRight:"\u2581",horizontal:"\u2581",topLeft:"",topRight:"",vertical:"",topT:"",bottomT:"",leftT:"",rightT:"",cross:""};function useClick(fn){let at=import_react48.useRef(null);return{onMouseDown:(e)=>{at.current={x:e.x,y:e.y}},onMouseUp:(e)=>{let a=at.current;if(at.current=null,fn&&a&&a.x===e.x&&a.y===e.y)fn()}}}var MessageItem=import_react48.memo(({message,streaming,prompt,onRewind,onPick})=>{if(message.role==="system")return $jsx(SystemMessage,{message});if(message.role==="user")return $jsx(UserMessage,{message,onRewind});return $jsx(AssistantMessage,{message,streaming,prompt,onPick})}),SystemMessage=import_react48.memo(({message})=>{let theme=useTheme().theme;return $jsx("box",{marginBottom:1,minHeight:1,children:$jsx("text",{fg:theme.textMuted,wrapMode:"word",children:extract(message)})})}),UserMessage=import_react48.memo(({message,onRewind})=>{let ctx=useTheme(),theme=ctx.theme,[hover,setHover]=import_react48.useState(!1),click=useClick(onRewind&&(()=>onRewind(message))),fill=import_react48.useMemo(()=>ctx.mode==="dark"?mix(theme.background,theme.backgroundElement):darken(theme.backgroundElement),[ctx.mode,theme.background,theme.backgroundElement]),edge=import_react48.useMemo(()=>ctx.mode==="dark"?darken(theme.background):darken(theme.backgroundElement),[ctx.mode,theme.background,theme.backgroundElement]),segs=import_react48.useMemo(()=>message.parts.map((p)=>p.type==="text"&&p.content?splitContent(p.content):null),[message.parts]);return $jsxs("box",{flexDirection:"column",marginBottom:1,children:[$jsx("box",{height:1,border:["bottom"],customBorderChars:BOTTOM_RULE,borderColor:edge}),$jsx("box",{backgroundColor:hover?fill:theme.backgroundElement,paddingLeft:1,paddingRight:1,paddingY:1,flexDirection:"column",minHeight:1,onMouseOver:()=>setHover(!0),onMouseOut:()=>setHover(!1),...click,children:message.parts.map((p,i)=>{let seg=segs[i];if(!seg)return null;let k2=p.key??i;return seg.map((s,j2)=>{if("media"in s)return classify(s.media)==="img"?$jsx("box",{children:$jsx(ChafaImage,{path:s.media})},`${k2}-m${j2}`):$jsx("box",{marginTop:1,children:$jsx(MediaChip,{path:s.media})},`${k2}-m${j2}`);if("code"in s)return $jsx(CodeBlock,{code:s.code,lang:s.lang},`${k2}-c${j2}`);return $jsx("text",{fg:theme.text,wrapMode:"word",children:s.md},`${k2}-${j2}`)})})}),$jsx("box",{height:1,border:["top"],customBorderChars:TOP_RULE,borderColor:edge})]})}),AssistantMessage=import_react48.memo(({message,streaming,prompt,onPick})=>{let ctx=useTheme(),theme=ctx.theme,{agentName}=useSkin(),[hover,setHover]=import_react48.useState(!1),click=useClick(onPick&&(()=>onPick(message))),rail2=import_react48.useMemo(()=>ctx.mode==="dark"?lighten(theme.background):darken(theme.backgroundElement),[ctx.mode,theme.background,theme.backgroundElement]),err=!!message.error,trail=message.parts.filter((p)=>p.type==="tool"||p.type==="prompt"),diffs=trail.filter((p)=>p.type==="tool"&&(!!p.diff||isDiff(p.result))),segs=import_react48.useMemo(()=>message.parts.map((p)=>p.type==="text"&&p.content?splitContent(p.content):null),[message.parts]),header=[message.speaker??agentName,message.usage?`${tokens2(message.usage.input)}\u2192${tokens2(message.usage.output)} tok`:null,message.duration?duration(message.duration):null].filter(Boolean).join(" \xB7 "),part=(p,i)=>{if(p.type==="prompt")return $jsx("box",{marginTop:1,onMouseDown:(e)=>e.stopPropagation(),children:$jsx(PromptCard,{part:p,ref:!p.answered?prompt?.ref:void 0,onAnswer:prompt?.onAnswer??(()=>{})})},`pr-${p.id}`);let seg=segs[i];if(!seg)return null;let k2=p.key??i,last=streaming&&p.streaming;return seg.map((s,j2)=>{let tail=last&&j2===seg.length-1;if("media"in s)return classify(s.media)==="img"?$jsx("box",{children:$jsx(ChafaImage,{path:s.media})},`${k2}-m${j2}`):$jsx("box",{marginTop:1,children:$jsx(MediaChip,{path:s.media})},`${k2}-m${j2}`);if("code"in s)return $jsx(CodeBlock,{code:s.code,lang:s.lang,streaming:tail},`${k2}-c${j2}`);return $jsx("box",{children:$jsx("markdown",{content:mathify(s.md),fg:theme.markdownText,syntaxStyle:ctx.syntaxStyle,streaming:tail})},`${k2}-${j2}`)})};return $jsxs("box",{flexDirection:"row",marginBottom:1,onMouseOver:()=>setHover(!0),onMouseOut:()=>setHover(!1),...click,children:[$jsxs("box",{flexDirection:"column",flexGrow:1,flexShrink:1,children:[$jsxs("box",{height:1,flexDirection:"row",children:[$jsx("box",{flexGrow:1,children:$jsx("text",{fg:theme.textMuted,children:header})}),trail.length?$jsx("box",{children:$jsx("text",{fg:theme.textMuted,children:trunc3(trail.map((p)=>p.type==="tool"?p.name:"?").join(" \xB7 "),40)})}):null]}),message.parts.map(part),diffs.length?$jsx(DiffTabs,{tools:diffs}):null,err?$jsx(ErrorBlock,{text:message.error}):null]}),$jsxs("box",{width:3,flexShrink:0,flexDirection:"row",children:[$jsx("box",{width:2}),$jsx("box",{width:1,backgroundColor:hover?rail2:void 0})]})]})});var MessageList=import_react49.memo(({messages,streaming,prompt,onRewind,onPick})=>{let theme=useTheme().theme,style=import_react49.useMemo(()=>({viewportOptions:{backgroundColor:theme.background},scrollbarOptions:{trackOptions:{foregroundColor:theme.borderSubtle,backgroundColor:theme.background}}}),[theme]);if(messages.length===0)return $jsx("box",{flexGrow:1});let last=messages[messages.length-1],lastStreaming=streaming&&last?.role==="assistant";return $jsx("scrollbox",{flexGrow:1,scrollY:!0,stickyScroll:!0,stickyStart:"bottom",style,children:$jsx("box",{flexDirection:"column",paddingBottom:1,children:messages.map((msg,i)=>$jsx("box",{flexDirection:"column",children:$jsx(MessageItem,{message:msg,streaming:lastStreaming&&i===messages.length-1,prompt,onRewind,onPick})},msg.id))})})});var Chat=import_react50.memo(({messages,streaming,prompt,cloud,cloudH,pick,onResize,onPick,onClose,onRewind})=>{let theme=useTheme().theme;return $jsxs("box",{flexGrow:1,flexDirection:"column",position:"relative",backgroundColor:theme.background,children:[$jsx(MessageList,{messages,streaming,prompt,onRewind,onPick}),cloud?$jsx("box",{position:"absolute",top:0,left:0,right:0,zIndex:1,children:$jsx(ThoughtCloud,{height:cloudH,messages,pick,onResize,onClose})}):null]})});var import_react69=__toESM(require_react_production(),1);var import_react58=__toESM(require_react_production(),1);init_sessions_db();import{existsSync as existsSync15}from"fs";import{homedir as homedir5}from"os";import{join as join11}from"path";var INLINE=process.env.HERM_IO_INLINE==="1",HOME2=()=>process.env.HERMES_HOME||join11(homedir5(),".hermes"),entry=()=>{let js=join11(import.meta.dirname,"db.worker.js");return new URL(existsSync15(js)?"./db.worker.js":"./db.worker.ts",import.meta.url)},state={w:null,seq:0,pending:new Map,inline:null},spawn2=()=>{if(state.w)return state.w;let w2=new Worker(entry());return w2.onmessage=(e)=>{let r=e.data;state.pending.get(r.id)?.(r),state.pending.delete(r.id)},w2.onerror=(ev)=>{let err=`io worker: ${ev.message}`;for(let res of state.pending.values())res({id:-1,ok:!1,err});if(state.pending.clear(),state.w===w2)state.w=null;w2.terminate()},state.w=w2},call=(fn,args)=>{if(INLINE)return state.inline??=Promise.resolve().then(() => (init_fns(),exports_fns)).then((m2)=>m2.FNS),state.inline.then((f)=>f[fn](...args));return new Promise((resolve4,reject)=>{let id=++state.seq;state.pending.set(id,(r)=>r.ok?resolve4(r.v):reject(Error(r.err))),spawn2().postMessage({id,home:HOME2(),fn,args})})},io=new Proxy({},{get:(_2,fn)=>(...args)=>call(fn,args)}),warm=()=>{if(!INLINE)call("roots",[0])};var TabShell=(props)=>{let theme=useTheme().theme;return $jsxs("box",{flexDirection:"column",flexGrow:props.grow??1,flexBasis:0,minWidth:0,minHeight:0,border:!0,borderColor:props.focus?theme.primary:theme.border,backgroundColor:theme.backgroundPanel,padding:1,children:[$jsxs("box",{height:1,overflow:"hidden",flexDirection:"row",children:[$jsx("box",{flexShrink:0,overflow:"hidden",children:$jsx("text",{fg:theme.primary,wrapMode:"none",children:$jsx("strong",{children:props.title})})}),props.titleRight?$jsx("box",{flexGrow:1,minWidth:0,overflow:"hidden",justifyContent:"flex-end",children:props.titleRight}):null]}),props.error?$jsx("box",{height:1,children:$jsx("text",{fg:theme.error,children:`\u26A0 ${props.error}`})}):null,$jsx("box",{height:1}),$jsx("box",{flexDirection:"column",flexGrow:1,minWidth:0,minHeight:0,overflow:"hidden",children:props.children})]})};var import_react51=__toESM(require_react_production(),1);var HintBar=import_react51.memo((props)=>{let theme=useTheme().theme,text4=props.pairs?props.pairs.map((p)=>`[${p[0]}] ${p[1]}`).join(" ")+(props.suffix?` \xB7 ${props.suffix}`:""):props.raw??"";return $jsx("box",{height:1,flexShrink:0,paddingX:1,overflow:"hidden",children:$jsx("text",{fg:theme.textMuted,wrapMode:"none",children:text4})})});var KV=(props)=>{let theme=useTheme().theme;return $jsxs("box",{minHeight:1,flexDirection:"row",children:[$jsx("box",{width:13,flexShrink:0,children:$jsx("text",{fg:theme.textMuted,children:props.label})}),$jsx("box",{flexGrow:1,minWidth:0,height:props.wrap?void 0:1,overflow:props.wrap?void 0:"hidden",children:$jsx("text",{wrapMode:props.wrap?"word":void 0,fg:props.fg??theme.text,children:props.value})})]})},KVBlock=(props)=>props.rows.map(([k2,v2,fg2])=>v2===void 0?null:$jsx(KV,{label:k2,value:v2,fg:fg2},k2));var import_react52=__toESM(require_react_production(),1);var VBAR_W=1,VBAR={visible:!0},Col=(p)=>{let theme=useTheme().theme,fg2=p.fg??theme.text;return $jsx("box",{width:p.w,flexGrow:p.grow?1:0,flexShrink:p.grow?1:0,minWidth:p.grow?p.min??12:p.w,height:1,overflow:"hidden",onMouseDown:p.onClick,flexDirection:"row",justifyContent:p.right?"flex-end":"flex-start",children:$jsx("text",{children:p.bold?$jsx("span",{fg:fg2,children:$jsx("strong",{children:p.children})}):$jsx("span",{fg:fg2,children:p.children})})})},Hdr=(p)=>$jsx("box",{flexDirection:"row",height:1,paddingRight:VBAR_W,children:p.children}),Marquee=(p)=>{let theme=useTheme().theme,fg2=p.fg??theme.text,text4=p.children,box=import_react52.useRef(null),node=import_react52.useRef(null),animate=exports_preferences.get("animations")!==!1&&p.active,[wraps,setWraps]=import_react52.useState(!1);import_react52.useEffect(()=>{let tn=node.current;if(!tn)return;let w2=box.current?.width??0;if(setWraps(text4.length>w2),!animate){tn.scrollX=0;return}let id,period=text4.length+GAP.length,hold=setTimeout(()=>{id=setInterval(()=>{let cur=box.current?.width??0;if(text4.length<=cur){tn.scrollX=0;return}tn.scrollX=(tn.scrollX+1)%period},p.speed??180)},p.hold??600);return()=>{if(clearTimeout(hold),id)clearInterval(id);if(node.current)node.current.scrollX=0}},[animate,text4,p.speed,p.hold]);let body=wraps?text4+GAP+text4:text4;return $jsx("box",{ref:box,width:p.w,flexGrow:p.grow?1:0,flexShrink:p.grow?1:0,minWidth:p.grow?p.min??12:p.w,height:1,overflow:"hidden",children:$jsx("text",{ref:node,wrapMode:"none",children:p.bold?$jsx("span",{fg:fg2,attributes:p.underline?TextAttributes.UNDERLINE:TextAttributes.NONE,children:$jsx("strong",{children:body})}):$jsx("span",{fg:fg2,attributes:p.underline?TextAttributes.UNDERLINE:TextAttributes.NONE,children:body})})})},GAP=" ";var import_react53=__toESM(require_react_production(),1);var Ticker=(p)=>{let ref=import_react53.useRef(null),animate=exports_preferences.get("animations")!==!1&&p.active,speed=p.speed??180,hold=p.hold??600,endHold=p.endHold??3000;return import_react53.useEffect(()=>{let node=ref.current;if(!node)return;if(!animate){node.scrollX=0;return}let dir=1,tick2,wait,step=()=>{let max=node.maxScrollX;if(max<=0)return;if(node.scrollX=Math.max(0,Math.min(max,node.scrollX+dir)),!(dir>0?node.scrollX>=max:node.scrollX<=0))return;if(tick2)clearInterval(tick2),tick2=void 0;dir=-dir,wait=setTimeout(()=>{tick2=setInterval(step,speed)},endHold)};return wait=setTimeout(()=>{tick2=setInterval(step,speed)},hold),()=>{if(wait)clearTimeout(wait);if(tick2)clearInterval(tick2);if(ref.current)ref.current.scrollX=0}},[animate,speed,hold,endHold]),$jsx("box",{flexGrow:1,flexShrink:1,minWidth:0,height:1,overflow:"hidden",children:$jsx("text",{ref,wrapMode:"none",fg:p.fg,children:p.children})})},RX=/(`[^`]+`)|(\*\*[^*]+\*\*)|(__[^_]+__)|((?<![\w*])\*[^*\s][^*]*\*(?![\w*]))|((?<!\w)_[^_\s][^_]*_(?!\w))/g,inline=(s)=>{let out=[],last=0;for(let m2 of s.matchAll(RX)){let at=m2.index??0;if(at>last)out.push({t:s.slice(last,at)});let hit=m2[0];if(hit.startsWith("`"))out.push({t:hit.slice(1,-1),c:!0});else if(hit.startsWith("**")||hit.startsWith("__"))out.push({t:hit.slice(2,-2),b:!0});else out.push({t:hit.slice(1,-1),i:!0});last=at+hit.length}if(last<s.length)out.push({t:s.slice(last)});return out.map((seg)=>seg.c?seg:{...seg,t:seg.t.replace(/^#{1,6}\s+/,"")})};var import_react54=__toESM(require_react_production(),1);var cycle=(t2)=>t2==="off"?"in":t2==="in"?"ex":"off",FilterChip=import_react54.memo((p)=>{let theme=useTheme().theme,color=p.color??theme.accent,text4=p.textColor??theme.text,bg2=p.state==="in"?color:p.state==="ex"?void 0:theme.backgroundElement,fg2=p.state==="in"?theme.background:p.state==="ex"?p.selected?color:theme.borderSubtle:p.selected?color:text4;return $jsx("box",{id:p.id,height:1,flexShrink:0,marginLeft:p.gap??1,paddingLeft:1,paddingRight:1,backgroundColor:bg2,onMouseDown:p.onMouseDown,children:$jsx("text",{fg:fg2,attributes:p.state==="ex"?TextAttributes.STRIKETHROUGH:TextAttributes.NONE,children:p.label})})});var Confirm=(props)=>{let theme=useTheme().theme,keys=useKeys();return useKeyboard((key3)=>{if(keys.match("dialog.confirm",key3)||keys.match("dialog.accept",key3))return props.onConfirm();if(keys.match("dialog.deny",key3))return props.onCancel()}),$jsxs("box",{flexDirection:"column",width:54,children:[$jsx("box",{height:1,children:$jsx("text",{fg:props.danger?theme.warning:theme.primary,children:$jsx("strong",{children:props.title})})}),$jsx("box",{height:1}),$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:props.body})}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:`[${keys.print("dialog.confirm")}/${keys.print("dialog.accept")}] ${props.yes??"confirm"} [${keys.print("dialog.deny")}] ${props.no??"cancel"}`})})]})};function openConfirm(dialog,opts){return new Promise((resolve4)=>{let done=(v2)=>{resolve4(v2),dialog.clear()};dialog.replace($jsx(Confirm,{...opts,onConfirm:()=>done(!0),onCancel:()=>done(!1)}),()=>resolve4(!1))})}var SaveDiscard=(props)=>{let theme=useTheme().theme;return useKeyboard((key3)=>{if(key3.name==="s")return props.onPick("save");if(key3.name==="d")return props.onPick("discard");if(key3.name==="return")return props.onPick("save")}),$jsxs("box",{flexDirection:"column",width:54,children:[$jsx("box",{height:1,children:$jsx("text",{fg:theme.warning,children:$jsx("strong",{children:props.title})})}),$jsx("box",{height:1}),$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:props.body})}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"[S/Enter] save [D] discard [Esc] keep editing"})})]})};function openSaveDiscard(dialog,opts){return new Promise((resolve4)=>{let done=(v2)=>{resolve4(v2),dialog.clear()};dialog.replace($jsx(SaveDiscard,{...opts,onPick:done,onCancel:()=>done(null)}),()=>resolve4(null))})}var import_react56=__toESM(require_react_production(),1);var TextPrompt=(props)=>{let theme=useTheme().theme,[value,setValue]=import_react56.useState(props.initial??"");return $jsxs("box",{flexDirection:"column",width:60,children:[$jsx("box",{height:1,children:$jsx("text",{fg:theme.primary,children:$jsx("strong",{children:props.title})})}),$jsx("box",{height:1}),props.label?$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:props.label})}):null,$jsxs("box",{height:1,flexDirection:"row",overflow:"hidden",children:[$jsx("box",{flexShrink:0,children:$jsx("text",{fg:theme.accent,children:"\u2503 "})}),$jsx("box",{flexGrow:1,minWidth:0,height:1,overflow:"hidden",children:$jsx("input",{value,onInput:setValue,onSubmit:()=>{let v2=value.trim();if(v2)props.onSubmit(v2)},focused:!0,textColor:theme.text,backgroundColor:theme.backgroundElement,focusedBackgroundColor:theme.backgroundElement})})]}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:value.trim()?"Enter confirm \xB7 Esc cancel \xB7 Ctrl+U clear":"Esc cancel"})})]})};function openTextPrompt(dialog,opts){return new Promise((resolve4)=>{dialog.replace($jsx(TextPrompt,{title:opts.title,label:opts.label,initial:opts.initial,onSubmit:(v2)=>{resolve4(v2),dialog.clear()}}),()=>resolve4(null))})}var h12=()=>exports_preferences.get("timeFormat")==="12h",abs=()=>exports_preferences.get("timeStyle")==="absolute",trunc5=(s,max)=>s.length<=max?s:s.slice(0,max-1)+"\u2026",fmt=(n)=>n>=1e6?`${(n/1e6).toFixed(2)}M`:n>=1000?`${(n/1000).toFixed(1)}k`:String(n),cost2=(c)=>c==null?"\u2014":`$${c.toFixed(2)}`,clock=(d2)=>d2.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hour12:h12()}),stamp=(ts)=>{let d2=new Date(ts*1000);return d2.toDateString()===new Date().toDateString()?clock(d2):d2.toLocaleDateString(void 0,{month:"short",day:"numeric"})},rel=(ts)=>{let s=Math.floor(Date.now()/1000-ts);if(s<60)return"just now";if(s<3600)return`${Math.floor(s/60)}m ago`;if(s<86400)return`${Math.floor(s/3600)}h ago`;return`${Math.floor(s/86400)}d ago`},ago=(ts)=>abs()?stamp(ts):rel(ts),until=(ts)=>{if(abs())return ts<=Date.now()/1000?"due":stamp(ts);let s=Math.floor(ts-Date.now()/1000);if(s<=0)return"due";if(s<60)return`in ${s}s`;if(s<3600)return`in ${Math.floor(s/60)}m`;if(s<86400)return`in ${Math.floor(s/3600)}h`;return`in ${Math.floor(s/86400)}d`},when=(ts)=>{let d2=new Date(ts*1000);return`${d2.toLocaleDateString()} ${clock(d2)}`},span=(start,end)=>{let s=Math.round(end-start);if(s<0)return"\u2014";if(s>=3600)return`${Math.floor(s/3600)}h ${Math.floor(s%3600/60)}m`;if(s>=60)return`${Math.floor(s/60)}m`;return`${s}s`},dur2=(s)=>s>=3600?`${Math.floor(s/3600)}h${Math.floor(s%3600/60)}m`:s>=60?`${Math.floor(s/60)}m${Math.floor(s%60)}s`:`${Math.floor(s)}s`;var import_react57=__toESM(require_react_production(),1);import{watch as watch2,existsSync as existsSync17,statSync as statSync6}from"fs";import{dirname as dirname7,basename as basename8}from"path";import{readdir,stat}from"fs/promises";import{openSync,readSync,closeSync,readdirSync as readdirSync8,readFileSync as readFileSync10,existsSync as existsSync16}from"fs";import{homedir as homedir6}from"os";init_sessions_db();var HOME3=process.env.HOME||homedir6(),home2={path:process.env.HERMES_HOME||`${HOME3}/.hermes`},setHome2=(h2)=>{home2.path=h2},hermesPath=(relative4)=>`${home2.path}/${relative4}`,managedSystem=async()=>{let env2=(process.env.HERMES_MANAGED??"").trim();if(env2){let norm=env2.toLowerCase();if(norm==="1"||norm==="true"||norm==="yes"||norm==="on")return"NixOS";return{homebrew:"Homebrew",nix:"NixOS",nixos:"NixOS"}[norm]??env2}return await Bun.file(hermesPath(".managed")).exists()?"NixOS":null},makeSource=(relative4,label)=>({file:hermesPath(relative4),relative:relative4,label:label??relative4.split("/").pop()??relative4});function readSkillFrontmatter(source){try{let fd=openSync(source.file,"r"),buf=Buffer.alloc(2048),n=readSync(fd,buf,0,2048,0);closeSync(fd);let head=buf.toString("utf-8",0,n);if(!head.startsWith("---"))return{description:"",tags:[]};let end=head.indexOf(`
|
|
4079
|
+
`).filter((s)=>s.length>0).map(parseChafaLine)}function hex(c){if(!c)return;return`#${c.r.toString(16).padStart(2,"0")}${c.g.toString(16).padStart(2,"0")}${c.b.toString(16).padStart(2,"0")}`}var CHAFA_PATHS=["/usr/sbin/chafa","/usr/bin/chafa","/usr/local/bin/chafa","/opt/homebrew/bin/chafa","/home/linuxbrew/.linuxbrew/bin/chafa"],cachedBin=void 0;function chafaBin(){if(cachedBin!==void 0)return cachedBin;let bin=Bun.which?.("chafa")??null;if(bin)return cachedBin=bin,bin;for(let p of CHAFA_PATHS)if(existsSync13(p))return cachedBin=p,p;return cachedBin=null,null}function resolveImage(path4){let full=path4.startsWith("~")?(process.env.HOME??"")+path4.slice(1):path4;return existsSync13(full)?full:null}var CACHE=new Map,INFLIGHT=new Map,CACHE_CAP=50;function cacheGet(k2){let v2=CACHE.get(k2);if(!v2)return;return CACHE.delete(k2),CACHE.set(k2,v2),v2}function cachePut(k2,v2){if(CACHE.size>=CACHE_CAP)CACHE.delete(CACHE.keys().next().value);CACHE.set(k2,v2)}async function renderChafa(path4,width,height){let bin=chafaBin();if(!bin)return{err:"chafa not installed"};let full=resolveImage(path4);if(!full)return{err:`not found: ${path4}`};let mtime=0;try{mtime=statSync5(full).mtimeMs|0}catch{}let h2=height??Math.max(6,Math.round(width/3)),key3=`${full}:${mtime}:${width}x${h2}`,cached2=cacheGet(key3);if(cached2)return{rows:cached2};let hit=INFLIGHT.get(key3);if(hit)return hit;let task=(async()=>{try{let proc=Bun.spawn([bin,`--size=${width}x${h2}`,"--format=symbols","--symbols=block","--colors=full",full],{stdout:"pipe",stderr:"pipe"}),timeout=!1,timer2=setTimeout(()=>{timeout=!0,proc.kill()},5000),[code,stdout,stderr]=await Promise.all([proc.exited,new Response(proc.stdout).text(),new Response(proc.stderr).text()]).finally(()=>clearTimeout(timer2));if(timeout)return{err:"chafa timed out"};if(code!==0)return{err:(stderr||`chafa exit ${code}`).trim()};let rows2=parseChafa(stdout);return cachePut(key3,rows2),{rows:rows2}}catch(err){return{err:err instanceof Error?err.message:String(err)}}})();INFLIGHT.set(key3,task);let clear=()=>{if(INFLIGHT.get(key3)===task)INFLIGHT.delete(key3)};return task.then(clear,clear),task}var basename7=(p)=>p.split(/[/\\]/).pop()||p,ChafaImage=import_react46.memo(({path:path4,width,bare,chafa,load:load4=renderChafa})=>{let theme=useTheme().theme,[collapsed,setCollapsed]=import_react46.useState(!1),[result,setResult]=import_react46.useState(null),w2=Math.max(20,Math.min(80,width??60)),preview=strategy(path4,chafa??chafaBin()!==null);if(import_react46.useEffect(()=>{let live=!0;if(setResult(null),preview.kind!=="chafa")return()=>{live=!1};return load4(path4,w2).then((value)=>{if(live)setResult(value)},(err)=>{if(live)setResult({err:err instanceof Error?err.message:String(err)})}),()=>{live=!1}},[path4,w2,preview.kind,load4]),preview.kind!=="chafa"||!result||"err"in result)return $jsx(MediaChip,{path:path4,bare});if(collapsed)return $jsx(MediaChip,{path:path4,bare,onMouseDown:(e)=>{e.stopPropagation(),setCollapsed(!1)}});return $jsxs("box",{flexDirection:"column",marginTop:bare?0:1,children:[$jsx("box",{flexDirection:"column",onMouseDown:(e)=>{if(e.stopPropagation(),!bare)setCollapsed(!0)},children:result.rows.map((row3,i)=>$jsx("text",{children:row3.map((c,j2)=>$jsx("span",{fg:hex(c.fg),bg:hex(c.bg),children:c.ch},j2))},i))}),bare?null:$jsx("box",{height:1,onMouseDown:(e)=>{e.stopPropagation(),openFile(path4)},children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" "}),$jsx("span",{fg:theme.accent,children:"\u25C9 "}),$jsx("span",{fg:theme.text,children:basename7(path4)}),$jsx("span",{fg:theme.textMuted,children:" click image to collapse \xB7 click name to open"})]})})]})});var import_react47=__toESM(require_react_production(),1);import{existsSync as existsSync14,readFileSync as readFileSync9,readdirSync as readdirSync7}from"fs";import{homedir as homedir3}from"os";import{join as join10}from"path";var composer=require_composer(),Document=require_Document(),Schema=require_Schema(),errors=require_errors(),Alias=require_Alias(),identity=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit=require_visit();var $Composer=composer.Composer,$Document=Document.Document,$Schema=Schema.Schema,$YAMLError=errors.YAMLError,$YAMLParseError=errors.YAMLParseError,$YAMLWarning=errors.YAMLWarning,$Alias=Alias.Alias,$isAlias=identity.isAlias,$isCollection=identity.isCollection,$isDocument=identity.isDocument,$isMap=identity.isMap,$isNode=identity.isNode,$isPair=identity.isPair,$isScalar=identity.isScalar,$isSeq=identity.isSeq,$Pair=Pair.Pair,$Scalar=Scalar.Scalar,$YAMLMap=YAMLMap.YAMLMap,$YAMLSeq=YAMLSeq.YAMLSeq;var $Lexer=lexer.Lexer,$LineCounter=lineCounter.LineCounter,$Parser=parser.Parser,$parse=publicApi.parse,$parseAllDocuments=publicApi.parseAllDocuments,$parseDocument=publicApi.parseDocument,$stringify=publicApi.stringify,$visit=visit.visit,$visitAsync=visit.visitAsync;var SKINS=["default","ares","mono","slate","daylight","warm-lightmode","poseidon","sisyphus","charizard"],home=()=>process.env.HERMES_HOME||join10(process.env.HOME||homedir3(),".hermes"),skin=(path4)=>{try{let raw=$parse(readFileSync9(path4,"utf8"));if(raw&&typeof raw==="object"&&!Array.isArray(raw)){let name=raw.name;if(typeof name==="string"&&name.trim())return name.trim()}}catch{}return null};function skins(){let dir=join10(home(),"skins");if(!existsSync14(dir))return[...SKINS];let extra=readdirSync7(dir,{withFileTypes:!0}).filter((e)=>e.isFile()&&e.name.endsWith(".yaml")).map((e)=>skin(join10(dir,e.name))).filter((name)=>name!==null&&!SKINS.includes(name)).sort();return[...SKINS,...new Set(extra)]}function mode(name){let n=name.toLowerCase();if(n.includes("light")||n==="tango-adapted")return"light";if(n==="tokyo-storm")return"dark";return}var DEFAULT={agentName:"Hermes"},Ctx5=import_react47.createContext(DEFAULT);function deriveSkin(skin2){let name=skin2?.branding?.agent_name?.trim();return{skin:skin2??void 0,agentName:name||"Hermes"}}var SkinProvider=import_react47.memo(({value,children})=>$jsx(Ctx5.Provider,{value,children}));function useSkin(){return import_react47.useContext(Ctx5)}var SYMBOLS={"\\alpha":"\u03B1","\\beta":"\u03B2","\\gamma":"\u03B3","\\delta":"\u03B4","\\epsilon":"\u03B5","\\varepsilon":"\u03B5","\\zeta":"\u03B6","\\eta":"\u03B7","\\theta":"\u03B8","\\vartheta":"\u03D1","\\iota":"\u03B9","\\kappa":"\u03BA","\\lambda":"\u03BB","\\mu":"\u03BC","\\nu":"\u03BD","\\xi":"\u03BE","\\pi":"\u03C0","\\varpi":"\u03D6","\\rho":"\u03C1","\\varrho":"\u03F1","\\sigma":"\u03C3","\\varsigma":"\u03C2","\\tau":"\u03C4","\\upsilon":"\u03C5","\\phi":"\u03C6","\\varphi":"\u03C6","\\chi":"\u03C7","\\psi":"\u03C8","\\omega":"\u03C9","\\Gamma":"\u0393","\\Delta":"\u0394","\\Theta":"\u0398","\\Lambda":"\u039B","\\Xi":"\u039E","\\Pi":"\u03A0","\\Sigma":"\u03A3","\\Upsilon":"\u03A5","\\Phi":"\u03A6","\\Psi":"\u03A8","\\Omega":"\u03A9","\\sum":"\u2211","\\prod":"\u220F","\\coprod":"\u2210","\\int":"\u222B","\\iint":"\u222C","\\iiint":"\u222D","\\oint":"\u222E","\\bigcup":"\u22C3","\\bigcap":"\u22C2","\\bigvee":"\u22C1","\\bigwedge":"\u22C0","\\bigoplus":"\u2A01","\\bigotimes":"\u2A02","\\partial":"\u2202","\\nabla":"\u2207","\\sqrt":"\u221A","\\emptyset":"\u2205","\\varnothing":"\u2205","\\infty":"\u221E","\\in":"\u2208","\\notin":"\u2209","\\ni":"\u220B","\\subset":"\u2282","\\supset":"\u2283","\\subseteq":"\u2286","\\supseteq":"\u2287","\\subsetneq":"\u228A","\\supsetneq":"\u228B","\\cup":"\u222A","\\cap":"\u2229","\\setminus":"\u2216","\\complement":"\u2201","\\forall":"\u2200","\\exists":"\u2203","\\nexists":"\u2204","\\land":"\u2227","\\lor":"\u2228","\\lnot":"\xAC","\\neg":"\xAC","\\therefore":"\u2234","\\because":"\u2235","\\le":"\u2264","\\leq":"\u2264","\\ge":"\u2265","\\geq":"\u2265","\\ne":"\u2260","\\neq":"\u2260","\\ll":"\u226A","\\gg":"\u226B","\\approx":"\u2248","\\equiv":"\u2261","\\cong":"\u2245","\\sim":"\u223C","\\simeq":"\u2243","\\propto":"\u221D","\\perp":"\u22A5","\\parallel":"\u2225","\\models":"\u22A8","\\vdash":"\u22A2","\\mid":"\u2223","\\nmid":"\u2224","\\divides":"\u2223","\\blacksquare":"\u25A0","\\square":"\u25A1","\\Box":"\u25A1","\\qed":"\u220E","\\bigstar":"\u2605","\\bmod":"mod","\\mod":"mod","\\langle":"\u27E8","\\rangle":"\u27E9","\\lceil":"\u2308","\\rceil":"\u2309","\\lfloor":"\u230A","\\rfloor":"\u230B","\\|":"\u2016","\\to":"\u2192","\\rightarrow":"\u2192","\\leftarrow":"\u2190","\\leftrightarrow":"\u2194","\\Rightarrow":"\u21D2","\\Leftarrow":"\u21D0","\\Leftrightarrow":"\u21D4","\\implies":"\u27F9","\\impliedby":"\u27F8","\\iff":"\u27FA","\\mapsto":"\u21A6","\\hookrightarrow":"\u21AA","\\hookleftarrow":"\u21A9","\\uparrow":"\u2191","\\downarrow":"\u2193","\\updownarrow":"\u2195","\\cdot":"\u22C5","\\cdots":"\u22EF","\\ldots":"\u2026","\\dots":"\u2026","\\dotsb":"\u2026","\\dotsc":"\u2026","\\vdots":"\u22EE","\\ddots":"\u22F1","\\times":"\xD7","\\div":"\xF7","\\pm":"\xB1","\\mp":"\u2213","\\circ":"\u2218","\\bullet":"\u2022","\\star":"\u22C6","\\ast":"\u2217","\\oplus":"\u2295","\\ominus":"\u2296","\\otimes":"\u2297","\\odot":"\u2299","\\diamond":"\u22C4","\\angle":"\u2220","\\triangle":"\u25B3","\\,":" ","\\;":" ","\\:":" ","\\!":"","\\ ":" ","\\quad":" ","\\qquad":" ","\\sin":"sin","\\cos":"cos","\\tan":"tan","\\cot":"cot","\\sec":"sec","\\csc":"csc","\\arcsin":"arcsin","\\arccos":"arccos","\\arctan":"arctan","\\sinh":"sinh","\\cosh":"cosh","\\tanh":"tanh","\\log":"log","\\ln":"ln","\\exp":"exp","\\det":"det","\\dim":"dim","\\ker":"ker","\\lim":"lim","\\liminf":"liminf","\\limsup":"limsup","\\sup":"sup","\\inf":"inf","\\max":"max","\\min":"min","\\arg":"arg","\\gcd":"gcd","\\&":"&","\\%":"%","\\$":"$","\\#":"#","\\_":"_","\\{":"{","\\}":"}"},BB={A:"\uD835\uDD38",B:"\uD835\uDD39",C:"\u2102",D:"\uD835\uDD3B",E:"\uD835\uDD3C",F:"\uD835\uDD3D",G:"\uD835\uDD3E",H:"\u210D",I:"\uD835\uDD40",J:"\uD835\uDD41",K:"\uD835\uDD42",L:"\uD835\uDD43",M:"\uD835\uDD44",N:"\u2115",O:"\uD835\uDD46",P:"\u2119",Q:"\u211A",R:"\u211D",S:"\uD835\uDD4A",T:"\uD835\uDD4B",U:"\uD835\uDD4C",V:"\uD835\uDD4D",W:"\uD835\uDD4E",X:"\uD835\uDD4F",Y:"\uD835\uDD50",Z:"\u2124"},CAL={A:"\uD835\uDC9C",B:"\u212C",C:"\uD835\uDC9E",D:"\uD835\uDC9F",E:"\u2130",F:"\u2131",G:"\uD835\uDCA2",H:"\u210B",I:"\u2110",J:"\uD835\uDCA5",K:"\uD835\uDCA6",L:"\u2112",M:"\u2133",N:"\uD835\uDCA9",O:"\uD835\uDCAA",P:"\uD835\uDCAB",Q:"\uD835\uDCAC",R:"\u211B",S:"\uD835\uDCAE",T:"\uD835\uDCAF",U:"\uD835\uDCB0",V:"\uD835\uDCB1",W:"\uD835\uDCB2",X:"\uD835\uDCB3",Y:"\uD835\uDCB4",Z:"\uD835\uDCB5"},FRAK={A:"\uD835\uDD04",B:"\uD835\uDD05",C:"\u212D",D:"\uD835\uDD07",E:"\uD835\uDD08",F:"\uD835\uDD09",G:"\uD835\uDD0A",H:"\u210C",I:"\u2111",J:"\uD835\uDD0D",K:"\uD835\uDD0E",L:"\uD835\uDD0F",M:"\uD835\uDD10",N:"\uD835\uDD11",O:"\uD835\uDD12",P:"\uD835\uDD13",Q:"\uD835\uDD14",R:"\u211C",S:"\uD835\uDD16",T:"\uD835\uDD17",U:"\uD835\uDD18",V:"\uD835\uDD19",W:"\uD835\uDD1A",X:"\uD835\uDD1B",Y:"\uD835\uDD1C",Z:"\u2128"},SUPERSCRIPT={"0":"\u2070","1":"\xB9","2":"\xB2","3":"\xB3","4":"\u2074","5":"\u2075","6":"\u2076","7":"\u2077","8":"\u2078","9":"\u2079","+":"\u207A","-":"\u207B","=":"\u207C","(":"\u207D",")":"\u207E",a:"\u1D43",b:"\u1D47",c:"\u1D9C",d:"\u1D48",e:"\u1D49",f:"\u1DA0",g:"\u1D4D",h:"\u02B0",i:"\u2071",j:"\u02B2",k:"\u1D4F",l:"\u02E1",m:"\u1D50",n:"\u207F",o:"\u1D52",p:"\u1D56",r:"\u02B3",s:"\u02E2",t:"\u1D57",u:"\u1D58",v:"\u1D5B",w:"\u02B7",x:"\u02E3",y:"\u02B8",z:"\u1DBB"},SUBSCRIPT={"0":"\u2080","1":"\u2081","2":"\u2082","3":"\u2083","4":"\u2084","5":"\u2085","6":"\u2086","7":"\u2087","8":"\u2088","9":"\u2089","+":"\u208A","-":"\u208B","=":"\u208C","(":"\u208D",")":"\u208E",a:"\u2090",e:"\u2091",h:"\u2095",i:"\u1D62",j:"\u2C7C",k:"\u2096",l:"\u2097",m:"\u2098",n:"\u2099",o:"\u2092",p:"\u209A",r:"\u1D63",s:"\u209B",t:"\u209C",u:"\u1D64",v:"\u1D65",x:"\u2093"};var escapeRe=(s)=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),splitByEnding=(keys)=>{let letter=[],punct=[];for(let k2 of keys)if(/[A-Za-z]$/.test(k2))letter.push(k2);else punct.push(k2);return{letter,punct}},buildAlt=(cmds)=>cmds.sort((a,b2)=>b2.length-a.length).map(escapeRe).join("|"),{letter:LETTER_CMDS,punct:PUNCT_CMDS}=splitByEnding(Object.keys(SYMBOLS)),SYMBOL_LETTER_RE=new RegExp("(?:"+buildAlt(LETTER_CMDS)+")(?![A-Za-z])","g"),SYMBOL_PUNCT_RE=new RegExp("(?:"+buildAlt(PUNCT_CMDS)+")","g"),convertScript=(input,table,sigil)=>{let out="",allMapped=!0;for(let ch of input){let mapped=table[ch];if(!mapped){allMapped=!1;break}out+=mapped}if(allMapped)return out;let trimmed=input.trim();if([...trimmed].length===1)return`${sigil}${trimmed}`;return`${sigil}(${trimmed})`},readBraced=(s,start)=>{if(s[start]!=="{")return null;let depth=1,i=start+1;while(i<s.length&&depth>0){let c=s[i];if(c==="\\"&&i+1<s.length){i+=2;continue}if(c==="{")depth++;else if(c==="}")depth--;if(depth>0)i++}if(depth!==0)return null;return{content:s.slice(start+1,i),end:i+1}},replaceBracedCommand=(input,command,render)=>{let cmdLen=command.length,out="",i=0;while(i<input.length){let idx=input.indexOf(command,i);if(idx<0)return out+=input.slice(i),out;let after=input[idx+cmdLen];if(after&&/[A-Za-z]/.test(after)){out+=input.slice(i,idx+cmdLen),i=idx+cmdLen;continue}out+=input.slice(i,idx);let p=idx+cmdLen;while(input[p]===" "||input[p]==="\t")p++;let arg=readBraced(input,p);if(!arg){out+=input.slice(idx,p+1),i=p+1;continue}out+=render(replaceBracedCommand(arg.content,command,render)),i=arg.end}return out},replaceFracs=(input)=>{let out="",i=0;while(i<input.length){let idx=input.indexOf("\\frac",i);if(idx<0)return out+=input.slice(i),out;let after=input[idx+5];if(after&&/[A-Za-z]/.test(after)){out+=input.slice(i,idx+5),i=idx+5;continue}out+=input.slice(i,idx);let p=idx+5;while(input[p]===" "||input[p]==="\t")p++;let num2=readBraced(input,p);if(!num2){out+=input.slice(idx,p+1),i=p+1;continue}p=num2.end;while(input[p]===" "||input[p]==="\t")p++;let den=readBraced(input,p);if(!den){out+=input.slice(idx,p+1),i=p+1;continue}out+=`${wrapForFrac(replaceFracs(num2.content))}/${wrapForFrac(replaceFracs(den.content))}`,i=den.end}return out},wrapForFrac=(expr)=>{let trimmed=expr.trim();if(!trimmed)return trimmed;if(/^\(.*\)$/.test(trimmed))return trimmed;if(/[+\-/*]|\s/.test(trimmed))return`(${trimmed})`;return trimmed};function texToUnicode(input){let s=input;return s=s.replace(/\\mathbb\s*\{([A-Za-z])\}/g,(raw,c)=>BB[c]??raw),s=s.replace(/\\mathcal\s*\{([A-Za-z])\}/g,(raw,c)=>CAL[c]??raw),s=s.replace(/\\mathfrak\s*\{([A-Za-z])\}/g,(raw,c)=>FRAK[c]??raw),s=s.replace(/\\mathbf\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\mathit\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\mathrm\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\text\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\operatorname\s*\{([^{}]+)\}/g,(_2,c)=>c),s=s.replace(/\\overline\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0305`),s=s.replace(/\\hat\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0302`),s=s.replace(/\\bar\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0304`),s=s.replace(/\\tilde\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0303`),s=s.replace(/\\vec\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u20D7`),s=s.replace(/\\dot\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0307`),s=s.replace(/\\ddot\s*\{([^{}]+)\}/g,(_2,c)=>`${c}\u0308`),s=replaceFracs(s),s=replaceBracedCommand(s,"\\boxed",(body)=>`**${body.trim()}**`),s=replaceBracedCommand(s,"\\fbox",(body)=>`**${body.trim()}**`),s=s.replace(/\\xrightarrow\s*\{([^{}]*)\}/g,(_2,label)=>`\u2500${label.trim()}\u2192`),s=s.replace(/\\xleftarrow\s*\{([^{}]*)\}/g,(_2,label)=>`\u2190${label.trim()}\u2500`),s=s.replace(/\\Longrightarrow/g,"\u27F9"),s=s.replace(/\\Longleftarrow/g,"\u27F8"),s=s.replace(/\\Longleftrightarrow/g,"\u27FA"),s=s.replace(/\s*\\pmod\s*\{([^{}]*)\}/g,(_2,p)=>` (mod ${p.trim()})`),s=s.replace(/\s*\\pod\s*\{([^{}]*)\}/g,(_2,p)=>` (${p.trim()})`),s=s.replace(/\s*\\tag\s*\{([^{}]*)\}/g,(_2,n)=>` (${n.trim()})`),s=s.replace(/\\(?:Bigg|bigg|Big|big)[lrm]?(?![A-Za-z])/g,""),s=s.replace(/\\(?:scriptscriptstyle|displaystyle|scriptstyle|textstyle|nolimits|limits)(?![A-Za-z])\s*/g,""),s=s.replace(/\\left(?![A-Za-z])\.?/g,""),s=s.replace(/\\right(?![A-Za-z])\.?/g,""),s=s.replace(SYMBOL_PUNCT_RE,(m2)=>SYMBOLS[m2]??m2),s=s.replace(SYMBOL_LETTER_RE,(m2)=>SYMBOLS[m2]??m2),s=s.replace(/\^\s*\{([^{}]+)\}/g,(_2,body)=>convertScript(body,SUPERSCRIPT,"^")),s=s.replace(/\^([A-Za-z0-9+\-=])/g,(raw,ch)=>SUPERSCRIPT[ch]??raw),s=s.replace(/_\s*\{([^{}]+)\}/g,(_2,body)=>convertScript(body,SUBSCRIPT,"_")),s=s.replace(/_([A-Za-z0-9+\-=])/g,(raw,ch)=>SUBSCRIPT[ch]??raw),s}var CODE_SPAN_RE=/(`{1,2})[^`\n]+?\1/g,MATH_SPAN_RE=new RegExp([String.raw`\$\$([^$]+?)\$\$`,String.raw`\\\[([\s\S]+?)\\\]`,String.raw`\\\(([^\n]+?)\\\)`,String.raw`(?<!\$)\$([^\s$](?:[^$\n]*?[^\s$])?)\$(?!\$)`].join("|"),"g");function mathify(md){if(!/[$\\]/.test(md))return md;let out="",i=0;CODE_SPAN_RE.lastIndex=0;for(let m2 of md.matchAll(CODE_SPAN_RE))out+=md.slice(i,m2.index).replace(MATH_SPAN_RE,(_2,a,b2,c,d2)=>texToUnicode(a??b2??c??d2)),out+=m2[0],i=m2.index+m2[0].length;return out+=md.slice(i).replace(MATH_SPAN_RE,(_2,a,b2,c,d2)=>texToUnicode(a??b2??c??d2)),out}function duration(ms2){if(ms2<1000)return`${ms2}ms`;let s=ms2/1000;if(s<60)return`${s.toFixed(1)}s`;return`${Math.floor(s/60)}m${Math.floor(s%60)}s`}function tokens2(n){if(n<1000)return String(n);if(n<1e6)return`${(n/1000).toFixed(1)}k`;return`${(n/1e6).toFixed(2)}M`}function extract(msg){return msg.parts.filter((p)=>p.type==="text").map((p)=>p.content).join("")}var trunc3=(s,max)=>s.length<=max?s:s.slice(0,max-1)+"\u2026";function mix(a,b2,n=0.5){return RGBA.fromValues(a.r+(b2.r-a.r)*n,a.g+(b2.g-a.g)*n,a.b+(b2.b-a.b)*n,a.a+(b2.a-a.a)*n)}function darken(c,n=0.95){return RGBA.fromValues(c.r*n,c.g*n,c.b*n,c.a)}function lighten(c,n=0.05){return RGBA.fromValues(c.r+(1-c.r)*n,c.g+(1-c.g)*n,c.b+(1-c.b)*n,c.a)}var TOP_RULE={topLeft:"\u2594",topRight:"\u2594",horizontal:"\u2594",bottomLeft:"",bottomRight:"",vertical:"",topT:"",bottomT:"",leftT:"",rightT:"",cross:""},BOTTOM_RULE={bottomLeft:"\u2581",bottomRight:"\u2581",horizontal:"\u2581",topLeft:"",topRight:"",vertical:"",topT:"",bottomT:"",leftT:"",rightT:"",cross:""},TABLE={style:"grid"};function useClick(fn){let at=import_react48.useRef(null);return{onMouseDown:(e)=>{at.current={x:e.x,y:e.y}},onMouseUp:(e)=>{let a=at.current;if(at.current=null,fn&&a&&a.x===e.x&&a.y===e.y)fn()}}}var MessageItem=import_react48.memo(({message,streaming,prompt,onRewind,onPick})=>{if(message.role==="system")return $jsx(SystemMessage,{message});if(message.role==="user")return $jsx(UserMessage,{message,onRewind});return $jsx(AssistantMessage,{message,streaming,prompt,onPick})}),SystemMessage=import_react48.memo(({message})=>{let theme=useTheme().theme;return $jsx("box",{marginBottom:1,minHeight:1,children:$jsx("text",{fg:theme.textMuted,wrapMode:"word",children:extract(message)})})}),UserMessage=import_react48.memo(({message,onRewind})=>{let ctx=useTheme(),theme=ctx.theme,[hover,setHover]=import_react48.useState(!1),click=useClick(onRewind&&(()=>onRewind(message))),fill=import_react48.useMemo(()=>ctx.mode==="dark"?mix(theme.background,theme.backgroundElement):darken(theme.backgroundElement),[ctx.mode,theme.background,theme.backgroundElement]),edge=import_react48.useMemo(()=>ctx.mode==="dark"?darken(theme.background):darken(theme.backgroundElement),[ctx.mode,theme.background,theme.backgroundElement]),segs=import_react48.useMemo(()=>message.parts.map((p)=>p.type==="text"&&p.content?splitContent(p.content):null),[message.parts]);return $jsxs("box",{flexDirection:"column",marginBottom:1,children:[$jsx("box",{height:1,border:["bottom"],customBorderChars:BOTTOM_RULE,borderColor:edge}),$jsx("box",{backgroundColor:hover?fill:theme.backgroundElement,paddingLeft:1,paddingRight:1,paddingY:1,flexDirection:"column",minHeight:1,onMouseOver:()=>setHover(!0),onMouseOut:()=>setHover(!1),...click,children:message.parts.map((p,i)=>{let seg=segs[i];if(!seg)return null;let k2=p.key??i;return seg.map((s,j2)=>{if("media"in s)return classify(s.media)==="img"?$jsx("box",{children:$jsx(ChafaImage,{path:s.media})},`${k2}-m${j2}`):$jsx("box",{marginTop:1,children:$jsx(MediaChip,{path:s.media})},`${k2}-m${j2}`);if("code"in s)return $jsx(CodeBlock,{code:s.code,lang:s.lang},`${k2}-c${j2}`);return $jsx("text",{fg:theme.text,wrapMode:"word",children:s.md},`${k2}-${j2}`)})})}),$jsx("box",{height:1,border:["top"],customBorderChars:TOP_RULE,borderColor:edge})]})}),AssistantMessage=import_react48.memo(({message,streaming,prompt,onPick})=>{let ctx=useTheme(),theme=ctx.theme,{agentName}=useSkin(),[hover,setHover]=import_react48.useState(!1),click=useClick(onPick&&(()=>onPick(message))),rail2=import_react48.useMemo(()=>ctx.mode==="dark"?lighten(theme.background):darken(theme.backgroundElement),[ctx.mode,theme.background,theme.backgroundElement]),err=!!message.error,trail=message.parts.filter((p)=>p.type==="tool"||p.type==="prompt"),diffs=trail.filter((p)=>p.type==="tool"&&(!!p.diff||isDiff(p.result))),segs=import_react48.useMemo(()=>message.parts.map((p)=>p.type==="text"&&p.content?splitContent(p.content):null),[message.parts]),header=[message.speaker??agentName,message.usage?`${tokens2(message.usage.input)}\u2192${tokens2(message.usage.output)} tok`:null,message.duration?duration(message.duration):null].filter(Boolean).join(" \xB7 "),part=(p,i)=>{if(p.type==="prompt")return $jsx("box",{marginTop:1,onMouseDown:(e)=>e.stopPropagation(),children:$jsx(PromptCard,{part:p,ref:!p.answered?prompt?.ref:void 0,onAnswer:prompt?.onAnswer??(()=>{})})},`pr-${p.id}`);let seg=segs[i];if(!seg)return null;let k2=p.key??i,last=streaming&&p.streaming;return seg.map((s,j2)=>{let tail=last&&j2===seg.length-1;if("media"in s)return classify(s.media)==="img"?$jsx("box",{children:$jsx(ChafaImage,{path:s.media})},`${k2}-m${j2}`):$jsx("box",{marginTop:1,children:$jsx(MediaChip,{path:s.media})},`${k2}-m${j2}`);if("code"in s)return $jsx(CodeBlock,{code:s.code,lang:s.lang,streaming:tail},`${k2}-c${j2}`);return $jsx("box",{children:$jsx("markdown",{content:mathify(s.md),fg:theme.markdownText,syntaxStyle:ctx.syntaxStyle,streaming:tail,internalBlockMode:"top-level",tableOptions:TABLE})},`${k2}-${j2}`)})};return $jsxs("box",{flexDirection:"row",marginBottom:1,onMouseOver:()=>setHover(!0),onMouseOut:()=>setHover(!1),...click,children:[$jsxs("box",{flexDirection:"column",flexGrow:1,flexShrink:1,children:[$jsxs("box",{height:1,flexDirection:"row",children:[$jsx("box",{flexGrow:1,children:$jsx("text",{fg:theme.textMuted,children:header})}),trail.length?$jsx("box",{children:$jsx("text",{fg:theme.textMuted,children:trunc3(trail.map((p)=>p.type==="tool"?p.name:"?").join(" \xB7 "),40)})}):null]}),message.parts.map(part),diffs.length?$jsx(DiffTabs,{tools:diffs}):null,err?$jsx(ErrorBlock,{text:message.error}):null]}),$jsxs("box",{width:3,flexShrink:0,flexDirection:"row",children:[$jsx("box",{width:2}),$jsx("box",{width:1,backgroundColor:hover?rail2:void 0})]})]})});var MessageList=import_react49.memo(({messages,streaming,prompt,onRewind,onPick})=>{let theme=useTheme().theme,style=import_react49.useMemo(()=>({viewportOptions:{backgroundColor:theme.background},scrollbarOptions:{trackOptions:{foregroundColor:theme.borderSubtle,backgroundColor:theme.background}}}),[theme]);if(messages.length===0)return $jsx("box",{flexGrow:1});let last=messages[messages.length-1],lastStreaming=streaming&&last?.role==="assistant";return $jsx("scrollbox",{flexGrow:1,scrollY:!0,stickyScroll:!0,stickyStart:"bottom",style,children:$jsx("box",{flexDirection:"column",paddingBottom:1,children:messages.map((msg,i)=>$jsx("box",{flexDirection:"column",children:$jsx(MessageItem,{message:msg,streaming:lastStreaming&&i===messages.length-1,prompt,onRewind,onPick})},msg.id))})})});var Chat=import_react50.memo(({messages,streaming,prompt,cloud,cloudH,pick,onResize,onPick,onClose,onRewind})=>{let theme=useTheme().theme;return $jsxs("box",{flexGrow:1,flexDirection:"column",position:"relative",backgroundColor:theme.background,children:[$jsx(MessageList,{messages,streaming,prompt,onRewind,onPick}),cloud?$jsx("box",{position:"absolute",top:0,left:0,right:0,zIndex:1,children:$jsx(ThoughtCloud,{height:cloudH,messages,pick,onResize,onClose})}):null]})});var import_react69=__toESM(require_react_production(),1);var import_react58=__toESM(require_react_production(),1);init_sessions_db();import{existsSync as existsSync15}from"fs";import{homedir as homedir5}from"os";import{join as join11}from"path";var INLINE=process.env.HERM_IO_INLINE==="1",HOME2=()=>process.env.HERMES_HOME||join11(homedir5(),".hermes"),entry=()=>{let js=join11(import.meta.dirname,"db.worker.js");return new URL(existsSync15(js)?"./db.worker.js":"./db.worker.ts",import.meta.url)},state={w:null,seq:0,pending:new Map,inline:null},spawn2=()=>{if(state.w)return state.w;let w2=new Worker(entry());return w2.onmessage=(e)=>{let r=e.data;state.pending.get(r.id)?.(r),state.pending.delete(r.id)},w2.onerror=(ev)=>{let err=`io worker: ${ev.message}`;for(let res of state.pending.values())res({id:-1,ok:!1,err});if(state.pending.clear(),state.w===w2)state.w=null;w2.terminate()},state.w=w2},call=(fn,args)=>{if(INLINE)return state.inline??=Promise.resolve().then(() => (init_fns(),exports_fns)).then((m2)=>m2.FNS),state.inline.then((f)=>f[fn](...args));return new Promise((resolve4,reject)=>{let id=++state.seq;state.pending.set(id,(r)=>r.ok?resolve4(r.v):reject(Error(r.err))),spawn2().postMessage({id,home:HOME2(),fn,args})})},io=new Proxy({},{get:(_2,fn)=>(...args)=>call(fn,args)}),warm=()=>{if(!INLINE)call("roots",[0])};var TabShell=(props)=>{let theme=useTheme().theme;return $jsxs("box",{flexDirection:"column",flexGrow:props.grow??1,flexBasis:0,minWidth:0,minHeight:0,border:!0,borderColor:props.focus?theme.primary:theme.border,backgroundColor:theme.backgroundPanel,padding:1,children:[$jsxs("box",{height:1,overflow:"hidden",flexDirection:"row",children:[$jsx("box",{flexShrink:0,overflow:"hidden",children:$jsx("text",{fg:theme.primary,wrapMode:"none",children:$jsx("strong",{children:props.title})})}),props.titleRight?$jsx("box",{flexGrow:1,minWidth:0,overflow:"hidden",justifyContent:"flex-end",children:props.titleRight}):null]}),props.error?$jsx("box",{height:1,children:$jsx("text",{fg:theme.error,children:`\u26A0 ${props.error}`})}):null,$jsx("box",{height:1}),$jsx("box",{flexDirection:"column",flexGrow:1,minWidth:0,minHeight:0,overflow:"hidden",children:props.children})]})};var import_react51=__toESM(require_react_production(),1);var HintBar=import_react51.memo((props)=>{let theme=useTheme().theme,text4=props.pairs?props.pairs.map((p)=>`[${p[0]}] ${p[1]}`).join(" ")+(props.suffix?` \xB7 ${props.suffix}`:""):props.raw??"";return $jsx("box",{height:1,flexShrink:0,paddingX:1,overflow:"hidden",children:$jsx("text",{fg:theme.textMuted,wrapMode:"none",children:text4})})});var KV=(props)=>{let theme=useTheme().theme;return $jsxs("box",{minHeight:1,flexDirection:"row",children:[$jsx("box",{width:13,flexShrink:0,children:$jsx("text",{fg:theme.textMuted,children:props.label})}),$jsx("box",{flexGrow:1,minWidth:0,height:props.wrap?void 0:1,overflow:props.wrap?void 0:"hidden",children:$jsx("text",{wrapMode:props.wrap?"word":void 0,fg:props.fg??theme.text,children:props.value})})]})},KVBlock=(props)=>props.rows.map(([k2,v2,fg2])=>v2===void 0?null:$jsx(KV,{label:k2,value:v2,fg:fg2},k2));var import_react52=__toESM(require_react_production(),1);var VBAR_W=1,VBAR={visible:!0},Col=(p)=>{let theme=useTheme().theme,fg2=p.fg??theme.text;return $jsx("box",{width:p.w,flexGrow:p.grow?1:0,flexShrink:p.grow?1:0,minWidth:p.grow?p.min??12:p.w,height:1,overflow:"hidden",onMouseDown:p.onClick,flexDirection:"row",justifyContent:p.right?"flex-end":"flex-start",children:$jsx("text",{children:p.bold?$jsx("span",{fg:fg2,children:$jsx("strong",{children:p.children})}):$jsx("span",{fg:fg2,children:p.children})})})},Hdr=(p)=>$jsx("box",{flexDirection:"row",height:1,paddingRight:VBAR_W,children:p.children}),Marquee=(p)=>{let theme=useTheme().theme,fg2=p.fg??theme.text,text4=p.children,box=import_react52.useRef(null),node=import_react52.useRef(null),animate=exports_preferences.get("animations")!==!1&&p.active,[wraps,setWraps]=import_react52.useState(!1);import_react52.useEffect(()=>{let tn=node.current;if(!tn)return;let w2=box.current?.width??0;if(setWraps(text4.length>w2),!animate){tn.scrollX=0;return}let id,period=text4.length+GAP.length,hold=setTimeout(()=>{id=setInterval(()=>{let cur=box.current?.width??0;if(text4.length<=cur){tn.scrollX=0;return}tn.scrollX=(tn.scrollX+1)%period},p.speed??180)},p.hold??600);return()=>{if(clearTimeout(hold),id)clearInterval(id);if(node.current)node.current.scrollX=0}},[animate,text4,p.speed,p.hold]);let body=wraps?text4+GAP+text4:text4;return $jsx("box",{ref:box,width:p.w,flexGrow:p.grow?1:0,flexShrink:p.grow?1:0,minWidth:p.grow?p.min??12:p.w,height:1,overflow:"hidden",children:$jsx("text",{ref:node,wrapMode:"none",children:p.bold?$jsx("span",{fg:fg2,attributes:p.underline?TextAttributes.UNDERLINE:TextAttributes.NONE,children:$jsx("strong",{children:body})}):$jsx("span",{fg:fg2,attributes:p.underline?TextAttributes.UNDERLINE:TextAttributes.NONE,children:body})})})},GAP=" ";var import_react53=__toESM(require_react_production(),1);var Ticker=(p)=>{let ref=import_react53.useRef(null),animate=exports_preferences.get("animations")!==!1&&p.active,speed=p.speed??180,hold=p.hold??600,endHold=p.endHold??3000;return import_react53.useEffect(()=>{let node=ref.current;if(!node)return;if(!animate){node.scrollX=0;return}let dir=1,tick2,wait,step=()=>{let max=node.maxScrollX;if(max<=0)return;if(node.scrollX=Math.max(0,Math.min(max,node.scrollX+dir)),!(dir>0?node.scrollX>=max:node.scrollX<=0))return;if(tick2)clearInterval(tick2),tick2=void 0;dir=-dir,wait=setTimeout(()=>{tick2=setInterval(step,speed)},endHold)};return wait=setTimeout(()=>{tick2=setInterval(step,speed)},hold),()=>{if(wait)clearTimeout(wait);if(tick2)clearInterval(tick2);if(ref.current)ref.current.scrollX=0}},[animate,speed,hold,endHold]),$jsx("box",{flexGrow:1,flexShrink:1,minWidth:0,height:1,overflow:"hidden",children:$jsx("text",{ref,wrapMode:"none",fg:p.fg,children:p.children})})},RX=/(`[^`]+`)|(\*\*[^*]+\*\*)|(__[^_]+__)|((?<![\w*])\*[^*\s][^*]*\*(?![\w*]))|((?<!\w)_[^_\s][^_]*_(?!\w))/g,inline=(s)=>{let out=[],last=0;for(let m2 of s.matchAll(RX)){let at=m2.index??0;if(at>last)out.push({t:s.slice(last,at)});let hit=m2[0];if(hit.startsWith("`"))out.push({t:hit.slice(1,-1),c:!0});else if(hit.startsWith("**")||hit.startsWith("__"))out.push({t:hit.slice(2,-2),b:!0});else out.push({t:hit.slice(1,-1),i:!0});last=at+hit.length}if(last<s.length)out.push({t:s.slice(last)});return out.map((seg)=>seg.c?seg:{...seg,t:seg.t.replace(/^#{1,6}\s+/,"")})};var import_react54=__toESM(require_react_production(),1);var cycle=(t2)=>t2==="off"?"in":t2==="in"?"ex":"off",FilterChip=import_react54.memo((p)=>{let theme=useTheme().theme,color=p.color??theme.accent,text4=p.textColor??theme.text,bg2=p.state==="in"?color:p.state==="ex"?void 0:theme.backgroundElement,fg2=p.state==="in"?theme.background:p.state==="ex"?p.selected?color:theme.borderSubtle:p.selected?color:text4;return $jsx("box",{id:p.id,height:1,flexShrink:0,marginLeft:p.gap??1,paddingLeft:1,paddingRight:1,backgroundColor:bg2,onMouseDown:p.onMouseDown,children:$jsx("text",{fg:fg2,attributes:p.state==="ex"?TextAttributes.STRIKETHROUGH:TextAttributes.NONE,children:p.label})})});var Confirm=(props)=>{let theme=useTheme().theme,keys=useKeys();return useKeyboard((key3)=>{if(keys.match("dialog.confirm",key3)||keys.match("dialog.accept",key3))return props.onConfirm();if(keys.match("dialog.deny",key3))return props.onCancel()}),$jsxs("box",{flexDirection:"column",width:54,children:[$jsx("box",{height:1,children:$jsx("text",{fg:props.danger?theme.warning:theme.primary,children:$jsx("strong",{children:props.title})})}),$jsx("box",{height:1}),$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:props.body})}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:`[${keys.print("dialog.confirm")}/${keys.print("dialog.accept")}] ${props.yes??"confirm"} [${keys.print("dialog.deny")}] ${props.no??"cancel"}`})})]})};function openConfirm(dialog,opts){return new Promise((resolve4)=>{let done=(v2)=>{resolve4(v2),dialog.clear()};dialog.replace($jsx(Confirm,{...opts,onConfirm:()=>done(!0),onCancel:()=>done(!1)}),()=>resolve4(!1))})}var SaveDiscard=(props)=>{let theme=useTheme().theme;return useKeyboard((key3)=>{if(key3.name==="s")return props.onPick("save");if(key3.name==="d")return props.onPick("discard");if(key3.name==="return")return props.onPick("save")}),$jsxs("box",{flexDirection:"column",width:54,children:[$jsx("box",{height:1,children:$jsx("text",{fg:theme.warning,children:$jsx("strong",{children:props.title})})}),$jsx("box",{height:1}),$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:props.body})}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"[S/Enter] save [D] discard [Esc] keep editing"})})]})};function openSaveDiscard(dialog,opts){return new Promise((resolve4)=>{let done=(v2)=>{resolve4(v2),dialog.clear()};dialog.replace($jsx(SaveDiscard,{...opts,onPick:done,onCancel:()=>done(null)}),()=>resolve4(null))})}var import_react56=__toESM(require_react_production(),1);var TextPrompt=(props)=>{let theme=useTheme().theme,[value,setValue]=import_react56.useState(props.initial??"");return $jsxs("box",{flexDirection:"column",width:60,children:[$jsx("box",{height:1,children:$jsx("text",{fg:theme.primary,children:$jsx("strong",{children:props.title})})}),$jsx("box",{height:1}),props.label?$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:props.label})}):null,$jsxs("box",{height:1,flexDirection:"row",overflow:"hidden",children:[$jsx("box",{flexShrink:0,children:$jsx("text",{fg:theme.accent,children:"\u2503 "})}),$jsx("box",{flexGrow:1,minWidth:0,height:1,overflow:"hidden",children:$jsx("input",{value,onInput:setValue,onSubmit:()=>{let v2=value.trim();if(v2)props.onSubmit(v2)},focused:!0,textColor:theme.text,backgroundColor:theme.backgroundElement,focusedBackgroundColor:theme.backgroundElement})})]}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:value.trim()?"Enter confirm \xB7 Esc cancel \xB7 Ctrl+U clear":"Esc cancel"})})]})};function openTextPrompt(dialog,opts){return new Promise((resolve4)=>{dialog.replace($jsx(TextPrompt,{title:opts.title,label:opts.label,initial:opts.initial,onSubmit:(v2)=>{resolve4(v2),dialog.clear()}}),()=>resolve4(null))})}var h12=()=>exports_preferences.get("timeFormat")==="12h",abs=()=>exports_preferences.get("timeStyle")==="absolute",trunc5=(s,max)=>s.length<=max?s:s.slice(0,max-1)+"\u2026",fmt=(n)=>n>=1e6?`${(n/1e6).toFixed(2)}M`:n>=1000?`${(n/1000).toFixed(1)}k`:String(n),cost2=(c)=>c==null?"\u2014":`$${c.toFixed(2)}`,clock=(d2)=>d2.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hour12:h12()}),stamp=(ts)=>{let d2=new Date(ts*1000);return d2.toDateString()===new Date().toDateString()?clock(d2):d2.toLocaleDateString(void 0,{month:"short",day:"numeric"})},rel=(ts)=>{let s=Math.floor(Date.now()/1000-ts);if(s<60)return"just now";if(s<3600)return`${Math.floor(s/60)}m ago`;if(s<86400)return`${Math.floor(s/3600)}h ago`;return`${Math.floor(s/86400)}d ago`},ago=(ts)=>abs()?stamp(ts):rel(ts),until=(ts)=>{if(abs())return ts<=Date.now()/1000?"due":stamp(ts);let s=Math.floor(ts-Date.now()/1000);if(s<=0)return"due";if(s<60)return`in ${s}s`;if(s<3600)return`in ${Math.floor(s/60)}m`;if(s<86400)return`in ${Math.floor(s/3600)}h`;return`in ${Math.floor(s/86400)}d`},when=(ts)=>{let d2=new Date(ts*1000);return`${d2.toLocaleDateString()} ${clock(d2)}`},span=(start,end)=>{let s=Math.round(end-start);if(s<0)return"\u2014";if(s>=3600)return`${Math.floor(s/3600)}h ${Math.floor(s%3600/60)}m`;if(s>=60)return`${Math.floor(s/60)}m`;return`${s}s`},dur2=(s)=>s>=3600?`${Math.floor(s/3600)}h${Math.floor(s%3600/60)}m`:s>=60?`${Math.floor(s/60)}m${Math.floor(s%60)}s`:`${Math.floor(s)}s`;var import_react57=__toESM(require_react_production(),1);import{watch as watch2,existsSync as existsSync17,statSync as statSync6}from"fs";import{dirname as dirname7,basename as basename8}from"path";import{readdir,stat}from"fs/promises";import{openSync,readSync,closeSync,readdirSync as readdirSync8,readFileSync as readFileSync10,existsSync as existsSync16}from"fs";import{homedir as homedir6}from"os";init_sessions_db();var HOME3=process.env.HOME||homedir6(),home2={path:process.env.HERMES_HOME||`${HOME3}/.hermes`},setHome2=(h2)=>{home2.path=h2},hermesPath=(relative4)=>`${home2.path}/${relative4}`,managedSystem=async()=>{let env2=(process.env.HERMES_MANAGED??"").trim();if(env2){let norm=env2.toLowerCase();if(norm==="1"||norm==="true"||norm==="yes"||norm==="on")return"NixOS";return{homebrew:"Homebrew",nix:"NixOS",nixos:"NixOS"}[norm]??env2}return await Bun.file(hermesPath(".managed")).exists()?"NixOS":null},makeSource=(relative4,label)=>({file:hermesPath(relative4),relative:relative4,label:label??relative4.split("/").pop()??relative4});function readSkillFrontmatter(source){try{let fd=openSync(source.file,"r"),buf=Buffer.alloc(2048),n=readSync(fd,buf,0,2048,0);closeSync(fd);let head=buf.toString("utf-8",0,n);if(!head.startsWith("---"))return{description:"",tags:[]};let end=head.indexOf(`
|
|
4080
4080
|
---`,3);if(end<0)return{description:"",tags:[]};let fm=$parse(head.slice(3,end)),tags=Array.isArray(fm.tags)?fm.tags.map(String):[];return{description:String(fm.description??""),tags}}catch{return{description:"",tags:[]}}}async function readSkillUsage(){try{let f=Bun.file(hermesPath("skills/.usage.json"));if(!await f.exists())return{};let raw=await f.json(),out={};for(let[k2,v2]of Object.entries(raw??{}))out[k2]={use_count:Number(v2.use_count??0),view_count:Number(v2.view_count??0),patch_count:Number(v2.patch_count??0),last_used_at:v2.last_used_at??null,last_viewed_at:v2.last_viewed_at??null,last_patched_at:v2.last_patched_at??null,created_at:v2.created_at??null,archived_at:v2.archived_at??null,state:v2.state??"active",pinned:Boolean(v2.pinned)};return out}catch{return{}}}async function readCuratorState(){try{let f=Bun.file(hermesPath("skills/.curator_state"));if(!await f.exists())return null;let raw=await f.json();return{last_run_at:raw.last_run_at??null,last_run_duration_seconds:raw.last_run_duration_seconds??null,last_run_summary:raw.last_run_summary??null,paused:Boolean(raw.paused),run_count:Number(raw.run_count??0)}}catch{return null}}async function readLatestCuratorReport(){try{let base2=hermesPath("logs/curator"),entries2=readdirSync8(base2,{withFileTypes:!0}).filter((e)=>e.isDirectory());if(entries2.length===0)return null;entries2.sort((a,b2)=>b2.name.localeCompare(a.name));let runId=entries2[0].name,rel2=`logs/curator/${runId}/REPORT.md`,source=makeSource(rel2),body=await Bun.file(source.file).text();return{source,content:body.trim(),runId}}catch{return null}}function listCuratorRuns(){try{let base2=hermesPath("logs/curator");return readdirSync8(base2,{withFileTypes:!0}).filter((e)=>e.isDirectory()).sort((a,b2)=>b2.name.localeCompare(a.name)).flatMap((e)=>{try{let fd=openSync(`${base2}/${e.name}/run.json`,"r"),buf=Buffer.alloc(8192),n=readSync(fd,buf);closeSync(fd);let j2=JSON.parse(buf.toString("utf8",0,n)),c=j2.counts??{};return[{id:e.name,at:Date.parse(j2.started_at??"")/1000||0,archived:c.archived_this_run??0,consolidated:c.consolidated_this_run??0,added:c.added_this_run??0,before:c.before??0,after:c.after??0}]}catch{return[]}})}catch{return[]}}async function readCuratorReport(id){try{return(await Bun.file(hermesPath(`logs/curator/${id}/REPORT.md`)).text()).trim()}catch{return""}}function indexCuratorLineage(){let out=new Map,push2=(name,ev)=>{let a=out.get(name)??[];a.push(ev),out.set(name,a)};try{let base2=hermesPath("logs/curator");for(let e of readdirSync8(base2,{withFileTypes:!0})){if(!e.isDirectory())continue;try{let j2=JSON.parse(readFileSync10(`${base2}/${e.name}/run.json`,"utf8")),at=Date.parse(j2.started_at??"")/1000||0,run=e.name,into=new Map;for(let c of j2.consolidated??[])push2(c.name,{kind:"merged",run,at,into:c.into,reason:c.reason}),into.set(c.into,[...into.get(c.into)??[],c.name]);for(let[tgt,srcs]of into)push2(tgt,{kind:"absorbed",run,at,sources:srcs});for(let t2 of j2.state_transitions??[])push2(t2.name,{kind:"transition",run,at,from:t2.from,to:t2.to});for(let p of j2.pruned??[])push2(p.name,{kind:"pruned",run,at,reason:p.reason});for(let n of j2.added??[])push2(n,{kind:"added",run,at})}catch{}}}catch{}for(let a of out.values())a.sort((x2,y2)=>y2.at-x2.at);return out}function readChangelog(){try{let source=makeSource("herm/changelog.md"),fd=openSync(source.file,"r"),buf=Buffer.alloc(4096),n=readSync(fd,buf);closeSync(fd);let body=buf.toString("utf8",0,n).trim(),line=body.split(`
|
|
4081
4081
|
`).find((l)=>/^[-*\u00B7]/.test(l.trim()));return{source,headline:line?.replace(/^[-*\u00B7]\s*/,"").trim()??"",body}}catch{return null}}async function readConfig(){try{let text4=await Bun.file(hermesPath("config.yaml")).text(),raw=$parse(text4);return{source:makeSource("config.yaml","config.yaml"),model:{default:raw?.model?.default??"unknown",provider:raw?.model?.provider??"auto",base_url:raw?.model?.base_url??"",context_length:raw?.model?.context_length},agent:{max_turns:raw?.agent?.max_turns??60,reasoning_effort:raw?.agent?.reasoning_effort??"medium"},compression:{enabled:raw?.compression?.enabled??!0,threshold:raw?.compression?.threshold??0.5,target_ratio:raw?.compression?.target_ratio??0.2,protect_last_n:raw?.compression?.protect_last_n??20,summary_model:raw?.compression?.summary_model??""},memory:{memory_enabled:raw?.memory?.memory_enabled??!0,user_profile_enabled:raw?.memory?.user_profile_enabled??!0,memory_char_limit:raw?.memory?.memory_char_limit??2200,user_char_limit:raw?.memory?.user_char_limit??1375,provider:raw?.memory?.provider??"",nudge_interval:raw?.memory?.nudge_interval??10,flush_min_turns:raw?.memory?.flush_min_turns??6},display:{personality:raw?.display?.personality??"default",skin:raw?.display?.skin??"default",show_cost:raw?.display?.show_cost??!1},curator:{enabled:raw?.curator?.enabled??!0,interval_hours:raw?.curator?.interval_hours??168,stale_after_days:raw?.curator?.stale_after_days??30,archive_after_days:raw?.curator?.archive_after_days??90},approvals:{destructive_slash_confirm:raw?.approvals?.destructive_slash_confirm??!0},gateway:{platforms:{api_server:raw?.gateway?.platforms?.api_server??void 0}}}}catch{return null}}async function readMemoryFile(filename,charLimit){try{let relative4=`memories/${filename}`,content=await Bun.file(hermesPath(relative4)).text(),entryCount=content.split("\xA7").filter((s)=>s.trim()).length;return{source:makeSource(relative4,filename),content,charCount:content.length,charLimit,usagePercent:charLimit>0?Math.round(content.length/charLimit*100):0,entryCount}}catch{return null}}async function readLiveSessions(){try{let file=Bun.file(hermesPath("sessions/sessions.json"));if(!await file.exists())return{};let text4=await file.text();return JSON.parse(text4)}catch{return{}}}var MEMORY_CFG_FILES={mem0:["mem0.json"],honcho:["honcho.json"],hindsight:["hindsight/config.json"],supermemory:["supermemory.json"],holographic:["holographic.db"]};function discoverMemoryProviders(){let names=new Set(["builtin"]);try{for(let e of readdirSync8(hermesPath("hermes-agent/plugins/memory"),{withFileTypes:!0}))if(e.isDirectory()&&!e.name.startsWith("_"))names.add(e.name)}catch{}return[...names]}async function readMemoryProviders(activeProvider){let out=[];for(let name of discoverMemoryProviders()){if(name==="builtin"){out.push({name,active:!0,config:{}});continue}let cfg={};for(let f of MEMORY_CFG_FILES[name]??[])try{let file=Bun.file(hermesPath(f));if(f.endsWith(".json")){let raw=await file.json();for(let[k2,v2]of Object.entries(raw))if(typeof v2==="string"||typeof v2==="number"||typeof v2==="boolean"){let lower=k2.toLowerCase();if(lower.includes("key")||lower.includes("token")||lower.includes("secret"))cfg[k2]=typeof v2==="string"?`${v2.slice(0,4)}...`:v2;else cfg[k2]=v2}}else{let st=await file.stat();if(st)cfg.db_size=`${Math.round(st.size/1024)}KB`}}catch{}out.push({name,active:name===activeProvider,config:cfg})}return out}async function readSoul(){try{let text4=await Bun.file(hermesPath("SOUL.md")).text();return{source:makeSource("SOUL.md"),charCount:text4.length,tokenEstimate:count2(text4),content:text4}}catch{return null}}async function readToolsFromLatestSession(){try{let dir=hermesPath("sessions");if(!existsSync16(dir))return null;let glob=new Bun.Glob("session_*.json"),latestPath="",latestTime=0;for await(let path4 of glob.scan({cwd:dir})){let stat2=await Bun.file(hermesPath(`sessions/${path4}`)).stat();if(stat2&&stat2.mtimeMs>latestTime)latestTime=stat2.mtimeMs,latestPath=path4}if(!latestPath)return null;let relative4=`sessions/${latestPath}`,tools=((await Bun.file(hermesPath(relative4)).json()).tools||[]).map((t2)=>({name:t2?.function?.name??"unknown",descriptionLength:(t2?.function?.description??"").length,paramsLength:JSON.stringify(t2?.function?.parameters??{}).length}));return{source:makeSource(relative4,latestPath),tools}}catch{return null}}async function readCronOutput(jobId,tailLines=40){let dir=hermesPath(`cron/output/${jobId}`),entries2;try{entries2=await readdir(dir)}catch{return null}let md=entries2.filter((f)=>f.endsWith(".md")).sort().reverse();if(md.length===0)return null;let path4=`${dir}/${md[0]}`,full=await Bun.file(path4).text(),lines3=full.trimEnd().split(`
|
|
4082
4082
|
`),text4=lines3.length>tailLines?`\u2026(${lines3.length-tailLines} earlier lines)
|
|
@@ -4086,7 +4086,7 @@ tell application "System Events" to get value of property list item "CFBundleNam
|
|
|
4086
4086
|
`),found=!1,updated=lines3.map((line)=>{let eq2=line.trim().indexOf("=");if(eq2>=1&&envKey(line.trim().slice(0,eq2))===key3)return found=!0,`${key3}=${value}`;return line});if(!found)updated.push(`${key3}=${value}`);await Bun.write(envPath(),updated.join(`
|
|
4087
4087
|
`))}async function removeEnvVar(key3){let text4="";try{text4=await Bun.file(envPath()).text()}catch{return}let lines3=text4.split(`
|
|
4088
4088
|
`).filter((line)=>{let eq2=line.trim().indexOf("=");return eq2<1||envKey(line.trim().slice(0,eq2))!==key3});await Bun.write(envPath(),lines3.join(`
|
|
4089
|
-
`))}var ENV_CATALOG=[{category:"LLM Providers",keys:["ANTHROPIC_API_KEY","ARCEEAI_API_KEY","DEEPSEEK_API_KEY","FIREWORKS_API_KEY","GEMINI_API_KEY","GLM_API_KEY","GMI_API_KEY","GOOGLE_API_KEY","GROQ_API_KEY","KIMI_API_KEY","LM_API_KEY","MINIMAX_API_KEY","MISTRAL_API_KEY","NOUS_API_KEY","NVIDIA_API_KEY","OPENAI_API_KEY","OPENROUTER_API_KEY","STEPFUN_API_KEY","TOGETHER_API_KEY","VERTEX_CREDENTIALS_PATH","XAI_API_KEY","ZAI_API_KEY","Z_AI_API_KEY"]},{category:"Tool API Keys",keys:["AGENT_BROWSER_ENGINE","BRAVE_SEARCH_API_KEY","BROWSERBASE_API_KEY","BROWSERBASE_PROJECT_ID","BROWSER_USE_API_KEY","CAMOFOX_API_KEY","CAMOFOX_URL","ELEVENLABS_API_KEY","EXA_API_KEY","FAL_KEY","FIRECRAWL_API_KEY","FIRECRAWL_API_URL","FIRECRAWL_BROWSER_TTL","KREA_API_KEY","OPENVIKING_API_KEY","OPENVIKING_ENDPOINT","SEARXNG_URL","TAVILY_API_KEY","TOOL_GATEWAY_DOMAIN","TOOL_GATEWAY_SCHEME","TOOL_GATEWAY_USER_TOKEN"]},{category:"Messaging",keys:["DISCORD_ALLOWED_USERS","DISCORD_BOT_TOKEN","DISCORD_REPLY_TO_MODE","SLACK_ALLOWED_USERS","SLACK_APP_TOKEN","SLACK_BOT_TOKEN","TELEGRAM_ALLOWED_USERS","TELEGRAM_BOT_TOKEN","TELEGRAM_PROXY"]},{category:"Agent",keys:["API_SERVER_KEY","BRV_API_KEY","HERMES_LANGFUSE_BASE_URL","HERMES_LANGFUSE_PUBLIC_KEY","HERMES_LANGFUSE_SECRET_KEY","HINDSIGHT_API_KEY","HINDSIGHT_API_URL","MEM0_API_KEY","RETAINDB_API_KEY","RETAINDB_BASE_URL","SUPERMEMORY_API_KEY"]}];var SLICES={config:{read:()=>readConfig(),watch:()=>[hermesPath("config.yaml")]},memory:{read:(d2)=>readMemoryFile("MEMORY.md",d2.config?.memory?.memory_char_limit??2200),deps:["config"],watch:()=>[hermesPath("memories/MEMORY.md")]},userProfile:{read:(d2)=>readMemoryFile("USER.md",d2.config?.memory?.user_char_limit??1375),deps:["config"],watch:()=>[hermesPath("memories/USER.md")]},memoryProviders:{read:(d2)=>readMemoryProviders(d2.config?.memory?.provider??""),deps:["config"]},memoryActivity:{read:()=>io.memoryActivity()},env:{read:()=>readEnvFile(),watch:()=>[hermesPath(".env")]},soul:{read:()=>readSoul(),watch:()=>[hermesPath("SOUL.md")]},liveSessions:{read:()=>readLiveSessions(),watch:()=>[hermesPath("sessions/sessions.json")]},recentSessions:{read:()=>io.roots(30)},systemPrompt:{read:()=>io.systemPrompt().then((r)=>r&&{source:makeSource("state.db"),sessionId:r.id,text:r.text,totalChars:r.text.length,tokenEstimate:count2(r.text)}).catch(()=>null)},toolsInfo:{read:()=>readToolsFromLatestSession(),watch:()=>[hermesPath("sessions")]},skillUsage:{read:()=>readSkillUsage(),watch:()=>[hermesPath("skills/.usage.json")]},curatorState:{read:()=>readCuratorState(),watch:()=>[hermesPath("skills/.curator_state")]}},DEPENDENTS=(()=>{let m2=new Map;for(let[k2,s]of Object.entries(SLICES))for(let d2 of s.deps??[]){let arr=m2.get(d2)??[];arr.push(k2),m2.set(d2,arr)}return m2})(),DEBOUNCE_MS=50;class HomeStore{data={};subs=new Map;inflight=new Map;watchers=new Map;debounce=new Map;rev=new Map;gen=0;get(k2){return this.data[k2]}subscribe(k2,cb){let set2=this.subs.get(k2);if(!set2)this.subs.set(k2,set2=new Set);return set2.add(cb),()=>set2.delete(cb)}ensure(k2){if(k2 in this.data)return Promise.resolve(this.data[k2]);let hit=this.inflight.get(k2);if(hit)return hit;let slice=SLICES[k2],gen=this.gen,rev2=this.rev.get(k2)??0,p=(async()=>{let deps={};for(let d2 of slice.deps??[])deps[d2]=await this.ensure(d2);let v2=await slice.read(deps);if(gen!==this.gen||rev2!==(this.rev.get(k2)??0))return v2;return this.data[k2]=v2,this.startWatch(k2,slice.watch),this.notify(k2),v2})();this.inflight.set(k2,p);let clear=()=>{if(this.inflight.get(k2)===p)this.inflight.delete(k2)};return p.then(clear,clear),p}invalidate(k2){if(!(k2 in this.data)&&!this.inflight.has(k2))return;if(this.rev.set(k2,(this.rev.get(k2)??0)+1),delete this.data[k2],this.inflight.delete(k2),this.subs.get(k2)?.size)this.ensure(k2);for(let dep of DEPENDENTS.get(k2)??[])this.invalidate(dep)}update(k2,fn){if(!(k2 in this.data))return;this.data[k2]=fn(this.data[k2]),this.notify(k2);for(let dep of DEPENDENTS.get(k2)??[])this.invalidate(dep)}close(){this.gen++;for(let ws of this.watchers.values())for(let w2 of ws)w2.close();for(let t2 of this.debounce.values())clearTimeout(t2);this.watchers.clear(),this.debounce.clear(),this.subs.clear(),this.inflight.clear(),this.rev.clear(),this.data={}}reset(){this.gen++;for(let ws of this.watchers.values())for(let w2 of ws)w2.close();for(let t2 of this.debounce.values())clearTimeout(t2);this.watchers.clear(),this.debounce.clear(),this.inflight.clear(),this.rev.clear(),this.data={};for(let k2 of this.subs.keys())if(this.subs.get(k2)?.size)this.ensure(k2)}notify(k2){let set2=this.subs.get(k2);if(set2)for(let cb of set2)cb()}startWatch(k2,watchFn){if(!watchFn||this.watchers.has(k2))return;let paths=watchFn(),ws=[],fire=()=>{let prev=this.debounce.get(k2);if(prev)clearTimeout(prev);this.debounce.set(k2,setTimeout(()=>this.invalidate(k2),DEBOUNCE_MS))};for(let p of paths){let dir=dirname7(p),name=basename8(p);try{if(existsSync17(p)&&statSync6(p).isDirectory())dir=p,name=null}catch{}if(!existsSync17(dir))continue;try{ws.push(watch2(dir,{persistent:!1},(_ev,f)=>{if(name===null||f===name)fire()}))}catch{}}this.watchers.set(k2,ws)}}var home3=new HomeStore;function useHome(k2){let v2=import_react57.useSyncExternalStore((cb)=>home3.subscribe(k2,cb),()=>home3.get(k2));return import_react57.useEffect(()=>{home3.ensure(k2)},[k2]),v2}var cmp=(s)=>{let k2=(r)=>s==="started"?r.started_at:r.detail?.last_active??r.started_at;return(a,b2)=>k2(b2)-k2(a)},WORD={api:"API",cli:"CLI",tui:"TUI",whatsapp:"WhatsApp"},badge=(s)=>s.split(/[_-]+/).filter(Boolean).map((w2)=>WORD[w2.toLowerCase()]??(w2[0]?.toUpperCase()??"")+w2.slice(1)).join(" ")||"\u2014",label=(r)=>r.title.trim()||(r.live?"-":"Untitled"),src=(r)=>r.detail?.sessionSource||r.source||"",HOME4="conversations",HBAR={visible:!1},ROW={flexDirection:"row"},sid=(s)=>`source:${s}`,chip=(id)=>`sessions-source-${id.replace(/[^a-z0-9_-]/gi,"_")}`,tick2=(r)=>r.detail?.last_active??r.started_at,FilterRow=import_react58.memo((p)=>{let theme=useTheme().theme,ref=import_react58.useRef(null),renderer=useRenderer();return import_react58.useEffect(()=>{let move=()=>{let node=ref.current,idx=p.views.findIndex((v2)=>v2.id===p.view);if(!node||idx<0)return;let left=p.views.slice(0,idx).reduce((n,v2,i)=>n+(i===0?0:1)+`${v2.label} ${v2.count}`.length+2,0),w2=`${p.views[idx].label} ${p.views[idx].count}`.length+2,port2=Math.max(1,node.viewport.width-4),pos=node.scrollLeft;node.scrollLeft=Math.max(0,left<pos?left:left+w2>pos+port2?left+w2-port2:pos)};move();let frames=0,frame=async()=>{if(move(),++frames>=2)renderer.removeFrameCallback(frame)};return renderer.setFrameCallback(frame),()=>renderer.removeFrameCallback(frame)},[p.view,p.views,renderer]),$jsx("scrollbox",{ref,scrollX:!0,height:1,paddingLeft:2,horizontalScrollbarOptions:HBAR,contentOptions:ROW,children:p.views.map((v2,i)=>$jsx(FilterChip,{id:chip(v2.id),label:`${v2.label} ${v2.count}`,state:p.view===v2.id?"in":"off",gap:i===0?0:1,color:theme.primary,textColor:theme.primary,onMouseDown:()=>p.setView(v2.id)},v2.id))})}),line=(s)=>(s??"").replace(/\s+/g," ").trim(),fold=(msgs)=>{let turns=[],tools=0;for(let m2 of msgs){if(m2.role==="tool"){tools++;continue}if(m2.role!=="user"&&m2.role!=="assistant")continue;let text4=line(m2.content);if(!text4)continue;turns.push({role:m2.role,text:text4})}return{turns,tools}},PeekRow=import_react58.memo((props)=>{let theme=useTheme().theme,[hot,setHot]=import_react58.useState(!1),left=props.row.role==="user",color=left?theme.primary:theme.accent,fg2=left?theme.text:theme.markdownText,bar=(side)=>$jsx("box",{width:2,flexShrink:0,height:1,border:[side],borderColor:color,customBorderChars:SIDE_PIPE});return $jsxs("box",{height:1,flexDirection:"row",backgroundColor:hot?theme.backgroundElement:void 0,onMouseOver:()=>setHot(!0),onMouseOut:()=>setHot(!1),children:[left?bar("left"):null,$jsx(Ticker,{active:hot,speed:35,hold:150,fg:fg2,children:inline(props.row.text).map((s,i)=>s.c?$jsx("span",{fg:theme.warning,children:s.t},i):s.b?$jsx("span",{fg:fg2,children:$jsx("strong",{children:s.t})},i):s.i?$jsx("span",{fg:fg2,children:$jsx("u",{children:s.t})},i):$jsx("span",{fg:fg2,children:s.t},i))}),left?null:bar("right")]})}),Peek=import_react58.memo((props)=>{let theme=useTheme().theme,[data2,setData]=import_react58.useState(null),[err,setErr]=import_react58.useState(""),sb=import_react58.useRef(null),gen=import_react58.useRef(0);if(import_react58.useEffect(()=>{let current=++gen.current;return setData(null),setErr(""),Promise.resolve(props.peek(props.sid)).then((m2)=>{if(gen.current===current)setData(fold(m2))}).catch((e)=>{if(gen.current===current)setErr(e instanceof Error?e.message:String(e))}),()=>{gen.current++}},[props.sid,props.peek]),import_react58.useEffect(()=>{if(data2&&sb.current)sb.current.scrollTop=sb.current.scrollHeight},[data2]),err)return $jsx("box",{height:1,children:$jsx("text",{fg:theme.error,children:err})});if(data2===null)return null;if(data2.turns.length===0&&data2.tools===0)return $jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"(no local transcript)"})});let gap=props.total>4;return $jsxs("box",{flexDirection:"column",flexGrow:1,minHeight:5,border:!0,borderStyle:"single",borderColor:theme.border,title:` Transcript${gap?" \xB7 first 2 / last 2":""} `,titleAlignment:"left",children:[$jsx("scrollbox",{ref:sb,scrollY:!0,flexGrow:1,minHeight:3,children:$jsx("box",{flexDirection:"column",width:"100%",children:data2.turns.map((r,i)=>$jsxs(import_react58.Fragment,{children:[$jsx(PeekRow,{row:r}),gap&&i===1?$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:" \u2026"})}):null]},i))})}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:`${data2.turns.length} turn${data2.turns.length===1?"":"s"} \xB7 ${data2.tools} tool call${data2.tools===1?"":"s"}`})})]})}),Detail=import_react58.memo((props)=>{let theme=useTheme().theme,r=props.row,d2=r.detail,lastActive=d2?.last_active??d2?.ended_at??null,subs2=d2?.subagent_count??0,[info,setInfo]=import_react58.useState({}),[lineageErr,setLineageErr]=import_react58.useState(""),lineageGen=import_react58.useRef(0);import_react58.useEffect(()=>{let current=++lineageGen.current;return setInfo({}),setLineageErr(""),Promise.resolve(props.lineage(r.id)).then((next)=>{if(lineageGen.current===current)setInfo(next)}).catch((e)=>{if(lineageGen.current===current)setLineageErr(e instanceof Error?e.message:String(e))}),()=>{lineageGen.current++}},[r.id,props.lineage]);let hasLineage=info.continuesFrom||info.compressedTo||subs2>0,go=(sid2)=>()=>props.onSwitch?.(sid2);return $jsx(TabShell,{title:"Session Detail",grow:2,children:$jsxs("box",{flexDirection:"column",width:"100%",flexGrow:1,overflow:"hidden",children:[$jsxs("box",{flexDirection:"column",flexShrink:0,children:[$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:$jsx("span",{fg:theme.accent,children:$jsx("strong",{children:label(r)})})})}),$jsx("box",{height:1}),$jsx(KVBlock,{rows:[["ID",r.id],["Source",badge(src(r))],["Model",d2?.model??"\u2014"],["Started",when(r.started_at)],["Last active",lastActive?`${when(lastActive)} (${ago(lastActive)})`:"\u2014"],["Duration",lastActive?span(r.started_at,lastActive):"\u2014"],["Ended",d2?.ended_at?`${when(d2.ended_at)} \xB7 ${d2.end_reason??"\u2014"}`:void 0]]}),$jsx("box",{height:1}),$jsx(KVBlock,{rows:[["Messages",String(r.message_count)],["Tool calls",d2?String(d2.tool_call_count):void 0],["Input",d2?`${fmt(d2.input_tokens)} tok`:void 0],["Output",d2?`${fmt(d2.output_tokens)} tok`:void 0],["Cache",d2?`${fmt(d2.cache_read_tokens)} r / ${fmt(d2.cache_write_tokens)} w`:void 0],["Reasoning",d2?`${fmt(d2.reasoning_tokens)} tok`:void 0],["Cost",d2?cost2(d2.estimated_cost_usd):void 0,theme.success]]}),hasLineage?$jsxs($Fragment,{children:[$jsx("box",{height:1}),$jsx("box",{minHeight:1,children:$jsx("text",{fg:theme.textMuted,children:"Lineage"})}),info.continuesFrom?$jsx("box",{height:1,onMouseDown:go(info.continuesFrom.id),children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" \u2190 continues from "}),$jsx("span",{fg:theme.accent,children:info.continuesFrom.title||info.continuesFrom.id})]})}):null,info.compressedTo?$jsx("box",{height:1,onMouseDown:go(info.compressedTo.id),children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" \u2192 compressed to "}),$jsx("span",{fg:theme.accent,children:info.compressedTo.title||info.compressedTo.id})]})}):null,subs2>0?$jsx("box",{height:1,children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" \u2387 spawned "}),$jsx("span",{fg:theme.text,children:String(subs2)}),$jsx("span",{fg:theme.textMuted,children:` subagent${subs2===1?"":"s"}`})]})}):null]}):null,lineageErr?$jsx("box",{height:1,children:$jsx("text",{fg:theme.error,children:lineageErr})}):null,!d2?$jsxs($Fragment,{children:[$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"(no local detail \u2014 state.db mismatch)"})})]}):null,$jsx("box",{height:1})]}),$jsx(Peek,{sid:r.id,total:r.message_count,peek:props.peek})]})})}),SearchDetail=import_react58.memo((props)=>{let theme=useTheme().theme,r=props.result,parts2=[],rest=r.snippet;while(rest.length){let start=rest.indexOf(">>>");if(start<0){parts2.push({text:rest,hi:!1});break}if(start>0)parts2.push({text:rest.slice(0,start),hi:!1});let end=rest.indexOf("<<<",start+3);if(end<0){parts2.push({text:rest.slice(start+3),hi:!0});break}parts2.push({text:rest.slice(start+3,end),hi:!0}),rest=rest.slice(end+3)}return $jsx(TabShell,{title:"Search Match",grow:2,children:$jsx("scrollbox",{scrollY:!0,flexGrow:1,children:$jsxs("box",{flexDirection:"column",width:"100%",children:[$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:$jsx("span",{fg:theme.accent,children:$jsx("strong",{children:r.title??"Untitled"})})})}),$jsx("box",{height:1}),$jsx(KVBlock,{rows:[["Source",badge(r.source)],["Model",r.model??"\u2014"],["Time",when(r.started_at)]]}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"Snippet"})}),$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:parts2.map((p,i)=>p.hi?$jsx("span",{fg:theme.accent,children:$jsx("strong",{children:p.text})},i):$jsx("span",{fg:theme.text,children:p.text},i))})})]})})})}),HeaderRow=import_react58.memo((props)=>{let theme=useTheme().theme,fg2=theme.textMuted,on=theme.accent,by=props.sort;return $jsxs(Hdr,{children:[$jsx(Col,{w:2,fg:fg2,children:" "}),$jsx(Col,{grow:!0,fg:fg2,bold:!0,children:"Title"}),$jsx(Col,{w:9,fg:fg2,bold:!0,children:"Source"}),$jsx(Col,{w:8,fg:by==="started"?on:fg2,bold:!0,onClick:()=>props.onSort("started"),children:by==="started"?"Start \u25BE":"Start"}),$jsx(Col,{w:10,fg:by==="active"?on:fg2,bold:!0,right:!0,onClick:()=>props.onSort("active"),children:by==="active"?"Active \u25BE":"Active"}),$jsx(Col,{w:7,fg:fg2,bold:!0,right:!0,children:"Msgs"}),$jsx("box",{width:3})]})}),Item=import_react58.memo((props)=>{let theme=useTheme().theme,{row:r,idx:i}=props,[x2,setX]=import_react58.useState(!1),active=r.detail?.last_active??r.detail?.ended_at??null,locked=props.locked||props.indent||Boolean(r.live),subs2=!props.indent&&(r.detail?.subagent_count??0)>0,leader=props.indent?"\u2514\u2500":props.selected?"\u25B8 ":" ",muted=props.indent&&!props.selected?theme.textMuted:void 0;return $jsxs("box",{id:props.id,flexDirection:"row",height:1,backgroundColor:props.selected?theme.backgroundElement:void 0,onMouseDown:()=>props.onActivate(i),onMouseMove:()=>props.onHover(i),children:[$jsx(Col,{w:2,fg:props.selected?theme.primary:muted??theme.text,children:leader}),$jsx(Marquee,{grow:!0,active:props.selected,fg:props.selected?theme.accent:muted??theme.text,bold:props.selected,underline:props.selected&&subs2,children:label(r)}),$jsx(Col,{w:9,fg:muted??theme.info,children:badge(src(r))}),$jsx(Col,{w:8,fg:theme.textMuted,children:stamp(r.started_at)}),$jsx(Col,{w:10,fg:theme.textMuted,right:!0,children:active?ago(active):"\u2014"}),$jsx(Col,{w:7,fg:theme.textMuted,right:!0,children:subs2?`${r.detail?.subagent_count} subs`:String(r.message_count)}),locked?$jsx("box",{width:3}):$jsx("box",{width:3,onMouseDown:(e)=>{e.stopPropagation(),props.onDelete(i)},onMouseOver:()=>setX(!0),onMouseOut:()=>setX(!1),children:$jsx("text",{children:$jsx("span",{fg:x2?theme.error:theme.textMuted,children:" \u2715"})})})]})}),SearchHeaderRow=import_react58.memo(()=>{let fg2=useTheme().theme.textMuted;return $jsxs(Hdr,{children:[$jsx(Col,{w:2,fg:fg2,children:" "}),$jsx(Col,{grow:!0,fg:fg2,bold:!0,children:"Title"}),$jsx(Col,{w:9,fg:fg2,bold:!0,children:"Source"}),$jsx(Col,{w:10,fg:fg2,bold:!0,children:"When"}),$jsx(Col,{w:20,fg:fg2,bold:!0,children:"Model"})]})}),SearchItem=import_react58.memo((props)=>{let theme=useTheme().theme,{result:r,idx:i}=props;return $jsxs("box",{id:props.id,flexDirection:"row",height:1,backgroundColor:props.selected?theme.backgroundElement:void 0,onMouseDown:()=>props.onActivate(i),onMouseMove:()=>props.onHover(i),children:[$jsx(Col,{w:2,fg:props.selected?theme.primary:theme.text,children:props.selected?"\u25B8 ":" "}),$jsx(Col,{grow:!0,fg:props.selected?theme.accent:theme.text,bold:props.selected,children:r.title??"Untitled"}),$jsx(Col,{w:9,fg:theme.info,children:badge(r.source)}),$jsx(Col,{w:10,fg:theme.textMuted,children:ago(r.started_at)}),$jsx(Col,{w:20,fg:theme.textMuted,children:r.model??"\u2014"})]})}),last={rows:[],kids:new Map},Sessions=import_react58.memo((props)=>{let theme=useTheme().theme,gw=useGateway(),dialog=useDialog(),toast=useToast(),dims=useTerminalDimensions(),cached2=props.io==null,io2=import_react58.useMemo(()=>({list:props.io?.list??io.roots,search:props.io?.search??io.search,subagents:props.io?.subagents??io.children,lineage:props.io?.lineage??io.lineage,peek:props.io?.peek??io.peek,remove:props.io?.remove??exports_sessions_db.remove,rename:props.io?.rename??exports_sessions_db.rename}),[props.io]),[rows2,setRows]=import_react58.useState(cached2?last.rows:[]),[liveRows,setLiveRows]=import_react58.useState([]),[warn,setWarn]=import_react58.useState(""),[searchErr,setSearchErr]=import_react58.useState(""),[pending3,setPending]=import_react58.useState(rows2.length===0),sort=exports_preferences.usePref("sessions")?.sort??"active",setSort=import_react58.useCallback((s)=>exports_preferences.set("sessions",{sort:s}),[]),[view,setView]=import_react58.useState(HOME4),active=import_react58.useMemo(()=>[...liveRows].sort((a,b2)=>Number(Boolean(b2.live?.current))-Number(Boolean(a.live?.current))||(b2.live?.last_active??b2.started_at)-(a.live?.last_active??a.started_at)),[liveRows]),ids=import_react58.useMemo(()=>new Set(active.flatMap((r)=>[r.id,r.live?.session_key].filter((x2)=>Boolean(x2)))),[active]),sorted=import_react58.useMemo(()=>rows2.filter((r)=>!ids.has(r.id)).sort(cmp(sort)),[rows2,ids,sort]),views=import_react58.useMemo(()=>{let stats=sorted.reduce((m2,r)=>{let s=src(r);if(!s)return m2;let prev=m2.get(s);return m2.set(s,{count:(prev?.count??0)+1,last:Math.max(prev?.last??0,tick2(r))}),m2},new Map),conv=sorted.filter((r)=>src(r)!=="cron").length;return[...conv>0?[{id:HOME4,label:"Conversations",count:conv,aggregate:"conversations"}]:[],...[...stats.entries()].sort((a,b2)=>b2[1].last-a[1].last||badge(a[0]).localeCompare(badge(b2[0]))).map(([source,stat2])=>({id:sid(source),label:badge(source),count:stat2.count,source}))]},[sorted]),cur=views.find((v2)=>v2.id===view)??views[0],chosen=cur?.id??view,hist=import_react58.useMemo(()=>{if(!cur)return[];if(cur.aggregate===HOME4)return sorted.filter((r)=>src(r)!=="cron");return sorted.filter((r)=>src(r)===cur.source)},[sorted,cur]),listed=import_react58.useMemo(()=>[...active,...hist],[active,hist]);import_react58.useEffect(()=>{if(views.length>0&&!views.some((v2)=>v2.id===view))setView(views[0].id)},[views,view]);let[anchor,setAnchor]=import_react58.useState(null),[open2,setOpen]=import_react58.useState(null),[searching,setSearching]=import_react58.useState(!1),[query,setQuery]=import_react58.useState(""),[results,setResults]=import_react58.useState([]),[searchSel,setSearchSel]=import_react58.useState(0),[kids,setKids]=import_react58.useState(cached2?last.kids:new Map),debounce=import_react58.useRef(null),searchGen=import_react58.useRef(0),vscroll=import_react58.useRef(null),seen=import_react58.useRef(!1),gen=import_react58.useRef(0),anchored=anchor&&listed.find((r)=>r.id===anchor.id),branch2=open2?listed.find((r)=>r.id===open2):void 0,owner=branch2&&(anchor?.indent?kids.get(branch2.id)?.some((c)=>c.id===anchor.id):anchored?.id===branch2.id)?branch2:void 0,showDetailPanel=dims.width>=120,visible2=listed.flatMap((r,i)=>r.id===owner?.id?[{row:r,indent:!1,parentIdx:i},...(kids.get(r.id)??[]).map((c)=>({row:c,indent:!0,parentIdx:i}))]:[{row:r,indent:!1,parentIdx:i}]),sel=anchor?Math.max(0,visible2.findIndex((v2)=>v2.row.id===anchor.id&&v2.indent===anchor.indent)):0,live=import_react58.useRef({rows:listed,visible:visible2,anchor,results,searching,onSwitch:props.onSwitch,onActivateLive:props.onActivateLive,currentId:props.currentId});live.current={rows:listed,visible:visible2,anchor,results,searching,onSwitch:props.onSwitch,onActivateLive:props.onActivateLive,currentId:props.currentId};let setSel=import_react58.useCallback((arg)=>{let cur2=live.current,prev=cur2.visible.findIndex((v3)=>v3.row.id===cur2.anchor?.id&&v3.indent===cur2.anchor.indent),n=typeof arg==="function"?arg(Math.max(0,prev)):arg,v2=cur2.visible[Math.max(0,Math.min(cur2.visible.length-1,n))];if(v2)setAnchor({id:v2.row.id,indent:v2.indent})},[]),LIMIT=2000,keep=(d2)=>d2.message_count>0||d2.lineage_root_id!=null,toRow2=(d2)=>({id:d2.id,title:d2.title??"",preview:d2.lastMessage??"",message_count:d2.message_count,started_at:d2.started_at,source:d2.sessionSource,detail:d2}),toLiveRow=(s,d2,r)=>({id:s.id,title:s.title?.trim()||d2?.title||"",preview:s.preview??"",message_count:s.message_count??d2?.message_count??r?.message_count??0,started_at:s.started_at??d2?.started_at??r?.started_at??s.last_active??0,source:d2?.sessionSource??r?.source??s.source??"",detail:d2,live:s}),pick=(m2,s)=>m2.get(s.id)??m2.get(s.session_key??""),patchTitle=import_react58.useCallback((id,title)=>{if(!id||title===void 0)return;home3.update("recentSessions",(rows3)=>rows3.map((r)=>r.id===id?{...r,title}:r)),setRows((prev)=>prev.map((row3)=>row3.id===id?{...row3,title,detail:row3.detail?{...row3.detail,title}:row3.detail}:row3)),setLiveRows((prev)=>prev.map((row3)=>row3.id===id||row3.live?.session_key===id?{...row3,title,live:row3.live?{...row3.live,title}:row3.live}:row3))},[]);useGatewayEvent((ev)=>{if(ev.type==="session.title")patchTitle(ev.payload.session_id,ev.payload.title)});let load4=import_react58.useCallback(async()=>{let current=++gen.current;setPending(!0);let rpc=gw.request("session.list",{limit:LIMIT}).then((r2)=>({ok:!0,v:r2})).catch((e)=>({ok:!1,e})),active2=gw.request("session.active_list",{current_session_id:props.currentId}).then((r2)=>({ok:!0,v:r2})).catch((e)=>({ok:!1,e})),disk=await Promise.resolve(io2.list(LIMIT)).catch(()=>[]);if(gen.current!==current)return;let local=new Map(disk.map((r2)=>[r2.id,r2])),diskRows=disk.filter(keep).map(toRow2);if(setRows(diskRows),cached2)last.rows=diskRows;let[a,r]=await Promise.all([active2,rpc]);if(gen.current!==current)return;let live2=a.ok?a.v.sessions??[]:[];if(a.ok)setLiveRows(live2.map((s)=>toLiveRow(s,pick(local,s))));let final=diskRows;if(r.ok&&r.v.sessions?.length){let seen2=new Set(diskRows.map((s)=>s.id)),merged=[...diskRows,...r.v.sessions.filter((s)=>(s.message_count??0)>0&&!seen2.has(s.id)).map((s)=>({...s,detail:local.get(s.id)}))];if(final=merged,setRows(merged),cached2)last.rows=merged;let found=new Map(merged.map((s)=>[s.id,s]));if(live2.length)setLiveRows(live2.map((s)=>toLiveRow(s,pick(local,s),pick(found,s))))}let kidsError="";try{let parents=final.filter((row3)=>(row3.detail?.subagent_count??0)>0),children2=[];for(let i=0;i<parents.length;i+=8)if(children2.push(...await Promise.all(parents.slice(i,i+8).map((row3)=>io2.subagents(row3.id)))),gen.current!==current)return;if(gen.current!==current)return;let next=new Map(parents.map((row3,i)=>[row3.id,children2[i].map(toRow2)]));if(setKids(next),cached2)last.kids=next}catch(err){kidsError=err instanceof Error?err.message:String(err)}if(gen.current!==current)return;setPending(!1);let listError=!r.ok?local.size?`gateway session.list failed (${r.e.message}) \u2014 listing state.db directly; rows may not resume`:r.e.message:"";setWarn([listError,kidsError].filter(Boolean).join(" \xB7 "))},[gw,props.currentId,io2,cached2]);import_react58.useEffect(()=>{load4()},[load4]),import_react58.useEffect(()=>()=>{gen.current++},[]),import_react58.useEffect(()=>{let on=active.length>0,fresh=on&&!seen.current;if(!listed.length){seen.current=on;return}if(!anchor||!visible2.some((v2)=>v2.row.id===anchor.id&&v2.indent===anchor.indent)){setAnchor({id:listed[0].id,indent:!1}),seen.current=on;return}if(fresh&&active[0]&&hist[0]?.id===anchor.id&&!anchor.indent)setAnchor({id:active[0].id,indent:!1});seen.current=on},[listed,active,hist,anchor]),import_react58.useEffect(()=>{let current=++searchGen.current;if(setSearchErr(""),!searching||!query.trim()){setResults([]);return}return setResults([]),setSearchSel(0),debounce.current=setTimeout(()=>{Promise.resolve(io2.search(query,30)).then((r)=>{if(searchGen.current!==current)return;setResults(r),setSearchSel(0),setSearchErr("")}).catch((err)=>{if(searchGen.current===current)setSearchErr(err instanceof Error?err.message:String(err))})},150),()=>{if(debounce.current)clearTimeout(debounce.current)}},[query,searching,io2]);let rowHover=import_react58.useCallback((i)=>{live.current.searching?setSearchSel(i):setSel(i)},[setSel]),rowActivate=import_react58.useCallback((i)=>{let l=live.current;l.searching?setSearchSel(i):setSel(i);let hit=l.searching?l.results[i]:l.visible[i]?.row,id=l.searching?hit?.session_id:hit?.id;if(!id)return;if(!l.searching&&hit?.live){if(l.onActivateLive)return l.onActivateLive(id);return l.onSwitch?.(id)}if(!l.onSwitch)return;if(id===l.currentId)return l.onSwitch(id);let title=hit?.title||"Untitled",n=l.searching?void 0:hit.message_count;openConfirm(dialog,{title:"Load session?",body:`${trunc5(title,60)}${n!=null?` \xB7 ${n} msg${n===1?"":"s"}`:""}
|
|
4089
|
+
`))}var ENV_CATALOG=[{category:"LLM Providers",keys:["ANTHROPIC_API_KEY","ARCEEAI_API_KEY","DEEPSEEK_API_KEY","FIREWORKS_API_KEY","GEMINI_API_KEY","GLM_API_KEY","GMI_API_KEY","GOOGLE_API_KEY","GROQ_API_KEY","KIMI_API_KEY","LM_API_KEY","MINIMAX_API_KEY","MISTRAL_API_KEY","NOUS_API_KEY","NVIDIA_API_KEY","OPENAI_API_KEY","OPENROUTER_API_KEY","STEPFUN_API_KEY","TOGETHER_API_KEY","VERTEX_CREDENTIALS_PATH","XAI_API_KEY","ZAI_API_KEY","Z_AI_API_KEY"]},{category:"Tool API Keys",keys:["AGENT_BROWSER_ENGINE","BRAVE_SEARCH_API_KEY","BROWSERBASE_API_KEY","BROWSERBASE_PROJECT_ID","BROWSER_USE_API_KEY","CAMOFOX_API_KEY","CAMOFOX_URL","ELEVENLABS_API_KEY","EXA_API_KEY","FAL_KEY","FIRECRAWL_API_KEY","FIRECRAWL_API_URL","FIRECRAWL_BROWSER_TTL","KREA_API_KEY","OPENVIKING_API_KEY","OPENVIKING_ENDPOINT","SEARXNG_URL","TAVILY_API_KEY","TOOL_GATEWAY_DOMAIN","TOOL_GATEWAY_SCHEME","TOOL_GATEWAY_USER_TOKEN"]},{category:"Messaging",keys:["DISCORD_ALLOWED_USERS","DISCORD_BOT_TOKEN","DISCORD_REPLY_TO_MODE","SLACK_ALLOWED_USERS","SLACK_APP_TOKEN","SLACK_BOT_TOKEN","TELEGRAM_ALLOWED_USERS","TELEGRAM_BOT_TOKEN","TELEGRAM_PROXY"]},{category:"Agent",keys:["API_SERVER_KEY","BRV_API_KEY","HERMES_LANGFUSE_BASE_URL","HERMES_LANGFUSE_PUBLIC_KEY","HERMES_LANGFUSE_SECRET_KEY","HINDSIGHT_API_KEY","HINDSIGHT_API_URL","MEM0_API_KEY","RETAINDB_API_KEY","RETAINDB_BASE_URL","SUPERMEMORY_API_KEY"]}];var SLICES={config:{read:()=>readConfig(),watch:()=>[hermesPath("config.yaml")]},memory:{read:(d2)=>readMemoryFile("MEMORY.md",d2.config?.memory?.memory_char_limit??2200),deps:["config"],watch:()=>[hermesPath("memories/MEMORY.md")]},userProfile:{read:(d2)=>readMemoryFile("USER.md",d2.config?.memory?.user_char_limit??1375),deps:["config"],watch:()=>[hermesPath("memories/USER.md")]},memoryProviders:{read:(d2)=>readMemoryProviders(d2.config?.memory?.provider??""),deps:["config"]},memoryActivity:{read:()=>io.memoryActivity()},env:{read:()=>readEnvFile(),watch:()=>[hermesPath(".env")]},soul:{read:()=>readSoul(),watch:()=>[hermesPath("SOUL.md")]},liveSessions:{read:()=>readLiveSessions(),watch:()=>[hermesPath("sessions/sessions.json")]},recentSessions:{read:()=>io.roots(30)},systemPrompt:{read:()=>io.systemPrompt().then((r)=>r&&{source:makeSource("state.db"),sessionId:r.id,text:r.text,totalChars:r.text.length,tokenEstimate:count2(r.text)}).catch(()=>null)},toolsInfo:{read:()=>readToolsFromLatestSession(),watch:()=>[hermesPath("sessions")]},skillUsage:{read:()=>readSkillUsage(),watch:()=>[hermesPath("skills/.usage.json")]},curatorState:{read:()=>readCuratorState(),watch:()=>[hermesPath("skills/.curator_state")]}},DEPENDENTS=(()=>{let m2=new Map;for(let[k2,s]of Object.entries(SLICES))for(let d2 of s.deps??[]){let arr=m2.get(d2)??[];arr.push(k2),m2.set(d2,arr)}return m2})(),DEBOUNCE_MS=50,watchfs=(path4,cb)=>watch2(path4,{persistent:!1},(_ev,file)=>cb(file));class HomeStore{watcher;data={};subs=new Map;inflight=new Map;watchers=new Map;debounce=new Map;rev=new Map;gen=0;constructor(watcher=watchfs){this.watcher=watcher}get(k2){return this.data[k2]}subscribe(k2,cb){let set2=this.subs.get(k2);if(!set2)this.subs.set(k2,set2=new Set);return set2.add(cb),()=>set2.delete(cb)}ensure(k2){if(k2 in this.data)return Promise.resolve(this.data[k2]);let hit=this.inflight.get(k2);if(hit)return hit;let slice=SLICES[k2],gen=this.gen,rev2=this.rev.get(k2)??0,p=(async()=>{let deps={};for(let d2 of slice.deps??[])deps[d2]=await this.ensure(d2);let v2=await slice.read(deps);if(gen!==this.gen||rev2!==(this.rev.get(k2)??0))return v2;return this.data[k2]=v2,this.startWatch(k2,slice.watch),this.notify(k2),v2})();this.inflight.set(k2,p);let clear=()=>{if(this.inflight.get(k2)===p)this.inflight.delete(k2)};return p.then(clear,clear),p}invalidate(k2){if(!(k2 in this.data)&&!this.inflight.has(k2))return;if(this.rev.set(k2,(this.rev.get(k2)??0)+1),delete this.data[k2],this.inflight.delete(k2),this.subs.get(k2)?.size)this.ensure(k2);for(let dep of DEPENDENTS.get(k2)??[])this.invalidate(dep)}update(k2,fn){if(!(k2 in this.data))return;this.data[k2]=fn(this.data[k2]),this.notify(k2);for(let dep of DEPENDENTS.get(k2)??[])this.invalidate(dep)}close(){this.gen++;for(let ws of this.watchers.values())for(let w2 of ws)w2.close();for(let t2 of this.debounce.values())clearTimeout(t2);this.watchers.clear(),this.debounce.clear(),this.subs.clear(),this.inflight.clear(),this.rev.clear(),this.data={}}reset(){this.gen++;for(let ws of this.watchers.values())for(let w2 of ws)w2.close();for(let t2 of this.debounce.values())clearTimeout(t2);this.watchers.clear(),this.debounce.clear(),this.inflight.clear(),this.rev.clear(),this.data={};for(let k2 of this.subs.keys())if(this.subs.get(k2)?.size)this.ensure(k2)}notify(k2){let set2=this.subs.get(k2);if(set2)for(let cb of set2)cb()}startWatch(k2,watchFn){if(!watchFn||this.watchers.has(k2))return;let paths=watchFn(),ws=[],fire=()=>{let prev=this.debounce.get(k2);if(prev)clearTimeout(prev);this.debounce.set(k2,setTimeout(()=>this.invalidate(k2),DEBOUNCE_MS))};for(let p of paths){let dir=dirname7(p),name=basename8(p);try{if(existsSync17(p)&&statSync6(p).isDirectory())dir=p,name=null}catch{}if(!existsSync17(dir))continue;try{ws.push(this.watcher(dir,(file)=>{if(name===null||file?.toString()===name)fire()}))}catch{}}this.watchers.set(k2,ws)}}var home3=new HomeStore;function useHome(k2){let v2=import_react57.useSyncExternalStore((cb)=>home3.subscribe(k2,cb),()=>home3.get(k2));return import_react57.useEffect(()=>{home3.ensure(k2)},[k2]),v2}var cmp=(s)=>{let k2=(r)=>s==="started"?r.started_at:r.detail?.last_active??r.started_at;return(a,b2)=>k2(b2)-k2(a)},WORD={api:"API",cli:"CLI",tui:"TUI",whatsapp:"WhatsApp"},badge=(s)=>s.split(/[_-]+/).filter(Boolean).map((w2)=>WORD[w2.toLowerCase()]??(w2[0]?.toUpperCase()??"")+w2.slice(1)).join(" ")||"\u2014",label=(r)=>r.title.trim()||(r.live?"-":"Untitled"),src=(r)=>r.detail?.sessionSource||r.source||"",HOME4="conversations",HBAR={visible:!1},ROW={flexDirection:"row"},sid=(s)=>`source:${s}`,chip=(id)=>`sessions-source-${id.replace(/[^a-z0-9_-]/gi,"_")}`,tick2=(r)=>r.detail?.last_active??r.started_at,FilterRow=import_react58.memo((p)=>{let theme=useTheme().theme,ref=import_react58.useRef(null),renderer=useRenderer();return import_react58.useEffect(()=>{let move=()=>{let node=ref.current,idx=p.views.findIndex((v2)=>v2.id===p.view);if(!node||idx<0)return;let left=p.views.slice(0,idx).reduce((n,v2,i)=>n+(i===0?0:1)+`${v2.label} ${v2.count}`.length+2,0),w2=`${p.views[idx].label} ${p.views[idx].count}`.length+2,port2=Math.max(1,node.viewport.width-4),pos=node.scrollLeft;node.scrollLeft=Math.max(0,left<pos?left:left+w2>pos+port2?left+w2-port2:pos)};move();let frames=0,frame=async()=>{if(move(),++frames>=2)renderer.removeFrameCallback(frame)};return renderer.setFrameCallback(frame),()=>renderer.removeFrameCallback(frame)},[p.view,p.views,renderer]),$jsx("scrollbox",{ref,scrollX:!0,height:1,paddingLeft:2,horizontalScrollbarOptions:HBAR,contentOptions:ROW,children:p.views.map((v2,i)=>$jsx(FilterChip,{id:chip(v2.id),label:`${v2.label} ${v2.count}`,state:p.view===v2.id?"in":"off",gap:i===0?0:1,color:theme.primary,textColor:theme.primary,onMouseDown:()=>p.setView(v2.id)},v2.id))})}),line=(s)=>(s??"").replace(/\s+/g," ").trim(),fold=(msgs)=>{let turns=[],tools=0;for(let m2 of msgs){if(m2.role==="tool"){tools++;continue}if(m2.role!=="user"&&m2.role!=="assistant")continue;let text4=line(m2.content);if(!text4)continue;turns.push({role:m2.role,text:text4})}return{turns,tools}},PeekRow=import_react58.memo((props)=>{let theme=useTheme().theme,[hot,setHot]=import_react58.useState(!1),left=props.row.role==="user",color=left?theme.primary:theme.accent,fg2=left?theme.text:theme.markdownText,bar=(side)=>$jsx("box",{width:2,flexShrink:0,height:1,border:[side],borderColor:color,customBorderChars:SIDE_PIPE});return $jsxs("box",{height:1,flexDirection:"row",backgroundColor:hot?theme.backgroundElement:void 0,onMouseOver:()=>setHot(!0),onMouseOut:()=>setHot(!1),children:[left?bar("left"):null,$jsx(Ticker,{active:hot,speed:35,hold:150,fg:fg2,children:inline(props.row.text).map((s,i)=>s.c?$jsx("span",{fg:theme.warning,children:s.t},i):s.b?$jsx("span",{fg:fg2,children:$jsx("strong",{children:s.t})},i):s.i?$jsx("span",{fg:fg2,children:$jsx("u",{children:s.t})},i):$jsx("span",{fg:fg2,children:s.t},i))}),left?null:bar("right")]})}),Peek=import_react58.memo((props)=>{let theme=useTheme().theme,[data2,setData]=import_react58.useState(null),[err,setErr]=import_react58.useState(""),sb=import_react58.useRef(null),gen=import_react58.useRef(0);if(import_react58.useEffect(()=>{let current=++gen.current;return setData(null),setErr(""),Promise.resolve(props.peek(props.sid)).then((m2)=>{if(gen.current===current)setData(fold(m2))}).catch((e)=>{if(gen.current===current)setErr(e instanceof Error?e.message:String(e))}),()=>{gen.current++}},[props.sid,props.peek]),import_react58.useEffect(()=>{if(data2&&sb.current)sb.current.scrollTop=sb.current.scrollHeight},[data2]),err)return $jsx("box",{height:1,children:$jsx("text",{fg:theme.error,children:err})});if(data2===null)return null;if(data2.turns.length===0&&data2.tools===0)return $jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"(no local transcript)"})});let gap=props.total>4;return $jsxs("box",{flexDirection:"column",flexGrow:1,minHeight:5,border:!0,borderStyle:"single",borderColor:theme.border,title:` Transcript${gap?" \xB7 first 2 / last 2":""} `,titleAlignment:"left",children:[$jsx("scrollbox",{ref:sb,scrollY:!0,flexGrow:1,minHeight:3,children:$jsx("box",{flexDirection:"column",width:"100%",children:data2.turns.map((r,i)=>$jsxs(import_react58.Fragment,{children:[$jsx(PeekRow,{row:r}),gap&&i===1?$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:" \u2026"})}):null]},i))})}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:`${data2.turns.length} turn${data2.turns.length===1?"":"s"} \xB7 ${data2.tools} tool call${data2.tools===1?"":"s"}`})})]})}),Detail=import_react58.memo((props)=>{let theme=useTheme().theme,r=props.row,d2=r.detail,lastActive=d2?.last_active??d2?.ended_at??null,subs2=d2?.subagent_count??0,[info,setInfo]=import_react58.useState({}),[lineageErr,setLineageErr]=import_react58.useState(""),lineageGen=import_react58.useRef(0);import_react58.useEffect(()=>{let current=++lineageGen.current;return setInfo({}),setLineageErr(""),Promise.resolve(props.lineage(r.id)).then((next)=>{if(lineageGen.current===current)setInfo(next)}).catch((e)=>{if(lineageGen.current===current)setLineageErr(e instanceof Error?e.message:String(e))}),()=>{lineageGen.current++}},[r.id,props.lineage]);let hasLineage=info.continuesFrom||info.compressedTo||subs2>0,go=(sid2)=>()=>props.onSwitch?.(sid2);return $jsx(TabShell,{title:"Session Detail",grow:2,children:$jsxs("box",{flexDirection:"column",width:"100%",flexGrow:1,overflow:"hidden",children:[$jsxs("box",{flexDirection:"column",flexShrink:0,children:[$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:$jsx("span",{fg:theme.accent,children:$jsx("strong",{children:label(r)})})})}),$jsx("box",{height:1}),$jsx(KVBlock,{rows:[["ID",r.id],["Source",badge(src(r))],["Model",d2?.model??"\u2014"],["Started",when(r.started_at)],["Last active",lastActive?`${when(lastActive)} (${ago(lastActive)})`:"\u2014"],["Duration",lastActive?span(r.started_at,lastActive):"\u2014"],["Ended",d2?.ended_at?`${when(d2.ended_at)} \xB7 ${d2.end_reason??"\u2014"}`:void 0]]}),$jsx("box",{height:1}),$jsx(KVBlock,{rows:[["Messages",String(r.message_count)],["Tool calls",d2?String(d2.tool_call_count):void 0],["Input",d2?`${fmt(d2.input_tokens)} tok`:void 0],["Output",d2?`${fmt(d2.output_tokens)} tok`:void 0],["Cache",d2?`${fmt(d2.cache_read_tokens)} r / ${fmt(d2.cache_write_tokens)} w`:void 0],["Reasoning",d2?`${fmt(d2.reasoning_tokens)} tok`:void 0],["Cost",d2?cost2(d2.estimated_cost_usd):void 0,theme.success]]}),hasLineage?$jsxs($Fragment,{children:[$jsx("box",{height:1}),$jsx("box",{minHeight:1,children:$jsx("text",{fg:theme.textMuted,children:"Lineage"})}),info.continuesFrom?$jsx("box",{height:1,onMouseDown:go(info.continuesFrom.id),children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" \u2190 continues from "}),$jsx("span",{fg:theme.accent,children:info.continuesFrom.title||info.continuesFrom.id})]})}):null,info.compressedTo?$jsx("box",{height:1,onMouseDown:go(info.compressedTo.id),children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" \u2192 compressed to "}),$jsx("span",{fg:theme.accent,children:info.compressedTo.title||info.compressedTo.id})]})}):null,subs2>0?$jsx("box",{height:1,children:$jsxs("text",{children:[$jsx("span",{fg:theme.textMuted,children:" \u2387 spawned "}),$jsx("span",{fg:theme.text,children:String(subs2)}),$jsx("span",{fg:theme.textMuted,children:` subagent${subs2===1?"":"s"}`})]})}):null]}):null,lineageErr?$jsx("box",{height:1,children:$jsx("text",{fg:theme.error,children:lineageErr})}):null,!d2?$jsxs($Fragment,{children:[$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"(no local detail \u2014 state.db mismatch)"})})]}):null,$jsx("box",{height:1})]}),$jsx(Peek,{sid:r.id,total:r.message_count,peek:props.peek})]})})}),SearchDetail=import_react58.memo((props)=>{let theme=useTheme().theme,r=props.result,parts2=[],rest=r.snippet;while(rest.length){let start=rest.indexOf(">>>");if(start<0){parts2.push({text:rest,hi:!1});break}if(start>0)parts2.push({text:rest.slice(0,start),hi:!1});let end=rest.indexOf("<<<",start+3);if(end<0){parts2.push({text:rest.slice(start+3),hi:!0});break}parts2.push({text:rest.slice(start+3,end),hi:!0}),rest=rest.slice(end+3)}return $jsx(TabShell,{title:"Search Match",grow:2,children:$jsx("scrollbox",{scrollY:!0,flexGrow:1,children:$jsxs("box",{flexDirection:"column",width:"100%",children:[$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:$jsx("span",{fg:theme.accent,children:$jsx("strong",{children:r.title??"Untitled"})})})}),$jsx("box",{height:1}),$jsx(KVBlock,{rows:[["Source",badge(r.source)],["Model",r.model??"\u2014"],["Time",when(r.started_at)]]}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"Snippet"})}),$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:parts2.map((p,i)=>p.hi?$jsx("span",{fg:theme.accent,children:$jsx("strong",{children:p.text})},i):$jsx("span",{fg:theme.text,children:p.text},i))})})]})})})}),HeaderRow=import_react58.memo((props)=>{let theme=useTheme().theme,fg2=theme.textMuted,on=theme.accent,by=props.sort;return $jsxs(Hdr,{children:[$jsx(Col,{w:2,fg:fg2,children:" "}),$jsx(Col,{grow:!0,fg:fg2,bold:!0,children:"Title"}),$jsx(Col,{w:9,fg:fg2,bold:!0,children:"Source"}),$jsx(Col,{w:8,fg:by==="started"?on:fg2,bold:!0,onClick:()=>props.onSort("started"),children:by==="started"?"Start \u25BE":"Start"}),$jsx(Col,{w:10,fg:by==="active"?on:fg2,bold:!0,right:!0,onClick:()=>props.onSort("active"),children:by==="active"?"Active \u25BE":"Active"}),$jsx(Col,{w:7,fg:fg2,bold:!0,right:!0,children:"Msgs"}),$jsx("box",{width:3})]})}),Item=import_react58.memo((props)=>{let theme=useTheme().theme,{row:r,idx:i}=props,[x2,setX]=import_react58.useState(!1),active=r.detail?.last_active??r.detail?.ended_at??null,locked=props.locked||props.indent||Boolean(r.live),subs2=!props.indent&&(r.detail?.subagent_count??0)>0,leader=props.indent?"\u2514\u2500":props.selected?"\u25B8 ":" ",muted=props.indent&&!props.selected?theme.textMuted:void 0;return $jsxs("box",{id:props.id,flexDirection:"row",height:1,backgroundColor:props.selected?theme.backgroundElement:void 0,onMouseDown:()=>props.onActivate(i),onMouseMove:()=>props.onHover(i),children:[$jsx(Col,{w:2,fg:props.selected?theme.primary:muted??theme.text,children:leader}),$jsx(Marquee,{grow:!0,active:props.selected,fg:props.selected?theme.accent:muted??theme.text,bold:props.selected,underline:props.selected&&subs2,children:label(r)}),$jsx(Col,{w:9,fg:muted??theme.info,children:badge(src(r))}),$jsx(Col,{w:8,fg:theme.textMuted,children:stamp(r.started_at)}),$jsx(Col,{w:10,fg:theme.textMuted,right:!0,children:active?ago(active):"\u2014"}),$jsx(Col,{w:7,fg:theme.textMuted,right:!0,children:subs2?`${r.detail?.subagent_count} subs`:String(r.message_count)}),locked?$jsx("box",{width:3}):$jsx("box",{width:3,onMouseDown:(e)=>{e.stopPropagation(),props.onDelete(i)},onMouseOver:()=>setX(!0),onMouseOut:()=>setX(!1),children:$jsx("text",{children:$jsx("span",{fg:x2?theme.error:theme.textMuted,children:" \u2715"})})})]})}),SearchHeaderRow=import_react58.memo(()=>{let fg2=useTheme().theme.textMuted;return $jsxs(Hdr,{children:[$jsx(Col,{w:2,fg:fg2,children:" "}),$jsx(Col,{grow:!0,fg:fg2,bold:!0,children:"Title"}),$jsx(Col,{w:9,fg:fg2,bold:!0,children:"Source"}),$jsx(Col,{w:10,fg:fg2,bold:!0,children:"When"}),$jsx(Col,{w:20,fg:fg2,bold:!0,children:"Model"})]})}),SearchItem=import_react58.memo((props)=>{let theme=useTheme().theme,{result:r,idx:i}=props;return $jsxs("box",{id:props.id,flexDirection:"row",height:1,backgroundColor:props.selected?theme.backgroundElement:void 0,onMouseDown:()=>props.onActivate(i),onMouseMove:()=>props.onHover(i),children:[$jsx(Col,{w:2,fg:props.selected?theme.primary:theme.text,children:props.selected?"\u25B8 ":" "}),$jsx(Col,{grow:!0,fg:props.selected?theme.accent:theme.text,bold:props.selected,children:r.title??"Untitled"}),$jsx(Col,{w:9,fg:theme.info,children:badge(r.source)}),$jsx(Col,{w:10,fg:theme.textMuted,children:ago(r.started_at)}),$jsx(Col,{w:20,fg:theme.textMuted,children:r.model??"\u2014"})]})}),last={rows:[],kids:new Map},Sessions=import_react58.memo((props)=>{let theme=useTheme().theme,gw=useGateway(),dialog=useDialog(),toast=useToast(),dims=useTerminalDimensions(),cached2=props.io==null,io2=import_react58.useMemo(()=>({list:props.io?.list??io.roots,search:props.io?.search??io.search,subagents:props.io?.subagents??io.children,lineage:props.io?.lineage??io.lineage,peek:props.io?.peek??io.peek,remove:props.io?.remove??exports_sessions_db.remove,rename:props.io?.rename??exports_sessions_db.rename}),[props.io]),[rows2,setRows]=import_react58.useState(cached2?last.rows:[]),[liveRows,setLiveRows]=import_react58.useState([]),[warn,setWarn]=import_react58.useState(""),[searchErr,setSearchErr]=import_react58.useState(""),[pending3,setPending]=import_react58.useState(rows2.length===0),sort=exports_preferences.usePref("sessions")?.sort??"active",setSort=import_react58.useCallback((s)=>exports_preferences.set("sessions",{sort:s}),[]),[view,setView]=import_react58.useState(HOME4),active=import_react58.useMemo(()=>[...liveRows].sort((a,b2)=>Number(Boolean(b2.live?.current))-Number(Boolean(a.live?.current))||(b2.live?.last_active??b2.started_at)-(a.live?.last_active??a.started_at)),[liveRows]),ids=import_react58.useMemo(()=>new Set(active.flatMap((r)=>[r.id,r.live?.session_key].filter((x2)=>Boolean(x2)))),[active]),sorted=import_react58.useMemo(()=>rows2.filter((r)=>!ids.has(r.id)).sort(cmp(sort)),[rows2,ids,sort]),views=import_react58.useMemo(()=>{let stats=sorted.reduce((m2,r)=>{let s=src(r);if(!s)return m2;let prev=m2.get(s);return m2.set(s,{count:(prev?.count??0)+1,last:Math.max(prev?.last??0,tick2(r))}),m2},new Map),conv=sorted.filter((r)=>src(r)!=="cron").length;return[...conv>0?[{id:HOME4,label:"Conversations",count:conv,aggregate:"conversations"}]:[],...[...stats.entries()].sort((a,b2)=>b2[1].last-a[1].last||badge(a[0]).localeCompare(badge(b2[0]))).map(([source,stat2])=>({id:sid(source),label:badge(source),count:stat2.count,source}))]},[sorted]),cur=views.find((v2)=>v2.id===view)??views[0],chosen=cur?.id??view,hist=import_react58.useMemo(()=>{if(!cur)return[];if(cur.aggregate===HOME4)return sorted.filter((r)=>src(r)!=="cron");return sorted.filter((r)=>src(r)===cur.source)},[sorted,cur]),listed=import_react58.useMemo(()=>[...active,...hist],[active,hist]);import_react58.useEffect(()=>{if(views.length>0&&!views.some((v2)=>v2.id===view))setView(views[0].id)},[views,view]);let[anchor,setAnchor]=import_react58.useState(null),[open2,setOpen]=import_react58.useState(null),[searching,setSearching]=import_react58.useState(!1),[query,setQuery]=import_react58.useState(""),[results,setResults]=import_react58.useState([]),[searchSel,setSearchSel]=import_react58.useState(0),[kids,setKids]=import_react58.useState(cached2?last.kids:new Map),debounce=import_react58.useRef(null),searchGen=import_react58.useRef(0),vscroll=import_react58.useRef(null),seen=import_react58.useRef(!1),gen=import_react58.useRef(0),anchored=anchor&&listed.find((r)=>r.id===anchor.id),branch2=open2?listed.find((r)=>r.id===open2):void 0,owner=branch2&&(anchor?.indent?kids.get(branch2.id)?.some((c)=>c.id===anchor.id):anchored?.id===branch2.id)?branch2:void 0,showDetailPanel=dims.width>=120,visible2=listed.flatMap((r,i)=>r.id===owner?.id?[{row:r,indent:!1,parentIdx:i},...(kids.get(r.id)??[]).map((c)=>({row:c,indent:!0,parentIdx:i}))]:[{row:r,indent:!1,parentIdx:i}]),sel=anchor?Math.max(0,visible2.findIndex((v2)=>v2.row.id===anchor.id&&v2.indent===anchor.indent)):0,live=import_react58.useRef({rows:listed,visible:visible2,anchor,results,searching,onSwitch:props.onSwitch,onActivateLive:props.onActivateLive,currentId:props.currentId});live.current={rows:listed,visible:visible2,anchor,results,searching,onSwitch:props.onSwitch,onActivateLive:props.onActivateLive,currentId:props.currentId};let setSel=import_react58.useCallback((arg)=>{let cur2=live.current,prev=cur2.visible.findIndex((v3)=>v3.row.id===cur2.anchor?.id&&v3.indent===cur2.anchor.indent),n=typeof arg==="function"?arg(Math.max(0,prev)):arg,v2=cur2.visible[Math.max(0,Math.min(cur2.visible.length-1,n))];if(v2)setAnchor({id:v2.row.id,indent:v2.indent})},[]),LIMIT=2000,keep=(d2)=>d2.message_count>0||d2.lineage_root_id!=null,toRow2=(d2)=>({id:d2.id,title:d2.title??"",preview:d2.lastMessage??"",message_count:d2.message_count,started_at:d2.started_at,source:d2.sessionSource,detail:d2}),toLiveRow=(s,d2,r)=>({id:s.id,title:s.title?.trim()||d2?.title||"",preview:s.preview??"",message_count:s.message_count??d2?.message_count??r?.message_count??0,started_at:s.started_at??d2?.started_at??r?.started_at??s.last_active??0,source:d2?.sessionSource??r?.source??s.source??"",detail:d2,live:s}),pick=(m2,s)=>m2.get(s.id)??m2.get(s.session_key??""),patchTitle=import_react58.useCallback((id,title)=>{if(!id||title===void 0)return;home3.update("recentSessions",(rows3)=>rows3.map((r)=>r.id===id?{...r,title}:r)),setRows((prev)=>prev.map((row3)=>row3.id===id?{...row3,title,detail:row3.detail?{...row3.detail,title}:row3.detail}:row3)),setLiveRows((prev)=>prev.map((row3)=>row3.id===id||row3.live?.session_key===id?{...row3,title,live:row3.live?{...row3.live,title}:row3.live}:row3))},[]);useGatewayEvent((ev)=>{if(ev.type==="session.title")patchTitle(ev.payload.session_id,ev.payload.title)});let load4=import_react58.useCallback(async()=>{let current=++gen.current;setPending(!0);let rpc=gw.request("session.list",{limit:LIMIT}).then((r2)=>({ok:!0,v:r2})).catch((e)=>({ok:!1,e})),active2=gw.request("session.active_list",{current_session_id:props.currentId}).then((r2)=>({ok:!0,v:r2})).catch((e)=>({ok:!1,e})),disk=await Promise.resolve(io2.list(LIMIT)).catch(()=>[]);if(gen.current!==current)return;let local=new Map(disk.map((r2)=>[r2.id,r2])),diskRows=disk.filter(keep).map(toRow2);if(setRows(diskRows),cached2)last.rows=diskRows;let[a,r]=await Promise.all([active2,rpc]);if(gen.current!==current)return;let live2=a.ok?a.v.sessions??[]:[];if(a.ok)setLiveRows(live2.map((s)=>toLiveRow(s,pick(local,s))));let final=diskRows;if(r.ok&&r.v.sessions?.length){let seen2=new Set(diskRows.map((s)=>s.id)),merged=[...diskRows,...r.v.sessions.filter((s)=>(s.message_count??0)>0&&!seen2.has(s.id)).map((s)=>({...s,detail:local.get(s.id)}))];if(final=merged,setRows(merged),cached2)last.rows=merged;let found=new Map(merged.map((s)=>[s.id,s]));if(live2.length)setLiveRows(live2.map((s)=>toLiveRow(s,pick(local,s),pick(found,s))))}let kidsError="";try{let parents=final.filter((row3)=>(row3.detail?.subagent_count??0)>0),children2=[];for(let i=0;i<parents.length;i+=8)if(children2.push(...await Promise.all(parents.slice(i,i+8).map((row3)=>io2.subagents(row3.id)))),gen.current!==current)return;if(gen.current!==current)return;let next=new Map(parents.map((row3,i)=>[row3.id,children2[i].map(toRow2)]));if(setKids(next),cached2)last.kids=next}catch(err){kidsError=err instanceof Error?err.message:String(err)}if(gen.current!==current)return;setPending(!1);let listError=!r.ok?local.size?`gateway session.list failed (${r.e.message}) \u2014 listing state.db directly; rows may not resume`:r.e.message:"";setWarn([listError,kidsError].filter(Boolean).join(" \xB7 "))},[gw,props.currentId,io2,cached2]);import_react58.useEffect(()=>{load4()},[load4]),import_react58.useEffect(()=>()=>{gen.current++},[]),import_react58.useEffect(()=>{let on=active.length>0,fresh=on&&!seen.current;if(!listed.length){seen.current=on;return}if(!anchor||!visible2.some((v2)=>v2.row.id===anchor.id&&v2.indent===anchor.indent)){setAnchor({id:listed[0].id,indent:!1}),seen.current=on;return}if(fresh&&active[0]&&hist[0]?.id===anchor.id&&!anchor.indent)setAnchor({id:active[0].id,indent:!1});seen.current=on},[listed,active,hist,anchor]),import_react58.useEffect(()=>{let current=++searchGen.current;if(setSearchErr(""),!searching||!query.trim()){setResults([]);return}return setResults([]),setSearchSel(0),debounce.current=setTimeout(()=>{Promise.resolve(io2.search(query,30)).then((r)=>{if(searchGen.current!==current)return;setResults(r),setSearchSel(0),setSearchErr("")}).catch((err)=>{if(searchGen.current===current)setSearchErr(err instanceof Error?err.message:String(err))})},150),()=>{if(debounce.current)clearTimeout(debounce.current)}},[query,searching,io2]);let rowHover=import_react58.useCallback((i)=>{live.current.searching?setSearchSel(i):setSel(i)},[setSel]),rowActivate=import_react58.useCallback((i)=>{let l=live.current;l.searching?setSearchSel(i):setSel(i);let hit=l.searching?l.results[i]:l.visible[i]?.row,id=l.searching?hit?.session_id:hit?.id;if(!id)return;if(!l.searching&&hit?.live){if(l.onActivateLive)return l.onActivateLive(id);return l.onSwitch?.(id)}if(!l.onSwitch)return;if(id===l.currentId)return l.onSwitch(id);let title=hit?.title||"Untitled",n=l.searching?void 0:hit.message_count;openConfirm(dialog,{title:"Load session?",body:`${trunc5(title,60)}${n!=null?` \xB7 ${n} msg${n===1?"":"s"}`:""}
|
|
4090
4090
|
|
|
4091
4091
|
Current chat will be replaced.`,yes:"load"}).then((ok)=>{if(ok)l.onSwitch?.(id)})},[dialog]),rowDelete=import_react58.useCallback((i)=>{let v2=live.current.visible[i];if(v2&&!v2.indent&&!v2.row.live&&v2.row.id!==live.current.currentId)confirmDeleteRef.current(v2.row)},[]),lineageSwitch=import_react58.useCallback((sid2)=>{let l=live.current;if(!l.onSwitch)return;if(sid2===l.currentId)return l.onSwitch(sid2);openConfirm(dialog,{title:"Load session?",body:`Switch to ${trunc5(sid2,24)}?
|
|
4092
4092
|
|
|
@@ -4144,8 +4144,8 @@ high contrast, light subject on dark, black background`,BINDS=[{name:"return",ac
|
|
|
4144
4144
|
`),yes:"install",no:"cancel"}))return;toast.show({variant:"info",message:`Installing from ${src4}\u2026`}),await exports_eikon.installPackage(src4).then((out)=>{toast.show({variant:"success",message:`Installed '${out.name}' (${out.n} files)`}),switchTo(out.name)}).catch((e)=>toast.error(e instanceof Error?e:Error(String(e))))},[dialog,switchTo,toast]),doOpen=import_react116.useCallback(()=>{let cur=sRef.current,opts=[...eikonOptions(),{title:"+ New\u2026",value:"__new",category:""},{title:"+ Install\u2026",value:"__install",category:""}];dialog.replace($jsx(DialogSelect,{title:"Open eikon",current:cur?.name,options:opts,onSelect:(o)=>{if(dialog.clear(),o.value==="__new")return void doNew();if(o.value==="__install")return void doInstall();switchTo(o.value)}}),()=>{})},[dialog,eikonOptions,switchTo,doNew,doInstall]),doSubmit=import_react116.useCallback(async()=>{let cur=sRef.current;if(!cur)return;let path4=submitPath(cur.name);if(publishedInfo(path4)){toast.show({variant:"warning",title:"Published eikon",message:"Create a local draft before submitting",duration:6000});return}if(cur.dirty||!existsSync25(path4)){let pick2=await openSaveDiscard(dialog,{title:"Save before submit?",body:`'${cur.name}' has unsaved changes. Save to submit the current preview, discard to submit the last saved artifact, or keep editing.`});if(pick2==="save"){if(get2("eikon")===cur.name){if(!await openConfirm(dialog,{title:`Save active '${cur.name}' before submit?`,danger:!0,body:"Saving changes the active avatar's backing artifact. Submit itself will not change active selection.",yes:"save",no:"cancel"}))return}if(!await doSave())return}else if(pick2==="discard")open3(cur.name);else return}if(!existsSync25(path4)){toast.show({variant:"warning",message:"Save this eikon before submitting"});return}await openEikonSubmit(dialog,{name:cur.name,path:path4,submit:submit2})},[dialog,doSave,open3,toast]),doAction=async(id)=>{if(!s)return;if(id==="knobsfor")return mutate((p)=>p.per[p.state]?exports_eikon_knobs.unfork(p):exports_eikon_knobs.fork(p));if(id==="submit"){doSubmit();return}if(id==="revert"){discard();return}if(id==="reset"){if(await openConfirm(dialog,{title:"Reset settings?",body:"Restore rasterizer defaults and drop all per-state overrides.",danger:!0}))mutate((p)=>exports_eikon_knobs.reset(p,r));return}if(id==="fetch"){if(!status2?.downloadable||fetching)return;await download()}},doStripMenu=()=>{if(!s)return;dialog.replace($jsx(DialogSelect,{title:`State: ${s.state}`,filterable:!1,options:[{title:"Source\u2026",value:"source"},{title:s.per[s.state]?"Clear override (back to base)":"Tune this state only",value:"fork"}],onSelect:(o)=>{if(o.value==="source"){doSource();return}dialog.clear(),mutate(s.per[s.state]?exports_eikon_knobs.unfork:exports_eikon_knobs.fork)}}),()=>{})},setTone=(t2)=>mutate((p)=>({...p,tone:{...p.tone,...t2},dirty:!0})),stepRow=(row3,d2)=>{if(row3.kind==="tone"){if(row3.id==="contrast"){let def2=row3.knob,cur=sRef.current?.tone.contrast??1;return setTone({contrast:+Math.max(def2.min,Math.min(def2.max,cur+d2*def2.step)).toFixed(2)})}if(row3.id==="invert")return setTone({invert:!sRef.current?.tone.invert});if(row3.id==="flip"){let cur=sRef.current?.tone.flip??"none",i=FLIPS.indexOf(cur);return setTone({flip:FLIPS[(i+d2+FLIPS.length)%FLIPS.length]})}return}if(row3.kind!=="knob"||!row3.knob)return;mutate((p)=>exports_eikon_knobs.edit(p,(k2)=>exports_eikon_knobs.step(k2,row3.id,row3.knob,d2)))},act=(row3,via)=>{if(!row3||!sRef.current)return;if(row3.kind==="select"){if(row3.id==="open")return doOpen();return doSelectRasterizer()}if(row3.kind==="prompt")return void doPrompt(row3.id);if(row3.kind==="action"){if(via==="space"&&row3.id==="reset")return;return void doAction(row3.id)}if(row3.kind==="tone"||row3.kind==="knob"){if(row3.knob.kind==="slider")return;return stepRow(row3,1)}},activate=()=>act(navRows[selRef.current],"enter"),toggle=()=>act(navRows[selRef.current],"space"),adjust=(d2)=>{let row3=navRows[selRef.current];if(!row3)return;if(row3.id==="knobsfor")return void doAction("knobsfor");stepRow(row3,d2)},discard=async()=>{let cur=sRef.current;if(!cur?.dirty)return!1;let pick2=await openSaveDiscard(dialog,{title:"Unsaved edits",body:`'${cur.name}' has unsaved changes. Save them, discard them, or keep editing?`});if(pick2==="save"){if(await doSave())open3(cur.name);return!0}if(pick2==="discard")open3(cur.name);return!0},refresh=import_react116.useCallback(()=>{let cur=sRef.current;if(!cur)return;if(stampRef.current=exports_eikon.sourceStamp(cur.name),cur.dirty){toast.show({variant:"info",message:"Reload skipped: unsaved edits",duration:3000});return}open3(cur.name),toast.show({variant:"info",message:"Reloaded",duration:1000})},[open3,toast]);useKeyboard((key3)=>{if(!props.focused||dialog.open())return;if(key3.eventType==="release")return;if(key3.name==="u"&&key3.ctrl&&sRef.current)return void doSaveUse();if(key3.name==="u"&&sRef.current)return void doSubmit();if(keys.match("eikon.save",key3)){if(!saving)doSave();return}if(key3.name==="escape")return void discard();if(key3.name==="tab"){let i=PANES.indexOf(pane),next2=PANES[(i+(key3.shift?PANES.length-1:1))%PANES.length];setPane(next2),outer.current?.scrollChildIntoView(`studio-${next2}`);return}if(!s){if(key3.name==="return")return void doNew();return}if(pane==="knobs"){if(handleListKey(keys,key3,{count:navRows.length,setSel:setSelBy,scrollTo:kScroll,page:Math.max(1,(ksb.current?.viewport.height??10)-1),onActivate:activate,onToggle:toggle,onNew:()=>void doNew(),onRefresh:refresh}))return;if(key3.name==="left")return adjust(-1);if(key3.name==="right")return adjust(1);return}if(pane==="preview"){if(keys.match("list.toggle",key3))return setPlay((p)=>!p);if(!spatialOk||!live)return;if(handleListKey(keys,key3,{count:SP_ROWS.length,setSel:setSpSel}))return;let k2=["ox","oy","zoom","fps"][spRef.current],fine=key3.shift&&k2!=="fps",d2=(name)=>name==="left"?-1:1;if(key3.name==="left"||key3.name==="right"){if(fine&&(k2==="ox"||k2==="oy"||k2==="zoom")){let cur=sRef.current.spatial[k2];return setSpatial({[k2]:Math.max(k2==="zoom"?0.1:0,Math.min(1,+(cur+d2(key3.name)*0.01).toFixed(3)))})}return stepBar(k2,d2(key3.name))}return}if(key3.name==="left")return mutate((p)=>exports_eikon_knobs.cycle(p,-1));if(key3.name==="right")return mutate((p)=>exports_eikon_knobs.cycle(p,1));if(key3.name==="return")return doStripMenu()});let onScroll=(e)=>{if(e.stopPropagation(),!spatialOk||!live||!e.scroll)return;let d2=e.scroll.direction;if(d2!=="up"&&d2!=="down")return;let sign=d2==="up"?-1:1;if(e.modifiers.ctrl)return mutate((p)=>({...p,spatial:exports_eikon_knobs.zoom(p.spatial,sign),dirty:!0}));if(e.modifiers.shift)return mutate((p)=>({...p,spatial:exports_eikon_knobs.pan(p.spatial,sign,0),dirty:!0}));mutate((p)=>({...p,spatial:exports_eikon_knobs.pan(p.spatial,0,sign),dirty:!0}))},previewErr=err??(!s||src3||baked2?null:url2?"no source \u2014 Enter on 'download source'":"no source \u2014 Enter on 'source'"),hint=!s?[["Enter","new eikon"],["Shift+\u2192","library"]]:pane==="knobs"?[["\u2191\u2193","row"],["\u2190\u2192","adjust"],[keys.print("list.activate"),"edit"],[keys.print("list.refresh"),"reload"],[keys.print("list.new"),"new"],["u","submit"],[keys.print("eikon.save"),"save"],["Ctrl+U","save & use"],["Tab","pane"]]:pane==="preview"?[["\u2191\u2193","row"],["\u2190\u2192","adjust"],[keys.print("list.toggle"),"play/pause"],["wheel","pan"],["Ctrl+wheel","zoom"],[keys.print("eikon.save"),"save"],["Ctrl+U","save & use"],["Tab","pane"]]:[["\u2190\u2192","state"],[keys.print("list.activate"),"actions"],[keys.print("eikon.save"),"save"],["Ctrl+U","save & use"],["Tab","pane"]],BAR_H=spatialOk&&live?Math.max(Math.ceil(MINI_W/2),3)+1:0,PREVIEW_W=Math.max(W2+2,38+MINI_W)+6,PREVIEW_H=H+(spatialOk&&live?1:0)+BAR_H+6+(previewErr?1:0),preview2=$jsx(PreviewPane,{s,frames,play,setPlay,focused:Boolean(props.focused),busy:busy2,live,baked:baked2,spatialOk,error:previewErr,pane,sel:spSel,onPane:setPane,onSel:setSpSel,onSet:setBar,onWheel:stepBar,onScroll}),help=helpOf(navRows[sel]),panel=$jsx(TabShell,{title:s?`Settings \u2014 ${s.name}`:"Settings",focus:pane==="knobs",grow:1,children:!s?$jsx("box",{flexGrow:1,alignItems:"center",justifyContent:"center",children:$jsx("text",{fg:theme.textMuted,children:"No eikon open. Enter to create or pick one."})}):$jsxs($Fragment,{children:[$jsx("scrollbox",{id:"studio-knob-scroll",ref:ksb,scrollY:!0,flexGrow:1,contentOptions:COL,onMouseScroll:(e)=>e.stopPropagation(),children:rows3.map((row3,i)=>{let ni=navRows.findIndex((x2)=>x2.i===i),on=pane==="knobs"&&ni===sel,dim2=row3.kind==="knob"&&!src3;return $jsx(KnobRow,{id:`knob-${row3.kind}-${row3.id}`,row:row3,s,r,status:status2,on,dim:dim2,peek:peek5,busy:row3.id==="fetch"&&fetching,onHover:()=>{if(ni>=0)setPane("knobs"),setSelBy(ni)},onClick:()=>{if(ni>=0)setSelBy(ni),setPane("knobs"),act(row3,"click")},onWheel:(d2)=>stepRow(row3,d2),onSlide:row3.knob?.kind!=="slider"?void 0:row3.kind==="tone"?(v2)=>setTone({contrast:+v2.toFixed(2)}):(v2)=>mutate((p)=>exports_eikon_knobs.edit(p,(k2)=>exports_eikon_knobs.setSlider(k2,row3.id,row3.knob,v2)))},`${row3.kind}:${r.name}:${row3.id}`)})}),$jsx("box",{flexShrink:0,height:HELP_H,marginTop:1,overflow:"hidden",children:$jsx("text",{fg:theme.textMuted,wrapMode:"word",children:help})})]})}),strip=s?$jsx("box",{id:"studio-strip",flexShrink:0,height:18,children:$jsx(TabShell,{title:"States",focus:pane==="strip",children:$jsx(Strip,{s,frames:thumbs,stats,pending:pending3,focused:pane==="strip",onPick:(st)=>{setPane("strip"),mutate((p)=>exports_eikon_knobs.setState(p,st))},onEmpty:(st)=>doSource(st)})})}):null,top=wide?$jsxs("box",{flexDirection:"row",flexShrink:0,height:PREVIEW_H,children:[$jsx("box",{id:"studio-preview",flexShrink:0,width:PREVIEW_W,children:preview2}),$jsx("box",{id:"studio-knobs",flexGrow:1,flexBasis:0,minWidth:0,children:panel})]}):$jsxs($Fragment,{children:[$jsx("box",{id:"studio-preview",flexShrink:0,height:PREVIEW_H,children:preview2}),$jsx("box",{id:"studio-knobs",flexShrink:0,height:Math.max(rows3.length,1)+HELP_H+1+6,children:panel})]});return $jsxs("box",{flexDirection:"column",flexGrow:1,minWidth:0,minHeight:0,children:[$jsxs("scrollbox",{ref:outer,scrollY:!0,flexGrow:1,contentOptions:COL,children:[top,strip]}),$jsx(HintBar,{pairs:hint,suffix:saving?"\u25CF saving\u2026":s?.dirty?"\u25CF unsaved":void 0})]})});var import_react118=__toESM(require_react_production(),1);import{existsSync as existsSync26,readFileSync as readFileSync17}from"fs";import{basename as basename13,dirname as dirname12,join as join20}from"path";var EIKON_CARD=50,titleWidth=(title,rows3)=>Math.max(title.length,...rows3.map((r)=>r.name.length+4))+7,cardWidth=(lines3)=>Math.max(EIKON_CARD,...lines3.map((line4)=>line4.length+2)),EikonTitleList=(props)=>{let theme=useTheme().theme;return $jsx("box",{width:props.width,flexShrink:0,minHeight:0,children:$jsx(TabShell,{title:props.title,focus:props.focus,grow:1,children:$jsx("box",{flexDirection:"column",flexGrow:1,minHeight:0,children:$jsx("scrollbox",{ref:props.follow.ref,scrollY:!0,flexGrow:1,children:props.rows.length===0?$jsx("text",{fg:theme.textMuted,children:"No eikons found."}):props.rows.map((r,i)=>{let on=i===props.sel;return $jsxs("box",{id:props.follow.id(i),flexDirection:"row",height:1,paddingRight:3,backgroundColor:on?theme.backgroundElement:void 0,onMouseMove:()=>props.onSel(i),onMouseDown:()=>{props.onSel(i),props.onUse(i)},children:[$jsx("box",{width:2,children:$jsx("text",{fg:on?theme.primary:theme.textMuted,children:on?"\u25B8 ":" "})}),$jsx("box",{flexGrow:1,minWidth:0,height:1,overflow:"hidden",children:$jsxs("text",{fg:r.active?theme.accent:theme.text,children:[r.active?"\u25CF ":" ",$jsx("strong",{children:r.name})]})})]},r.key)})})})})})},EikonCardGrid=(props)=>{let theme=useTheme().theme;if(props.rows.length===0)return $jsx("box",{padding:1,children:props.empty??$jsx("text",{fg:theme.textMuted,children:"No eikons found."})});return $jsx("scrollbox",{ref:props.follow.ref,scrollY:!0,flexGrow:1,children:$jsx("box",{flexDirection:"row",flexWrap:"wrap",width:"100%",flexShrink:0,children:props.rows.map((r,i)=>{let on=i===props.sel;return $jsxs("box",{id:props.follow.id(i),flexDirection:"column",height:r.lines.length+2,width:cardWidth(r.lines),flexShrink:0,paddingX:1,backgroundColor:on?theme.backgroundElement:void 0,onMouseMove:()=>props.onSel(i),onMouseDown:()=>{props.onSel(i),props.onUse(i)},children:[$jsx("box",{height:r.lines.length,overflow:"hidden",flexDirection:"column",children:r.lines.map((line4,j2)=>$jsx("box",{height:1,overflow:"hidden",children:$jsx("text",{fg:theme.textMuted,wrapMode:"none",children:line4||" "})},j2))}),$jsx("box",{height:1,overflow:"hidden",children:$jsxs("text",{fg:r.active?theme.accent:theme.text,wrapMode:"none",children:[on?"\u25B8 ":" ",r.active?"\u25CF ":" ",$jsx("strong",{children:r.name})]})}),$jsx("box",{height:1,overflow:"hidden",children:$jsxs("text",{fg:theme.textMuted,wrapMode:"none",children:["by ",r.author??"unknown"," \xB7 ",r.status]})})]},r.key)})})})};var PREVIEW2=54,EikonGallery=import_react118.memo((props)=>{let theme=useTheme().theme,dialog=useDialog(),toast=useToast(),keys=useKeys(),rev3=import_react118.useSyncExternalStore(exports_eikon.onRevision,exports_eikon.revision),dims=useTerminalDimensions(),rows3=import_react118.useMemo(()=>{let user=hermesPath("eikons"),own=exports_eikon.list(),map=new Map(own.map((x2)=>[x2.name.toLowerCase(),x2])),meta2=own.map((x2)=>({inst:x2,ids:ids2(x2.manifest,x2.name,x2.sourceUrl)}));return[...listEikons([BUNDLED_EIKON_DIR,user]).map((e)=>{let slug3=e.path.startsWith(BUNDLED_EIKON_DIR)?e.meta.name.toLowerCase():dirname12(e.path)===user?basename13(e.path,".eikon"):basename13(dirname12(e.path)),man=manifest4(dirname12(e.path)),keys2=ids2(man,slug3),mine=meta2.find((x2)=>x2.ids.some((k2)=>keys2.includes(k2)))?.inst??map.get(slug3);return{path:e.path,name:e.meta.name,slug:slug3,author:e.meta.author,bundled:e.path.startsWith(BUNDLED_EIKON_DIR),w:e.meta.width,h:e.meta.height,url:mine?.sourceUrl,hasSource:mine?.hasSource??!!exports_eikon.findSource(slug3),lifecycle:mine?.lifecycle,...man?{manifest:man}:{}}}).filter((r)=>!(r.bundled&&r.lifecycle)).reduce((map2,row3)=>{let prev=map2.get(row3.slug);if(!prev||dirname12(prev.path)===user&&dirname12(row3.path)!==user)map2.set(row3.slug,row3);return map2},new Map).values()]},[rev3]),active=usePref("eikon"),path4=import_react118.useMemo(()=>active?exports_eikon.baked(active):void 0,[active,rev3]),current2=(row3)=>path4===row3.path,[sel,setSel]=import_react118.useState(0),[pane,setPane]=import_react118.useState("list"),[act,setAct]=import_react118.useState(0),galleryFollow=useFollow("gal",(i)=>rows3[i]?.slug??i),gridFollow=useFollow("lib-grid",(i)=>rows3[i]?.slug??i);import_react118.useEffect(()=>{if(sel>=rows3.length)setSel(Math.max(0,rows3.length-1))},[rows3.length,sel]);let cur=rows3[sel],parsed=import_react118.useMemo(()=>{if(!cur)return;try{return parseEikonFile(cur.path)}catch{return}},[cur]),activate=(row3=cur)=>{if(!row3)return;if(row3.bundled)set("eikon",row3.slug);else exports_eikon.useInstalled(row3.slug);toast.show({variant:"success",message:`Avatar \u2192 ${row3.name}`})},doNew=import_react118.useCallback(async()=>{let res=await openNewEikon(dialog,{});if(!res)return;if(res.from==="blank")return exports_eikon.ensure(res.name),props.onEdit?.(res.name);if(res.from==="file"){exports_eikon.ensure(res.name);try{exports_eikon.adopt(res.name,res.file,"base")}catch(e){return toast.error(e instanceof Error?e:Error(String(e)))}return props.onEdit?.(res.name)}toast.show({variant:"info",message:`Installing '${res.name}' from ${res.src}\u2026`}),await exports_eikon.installPackage(res.src,{name:res.name}).then((out)=>{toast.show({variant:"success",message:`Installed '${out.name}' (${out.n} files)`})}).catch((e)=>toast.error(e instanceof Error?e:Error(String(e))))},[dialog,toast,props]),updateLocal=import_react118.useCallback(async()=>{if(!cur||cur.bundled)return;try{let out=await exports_eikon.update(cur.slug);if("type"in out){if(!await openConfirm(dialog,{title:`Update active '${cur.name}'?`,danger:!0,body:`${out.message} The active avatar's backing package will change even though the selected name stays '${cur.slug}'.`,yes:"update active",no:"cancel"}))return;let done=await exports_eikon.update(cur.slug,{confirmActive:!0});if("type"in done)return toast.show({variant:"warning",message:done.message})}toast.show({variant:"success",message:`Updated ${cur.name}`})}catch(e){toast.error(e instanceof Error?e:Error(String(e)))}},[cur,dialog,toast]),submitLocal=import_react118.useCallback(async()=>{if(!cur||cur.bundled)return;let path6=submitPath(cur.slug);if(publishedInfo(path6)){toast.show({variant:"warning",title:"Published eikon",message:"Create a local draft before submitting",duration:6000});return}await openEikonSubmit(dialog,{name:cur.name,path:path6,submit:props.submit??submit2})},[cur,dialog,props.submit,toast]),del=async()=>{if(!cur||cur.bundled)return;let here=current2(cur),base3=dirname12(cur.path)===hermesPath("eikons")?`Removes legacy flat file ${basename13(cur.path)}.`:`Removes ${dirname12(cur.path)} and all its sources.`,body=here?`${base3} This is the active avatar; deleting it will clear the active avatar selection.`:base3;if(!await openConfirm(dialog,{title:`Delete '${cur.name}'?`,danger:!0,body}))return;let removed=exports_eikon.remove(cur.slug,{confirmActive:here});if(removed)return toast.show({variant:"warning",message:removed.message});toast.show({variant:"info",message:`Deleted ${cur.name}`})},actions=import_react118.useMemo(()=>{if(!cur)return[];return[{key:"Enter",label:current2(cur)?"Use as active avatar (active)":"Use as active avatar",run:()=>activate()},...props.onEdit?[{key:"e",label:"Edit in Studio",run:()=>props.onEdit?.(cur.slug)}]:[],...!cur.bundled?[{key:"u",label:"Update local package",run:()=>void updateLocal()},{key:"s",label:"Share to catalog",run:()=>void submitLocal()},{key:"d",label:"Delete local eikon",run:()=>void del(),danger:!0}]:[]]},[cur,path4,props.onEdit,updateLocal,submitLocal]);import_react118.useEffect(()=>{if(act>=actions.length)setAct(Math.max(0,actions.length-1))},[act,actions.length]);let cards=import_react118.useMemo(()=>rows3.map((r)=>{let p=(()=>{try{return parseEikonFile(r.path)}catch{return}})(),lines3=p?.resolve("state.idle")?.frames[0]??p?.states.get("idle")?.frames[0]??["(no preview)"];return{key:r.path,name:r.name,active:current2(r),author:r.author,status:current2(r)?"active":r.bundled?"bundled/system":"installed",lines:lines3}}),[rows3,path4]);useKeyboard((key3)=>{if(!props.focused||dialog.open())return;let plain=!key3.shift&&!key3.ctrl&&!key3.meta;if(key3.name==="tab")return setPane((p)=>p==="list"?"actions":"list");if(pane==="actions"){if(key3.name==="escape"||plain&&key3.name==="left"){setPane("list");return}if(plain&&key3.name==="up"){setAct((i)=>Math.max(0,i-1));return}if(plain&&key3.name==="down"){setAct((i)=>Math.min(actions.length-1,i+1));return}if(keys.match("list.activate",key3)||keys.match("list.toggle",key3)){actions[act]?.run();return}return}if(handleListKey(keys,key3,{count:rows3.length,setSel,page:galleryFollow.opts.page,scrollTo:(n)=>galleryFollow.ref.current?.scrollChildIntoView(galleryFollow.id(n)),onActivate:()=>activate(),onDelete:()=>void del(),onNew:doNew,onRefresh:()=>{exports_eikon.notifyRevision(),toast.show({variant:"info",message:"Reloaded",duration:1000})}}))return;if(key3.name==="u"&&cur&&!cur.bundled)return void updateLocal();if(key3.name==="s"&&cur&&!cur.bundled)return void submitLocal();if(key3.name==="e"&&cur&&props.onEdit)props.onEdit(cur.slug)});let listW=Math.max(13,...rows3.map((r)=>r.name.length+4))+7,showGrid=dims.width-listW-PREVIEW2>=EIKON_CARD;return $jsxs("box",{flexDirection:"column",flexGrow:1,minWidth:0,children:[$jsxs("box",{flexDirection:"row",flexGrow:1,minHeight:0,children:[$jsx(EikonTitleList,{title:`Library (${rows3.length})`,rows:rows3.map((r)=>({key:r.path,name:r.name,active:current2(r)})),sel,focus:props.focused&&pane==="list",follow:galleryFollow,width:listW,onSel:setSel,onUse:(i)=>activate(rows3[i])}),showGrid?$jsx(TabShell,{title:"Grid",grow:1,children:$jsx(EikonCardGrid,{rows:cards,sel,follow:gridFollow,onSel:setSel,onUse:(i)=>activate(rows3[i])})}):null,$jsx("box",{width:PREVIEW2,flexShrink:0,minHeight:0,children:$jsx(TabShell,{title:cur?`Preview \u2014 ${cur.name}`:"Preview",grow:1,children:$jsxs("box",{flexDirection:"column",flexGrow:1,padding:1,alignItems:"center",children:[$jsx("box",{alignItems:"center",justifyContent:"center",width:48,height:24,flexShrink:0,overflow:"hidden",children:parsed?$jsx(AnimatedAvatar,{state:"idle",eikon:parsed},cur.path):$jsx("text",{fg:theme.textMuted,children:"No preview."})}),cur?$jsxs("box",{flexDirection:"column",width:48,children:[$jsx("text",{fg:theme.text,children:$jsx("strong",{children:cur.name})}),$jsxs("text",{fg:theme.textMuted,children:["Author: ",cur.author??"\u2014"]}),$jsxs("text",{fg:theme.textMuted,children:["Status: ",current2(cur)?"active":cur.bundled?"bundled/system":"installed"]}),$jsxs("text",{fg:theme.textMuted,wrapMode:"word",children:["Source: ",gallerySource(cur)]}),$jsxs("text",{fg:theme.textMuted,wrapMode:"word",children:["Trust: ",galleryTrust(cur)]}),$jsxs("text",{fg:theme.textMuted,wrapMode:"word",children:["Package: ",packageId(cur)]}),$jsx("text",{fg:theme.textMuted,children:sourceBadge(cur)}),$jsx("box",{height:1}),$jsx("text",{fg:theme.primary,children:$jsx("strong",{children:"Actions"})}),actions.map((a,i)=>$jsx("box",{height:1,overflow:"hidden",paddingRight:1,backgroundColor:pane==="actions"&&i===act?theme.backgroundElement:void 0,onMouseDown:()=>{setPane("actions"),setAct(i),a.run()},children:$jsxs("text",{fg:a.danger?theme.error:theme.text,wrapMode:"none",children:[pane==="actions"&&i===act?"\u25B8 ":" ",a.label," [",a.key,"]"]})},a.label))]}):null]})})})]}),$jsx(HintBar,{pairs:[["Tab",pane==="list"?"actions":"library"],[keys.print("list.activate"),pane==="actions"?"run action":"use"],["\u2191\u2193",pane==="actions"?"action":"select"],[keys.print("list.new"),"new / install"],[keys.print("list.refresh"),"reload"],...cur&&props.onEdit?[["e","edit in Studio"]]:[]]})]})}),galleryTrust=(row3)=>{let t2=row3.lifecycle?.trust;if(t2==="verified")return"Verified";if(t2==="mismatch")return"Mismatch";if(t2==="unverified")return"Unverified";return row3.bundled?"Bundled":"Legacy local"},gallerySource=(row3)=>{let src3=row3.lifecycle?.source;if(src3)return src3.identity??src3.repo??src3.origin??src3.kind;if(row3.bundled)return"bundled/system";return"local"},packageId=(row3)=>typeof row3.manifest?.id==="string"?row3.manifest.id:row3.bundled?"bundled/system":"\u2014",manifest4=(dir2)=>{let file2=join20(dir2,"manifest.json");if(!existsSync26(file2))return;try{let raw2=JSON.parse(readFileSync17(file2,"utf8"));return raw2&&typeof raw2==="object"&&!Array.isArray(raw2)?raw2:void 0}catch{return}},sourceBadge=(row3)=>row3.hasSource?"\u25CF source":row3.url||row3.bundled?"\u25CB source available":"\u2014 no source",key3=(value2)=>{try{let url2=new URL(value2);if(url2.protocol==="http:"||url2.protocol==="https:"||url2.protocol==="file:")return url2.href.replace(/\/?$/,"/").toLowerCase()}catch{}return value2.toLowerCase()},ids2=(man,name,url2)=>{let origin2=man?.origin&&typeof man.origin==="object"&&!Array.isArray(man.origin)?man.origin:void 0;return[...new Set([typeof man?.id==="string"?man.id:void 0,typeof origin2?.sourceKey==="string"?origin2.sourceKey:void 0,typeof origin2?.identityKey==="string"?origin2.identityKey:void 0,typeof origin2?.packageUrl==="string"?origin2.packageUrl:void 0,typeof origin2?.source==="string"?origin2.source:void 0,url2,name].filter((x2)=>!!x2).map(key3))]};var import_react121=__toESM(require_react_production(),1);var import_react120=__toESM(require_react_production(),1);var fmt3=(n)=>n==null?"size unknown":n<1024?`${n} B`:n<1048576?`${(n/1024).toFixed(1)} KiB`:`${(n/1024/1024).toFixed(1)} MiB`,choices=(row3,sizes)=>{if(row3.installState==="incompatible"||row3.installState==="mismatch")return[{label:"Delist from Registry",value:"delist"}];if(!row3.installed)return[{label:"Eikon only",hint:fmt3(sizes?.eikon),value:"install"},{label:"Eikon + Source",hint:`${fmt3((sizes?.eikon??0)+(sizes?.source??0))} \xB7 Source files needed to edit Eikon in Studio`,value:"source"},{label:"Delist from Registry",value:"delist"}];return[...!row3.active?[{label:"Use",hint:"set as active avatar",value:"use"}]:[],...row3.sourceDownloadable?[{label:"Download Source",hint:"needed to edit in Studio",value:"download"}]:[],...row3.removable?[{label:"Uninstall",value:"delete"}]:[],{label:"Delist from Registry",value:"delist"}]},Action=(props)=>{let theme=useTheme().theme,opts=choices(props.row,props.sizes),[sel,setSel]=import_react120.useState(0),desc=opts.some((o)=>!!o.hint);return $jsxs("box",{flexDirection:"column",width:64,children:[$jsx("text",{fg:theme.text,children:$jsx("strong",{children:props.row.entry.name})}),$jsx("box",{height:1}),$jsx("text",{fg:theme.textMuted,wrapMode:"word",children:props.row.entry.description??"No description."}),$jsx("box",{height:1}),opts.length>0?$jsx("select",{focused:!0,width:62,height:Math.min(12,Math.max(1,opts.length*(desc?2:1))),options:opts.map((o)=>({name:o.label,description:o.hint??"",value:o.value})),selectedIndex:Math.min(sel,opts.length-1),showDescription:desc,showScrollIndicator:opts.length>6,backgroundColor:theme.backgroundPanel,focusedBackgroundColor:theme.backgroundPanel,textColor:theme.textMuted,focusedTextColor:theme.text,selectedBackgroundColor:theme.backgroundElement,selectedTextColor:theme.text,descriptionColor:theme.textMuted,selectedDescriptionColor:theme.textMuted,keyBindings:[{name:"home",action:"move-up-fast"},{name:"end",action:"move-down-fast"},{name:"space",action:"select-current"},{name:" ",action:"select-current"},{name:"return",action:"select-current"}],onChange:(i)=>setSel(i),onSelect:(i)=>{let opt=opts[i];if(opt)props.onPick(opt.value)}}):$jsx("text",{fg:theme.textMuted,children:props.row.reason??"No available actions."}),$jsx("box",{height:1}),$jsx("text",{fg:theme.textMuted,children:"[\u2191\u2193] move [Space/Enter] confirm [Esc] cancel"})]})};function openEikonMarketplaceAction(dialog,opts){return new Promise((resolve4)=>{let done=(v2)=>{resolve4(v2),dialog.clear()};dialog.replace($jsx(Action,{...opts,onPick:done}),()=>resolve4(null))})}init_perf();import{existsSync as existsSync27,readFileSync as readFileSync18,readdirSync as readdirSync11,writeFileSync as writeFileSync8}from"fs";import{createHash as createHash7}from"crypto";import{basename as basename14,dirname as dirname13,extname as extname4,join as join21}from"path";import{Buffer as Buffer6}from"buffer";var REPO2=process.env.EIKON_REPO??"liftaris/eikon",HOST="eikon.liftaris.dev",enc2=new TextEncoder;async function gh2(args,input){let p=Bun.spawn(["gh",...args],{stdin:input?enc2.encode(input):void 0,stdout:"pipe",stderr:"pipe"}),[out,err,code2]=await Promise.all([new Response(p.stdout).text(),new Response(p.stderr).text(),p.exited]);if(code2!==0)throw Error(err.trim()||out.trim()||`gh ${args[0]} failed`);return out.trim()}function json(text4){return JSON.parse(text4)}function clean4(value2){return value2.replace(/[^A-Za-z0-9_.-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function pkg(entry3){let parts2=entry3.id.includes("/")?entry3.id.split("/"):["liftaris",entry3.name];return{ns:parts2[0]||"liftaris",name:parts2[1]||entry3.name}}function dirs(entry3){let p=pkg(entry3);return[`eikons/${entry3.name}/`,`packages/${p.ns}/${p.name}/`]}function touches(entry3,path4){return dirs(entry3).some((dir2)=>path4.startsWith(dir2))}function official(entry3){try{return new URL(entry3.packageUrl).hostname===HOST&&[entry3.sourceKey,entry3.identityKey].some((key4)=>key4?.startsWith(`registry:${HOST}:`))}catch{return!1}}async function user(run){return run(["api","user","-q",".login"])}async function prs(entry3,repo2,run){let exact=(xs)=>xs.filter((pr)=>pr.title===`eikons: submit ${entry3.name}`&&pr.headRefName===`submit/${entry3.name}`),at=(pr)=>Number.isFinite(Date.parse(pr.mergedAt??""))?Date.parse(pr.mergedAt??""):0,sort=(xs)=>xs.toSorted((a,b2)=>at(a)-at(b2)||a.number-b2.number),first=exact(json(await run(["pr","list","-R",repo2,"--state","merged","--search",`"eikons: submit ${entry3.name}" in:title`,"--json","number,title,headRefName,url,mergedAt,author","--limit","100"])));if(first.length)return sort(first);return sort(exact(json(await run(["pr","list","-R",repo2,"--state","merged","--json","number,title,headRefName,url,mergedAt,author","--limit","100"]))))}async function files(repo2,pr,run){return(await run(["api","--paginate","-X","GET",`repos/${repo2}/pulls/${pr}/files`,"--jq",".[].filename"])).split(/\r?\n/).filter(Boolean).map((path4)=>({path:path4}))}async function found(entry3,repo2,run){for(let pr of await prs(entry3,repo2,run)){let title=pr.title===`eikons: submit ${entry3.name}`,head=pr.headRefName===`submit/${entry3.name}`;if(!title||!head)continue;if((await files(repo2,pr.number,run)).some((f)=>touches(entry3,f.path??f.filename??"")))return pr}return}async function info2(entry3,opts={}){let run=opts.run??gh2,repo2=opts.repo??REPO2;if(!official(entry3))return{eligible:!1,reason:"Registry delist is only available for official Eikon catalog entries"};let login;try{login=await user(run)}catch(err){return{eligible:!1,reason:err instanceof Error?err.message:String(err)}}let pr=await found(entry3,repo2,run),author=pr?.author?.login;if(!pr||!author)return{eligible:!1,user:login,reason:"No merged GitHub submission found"};if(author!==login)return{eligible:!1,user:login,author,pr:pr.number,url:pr.url,reason:`Submitted by @${author}`};return{eligible:!0,user:login,author,pr:pr.number,url:pr.url}}async function exists(run,repo2,branch2,path4){try{let raw2=await run(["api","-X","GET",`repos/${repo2}/contents/${path4}`,"-f",`ref=${branch2}`]);return json(raw2).sha}catch{return}}async function put2(run,repo2,branch2,path4,text4,msg){let sha2=await exists(run,repo2,branch2,path4);await run(["api","-X","PUT",`repos/${repo2}/contents/${path4}`,"--input","-"],JSON.stringify({message:msg,branch:branch2,content:Buffer6.from(text4).toString("base64"),...sha2?{sha:sha2}:{}}))}async function del(run,repo2,branch2,path4,sha2,msg){await run(["api","-X","DELETE",`repos/${repo2}/contents/${path4}`,"--input","-"],JSON.stringify({message:msg,branch:branch2,sha:sha2}))}async function main(run,repo2){let sha2=await run(["api",`repos/${repo2}/git/ref/heads/main`,"-q",".object.sha"]),tree2=await run(["api",`repos/${repo2}/git/commits/${sha2}`,"-q",".tree.sha"]);return{sha:sha2,tree:tree2}}async function tree2(run,repo2,sha2){return json(await run(["api","-X","GET",`repos/${repo2}/git/trees/${sha2}`,"-f","recursive=1"])).tree??[]}async function index3(run,repo2){let raw2=json(await run(["api","-X","GET",`repos/${repo2}/contents/eikons/index.json`,"-f","ref=main"]));return Buffer6.from((raw2.content??"").replace(/\s/g,""),"base64").toString("utf8")}async function reset3(run,repo2,name,sha2){try{await run(["api","-X","POST",`repos/${repo2}/git/refs`,"-f",`ref=refs/heads/${name}`,"-f",`sha=${sha2}`])}catch{await run(["api","-X","PATCH",`repos/${repo2}/git/refs/heads/${name}`,"--input","-"],JSON.stringify({sha:sha2,force:!0}))}}async function pr(run,repo2,user2,branch2,name,body){try{return await run(["pr","create","-R",repo2,"-H",`${user2}:${branch2}`,"-B","main","-t",`eikons: delist ${name}`,"-b",body])}catch{let raw2=await run(["api","-X","GET",`repos/${repo2}/pulls`,"-f","state=open","-f",`head=${user2}:${branch2}`]),hit2=json(raw2)[0]?.url;if(hit2)return hit2;throw Error("GitHub PR creation failed")}}async function submit3(entry3,opts={}){let run=opts.run??gh2,repo2=opts.repo??REPO2,own=await info2(entry3,{repo:repo2,run});if(!own.eligible||!own.user)throw Error(own.reason??"not authorized to delist this eikon");await run(["repo","fork",repo2,"--clone=false"]).catch(()=>"");let fork2=`${own.user}/${repo2.split("/")[1]}`,branch2=`delist/${clean4(entry3.name)}`,base3=await main(run,repo2);await reset3(run,fork2,branch2,base3.sha);let msg=`eikons: delist ${entry3.name}`,next2=json(await index3(run,repo2)).filter((e)=>e.name!==entry3.name&&e.id!==entry3.id);await put2(run,fork2,branch2,"eikons/index.json",`${JSON.stringify(next2,null,2)}
|
|
4145
4145
|
`,msg);for(let item of await tree2(run,repo2,base3.tree)){if(!item.path||item.type!=="blob"||!item.sha||!touches(entry3,item.path))continue;let sha2=await exists(run,fork2,branch2,item.path)??item.sha;await del(run,fork2,branch2,item.path,sha2,msg)}return{url:await pr(run,repo2,own.user,branch2,entry3.name,`Requests delisting \`${entry3.name}\` from the Eikon registry.`),info:own}}var DEFAULT_TIMEOUT=5000,DEFAULT_CACHE_LIMIT=24,OFFICIAL_CATALOG="https://eikon.liftaris.dev/eikons",dec=new TextDecoder;function hash2(data2){return`sha256:${createHash7("sha256").update(data2).digest("hex")}`}function keyIdentity(s){try{let u3=new URL(s);if(u3.protocol==="http:"||u3.protocol==="https:"||u3.protocol==="file:")return u3.href.replace(/\/?$/,"/")}catch{}return s}function manifestBaseKey(s){try{let u3=new URL(s);if((u3.protocol==="http:"||u3.protocol==="https:"||u3.protocol==="file:")&&u3.pathname.endsWith("/manifest.json"))return new URL(".",u3).href}catch{}return}function registryKey(man,source2){if(man?.kind!=="eikon.package"||typeof man.id!=="string")return;let sourceKey=man.origin?.sourceKey??man.origin?.identityKey;if(sourceKey)return keyIdentity(sourceKey);try{let host=source2?new URL(source2).host:void 0;if(!host)return;return`registry:${host}:${man.id}${typeof man.version==="string"&&man.version?`@${man.version}`:""}`}catch{return}}function entryKeys(entry3){return[...new Set([entry3.identityKey,entry3.sourceKey].filter(Boolean).map(keyIdentity))]}function keysFor(inst){let keys=new Set,man=inst.manifest,origin2=typeof man?.origin?.source==="string"?man.origin.source:void 0,head=exports_eikon.header(inst.file),src3=typeof head?.source_url==="string"?head.source_url:inst.sourceUrl,registry2=registryKey(man,origin2);if(registry2)keys.add(registry2);if(origin2){keys.add(keyIdentity(origin2));let base3=manifestBaseKey(origin2);if(base3)keys.add(keyIdentity(base3))}if(src3){keys.add(keyIdentity(src3));let base3=manifestBaseKey(src3);if(base3)keys.add(keyIdentity(base3))}return[...keys]}function read2(path4){try{let man=JSON.parse(readFileSync18(path4,"utf8"));return obj(man)?man:void 0}catch{return}}function chosen(active,name){return active===name||active==="default"&&name==="nous"}function media(dir2){return existsSync27(dir2)&&readdirSync11(dir2).length>0}function text4(value2){return typeof value2==="string"&&value2?value2:void 0}function life(name,man){let origin2=obj(man.origin)?man.origin:{},display3=obj(man.display)?man.display:{},src3=text4(origin2.source),identity2=text4(origin2.identityKey)??text4(origin2.sourceKey)??text4(origin2.packageUrl)??text4(origin2.repo)??src3,title=text4(display3.title)??text4(man.title),author=text4(display3.author)??text4(man.author);return{name,...title?{title}:{},...author?{author}:{},...text4(man.version)?{version:text4(man.version)}:{},source:{kind:text4(origin2.kind)??"default-catalog",...identity2?{identity:identity2}:{},...src3?{origin:src3}:{},...text4(origin2.repo)?{repo:text4(origin2.repo)}:{},...text4(origin2.selector)?{selector:text4(origin2.selector)}:{},...text4(origin2.catalogRoot)?{catalogRoot:text4(origin2.catalogRoot)}:{},...text4(origin2.sha)?{sha:text4(origin2.sha)}:{},...text4(origin2.packageUrl)?{packageUrl:text4(origin2.packageUrl)}:{}},trust:text4(origin2.trust)??"verified",active:chosen(get2("eikon"),name),removable:!1,updateable:Boolean(src3??text4(origin2.packageUrl)),updateAvailable:!1,dirty:!1,...text4(man.poster)?{poster:text4(man.poster)}:{},...obj(man.compatibility)?{compatibility:man.compatibility}:{},...text4(origin2.at)?{installedAt:text4(origin2.at)}:{}}}function bundled(xs){let names=new Set(xs.map((x2)=>x2.name.toLowerCase()));return listEikons([BUNDLED_EIKON_DIR]).flatMap((e)=>{let man=read2(join21(dirname13(e.path),"manifest.json"));if(man?.kind!=="eikon.package")return[];let name=text4(man.name)??e.meta.name.toLowerCase();if(names.has(name.toLowerCase()))return[];let inst={name,file:e.path,source:exports_eikon.sourceDir(name),hasSource:media(exports_eikon.sourceDir(name)),sourceUrl:text4(man.origin?.source)??text4(man.origin?.packageUrl),manifest:man,lifecycle:life(name,man)};return[{...inst,manifest:man,identityKeys:keysFor(inst)}]})}function cacheKey(entry3){return[entry3.identityKey||entry3.sourceKey||entry3.id,entry3.runtimeUrl,entry3.trust?.runtimeDigest,entry3.trust?.runtimeSize].filter(Boolean).join("|")}function blob(url2){return/\/blobs\/sha256\/[^/?#]+/.test(url2)}function artifact(entry3){return entry3}function obj(value2){return!!value2&&typeof value2==="object"&&!Array.isArray(value2)}function rawManifest(entry3){let raw2=entry3.raw;return obj(raw2.manifest)?raw2.manifest:void 0}function role(file2){if(file2.role==="source.base")return"base";if(file2.role?.startsWith("source."))return file2.role.slice(7);if(!file2.path)return;return basename14(file2.path,extname4(file2.path)).toLowerCase()||"base"}function sourceEntries2(man,strict=!1){if(!man)return[];try{let xs=entries(man).map(([r,rel2])=>[r,rel2]);if(xs.length)return xs;return(man.files??[]).flatMap((file2)=>{if(typeof file2.path!=="string"||!file2.role?.startsWith("source"))return[];let r=role(file2);return r?[[r,file2.path]]:[]})}catch(err){if(strict)throw err}return(man.files??[]).flatMap((file2)=>{if(typeof file2.path!=="string"||!file2.role?.startsWith("source"))return[];let r=role(file2);return r?[[r,file2.path]]:[]})}function sourceDescriptors3(man){return sourceEntries2(man).length>0}function sourceAvailable2(entry3,inst){return sourceDescriptors3(inst?.manifest)||sourceDescriptors3(rawManifest(entry3))}function trust(entry3){return entry3.trust}function boundTrust(entry3,raw2){let t2=trust(entry3),man=t2.manifestDigest,run=t2.runtimeDigest;if(!man&&!run)return"unverified";if(man&&hash2(raw2)!==man)throw Error(`catalog trust mismatch: manifest digest for ${entry3.name}`);let pkg2=JSON.parse(dec.decode(raw2)),rel2=pkg2.entrypoints?.default,got=rel2?pkg2.files?.find((f)=>f.path===rel2)?.digest:void 0;if(run&&got!==run)throw Error(`catalog trust mismatch: runtime digest for ${entry3.name}`);return man&&run?"verified":"unverified"}function spec2(man,rel2){return man.files?.find((f)=>f.path===rel2)}async function sourceBytes(man,base3,rel2,opts){let file2=spec2(man,rel2);if(!file2?.digest||typeof file2.size!=="number")throw Error(`source descriptor missing digest or size: ${rel2}`);let raw2=await downloadBytes(new URL(rel2,base3).href,opts);if(raw2.length!==file2.size)throw Error(`source size mismatch: ${rel2}`);if(hash2(raw2)!==file2.digest)throw Error(`source digest mismatch: ${rel2}`);return raw2}function target(input){return typeof input==="string"?input:input instanceof URL?input.href:input.url}function verifiedCatalogTrust(entry3){let t2=trust(entry3);return typeof t2.manifestDigest==="string"&&t2.manifestDigest.length>0&&typeof t2.runtimeDigest==="string"&&t2.runtimeDigest.length>0}function installed(){let xs=exports_eikon.list().map((inst)=>({...inst,manifest:inst.manifest,identityKeys:keysFor(inst)}));return[...xs,...bundled(xs)]}function match2(entry3,xs){let keys=entryKeys(entry3),exact=xs.find((x2)=>x2.identityKeys.some((k2)=>keys.includes(k2)));if(exact)return{inst:exact,legacy:!1};let named=xs.find((x2)=>x2.name===entry3.name&&x2.identityKeys.length===0);if(named)return{inst:named,legacy:!0};return}function row3(entry3,xs){let usable=match2(entry3,xs),active=usable?chosen(get2("eikon"),usable.inst.name):!1,installed2=Boolean(usable),conflict=!usable&&chosen(get2("eikon"),entry3.name),blocked=entry3.compatibility?.available===!1,mismatch=usable?.inst.lifecycle.trust==="mismatch",installState=mismatch?"mismatch":blocked?"incompatible":active?"active":conflict?"active-name-conflict":!usable?"available":usable.legacy?"legacy-name-match":"installed",lifecycle2=usable?.inst.lifecycle??{name:entry3.name,title:entry3.title,author:entry3.author,version:entry3.version,source:{kind:"default-catalog",identity:entry3.sourceKey,packageUrl:entry3.packageUrl},trust:verifiedCatalogTrust(entry3)?"verified":"unverified",active:!1,removable:!1,updateable:!1,updateAvailable:!1,dirty:!1,...entry3.poster?{poster:entry3.poster}:{},compatibility:entry3.compatibility},available2=sourceAvailable2(entry3,usable?.inst);return{entry:entry3,installed:installed2,active,installState,...usable?.inst.file?{installedPath:usable.inst.file,installedName:usable.inst.name}:{},...usable?.inst.manifest?{installedManifest:usable.inst.manifest}:{},lifecycle:lifecycle2,trust:lifecycle2.trust,updateable:lifecycle2.updateable,updateAvailable:lifecycle2.updateAvailable,removable:lifecycle2.removable,sourceIdentity:lifecycle2.source.identity,sourcePresent:usable?.inst.hasSource??!1,sourceAvailable:available2,sourceDownloadable:Boolean(usable&&!usable.inst.hasSource&&available2),reason:blocked?entry3.compatibility?.reason??"incompatible":mismatch?"trust mismatch":conflict?"install would replace the active avatar backing package":void 0,action:active?"active":installed2?"use":"install"}}function sizes(man){let files2=Array.isArray(man.files)?man.files:[],eikon=files2.filter((f)=>f.role==="runtime"||f.path===man.entrypoints?.default).map((f)=>f.size).filter((n)=>typeof n==="number").reduce((sum,n)=>sum+n,0),source2=files2.filter((f)=>typeof f.role==="string"&&f.role.startsWith("source")).map((f)=>f.size).filter((n)=>typeof n==="number").reduce((sum,n)=>sum+n,0);return{...eikon>0?{eikon}:{},...source2>0?{source:source2}:{}}}function abortErr(){return new DOMException("aborted","AbortError")}class MarketplaceService{catalog;fetcher;timeoutMs;previewCacheLimit;concurrency;allowPrivate;official;delistRepo;delistRun;activeLoads=0;queue=[];cache=new Map;inFlight=new Map;constructor(catalog3,opts={}){this.catalog=catalog3,this.fetcher=opts.fetcher??fetch,this.timeoutMs=opts.timeoutMs??DEFAULT_TIMEOUT,this.previewCacheLimit=opts.previewCacheLimit??DEFAULT_CACHE_LIMIT,this.concurrency=Math.max(1,Math.floor(opts.concurrency??4)),this.allowPrivate=opts.allowPrivate===!0,this.official=keyIdentity(publicCatalogUrl(opts.catalog??OFFICIAL_CATALOG,void 0,opts))===keyIdentity(OFFICIAL_CATALOG),this.delistRepo=opts.delistRepo,this.delistRun=opts.delistRun}rows(query2=""){let entries2=searchCatalog(this.catalog.entries,query2),xs=installed();return entries2.map((e)=>row3(e,xs))}entry(id){let key4=keyIdentity(id);return this.catalog.entries.find((e)=>keyIdentity(e.identityKey)===key4||keyIdentity(e.sourceKey)===key4||e.id===id||e.name===id)}dl(signal,fetcher=this.fetcher){return{allowPrivate:this.allowPrivate,fetcher:(input,init)=>fetcher(input,signal?{...init,signal}:init)}}runtime(entry3,signal){return async(input)=>{let url2=target(input),bound=keyIdentity(url2)===keyIdentity(entry3.runtimeUrl)&&(!!entry3.trust?.runtimeDigest||blob(url2)),raw2=await downloadBytes(url2,{...this.dl(signal),rejectContentEncoding:bound}),buf=raw2.buffer.slice(raw2.byteOffset,raw2.byteOffset+raw2.byteLength);return new Response(buf,{headers:{"content-length":String(raw2.length)}})}}cached(url2,raw2){let key4=keyIdentity(url2);return async(input,init)=>{if(keyIdentity(target(input))===key4)return new Response(raw2.slice(),{headers:{"content-length":String(raw2.length)}});return this.fetcher(input,init)}}async preview(id,opts={}){if(opts.signal?.aborted)throw abortErr();let entry3=this.entry(id);if(!entry3)throw Error(`marketplace: unknown eikon "${id}"`);let key4=cacheKey(entry3),hit2=this.cache.get(key4);if(hit2!==void 0)return hit2;let active=this.inFlight.get(key4);if(active)return active;let p=this.enqueue(()=>this.loadPreview(entry3,opts)).finally(()=>this.inFlight.delete(key4));return this.inFlight.set(key4,p),p}async packageSizes(id){let entry3=this.entry(id);if(!entry3)throw Error(`marketplace: unknown eikon "${id}"`);return sizes(JSON.parse(dec.decode(await downloadBytes(entry3.packageUrl,this.dl()))))}async delistInfo(id){let entry3=this.entry(id);if(!entry3)throw Error(`marketplace: unknown eikon "${id}"`);if(!this.official)return{eligible:!1,reason:"Registry delist is only available from the official Eikon catalog"};return info2(entry3,{repo:this.delistRepo,run:this.delistRun})}async delist(id){let entry3=this.entry(id);if(!entry3)throw Error(`marketplace: unknown eikon "${id}"`);if(!this.official)throw Error("Registry delist is only available from the official Eikon catalog");return submit3(entry3,{repo:this.delistRepo,run:this.delistRun})}async install(id,opts={}){let entry3=this.entry(id);if(!entry3)throw Error(`marketplace: unknown eikon "${id}"`);if(entry3.compatibility?.available===!1)throw Error(entry3.compatibility.reason??"eikon is incompatible");if(!match2(entry3,installed())&&chosen(get2("eikon"),entry3.name)&&!opts.confirmActive)throw Error(`Installing '${entry3.name}' will replace the active avatar's backing package. Pass confirmActive to install it.`);let raw2=await downloadBytes(entry3.packageUrl,this.dl()),state3=boundTrust(entry3,raw2),out=await exports_eikon.fetchSource(entry3.packageUrl,{name:entry3.name,media:opts.media===!0,downloader:this.dl(void 0,this.cached(entry3.packageUrl,raw2))}),ef=exports_eikon.file(out.name);if(!existsSync27(ef)){let art=await loadRuntimeArtifact(entry3,this.runtime(entry3),{allowPrivate:this.allowPrivate});await Bun.write(ef,art.bytes),exports_eikon.notifyRevision()}let mf=join21(exports_eikon.dir(out.name),"manifest.json"),man=JSON.parse(readFileSync18(mf,"utf8")),origin2=man.origin&&typeof man.origin==="object"&&!Array.isArray(man.origin)?man.origin:{};return writeFileSync8(mf,JSON.stringify({...man,origin:{...origin2,sourceKey:entry3.sourceKey,identityKey:entry3.identityKey,packageUrl:entry3.packageUrl,trust:state3}},null,2)+`
|
|
4146
4146
|
`),out}async downloadSource(id){let entry3=this.entry(id);if(!entry3)throw Error(`marketplace: unknown eikon "${id}"`);let usable=match2(entry3,installed());if(!usable)throw Error(`marketplace: "${entry3.name}" is not installed`);if(!sourceAvailable2(entry3,usable.inst))throw Error(`marketplace: no source media published for "${entry3.name}"`);let raw2=await downloadBytes(entry3.packageUrl,this.dl());boundTrust(entry3,raw2);let man=JSON.parse(dec.decode(raw2)),xs=sourceEntries2(man,!0);if(xs.length===0)throw Error(`marketplace: no source media published for "${entry3.name}"`);let base3=new URL(".",entry3.packageUrl).href,dir2=exports_eikon.ensure(usable.inst.name).source,pairs=await Promise.all(xs.map(async([r,rel2])=>{let data2=await sourceBytes(man,base3,rel2,this.dl());return[r,exports_eikon.sourceName(man,r,rel2),data2]})),sources={};return await Promise.all(pairs.map(async([r,fname,data2])=>{await Bun.write(join21(dir2,fname),data2),sources[r]=fname})),exports_eikon.attachSources(usable.inst.name,sources),{name:usable.inst.name,n:pairs.length,bytes:pairs.reduce((sum,[,,data2])=>sum+data2.length,0)}}enqueue(run){return new Promise((resolve4,reject)=>{this.queue.push({run,resolve:resolve4,reject}),this.pump()})}pump(){if(this.activeLoads>=this.concurrency)return;let job=this.queue.shift();if(!job)return;this.activeLoads+=1,job.run().then(job.resolve,job.reject).finally(()=>{this.activeLoads-=1,this.pump()})}async loadPreview(entry3,opts){let ctl=new AbortController,timeout2=setTimeout(()=>ctl.abort(),opts.timeoutMs??this.timeoutMs),off=()=>ctl.abort();opts.signal?.addEventListener("abort",off,{once:!0});try{let item=artifact(entry3),text5=(await loadRuntimeArtifact(item,this.runtime(item,ctl.signal),{signal:ctl.signal,allowPrivate:this.allowPrivate})).text;this.cache.set(cacheKey(entry3),text5);while(this.cache.size>this.previewCacheLimit)this.cache.delete(this.cache.keys().next().value);return text5}finally{clearTimeout(timeout2),opts.signal?.removeEventListener("abort",off)}}}async function load4(opts={}){let query2=opts.query??"";try{if(opts.catalog)publicCatalogUrl(opts.catalog,void 0,opts);let cat=await loadCatalog(opts.catalog,opts.fetcher??fetch,opts),service=new MarketplaceService(cat,opts),rows3=service.rows(query2);return{status:rows3.length>0?"ready":"empty",query:query2,rows:rows3,selected:rows3[0],service}}catch(err){return{status:"error",query:query2,rows:[],error:err instanceof Error?err.message:String(err)}}}var NO_MARKET={status:"empty",query:"",rows:[]},DETAIL=54;function localCatalog(raw2){if(!raw2)return!1;try{let url2=new URL(raw2),host=url2.hostname.toLowerCase().replace(/^\[|\]$/g,"");return url2.protocol==="file:"||host==="localhost"||host==="127.0.0.1"||host==="0.0.0.0"||host==="::1"||host.endsWith(".localhost")}catch{return!1}}var filterRows=(rows3,query2)=>{let q5=query2.trim().toLowerCase();if(!q5)return rows3;return rows3.filter((r)=>[r.entry.name,r.entry.author,r.entry.description,r.entry.id].some((x2)=>typeof x2==="string"&&x2.toLowerCase().includes(q5)))},EikonMarketplace=import_react121.memo((props)=>{let toast=useToast(),dialog=useDialog(),keys=useKeys(),theme=useTheme().theme,rev3=import_react121.useSyncExternalStore(exports_eikon.onRevision,exports_eikon.revision),[sel,setSel]=import_react121.useState(0),[searching,setSearching]=import_react121.useState(!1),[query2,setQuery]=import_react121.useState(""),[state3,setState2]=import_react121.useState(NO_MARKET),[loading,setLoading]=import_react121.useState(!1),[installing,setInstalling]=import_react121.useState(!1),[acting,setActing]=import_react121.useState(!1),[previewState,setPreviewState]=import_react121.useState("idle"),[preview2,setPreview]=import_react121.useState(void 0),[pane,setPane]=import_react121.useState("grid"),previewSeq=import_react121.useRef(0),loadSeq=import_react121.useRef(0),actingRef=import_react121.useRef(!1),follow=useFollow("market",(i)=>state3.rows[i]?.entry.identityKey??i),listFollow=useFollow("market-list",(i)=>state3.rows[i]?.entry.identityKey??i),dims=useTerminalDimensions();import_react121.useEffect(()=>{if(sel>=state3.rows.length)setSel(Math.max(0,state3.rows.length-1))},[state3.rows.length,sel]);let selected=state3.rows[sel];import_react121.useEffect(()=>{if(!selected||!state3.service){setPreview(void 0);return}let id=++previewSeq.current,key4=selected.entry.identityKey;count("market:preview:load"),state3.service.preview(key4).then((text5)=>{if(previewSeq.current!==id)return;let e=parseEikon(text5),st=e.states.has(previewState)?previewState:"idle";setPreview({eikon:e,state:st,states:[...e.states.keys()]}),count("market:preview:ready")}).catch(()=>{if(previewSeq.current!==id)return;setPreview(void 0),count("market:preview:error")})},[selected,state3.service,previewState]),import_react121.useEffect(()=>()=>{previewSeq.current++,setPreview(void 0)},[]);let loadMarket=import_react121.useCallback((q5=query2)=>{let id=++loadSeq.current;setLoading(!0);let end=mark("market:list:load"),catalog3=process.env.EIKON_URL;load4({catalog:catalog3,allowPrivate:localCatalog(catalog3),query:q5}).then((next2)=>{if(loadSeq.current!==id)return;count("market:list:rows",next2.rows.length);let rows3=next2.service?filterRows(next2.service.rows(""),q5):filterRows(next2.rows,q5);setState2({...next2,status:rows3.length>0?"ready":"empty",rows:rows3,selected:rows3[0]}),setSel((p)=>Math.max(0,Math.min(rows3.length-1,p)))}).finally(()=>{if(end(),loadSeq.current===id)setLoading(!1)})},[query2]),refreshMarket=import_react121.useCallback((svc,q5=query2)=>{let rows3=filterRows(svc.rows(""),q5);setState2({status:rows3.length>0?"ready":"empty",query:q5,rows:rows3,selected:rows3[0],service:svc}),setSel((p)=>Math.max(0,Math.min(rows3.length-1,p)))},[query2]);import_react121.useEffect(()=>{loadMarket(query2)},[query2,rev3,loadMarket]);let cycle3=import_react121.useCallback((by)=>{let states=preview2?.states,cur=preview2?.state;if(!states?.length||!cur)return;let at=Math.max(0,states.indexOf(cur));setPreviewState(states[(at+by+states.length)%states.length])},[preview2]),removeSelected=import_react121.useCallback(async(idx)=>{let row4=state3.rows[idx??sel],svc=state3.service,name=row4?.installedName??row4?.entry.name;if(!row4||!svc||!name||!row4.removable)return toast.show({variant:"warning",message:"This eikon is not removable"});let active=row4.active;if(!await openConfirm(dialog,{title:`Remove '${name}'?`,danger:!0,body:active?`Remove the local package for '${name}'. This is the active avatar; removal will clear the active avatar selection.`:`Remove the local package for '${name}'. This does not change the active avatar.`,yes:"remove",no:"cancel"}))return;let out=exports_eikon.remove(name,{confirmActive:active});if(out)return toast.show({variant:"warning",message:out.message});toast.show({variant:"info",message:`Removed '${name}'`}),refreshMarket(svc,query2)},[dialog,query2,refreshMarket,sel,state3.rows,state3.service,toast]),delistSelected=import_react121.useCallback(async(row4,svc)=>{let own;try{own=await svc.delistInfo(row4.entry.identityKey)}catch(err){toast.show({variant:"error",title:"Delist check failed",message:err instanceof Error?err.message:String(err),duration:6000});return}if(!own.eligible){toast.show({variant:"warning",title:"Delist unavailable",message:own.reason??"Only the original GitHub submitter can delist this eikon",duration:6000});return}if(!await openConfirm(dialog,{title:`Delist '${row4.entry.name}'?`,danger:!0,body:`This will open a GitHub delist request in liftaris/eikon for '${row4.entry.name}'. The registry will remove it automatically after authorship is verified.`,yes:"delist",no:"cancel"}))return;try{let out=await svc.delist(row4.entry.identityKey);toast.show({variant:"success",title:"Delist requested",message:`${row4.entry.name} will be removed automatically once GitHub verifies the request. ${out.url}`,duration:8000})}catch(err){toast.show({variant:"error",title:"Delist failed",message:err instanceof Error?err.message:String(err),duration:6000})}},[dialog,toast]),primary=import_react121.useCallback((idx)=>{let row4=state3.rows[idx??sel],svc=state3.service;if(!row4||!svc||actingRef.current||acting)return;(async()=>{actingRef.current=!0,setActing(!0);try{let sizes2=!row4.installed?await svc.packageSizes(row4.entry.identityKey).catch(()=>{return}):void 0,pick2=await openEikonMarketplaceAction(dialog,{row:row4,sizes:sizes2});if(!pick2)return;if(pick2==="use"){let name=row4.installedName??row4.entry.name;exports_eikon.useInstalled(name),toast.show({variant:"success",message:`Avatar \u2192 ${name}`}),refreshMarket(svc,query2);return}if(pick2==="delete")return removeSelected(idx);if(pick2==="delist")return delistSelected(row4,svc);setInstalling(!0);try{if(!(row4.installState==="active-name-conflict"?await openConfirm(dialog,{title:`Replace active '${row4.entry.name}'?`,danger:!0,body:`Installing this catalog package will replace the active avatar's backing package for '${row4.entry.name}' because another package with the same installed name is active.`,yes:"replace active",no:"cancel"}):!0))return;let out=pick2==="download"?await svc.downloadSource(row4.entry.identityKey):await svc.install(row4.entry.identityKey,{media:pick2==="source",confirmActive:row4.installState==="active-name-conflict"});toast.show({variant:"success",message:pick2==="download"?`Downloaded source for '${out.name}'`:`Installed '${out.name}' (${out.n} files)`}),refreshMarket(svc,query2)}catch(err){toast.show({variant:"error",title:pick2==="download"?"Source download failed":"Install failed",message:err instanceof Error?err.message:String(err),duration:6000}),refreshMarket(svc,query2)}finally{setInstalling(!1)}}finally{actingRef.current=!1,setActing(!1)}})()},[dialog,state3.rows,state3.service,sel,acting,toast,refreshMarket,query2,removeSelected,delistSelected]);useKeyboard((key4)=>{if(!props.focused||dialog.open())return;if(searching){if(key4.name==="escape"||key4.name==="esc"){setSearching(!1);return}if(key4.name==="backspace"){setQuery((q5)=>q5.slice(0,-1)),setSel(0);return}let seq=typeof key4.sequence==="string"?key4.sequence:"",ch=key4.raw&&key4.raw.length===1?key4.raw:seq.length===1?seq:key4.name.length===1&&!key4.ctrl&&!key4.meta?key4.name:"";if(ch>=" "){setQuery((q5)=>q5+ch),setSel(0);return}return}let plain=!key4.shift&&!key4.ctrl&&!key4.meta;if(key4.name==="tab")return setPane((p)=>p==="grid"?"detail":"grid");if(pane==="detail"){if(key4.name==="escape"||plain&&key4.name==="left"){setPane("grid");return}if(plain&&key4.name==="right"){cycle3(1);return}if(keys.match("list.activate",key4)){primary();return}if(keys.match("list.toggle",key4)){cycle3(1);return}if(keys.match("list.search",key4)){setPane("grid"),setSearching(!0);return}if(keys.match("list.refresh",key4)){loadMarket(query2);return}return}let move=(by)=>setSel((p)=>{let n=Math.max(0,Math.min(state3.rows.length-1,p+by));return follow.opts.scrollTo?.(n),listFollow.opts.scrollTo?.(n),n});if(plain&&key4.name==="left"){move(-1);return}if(plain&&key4.name==="right"){move(1);return}if(plain&&key4.name==="up"){move(-1);return}if(plain&&key4.name==="down"){move(1);return}if(handleListKey(keys,key4,{count:state3.rows.length,setSel,page:listFollow.opts.page,scrollTo:(n)=>{follow.opts.scrollTo?.(n),listFollow.opts.scrollTo?.(n)},onActivate:primary,onToggle:()=>cycle3(1),onSearch:()=>setSearching(!0),onRefresh:()=>loadMarket(query2),onDelete:()=>void removeSelected()}))return}),count("market:render");let titles=state3.rows.map((r)=>({key:r.entry.identityKey,name:r.entry.name,active:r.active})),cards=state3.rows.map((r)=>({key:r.entry.identityKey,name:r.entry.name,active:r.active,author:r.entry.author,status:stateLabel(r,!0),lines:posterLines(r.entry.poster)})),listW=titleWidth(`Catalog (${state3.rows.length})`,titles),showGrid=dims.width-listW-DETAIL>=EIKON_CARD;return $jsxs("box",{flexDirection:"column",flexGrow:1,minWidth:0,minHeight:0,children:[$jsxs("box",{flexDirection:"row",flexGrow:1,minWidth:0,minHeight:0,children:[$jsx(EikonTitleList,{title:`Catalog (${state3.rows.length})${searching?` Search: ${query2}`:""}`,rows:titles,sel,focus:props.focused&&pane==="grid",follow:listFollow,width:listW,onSel:setSel,onUse:primary}),showGrid?$jsx(TabShell,{title:"Posters",grow:1,children:state3.error?$jsx("box",{padding:1,children:$jsxs("text",{fg:theme.error,wrapMode:"word",children:["Catalog unavailable: ",state3.error]})}):loading&&state3.rows.length===0?$jsx("box",{padding:1,children:$jsx("text",{fg:theme.textMuted,children:"Loading shared eikons\u2026"})}):$jsx(EikonCardGrid,{rows:cards,sel,follow,empty:$jsx("text",{fg:theme.textMuted,children:"No catalog eikons match. Press / to change search."}),onSel:setSel,onUse:primary})}):null,$jsx("box",{width:DETAIL,flexShrink:0,minHeight:0,children:$jsx(TabShell,{title:selected?`Details \u2014 ${selected.entry.name}`:"Details",focus:props.focused&&pane==="detail",grow:1,children:$jsx(MarketplaceDetail,{row:selected,loading,installing,onUse:()=>primary(),onFocus:()=>setPane("detail"),onState:setPreviewState,preview:preview2})})})]}),$jsx(HintBar,{pairs:[["Tab",pane==="grid"?"details":"catalog"],[keys.print("list.activate"),"actions"],[pane==="detail"?"\u2192/Space":"\u2191\u2193\u2190\u2192/Pg",pane==="detail"?"state":"select"],[keys.print("list.search"),searching?"typing search":"search"],[keys.print("list.refresh"),"reload"],["d","delete in modal"],["Space","preview"]]})]})}),posterLines=(poster2)=>{let lines3=poster2?poster2.split(`
|
|
4147
|
-
`):[];return lines3.length?lines3:["(no poster)"]},MarketplaceDetail=(props)=>{let theme=useTheme().theme,r=props.row;if(!r)return $jsx("box",{padding:1,children:$jsx("text",{fg:theme.textMuted,children:props.loading?"Loading shared eikons\u2026":"No catalog entry selected."})});let previewState=props.preview?.state??"idle",states=props.preview?.states??[previewState];return $jsxs("box",{flexDirection:"column",padding:1,onMouseDown:props.onFocus,children:[props.preview?$jsx("box",{alignItems:"center",justifyContent:"center",width:48,height:24,flexShrink:0,overflow:"hidden",children:$jsx(AnimatedAvatar,{state:props.preview.state,eikon:props.preview.eikon},`${r.entry.identityKey}:${props.preview.state}`)}):null,$jsx("box",{height:1,overflow:"hidden",children:$jsx("text",{fg:r.active?theme.accent:theme.text,wrapMode:"none",children:$jsxs("strong",{children:[r.active?"\u25CF ":"",r.entry.name]})})}),$jsx("box",{height:1,overflow:"hidden",children:$jsxs("text",{fg:theme.textMuted,wrapMode:"none",children:["by ",r.entry.author??"unknown"]})}),$jsx("box",{minHeight:1,children:$jsx("text",{fg:theme.text,wrapMode:"word",children:r.entry.description??"No description."})}),$jsx("box",{flexDirection:"row",flexWrap:"wrap",flexShrink:0,children:states.map((s,i)=>$jsx(FilterChip,{label:s,state:s===previewState?"in":"off",gap:i===0?0:1,color:theme.primary,textColor:theme.textMuted,onMouseDown:()=>props.onState(s)},s))}),$jsx(DetailRow2,{label:"Status",value:stateLabel(r),block:!0}),$jsx(DetailRow2,{label:"Trust",value:trustLabel(r),block:!0}),$jsx(DetailRow2,{label:"Source",value:sourceText(r),block:!0}),$jsx(DetailRow2,{label:"Compat",value:compatText(r)}),$jsx(DetailRow2,{label:"Digest",value:digest2(r)??"unknown",block:!0})]})},DetailRow2=(props)=>{let theme=useTheme().theme;if(props.block)return $jsx("box",{flexDirection:"column",minHeight:props.label==="Status"?2:1,children:$jsxs("text",{fg:theme.textMuted,wrapMode:"word",children:[props.label,": ",props.value]})});return $jsx("box",{height:1,overflow:"hidden",children:$jsxs("text",{fg:theme.textMuted,wrapMode:"none",children:[props.label,": ",props.value]})})},shortDigest=(value2)=>{if(!value2)return;let[algo,hash3]=value2.includes(":")?value2.split(":",2):[void 0,value2];if(!hash3||hash3.length<=16)return value2;return algo?`${algo}:${hash3.slice(0,12)}\u2026`:`${hash3.slice(0,12)}\u2026`},digest2=(row4)=>{let t2=row4.entry.trust;return shortDigest(t2.manifestDigest??t2.runtimeDigest??t2.digest)},trustLabel=(row4)=>{let t2=row4.trust==="mismatch"?"Mismatch":row4.trust==="verified"?"Verified":row4.trust==="unverified"?"Unverified":"Trust unknown";return row4.reason&&row4.trust==="mismatch"?`${t2}: ${row4.reason}`:t2},sourceText=(row4)=>row4.sourceIdentity??row4.lifecycle.source.packageUrl??row4.entry.sourceKey??row4.entry.packageUrl,compatText=(row4)=>row4.installState==="incompatible"?`Blocked: ${row4.reason??"requires newer Herm/eikon"}`:row4.installState==="active-name-conflict"?`Requires confirmation: ${row4.reason}`:"Compatible",stateLabel=(row4,short2=!1)=>{let base3=row4.installState==="active-name-conflict"?"active name conflict":row4.active?"active":row4.installed?"installed":"not installed";if(short2)return base3;let src3=row4.sourcePresent?" \xB7 source present":row4.sourceDownloadable?" \xB7 source downloadable":row4.sourceAvailable?" \xB7 source available":"",rm2=row4.removable?" \xB7 removable":row4.installed?" \xB7 not removable":"";return`${base3}${src3}${rm2}`};var EikonGroup=import_react123.memo((props)=>{let labels=SUB_TABS[EIKON_TAB],[target2,setTarget]=import_react123.useState(void 0);import_react123.useEffect(()=>{if(props.sub>=labels.length)props.setSub(0)},[props.sub,labels.length]);let edit2=import_react123.useCallback((name)=>{setTarget(name),props.setSub(2)},[props]),hint="shift+\u2190/\u2192 sub";return $jsxs("box",{flexDirection:"column",flexGrow:1,minWidth:0,minHeight:0,children:[$jsx(SubTabBar,{tabs:labels,active:props.sub,onChange:props.setSub,hint}),$jsxs("box",{flexGrow:1,minWidth:0,minHeight:0,flexDirection:"column",children:[$jsx(Pane4,{visible:props.sub===0,children:$jsx(EikonGallery,{focused:!!props.focused&&props.sub===0,onEdit:edit2})}),$jsx(Pane4,{visible:props.sub===1,children:$jsx(EikonMarketplace,{focused:!!props.focused&&props.sub===1})}),$jsx(Pane4,{visible:props.sub===2,children:$jsx(EikonStudio,{focused:!!props.focused&&props.sub===2,name:target2})})]})]})}),Pane4=({visible:visible2,children:children2})=>visible2?$jsx("box",{flexGrow:1,minWidth:0,minHeight:0,flexDirection:"column",children:children2}):null;var import_react124=__toESM(require_react_production(),1);var FRAME={cw:16,ch:8,tw:20,tv:8},TL=["\u2800\u2880\u28E4\u2824\u2884\u28C0\u2804\u2880\u28E0\u28E4\u28C4\u2864\u2844\u2840\u2800\u2800","\u2800\u28DC\u2841\u28A9\u28C8\u2842\u2880\u28CB\u28ED\u2809\u2808\u2888\u28EE\u28FB\u2851\u28F6","\u2800\u28B8\u2856\u28BF\u280F\u28E4\u28F6\u28FD\u28EB\u28B6\u28E2\u284C\u2839\u28E7\u284F\u283B","\u2800\u2808\u2864\u2892\u28E6\u28BB\u28FF\u28FF\u28FF\u28BF\u28C5\u2847\u28C6\u2849\u2802\u2880","\u2801\u28B8\u284F\u2818\u280B\u289E\u28B3\u28FF\u28FF\u28DF\u284D\u284D\u28E4\u2805\u2800\u28A8","\u2800\u2824\u28AF\u28C6\u28C0\u2819\u28A6\u28FF\u284B\u2880\u28DC\u2807\u28C1\u28D2\u28CA\u28C9","\u2800\u2880\u28F7\u28DD\u28FB\u28F6\u28F6\u2884\u280D\u2818\u2841\u2847\u28E7\u28E0\u28E4\u2862","\u2800\u2800\u2818\u288E\u28BF\u28EF\u2803\u2801\u2864\u28DA\u287C\u2800\u284F\u28F9\u28FF\u2869"],TR=["\u2800\u2800\u2880\u28A0\u28A0\u28E0\u28E4\u28C0\u2840\u2820\u28C0\u2860\u2824\u28E4\u28C0\u2800","\u28F6\u288A\u28DF\u28F5\u2841\u2801\u2809\u28ED\u28D9\u2800\u2890\u28C2\u284D\u2888\u28E3\u2800","\u281F\u28B9\u28FC\u280F\u28A1\u28D4\u28B6\u28DD\u28EF\u28F6\u28E4\u2839\u287F\u28B2\u2847\u2800","\u2840\u2801\u2889\u28F0\u28B8\u28E8\u287F\u28FF\u28FF\u28FF\u285F\u28F4\u2852\u28A4\u2801\u2800","\u2845\u2804\u2828\u28E4\u28A9\u28A9\u28FB\u28FF\u28FF\u285E\u2873\u2819\u2803\u28B9\u2847\u2800","\u28C9\u28D1\u28D2\u28C8\u2838\u28E3\u2840\u2899\u28FF\u2874\u280B\u28C0\u28F0\u287D\u2824\u2880","\u2884\u28E4\u28C4\u28F8\u28B8\u2888\u2803\u2829\u2860\u28F6\u28F6\u28DF\u28EB\u28FE\u2802\u2800","\u288D\u28FF\u289F\u28B9\u2800\u28A7\u28D2\u28A4\u2801\u2808\u28FD\u287F\u2871\u2807\u2800\u2800"],BL=["\u2800\u2800\u28C0\u28FF\u28FF\u285F\u2801\u2800\u283B\u28AC\u28F3\u2800\u28C7\u28F2\u28DF\u28BF","\u2800\u2890\u287A\u28DB\u286F\u28ED\u2837\u280C\u2882\u2880\u2842\u2847\u284F\u2819\u281B\u2827","\u2800\u2816\u287C\u2809\u2809\u28A0\u28F0\u2825\u28AD\u2818\u28DB\u28C4\u288B\u28C9\u28C9\u2859","\u2800\u28B8\u284C\u2880\u28E0\u28F5\u28FF\u28FF\u28FF\u28FF\u28E8\u2803\u2837\u2802\u2810\u288D","\u2800\u2800\u283B\u281D\u283F\u28F4\u28FF\u28FF\u287F\u28FF\u28DF\u28CB\u284F\u2841\u2804\u2818","\u2800\u28B8\u28F0\u28F6\u28C4\u283B\u283F\u28FF\u28F9\u2830\u281F\u2882\u28A0\u285F\u28C6\u28F4","\u2800\u28AA\u2849\u2838\u28FB\u2807\u2800\u285D\u28DB\u2880\u2840\u28D8\u285F\u2877\u28EB\u286F","\u2800\u2819\u283B\u282A\u281C\u2813\u2802\u2808\u281B\u2813\u281B\u2819\u281A\u2808\u2801\u2800"],BR2=["\u287F\u28FB\u28D6\u28F8\u2800\u28DE\u2861\u281F\u2880\u2804\u28BB\u28FF\u28FF\u28C0\u2800\u2800","\u2836\u281B\u280B\u28B9\u28B8\u2890\u2840\u2850\u2821\u283E\u28ED\u28BD\u28DB\u2897\u2842\u2800","\u288B\u28C9\u28C9\u2859\u28E0\u28DB\u2803\u286D\u282C\u28C6\u2844\u2809\u2829\u28A7\u2832\u2800","\u2869\u2802\u2810\u283E\u2818\u28C5\u28FF\u28FF\u28FF\u28FF\u28EE\u28C4\u2840\u28B1\u2847\u2800","\u2803\u2880\u2888\u28B3\u28D9\u28FB\u28FF\u28DF\u28FF\u28FF\u28E6\u283F\u282B\u281F\u2800\u2800","\u28E6\u28F0\u28BB\u2844\u2850\u283B\u2803\u28CF\u28FF\u283F\u281F\u28E0\u28F6\u28C6\u2847\u2800","\u28BD\u28DD\u28AF\u28BB\u28C3\u2880\u2840\u28DB\u28E9\u2800\u2838\u28DF\u2807\u2889\u2855\u2800","\u2801\u2800\u2801\u2813\u280B\u281B\u281A\u281B\u2801\u2810\u281A\u2823\u2807\u281F\u280B\u2800"],T2=["\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28C0\u28C0\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800","\u2844\u28E2\u28F4\u28F6\u2836\u2816\u2832\u28CC\u2818\u2809\u2822\u285B\u28A1\u2834\u2832\u2836\u28F0\u2896\u28B4\u28E4","\u28FE\u28E5\u283F\u2800\u28E0\u28B0\u283F\u28BE\u2850\u283E\u283F\u2887\u2873\u28FF\u28D7\u2804\u2800\u2823\u28D1\u28F5","\u28BE\u285F\u2804\u2810\u28AD\u28CD\u2896\u2844\u2828\u28BB\u28EB\u283D\u287C\u287F\u28BD\u28A5\u2842\u2804\u283B\u287D","\u2813\u287B\u28B6\u28C4\u2848\u2818\u282D\u281A\u280D\u28BB\u2849\u280B\u280B\u282D\u2803\u2803\u2861\u28F6\u28DF\u28BE","\u2801\u2804\u2809\u2809\u281A\u2824\u2824\u282C\u281F\u2830\u2827\u280A\u282F\u2834\u2824\u2813\u281B\u2809\u2810\u2822","\u28DB\u28DB\u285F\u28DB\u285B\u28DB\u28DB\u289B\u28DB\u28DB\u285B\u28DB\u28DB\u289B\u28FB\u28FB\u28DF\u281B\u28FB\u28BB","\u28CA\u28C9\u28C9\u28DB\u28CB\u28D9\u28CB\u28FC\u28F7\u28E5\u28EF\u28FA\u28CB\u28F5\u28F7\u28ED\u28D9\u28D1\u28FB\u28FD"],B2=["\u28FF\u28BF\u28FF\u28FF\u28BF\u28FF\u287F\u287F\u28FF\u28FF\u283F\u28FF\u28BF\u287F\u28FF\u28FF\u287F\u28FF\u287F\u28BF","\u28C3\u28DB\u28C8\u28D3\u28DA\u28DA\u28C3\u28D9\u28DB\u28C9\u28DB\u28DB\u28C1\u28DB\u28D9\u28D9\u28CB\u28D8\u28C9\u28D9","\u2820\u2884\u2884\u28C0\u2864\u28E4\u2810\u28E0\u2884\u28A0\u2844\u2864\u28C4\u2800\u2864\u2884\u28C0\u2840\u2880\u2880","\u28F1\u282C\u282B\u2811\u2881\u28E0\u28A0\u286B\u28E1\u28E0\u28E4\u28C9\u2885\u2884\u28C4\u2809\u283B\u2850\u28A5\u28CC","\u2894\u28C8\u2800\u28B0\u2841\u28B6\u28FF\u28FF\u28DF\u28FF\u28C3\u285B\u2815\u280D\u28E6\u28C3\u2844\u2802\u28F9\u2862","\u287F\u288F\u2884\u2800\u2803\u28EB\u28FF\u289C\u28A9\u28F6\u28E6\u2809\u2876\u28FE\u2856\u281B\u2800\u28E0\u285B\u287F","\u283C\u28BE\u283F\u28F5\u28D6\u28D8\u2834\u2803\u2808\u2886\u2880\u2800\u2873\u2824\u28C2\u28F2\u28FE\u282F\u281A\u280F","\u2800\u2800\u2801\u2800\u2800\u2800\u2800\u2808\u2809\u2819\u280B\u2809\u2801\u2800\u2800\u2800\u2800\u2800\u2800\u2800"],L2=["\u2800\u2800\u2890\u289F\u28FE\u283F\u282E\u2836\u2877\u28EA\u283E\u2802\u2857\u28AD\u28BF\u28B9","\u2800\u2800\u28E8\u2855\u2809\u2861\u2824\u28C1\u284C\u282A\u28A7\u2801\u2847\u28F0\u28FF\u28BC","\u2800\u2800\u2839\u2843\u28BE\u28D5\u28F7\u2866\u28D3\u2840\u2849\u2846\u284F\u28F6\u2863\u28FB","\u2800\u28B0\u2876\u28AC\u28ED\u285C\u28FF\u28FF\u28EF\u2888\u2893\u2801\u284F\u28DA\u287E\u28FF","\u2800\u2818\u285B\u288A\u28D9\u2823\u2887\u28AF\u28FF\u2828\u286D\u2841\u2867\u28BC\u28F2\u28FF","\u2800\u2800\u28B1\u2849\u28BF\u2847\u2824\u28DD\u2844\u2800\u2841\u2801\u284F\u28F6\u2896\u28BF","\u2800\u2800\u28B0\u28E7\u2840\u2813\u2813\u2809\u2881\u28F4\u284D\u2800\u2847\u283A\u283D\u28BA","\u2800\u2800\u2828\u283A\u28FD\u28F7\u28E6\u2874\u285A\u2803\u2880\u2800\u2847\u287E\u28FF\u28B9"],R=["\u284F\u287F\u286D\u28BA\u2880\u2837\u289D\u28BE\u2836\u2835\u283F\u28F7\u287B\u2842\u2800\u2800","\u2867\u28FF\u28C6\u28B8\u2800\u287C\u2815\u28A1\u28C0\u2824\u288C\u2809\u28AA\u28C5\u2801\u2800","\u28DF\u289C\u28F6\u28B9\u28B0\u2889\u2880\u28DA\u28B4\u28FE\u28EA\u2877\u2898\u280F\u2800\u2800","\u28FF\u28B7\u285B\u28B9\u2808\u285A\u2841\u28FD\u28FF\u28FF\u28A3\u28ED\u2865\u28B6\u2846\u2800","\u28FF\u28D6\u2867\u28BC\u2888\u28AD\u2805\u28FF\u287D\u2878\u2858\u28CB\u2851\u289B\u2803\u2800","\u287F\u2872\u28F6\u28B9\u2808\u2888\u2800\u28A0\u28EB\u2824\u28B8\u287F\u2889\u2846\u2800\u2800","\u2857\u282F\u2817\u28B8\u2800\u28A9\u28E6\u2848\u2809\u281A\u281A\u2880\u28FC\u2846\u2800\u2800","\u284F\u28FF\u28AF\u28B8\u2800\u2880\u2818\u2893\u28A6\u28B6\u28FE\u28EF\u2817\u2805\u2800\u2800"];function frame(w2,h2){let{cw,ch,tw,tv}=FRAME,mw=w2-2*cw,mh=h2-2*ch,inner={x:cw,y:ch,w:Math.max(0,mw),h:Math.max(0,mh)};if(mw<4||mh<2)return{lines:[],inner};let repH=(p,span2)=>p.map((l2)=>l2.repeat(Math.ceil(span2/tw)).slice(0,span2)),repV=(p,span2)=>Array.from({length:span2},(_2,i)=>p[i%tv]),t2=repH(T2,mw),b2=repH(B2,mw),l=repV(L2,mh),r=repV(R,mh),mid2=" ".repeat(mw),out=[];for(let i=0;i<ch;i++)out.push(TL[i]+t2[i]+TR[i]);for(let i=0;i<mh;i++)out.push(l[i]+mid2+r[i]);for(let i=0;i<ch;i++)out.push(BL[i]+b2[i]+BR2[i]);return{lines:out,inner}}import{readFileSync as readFileSync19}from"fs";import{join as join22}from"path";var FALLBACK=["`@file:path/to/file.py` injects file contents directly into your message.","`/title <name>` names the session \u2014 resume it later from the Sessions tab.","Ctrl+G opens $EDITOR seeded with the composer contents.","Ctrl+Z suspends to the shell; `fg` resumes.","Pasting 5+ lines collapses to a `[Pasted #N \u2026]` placeholder.","Click a user message in the transcript to rewind to that point."],HL=/(\/[a-z][\w-]*|@[\w:./-]+|(?:Ctrl|Alt|Shift)\+\S+|`[^`]+`|"[^"]+")/g;function splitTip(tip2){let out=[],i=0;for(let m2 of tip2.matchAll(HL)){let j2=m2.index;if(j2>i)out.push({t:tip2.slice(i,j2),hl:!1});out.push({t:m2[0].replace(/^`|`$/g,""),hl:!0}),i=j2+m2[0].length}if(i<tip2.length)out.push({t:tip2.slice(i),hl:!1});return out}var cache5=null;function loadTips(){if(cache5)return cache5;try{let body=readFileSync19(join22(hermesAgentRoot(),"hermes_cli","tips.py"),"utf8").split(/^TIPS\s*=\s*\[/m)[1]?.split(/^\]/m)[0]??"",tips=[];for(let line4 of body.split(`
|
|
4148
|
-
`)){let m2=line4.match(/^\s+"((?:[^"\\]|\\.)*)",?\s*$/);if(m2)tips.push(m2[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\"))}cache5=tips.length>10?tips:FALLBACK}catch{cache5=FALLBACK}return cache5}function randomTip(prev
|
|
4147
|
+
`):[];return lines3.length?lines3:["(no poster)"]},MarketplaceDetail=(props)=>{let theme=useTheme().theme,r=props.row;if(!r)return $jsx("box",{padding:1,children:$jsx("text",{fg:theme.textMuted,children:props.loading?"Loading shared eikons\u2026":"No catalog entry selected."})});let previewState=props.preview?.state??"idle",states=props.preview?.states??[previewState];return $jsxs("box",{flexDirection:"column",padding:1,onMouseDown:props.onFocus,children:[props.preview?$jsx("box",{alignItems:"center",justifyContent:"center",width:48,height:24,flexShrink:0,overflow:"hidden",children:$jsx(AnimatedAvatar,{state:props.preview.state,eikon:props.preview.eikon},`${r.entry.identityKey}:${props.preview.state}`)}):null,$jsx("box",{height:1,overflow:"hidden",children:$jsx("text",{fg:r.active?theme.accent:theme.text,wrapMode:"none",children:$jsxs("strong",{children:[r.active?"\u25CF ":"",r.entry.name]})})}),$jsx("box",{height:1,overflow:"hidden",children:$jsxs("text",{fg:theme.textMuted,wrapMode:"none",children:["by ",r.entry.author??"unknown"]})}),$jsx("box",{minHeight:1,children:$jsx("text",{fg:theme.text,wrapMode:"word",children:r.entry.description??"No description."})}),$jsx("box",{flexDirection:"row",flexWrap:"wrap",flexShrink:0,children:states.map((s,i)=>$jsx(FilterChip,{label:s,state:s===previewState?"in":"off",gap:i===0?0:1,color:theme.primary,textColor:theme.textMuted,onMouseDown:()=>props.onState(s)},s))}),$jsx(DetailRow2,{label:"Status",value:stateLabel(r),block:!0}),$jsx(DetailRow2,{label:"Trust",value:trustLabel(r),block:!0}),$jsx(DetailRow2,{label:"Source",value:sourceText(r),block:!0}),$jsx(DetailRow2,{label:"Compat",value:compatText(r)}),$jsx(DetailRow2,{label:"Digest",value:digest2(r)??"unknown",block:!0})]})},DetailRow2=(props)=>{let theme=useTheme().theme;if(props.block)return $jsx("box",{flexDirection:"column",minHeight:props.label==="Status"?2:1,children:$jsxs("text",{fg:theme.textMuted,wrapMode:"word",children:[props.label,": ",props.value]})});return $jsx("box",{height:1,overflow:"hidden",children:$jsxs("text",{fg:theme.textMuted,wrapMode:"none",children:[props.label,": ",props.value]})})},shortDigest=(value2)=>{if(!value2)return;let[algo,hash3]=value2.includes(":")?value2.split(":",2):[void 0,value2];if(!hash3||hash3.length<=16)return value2;return algo?`${algo}:${hash3.slice(0,12)}\u2026`:`${hash3.slice(0,12)}\u2026`},digest2=(row4)=>{let t2=row4.entry.trust;return shortDigest(t2.manifestDigest??t2.runtimeDigest??t2.digest)},trustLabel=(row4)=>{let t2=row4.trust==="mismatch"?"Mismatch":row4.trust==="verified"?"Verified":row4.trust==="unverified"?"Unverified":"Trust unknown";return row4.reason&&row4.trust==="mismatch"?`${t2}: ${row4.reason}`:t2},sourceText=(row4)=>row4.sourceIdentity??row4.lifecycle.source.packageUrl??row4.entry.sourceKey??row4.entry.packageUrl,compatText=(row4)=>row4.installState==="incompatible"?`Blocked: ${row4.reason??"requires newer Herm/eikon"}`:row4.installState==="active-name-conflict"?`Requires confirmation: ${row4.reason}`:"Compatible",stateLabel=(row4,short2=!1)=>{let base3=row4.installState==="active-name-conflict"?"active name conflict":row4.active?"active":row4.installed?"installed":"not installed";if(short2)return base3;let src3=row4.sourcePresent?" \xB7 source present":row4.sourceDownloadable?" \xB7 source downloadable":row4.sourceAvailable?" \xB7 source available":"",rm2=row4.removable?" \xB7 removable":row4.installed?" \xB7 not removable":"";return`${base3}${src3}${rm2}`};var EikonGroup=import_react123.memo((props)=>{let labels=SUB_TABS[EIKON_TAB],[target2,setTarget]=import_react123.useState(void 0);import_react123.useEffect(()=>{if(props.sub>=labels.length)props.setSub(0)},[props.sub,labels.length]);let edit2=import_react123.useCallback((name)=>{setTarget(name),props.setSub(2)},[props]),hint="shift+\u2190/\u2192 sub";return $jsxs("box",{flexDirection:"column",flexGrow:1,minWidth:0,minHeight:0,children:[$jsx(SubTabBar,{tabs:labels,active:props.sub,onChange:props.setSub,hint}),$jsxs("box",{flexGrow:1,minWidth:0,minHeight:0,flexDirection:"column",children:[$jsx(Pane4,{visible:props.sub===0,children:$jsx(EikonGallery,{focused:!!props.focused&&props.sub===0,onEdit:edit2})}),$jsx(Pane4,{visible:props.sub===1,children:$jsx(EikonMarketplace,{focused:!!props.focused&&props.sub===1})}),$jsx(Pane4,{visible:props.sub===2,children:$jsx(EikonStudio,{focused:!!props.focused&&props.sub===2,name:target2})})]})]})}),Pane4=({visible:visible2,children:children2})=>visible2?$jsx("box",{flexGrow:1,minWidth:0,minHeight:0,flexDirection:"column",children:children2}):null;var import_react124=__toESM(require_react_production(),1);var FRAME={cw:16,ch:8,tw:20,tv:8},TL=["\u2800\u2880\u28E4\u2824\u2884\u28C0\u2804\u2880\u28E0\u28E4\u28C4\u2864\u2844\u2840\u2800\u2800","\u2800\u28DC\u2841\u28A9\u28C8\u2842\u2880\u28CB\u28ED\u2809\u2808\u2888\u28EE\u28FB\u2851\u28F6","\u2800\u28B8\u2856\u28BF\u280F\u28E4\u28F6\u28FD\u28EB\u28B6\u28E2\u284C\u2839\u28E7\u284F\u283B","\u2800\u2808\u2864\u2892\u28E6\u28BB\u28FF\u28FF\u28FF\u28BF\u28C5\u2847\u28C6\u2849\u2802\u2880","\u2801\u28B8\u284F\u2818\u280B\u289E\u28B3\u28FF\u28FF\u28DF\u284D\u284D\u28E4\u2805\u2800\u28A8","\u2800\u2824\u28AF\u28C6\u28C0\u2819\u28A6\u28FF\u284B\u2880\u28DC\u2807\u28C1\u28D2\u28CA\u28C9","\u2800\u2880\u28F7\u28DD\u28FB\u28F6\u28F6\u2884\u280D\u2818\u2841\u2847\u28E7\u28E0\u28E4\u2862","\u2800\u2800\u2818\u288E\u28BF\u28EF\u2803\u2801\u2864\u28DA\u287C\u2800\u284F\u28F9\u28FF\u2869"],TR=["\u2800\u2800\u2880\u28A0\u28A0\u28E0\u28E4\u28C0\u2840\u2820\u28C0\u2860\u2824\u28E4\u28C0\u2800","\u28F6\u288A\u28DF\u28F5\u2841\u2801\u2809\u28ED\u28D9\u2800\u2890\u28C2\u284D\u2888\u28E3\u2800","\u281F\u28B9\u28FC\u280F\u28A1\u28D4\u28B6\u28DD\u28EF\u28F6\u28E4\u2839\u287F\u28B2\u2847\u2800","\u2840\u2801\u2889\u28F0\u28B8\u28E8\u287F\u28FF\u28FF\u28FF\u285F\u28F4\u2852\u28A4\u2801\u2800","\u2845\u2804\u2828\u28E4\u28A9\u28A9\u28FB\u28FF\u28FF\u285E\u2873\u2819\u2803\u28B9\u2847\u2800","\u28C9\u28D1\u28D2\u28C8\u2838\u28E3\u2840\u2899\u28FF\u2874\u280B\u28C0\u28F0\u287D\u2824\u2880","\u2884\u28E4\u28C4\u28F8\u28B8\u2888\u2803\u2829\u2860\u28F6\u28F6\u28DF\u28EB\u28FE\u2802\u2800","\u288D\u28FF\u289F\u28B9\u2800\u28A7\u28D2\u28A4\u2801\u2808\u28FD\u287F\u2871\u2807\u2800\u2800"],BL=["\u2800\u2800\u28C0\u28FF\u28FF\u285F\u2801\u2800\u283B\u28AC\u28F3\u2800\u28C7\u28F2\u28DF\u28BF","\u2800\u2890\u287A\u28DB\u286F\u28ED\u2837\u280C\u2882\u2880\u2842\u2847\u284F\u2819\u281B\u2827","\u2800\u2816\u287C\u2809\u2809\u28A0\u28F0\u2825\u28AD\u2818\u28DB\u28C4\u288B\u28C9\u28C9\u2859","\u2800\u28B8\u284C\u2880\u28E0\u28F5\u28FF\u28FF\u28FF\u28FF\u28E8\u2803\u2837\u2802\u2810\u288D","\u2800\u2800\u283B\u281D\u283F\u28F4\u28FF\u28FF\u287F\u28FF\u28DF\u28CB\u284F\u2841\u2804\u2818","\u2800\u28B8\u28F0\u28F6\u28C4\u283B\u283F\u28FF\u28F9\u2830\u281F\u2882\u28A0\u285F\u28C6\u28F4","\u2800\u28AA\u2849\u2838\u28FB\u2807\u2800\u285D\u28DB\u2880\u2840\u28D8\u285F\u2877\u28EB\u286F","\u2800\u2819\u283B\u282A\u281C\u2813\u2802\u2808\u281B\u2813\u281B\u2819\u281A\u2808\u2801\u2800"],BR2=["\u287F\u28FB\u28D6\u28F8\u2800\u28DE\u2861\u281F\u2880\u2804\u28BB\u28FF\u28FF\u28C0\u2800\u2800","\u2836\u281B\u280B\u28B9\u28B8\u2890\u2840\u2850\u2821\u283E\u28ED\u28BD\u28DB\u2897\u2842\u2800","\u288B\u28C9\u28C9\u2859\u28E0\u28DB\u2803\u286D\u282C\u28C6\u2844\u2809\u2829\u28A7\u2832\u2800","\u2869\u2802\u2810\u283E\u2818\u28C5\u28FF\u28FF\u28FF\u28FF\u28EE\u28C4\u2840\u28B1\u2847\u2800","\u2803\u2880\u2888\u28B3\u28D9\u28FB\u28FF\u28DF\u28FF\u28FF\u28E6\u283F\u282B\u281F\u2800\u2800","\u28E6\u28F0\u28BB\u2844\u2850\u283B\u2803\u28CF\u28FF\u283F\u281F\u28E0\u28F6\u28C6\u2847\u2800","\u28BD\u28DD\u28AF\u28BB\u28C3\u2880\u2840\u28DB\u28E9\u2800\u2838\u28DF\u2807\u2889\u2855\u2800","\u2801\u2800\u2801\u2813\u280B\u281B\u281A\u281B\u2801\u2810\u281A\u2823\u2807\u281F\u280B\u2800"],T2=["\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u28C0\u28C0\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800\u2800","\u2844\u28E2\u28F4\u28F6\u2836\u2816\u2832\u28CC\u2818\u2809\u2822\u285B\u28A1\u2834\u2832\u2836\u28F0\u2896\u28B4\u28E4","\u28FE\u28E5\u283F\u2800\u28E0\u28B0\u283F\u28BE\u2850\u283E\u283F\u2887\u2873\u28FF\u28D7\u2804\u2800\u2823\u28D1\u28F5","\u28BE\u285F\u2804\u2810\u28AD\u28CD\u2896\u2844\u2828\u28BB\u28EB\u283D\u287C\u287F\u28BD\u28A5\u2842\u2804\u283B\u287D","\u2813\u287B\u28B6\u28C4\u2848\u2818\u282D\u281A\u280D\u28BB\u2849\u280B\u280B\u282D\u2803\u2803\u2861\u28F6\u28DF\u28BE","\u2801\u2804\u2809\u2809\u281A\u2824\u2824\u282C\u281F\u2830\u2827\u280A\u282F\u2834\u2824\u2813\u281B\u2809\u2810\u2822","\u28DB\u28DB\u285F\u28DB\u285B\u28DB\u28DB\u289B\u28DB\u28DB\u285B\u28DB\u28DB\u289B\u28FB\u28FB\u28DF\u281B\u28FB\u28BB","\u28CA\u28C9\u28C9\u28DB\u28CB\u28D9\u28CB\u28FC\u28F7\u28E5\u28EF\u28FA\u28CB\u28F5\u28F7\u28ED\u28D9\u28D1\u28FB\u28FD"],B2=["\u28FF\u28BF\u28FF\u28FF\u28BF\u28FF\u287F\u287F\u28FF\u28FF\u283F\u28FF\u28BF\u287F\u28FF\u28FF\u287F\u28FF\u287F\u28BF","\u28C3\u28DB\u28C8\u28D3\u28DA\u28DA\u28C3\u28D9\u28DB\u28C9\u28DB\u28DB\u28C1\u28DB\u28D9\u28D9\u28CB\u28D8\u28C9\u28D9","\u2820\u2884\u2884\u28C0\u2864\u28E4\u2810\u28E0\u2884\u28A0\u2844\u2864\u28C4\u2800\u2864\u2884\u28C0\u2840\u2880\u2880","\u28F1\u282C\u282B\u2811\u2881\u28E0\u28A0\u286B\u28E1\u28E0\u28E4\u28C9\u2885\u2884\u28C4\u2809\u283B\u2850\u28A5\u28CC","\u2894\u28C8\u2800\u28B0\u2841\u28B6\u28FF\u28FF\u28DF\u28FF\u28C3\u285B\u2815\u280D\u28E6\u28C3\u2844\u2802\u28F9\u2862","\u287F\u288F\u2884\u2800\u2803\u28EB\u28FF\u289C\u28A9\u28F6\u28E6\u2809\u2876\u28FE\u2856\u281B\u2800\u28E0\u285B\u287F","\u283C\u28BE\u283F\u28F5\u28D6\u28D8\u2834\u2803\u2808\u2886\u2880\u2800\u2873\u2824\u28C2\u28F2\u28FE\u282F\u281A\u280F","\u2800\u2800\u2801\u2800\u2800\u2800\u2800\u2808\u2809\u2819\u280B\u2809\u2801\u2800\u2800\u2800\u2800\u2800\u2800\u2800"],L2=["\u2800\u2800\u2890\u289F\u28FE\u283F\u282E\u2836\u2877\u28EA\u283E\u2802\u2857\u28AD\u28BF\u28B9","\u2800\u2800\u28E8\u2855\u2809\u2861\u2824\u28C1\u284C\u282A\u28A7\u2801\u2847\u28F0\u28FF\u28BC","\u2800\u2800\u2839\u2843\u28BE\u28D5\u28F7\u2866\u28D3\u2840\u2849\u2846\u284F\u28F6\u2863\u28FB","\u2800\u28B0\u2876\u28AC\u28ED\u285C\u28FF\u28FF\u28EF\u2888\u2893\u2801\u284F\u28DA\u287E\u28FF","\u2800\u2818\u285B\u288A\u28D9\u2823\u2887\u28AF\u28FF\u2828\u286D\u2841\u2867\u28BC\u28F2\u28FF","\u2800\u2800\u28B1\u2849\u28BF\u2847\u2824\u28DD\u2844\u2800\u2841\u2801\u284F\u28F6\u2896\u28BF","\u2800\u2800\u28B0\u28E7\u2840\u2813\u2813\u2809\u2881\u28F4\u284D\u2800\u2847\u283A\u283D\u28BA","\u2800\u2800\u2828\u283A\u28FD\u28F7\u28E6\u2874\u285A\u2803\u2880\u2800\u2847\u287E\u28FF\u28B9"],R=["\u284F\u287F\u286D\u28BA\u2880\u2837\u289D\u28BE\u2836\u2835\u283F\u28F7\u287B\u2842\u2800\u2800","\u2867\u28FF\u28C6\u28B8\u2800\u287C\u2815\u28A1\u28C0\u2824\u288C\u2809\u28AA\u28C5\u2801\u2800","\u28DF\u289C\u28F6\u28B9\u28B0\u2889\u2880\u28DA\u28B4\u28FE\u28EA\u2877\u2898\u280F\u2800\u2800","\u28FF\u28B7\u285B\u28B9\u2808\u285A\u2841\u28FD\u28FF\u28FF\u28A3\u28ED\u2865\u28B6\u2846\u2800","\u28FF\u28D6\u2867\u28BC\u2888\u28AD\u2805\u28FF\u287D\u2878\u2858\u28CB\u2851\u289B\u2803\u2800","\u287F\u2872\u28F6\u28B9\u2808\u2888\u2800\u28A0\u28EB\u2824\u28B8\u287F\u2889\u2846\u2800\u2800","\u2857\u282F\u2817\u28B8\u2800\u28A9\u28E6\u2848\u2809\u281A\u281A\u2880\u28FC\u2846\u2800\u2800","\u284F\u28FF\u28AF\u28B8\u2800\u2880\u2818\u2893\u28A6\u28B6\u28FE\u28EF\u2817\u2805\u2800\u2800"];function frame(w2,h2){let{cw,ch,tw,tv}=FRAME,mw=w2-2*cw,mh=h2-2*ch,inner={x:cw,y:ch,w:Math.max(0,mw),h:Math.max(0,mh)};if(mw<4||mh<2)return{lines:[],inner};let repH=(p,span2)=>p.map((l2)=>l2.repeat(Math.ceil(span2/tw)).slice(0,span2)),repV=(p,span2)=>Array.from({length:span2},(_2,i)=>p[i%tv]),t2=repH(T2,mw),b2=repH(B2,mw),l=repV(L2,mh),r=repV(R,mh),mid2=" ".repeat(mw),out=[];for(let i=0;i<ch;i++)out.push(TL[i]+t2[i]+TR[i]);for(let i=0;i<mh;i++)out.push(l[i]+mid2+r[i]);for(let i=0;i<ch;i++)out.push(BL[i]+b2[i]+BR2[i]);return{lines:out,inner}}var exports_tips={};__export(exports_tips,{tips:()=>exports_tips,splitTip:()=>splitTip,resetTips:()=>resetTips,randomTip:()=>randomTip,parseTips:()=>parseTips,loadTips:()=>loadTips});import{readFileSync as readFileSync19}from"fs";import{join as join22}from"path";var FALLBACK=["`@file:path/to/file.py` injects file contents directly into your message.","`/title <name>` names the session \u2014 resume it later from the Sessions tab.","Ctrl+G opens $EDITOR seeded with the composer contents.","Ctrl+Z suspends to the shell; `fg` resumes.","Pasting 5+ lines collapses to a `[Pasted #N \u2026]` placeholder.","Click a user message in the transcript to rewind to that point."],HL=/(\/[a-z][\w-]*|@[\w:./-]+|(?:Ctrl|Alt|Shift)\+\S+|`[^`]+`|"[^"]+")/g;function splitTip(tip2){let out=[],i=0;for(let m2 of tip2.matchAll(HL)){let j2=m2.index;if(j2>i)out.push({t:tip2.slice(i,j2),hl:!1});out.push({t:m2[0].replace(/^`|`$/g,""),hl:!0}),i=j2+m2[0].length}if(i<tip2.length)out.push({t:tip2.slice(i),hl:!1});return out}var cache5=null;function parseTips(src3){let body=src3.split(/^TIPS\s*=\s*\[/m)[1]?.split(/^\]/m)[0]??"",tips=[];for(let line4 of body.split(`
|
|
4148
|
+
`)){let m2=line4.match(/^\s+"((?:[^"\\]|\\.)*)",?\s*$/);if(m2)tips.push(m2[1].replace(/\\"/g,'"').replace(/\\\\/g,"\\"))}return tips}function loadTips(){if(cache5)return cache5;try{let src3=readFileSync19(join22(hermesAgentRoot(),"hermes_cli","tips.py"),"utf8"),tips=parseTips(src3);cache5=tips.length>10?tips:FALLBACK}catch{cache5=FALLBACK}return cache5}function randomTip(prev,rng=Math.random,t2=loadTips()){if(t2.length<2)return t2[0]??"";let first=Math.floor(rng()*t2.length);if(t2[first]!==prev)return t2[first];return t2[(first+1+Math.floor(rng()*(t2.length-1)))%t2.length]}var resetTips=()=>{cache5=null};import{readFileSync as readFileSync20,existsSync as existsSync28}from"fs";import{dirname as dirname14,join as join23}from"path";var pkgVersion=(d2,up=4)=>{let p=join23(d2,"package.json");if(existsSync28(p))return JSON.parse(readFileSync20(p,"utf8")).version;return up>0?pkgVersion(dirname14(d2),up-1):"0.0.0"},VERSION=pkgVersion(import.meta.dirname);function parseLaunch(argv){let splash=!0,gateway,mode2="new",profile,sid2;for(let i=0;i<argv.length;i++){let a=argv[i];if(a==="--no-splash"){splash=!1;continue}if(a==="--gateway-url"){let next2=argv[i+1];if(!next2||next2.startsWith("-"))throw Error("--gateway-url requires a URL");gateway=next2,i++;continue}if(a==="--profile"){let next2=argv[i+1];if(!next2||next2.startsWith("-"))throw Error("--profile requires a name");profile=next2,i++;continue}if(a==="-c"||a==="--continue"){mode2="resume";continue}if(a==="--resume"){let next2=argv[i+1];if(mode2="resume",next2&&!next2.startsWith("-"))sid2=next2,i++}}if(mode2==="resume")return{...gateway?{gateway}:{},mode:mode2,...profile?{profile}:{},...sid2?{sid:sid2}:{},splash};return{...gateway?{gateway}:{},mode:mode2,...profile?{profile}:{},splash}}var HELP3=`herm \u2014 OpenTUI client for hermes-agent
|
|
4149
4149
|
|
|
4150
4150
|
Usage:
|
|
4151
4151
|
herm start a fresh session
|
|
@@ -4156,7 +4156,7 @@ Usage:
|
|
|
4156
4156
|
herm --no-splash skip the launch splash
|
|
4157
4157
|
herm -v, --version print version
|
|
4158
4158
|
herm -h, --help show this help
|
|
4159
|
-
`;var TIERS=["block","slick","tiny"],pickFont=(innerW)=>TIERS.find((f)=>measureText({text:"HERM",font:f}).width<=innerW)??"tiny",clip=(s,w2)=>[...s].length<=w2?s:[...s].slice(0,Math.max(1,w2-1)).join("")+"\u2026";function Splash(p){let theme=useTheme().theme,ref=import_react124.useRef(null),[box2,setBox]=import_react124.useState({w:0,h:0}),renderer=useRenderer();import_react124.useEffect(()=>{let cb=async()=>{let r=ref.current;if(!r)return;setBox((b2)=>b2.w===r.width&&b2.h===r.height?b2:{w:r.width,h:r.height})};return renderer.setFrameCallback(cb),()=>renderer.removeFrameCallback(cb)},[renderer]);let{lines:lines3,inner}=import_react124.useMemo(()=>frame(box2.w,box2.h),[box2.w,box2.h]),font=import_react124.useMemo(()=>pickFont(inner.w),[inner.w]),[tip2,setTip]=import_react124.useState(()=>randomTip()),behind=p.info?.behind,count3=behind==null||behind<0?null:behind===0?"up to date":`${behind} behind`,sub2=[`v${VERSION}`,p.info?`hermes ${p.info.agentVersion??"?"}`:"\u2026",count3,p.info?.model].filter(Boolean).join(" \xB7 "),prompt=p.last&&!p.composing,title=p.last?.title?.trim()||p.last?.id;return $jsxs("box",{ref,position:"absolute",left:0,top:0,right:0,bottom:0,zIndex:50,backgroundColor:theme.background,children:[lines3.map((l,i)=>$jsx("box",{position:"absolute",top:i,left:0,height:1,children:$jsx("text",{fg:theme.accent,children:l})},i)),lines3.length>0&&$jsxs("box",{position:"absolute",left:inner.x,top:inner.y,width:inner.w,height:inner.h,flexDirection:"column",alignItems:"center",justifyContent:"center",children:[$jsx("box",{children:$jsx("ascii-font",{text:"HERM",font,color:[theme.accent,theme.textMuted],selectable:!1})}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:clip(sub2,inner.w)})}),p.news?$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:clip(`\u203A ${p.news}`,inner.w)})}):null,$jsx("box",{height:2}),p.loading?$jsx("text",{fg:theme.textMuted,children:$jsx("span",{fg:theme.accent,children:"Loading\u2026"})}):prompt?$jsxs($Fragment,{children:[$jsxs("text",{fg:theme.textMuted,children:["continue ",$jsxs("span",{fg:theme.text,children:['"',clip(title??"",Math.max(8,inner.w-14)),'"']})," ?"]}),$jsxs("text",{fg:theme.textMuted,children:[$jsx("span",{fg:theme.accent,children:"[enter]"})," yes \xB7 type to start fresh"]})]}):$jsxs("text",{fg:theme.textMuted,children:[$jsx("span",{fg:theme.accent,children:"[enter]"})," to send"]}),inner.h>=14?$jsx("box",{position:"absolute",bottom:0,left:0,right:0,flexDirection:"column",alignItems:"center",onMouseDown:()=>setTip((t2)=>randomTip(t2)),children:$jsx("text",{wrapMode:"word",children:splitTip(clip(tip2,inner.w*2)).map((s,i)=>$jsx("span",{fg:s.hl?theme.accent:theme.textMuted,children:s.t},i))})}):null]})]})}init_sessions_db();var LOCAL_COMMANDS=[{name:"clear",description:"Clear chat messages",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"new",description:"Start a new session",category:"Client",aliases:["reset"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"theme",description:"Switch color theme or mode",category:"Client",aliases:[],argsHint:"[name|light|dark]",subcommands:[],source:"local",target:"local"},{name:"help",description:"Show keyboard shortcuts",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"keys",description:"Rebind keyboard shortcuts",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"logs",description:"Show gateway stderr log",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"title",description:"Set session title",category:"Client",aliases:[],argsHint:"[text]",subcommands:[],source:"local",target:"local"},{name:"rollback",description:"Browse & restore checkpoints",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"history",description:"Server-side transcript viewer",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"status",description:"Version, model, paths",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"usage",description:"Credits, account status, tokens, context fill, cost",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"profile",description:"Active profile details",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"journey",description:"Open the learning journey graph",category:"Info",aliases:["learning","memory-graph"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"steer",description:"Inject a note mid-turn (no interrupt)",category:"Session",aliases:[],argsHint:"[text]",subcommands:[],source:"local",target:"local"},{name:"reload-mcp",description:"Restart MCP servers & rediscover tools",category:"Session",aliases:[],argsHint:"[now|always]",subcommands:["now","always"],source:"local",target:"local"},{name:"reload",description:"Hot-reload ~/.hermes/.env (API keys)",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"reload-skills",description:"Re-scan ~/.hermes/skills/ for added/removed skills",category:"Session",aliases:["reload_skills"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"chafa",description:"Render image via chafa (demo)",category:"Client",aliases:[],argsHint:"<path>",subcommands:[],source:"local",target:"local"},{name:"splash",description:"Show the launch splash",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"goal",description:"Set/control the session goal",category:"Session",aliases:[],argsHint:"[text|done|pause|resume|clear|status]",subcommands:["done","pause","resume","clear","status"],source:"command",target:"gateway"},{name:"skin",description:"Switch Hermes skin (+ theme + eikon)",category:"Client",aliases:[],argsHint:"[name]",subcommands:[...SKINS],source:"local",target:"local"},{name:"voice",description:"Toggle voice recording",category:"Client",aliases:[],argsHint:"[on|off|status|tts]",subcommands:["on","off","status","tts"],source:"local",target:"local"},{name:"queue",description:"Queue a prompt for the next idle turn",category:"Session",aliases:["q"],argsHint:"[text]",subcommands:[],source:"local",target:"local"},{name:"yolo",description:"Toggle approval bypass",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"quit",description:"Exit herm",category:"Exit",aliases:["exit"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"stash",description:"Park the prompt (pop/list to restore)",category:"Client",aliases:[],argsHint:"[pop|list]",subcommands:["pop","list"],source:"local",target:"local"},{name:"undo",description:"Remove the last conversation turn",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"redo",description:"Re-send the last undone message",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"retry",description:"Rewind and re-send the last user turn",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"setup",description:"Show setup guidance",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"branch",description:"Fork current conversation",category:"Session",aliases:["fork"],argsHint:"[name]",subcommands:[],source:"local",target:"local"},{name:"compress",description:"Compress conversation context",category:"Session",aliases:["compact"],argsHint:"[here [N] | focus topic | --preview|--dry-run]",subcommands:[],source:"local",target:"local"},{name:"browser",description:"Connect/disconnect a CDP browser",category:"Session",aliases:[],argsHint:"[connect|disconnect|status] [url]",subcommands:["connect","disconnect","status"],source:"local",target:"local"}];function fallbacks(){return LOCAL_COMMANDS.map((c)=>c.name==="skin"?{...c,subcommands:skins()}:c)}var INTERCEPT=["save","resume","model","copy","paste","image","background","mouse","redraw"],LOCAL_NAMES=new Set([...LOCAL_COMMANDS.filter((command)=>command.target==="local").map((command)=>command.name),...INTERCEPT]);function resolve9(list3,name){let q5=name.toLowerCase();for(let c of list3)if(c.name.toLowerCase()===q5||c.aliases.some((a)=>a.toLowerCase()===q5))return{hit:c};let hits=new Set;for(let c of list3)for(let n of[c.name,...c.aliases])if(n.toLowerCase().startsWith(q5)){hits.add(c);break}if(hits.size===1)return{hit:[...hits][0]};if(hits.size===0)return{miss:!0};return{ambiguous:[...hits].map((c)=>`/${c.name}`).sort()}}function matchSub(list3,input){let m2=input.match(/^\/(\w+)\s+(\S*)$/);if(!m2)return null;let name=m2[1],sub2=m2[2],cmd=list3.find((c)=>c.name===name||c.aliases.includes(name));if(!cmd||cmd.subcommands.length===0)return null;let q5=sub2.toLowerCase(),matches=cmd.subcommands.filter((s)=>s.toLowerCase().startsWith(q5));if(matches.length===0)return null;return matches.map((s)=>({...cmd,name:`${cmd.name} ${s}`,description:`${cmd.name} \u2192 ${s}`,argsHint:"",subcommands:[]}))}var CATEGORY_ORDER=["Client","Session","Configuration","Config","Tools & Skills","Skills","Plugins","MCP","Info","Exit"];function sort(list3){let idx=(c)=>{let i=CATEGORY_ORDER.indexOf(c);return i<0?999:i};return[...list3].sort((a,b2)=>{let ca=idx(a.category)-idx(b2.category);return ca!==0?ca:a.name.localeCompare(b2.name)})}var import_react126=__toESM(require_react_production(),1);var bare=(s)=>s[0]==="/"?s.slice(1):s;function useSlashCommands(){let gw=useGateway(),ready=useGatewayReady(),[cmds,setCmds]=import_react126.useState(fallbacks),fetch2=import_react126.useCallback(async()=>{let res=await gw.request("commands.catalog").catch(()=>null),fallback=fallbacks();if(!res){setCmds(fallback);return}let cat=new Map;for(let g of res.categories??[])for(let[n]of g.pairs??[])cat.set(bare(n),g.name);let alias=new Map,addAlias=(name,value2)=>{let k2=bare(name),v2=bare(value2);if(k2===v2)return;let list3=alias.get(k2)??[];if(!list3.includes(v2))alias.set(k2,[...list3,v2])};for(let l of fallback)for(let a of l.aliases)addAlias(l.name,a);for(let[a,c]of Object.entries(res.canon??{}))addAlias(c,a);let sub2=new Map(Object.entries(res.sub??{}).map(([k2,v2])=>[bare(k2),v2])),local=new Map(fallback.map((c)=>[c.name,c])),remote2=(res.pairs??[]).map(([raw2,desc])=>{let name=bare(raw2),l=local.get(name),description=name==="quit"?desc.replace(/\s*\(usage:[^)]*\)\s*$/,""):desc;return{name,description,category:cat.get(name)??(name.includes(":")?"Skills":"Command"),aliases:alias.get(name)??[],argsHint:l?.argsHint??"",subcommands:sub2.get(name)??l?.subcommands??[],source:"command",target:LOCAL_NAMES.has(name)?"local":"gateway"}}),seen=new Set(remote2.map((c)=>c.name)),locals=fallback.filter((c)=>!seen.has(c.name));setCmds(sort([...locals,...remote2]))},[gw]);return import_react126.useEffect(()=>{if(ready)fetch2()},[ready,fetch2]),{cmds,refresh:fetch2}}var import_react140=__toESM(require_react_production(),1);var import_react127=__toESM(require_react_production(),1);var GROUPS2=[{title:"Global",scope:"global"},{title:"Composer",scope:"composer"},{title:"Lists",scope:"list"},{title:"Dialogs",scope:"dialog"},{title:"Sessions",scope:"sessions"},{title:"Agents",scope:"agents"},{title:"Config",scope:"config"},{title:"Eikon",scope:"eikon"}],COLS3=2,HelpDialog=()=>{let theme=useTheme().theme,keys=useKeys(),sections2=import_react127.useMemo(()=>GROUPS2.map((g)=>({title:g.title,rows:keys.all(g.scope).filter((e)=>e.id!=="leader"&&e.chord.length>0).map((e)=>[keys.print(e.id),e.desc])})).filter((s)=>s.rows.length>0),[keys]),total=sections2.reduce((n,s)=>n+s.rows.length+2,0),split2=Math.ceil(total/COLS3),cols2=[[],[]],acc2=0;for(let s of sections2){let h2=s.rows.length+2,i=acc2+h2<=split2||cols2[0].length===0?0:1;if(cols2[i].push(s),i===0)acc2+=h2}return $jsxs("box",{flexDirection:"column",width:104,children:[$jsxs("box",{height:1,flexDirection:"row",children:[$jsx("box",{flexGrow:1,children:$jsx("text",{fg:theme.text,children:$jsx("strong",{children:"Keyboard Shortcuts"})})}),$jsx("text",{fg:theme.textMuted,children:`leader = ${keys.print("leader")}`})]}),$jsx("box",{height:1}),$jsx("box",{flexDirection:"row",gap:3,children:cols2.map((col,ci)=>$jsx("box",{flexDirection:"column",flexGrow:1,flexBasis:0,children:col.map((s)=>$jsxs("box",{flexDirection:"column",marginBottom:1,children:[$jsx("text",{fg:theme.primary,children:$jsx("strong",{children:s.title})}),s.rows.map(([chord,desc])=>$jsxs("box",{flexDirection:"row",height:1,paddingLeft:1,children:[$jsx("box",{width:14,children:$jsx("text",{fg:theme.accent,children:chord})}),$jsx("box",{flexGrow:1,minWidth:0,height:1,overflow:"hidden",children:$jsx("text",{fg:theme.textMuted,children:desc})})]},chord+desc))]},s.title))},ci))}),$jsx("text",{fg:theme.textMuted,children:"esc to close"})]})};var import_react128=__toESM(require_react_production(),1);import{existsSync as existsSync29,readFileSync as readFileSync21}from"fs";import{homedir as homedir8}from"os";import{join as join24}from"path";var OC_TO_HERM=[["leader","leader"],["app_exit","app.exit"],["terminal_suspend","app.suspend"],["sidebar_toggle","app.sidebar"],["command_list","palette.open"],["editor_open","editor.open"],["theme_list","theme.pick"],["model_list","model.pick"],["status_view","status.open"],["session_new","session.new"],["session_compact","session.compress"],["session_timeline","session.timeline"],["session_interrupt","session.interrupt"],["session_rename","sessions.rename"],["messages_copy","reply.copy"],["messages_redo","session.redo"],["input_clear","input.clear"],["input_submit","input.submit"],["input_newline","input.newline"],["input_paste","clipboard.attach"]],TABLE=new Map(OC_TO_HERM),ocPaths=(cwd=process.cwd())=>[join24(homedir8(),".config","opencode","tui.json"),join24(cwd,"tui.json"),join24(cwd,".opencode","tui.json"),join24(cwd,"opencode.json")],read3=(p)=>{if(!existsSync29(p))return{};return JSON.parse(readFileSync21(p,"utf8")).keybinds??{}},loadOcKeybinds=(cwd)=>{let merged={},sources=[];for(let p of ocPaths(cwd)){let kb=read3(p);if(Object.keys(kb).length===0)continue;Object.assign(merged,kb),sources.push(p)}let overrides={},skipped=[];for(let[oc,chord]of Object.entries(merged)){let herm=TABLE.get(oc);if(herm)overrides[herm]=chord;else skipped.push(oc)}return{overrides,skipped,sources}};var GROUPS3=[{title:"Global",scope:"global"},{title:"Composer",scope:"composer"},{title:"Lists",scope:"list"},{title:"Dialogs",scope:"dialog"},{title:"Sessions",scope:"sessions"},{title:"Agents",scope:"agents"},{title:"Config",scope:"config"}],KeysDialog=(props)=>{let theme=useTheme().theme,keys=useKeys(),toast=useToast(),overrides=exports_preferences.get("keys")??{},rows3=import_react128.useMemo(()=>GROUPS3.flatMap((g)=>{let entries2=keys.all(g.scope).filter((e)=>e.id!=="leader");if(entries2.length===0)return[];return[{type:"header",title:g.title},...entries2.map((e)=>({type:"action",id:e.id,desc:e.desc,chord:e.chord,override:overrides[e.id]!==void 0}))]}),[keys,overrides]),actionRows=rows3.map((r,i)=>({r,i})).filter((x2)=>x2.r.type==="action"),[sel,setSel]=import_react128.useState(0),cur=actionRows[sel]?.r,curConflicts=cur?conflictsWith(keys.table,cur.id):[],write=(id,value2)=>{let next2={...exports_preferences.get("keys")??{}};if(value2===void 0)delete next2[id];else next2[id]=value2;exports_preferences.set("keys",next2)},rebind=(id)=>{let now=overrides[id]??DEFAULTS2[id].chord;openTextPrompt(props.dialog,{title:`Rebind ${id}`,label:"Chord (e.g. ctrl+k, <leader>m, shift+return; empty = unbind)",initial:now}).then((v2)=>{if(openKeys(props.dialog),v2===null)return;let parsed=parse2(v2);write(id,parsed.length===0?"none":v2)})},importOc=()=>{let r=loadOcKeybinds();if(r.sources.length===0)return toast.show({variant:"info",message:"No opencode tui.json found"});let n=Object.keys(r.overrides).length;openConfirm(props.dialog,{title:`Import ${n} keybind${n===1?"":"s"} from opencode?`,body:`${r.sources.map((s)=>`\xB7 ${s}`).join(`
|
|
4159
|
+
`;var TIERS=["block","slick","tiny"],pickFont=(innerW)=>TIERS.find((f)=>measureText({text:"HERM",font:f}).width<=innerW)??"tiny",clip=(s,w2)=>[...s].length<=w2?s:[...s].slice(0,Math.max(1,w2-1)).join("")+"\u2026";function Splash(p){let theme=useTheme().theme,ref=import_react124.useRef(null),[box2,setBox]=import_react124.useState({w:0,h:0}),renderer=useRenderer();import_react124.useEffect(()=>{let cb=async()=>{let r=ref.current;if(!r)return;setBox((b2)=>b2.w===r.width&&b2.h===r.height?b2:{w:r.width,h:r.height})};return renderer.setFrameCallback(cb),()=>renderer.removeFrameCallback(cb)},[renderer]);let{lines:lines3,inner}=import_react124.useMemo(()=>frame(box2.w,box2.h),[box2.w,box2.h]),font=import_react124.useMemo(()=>pickFont(inner.w),[inner.w]),[tip2,setTip]=import_react124.useState(()=>exports_tips.randomTip()),behind=p.info?.behind,count3=behind==null||behind<0?null:behind===0?"up to date":`${behind} behind`,sub2=[`v${VERSION}`,p.info?`hermes ${p.info.agentVersion??"?"}`:"\u2026",count3,p.info?.model].filter(Boolean).join(" \xB7 "),prompt=p.last&&!p.composing,title=p.last?.title?.trim()||p.last?.id;return $jsxs("box",{ref,position:"absolute",left:0,top:0,right:0,bottom:0,zIndex:50,backgroundColor:theme.background,children:[lines3.map((l,i)=>$jsx("box",{position:"absolute",top:i,left:0,height:1,children:$jsx("text",{fg:theme.accent,children:l})},i)),lines3.length>0&&$jsxs("box",{position:"absolute",left:inner.x,top:inner.y,width:inner.w,height:inner.h,flexDirection:"column",alignItems:"center",justifyContent:"center",children:[$jsx("box",{children:$jsx("ascii-font",{text:"HERM",font,color:[theme.accent,theme.textMuted],selectable:!1})}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:clip(sub2,inner.w)})}),p.news?$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:clip(`\u203A ${p.news}`,inner.w)})}):null,$jsx("box",{height:2}),p.loading?$jsx("text",{fg:theme.textMuted,children:$jsx("span",{fg:theme.accent,children:"Loading\u2026"})}):prompt?$jsxs($Fragment,{children:[$jsxs("text",{fg:theme.textMuted,children:["continue ",$jsxs("span",{fg:theme.text,children:['"',clip(title??"",Math.max(8,inner.w-14)),'"']})," ?"]}),$jsxs("text",{fg:theme.textMuted,children:[$jsx("span",{fg:theme.accent,children:"[enter]"})," yes \xB7 type to start fresh"]})]}):$jsxs("text",{fg:theme.textMuted,children:[$jsx("span",{fg:theme.accent,children:"[enter]"})," to send"]}),inner.h>=14?$jsx("box",{position:"absolute",bottom:0,left:0,right:0,flexDirection:"column",alignItems:"center",onMouseDown:()=>setTip((t2)=>exports_tips.randomTip(t2)),children:$jsx("text",{wrapMode:"word",children:exports_tips.splitTip(clip(tip2,inner.w*2)).map((s,i)=>$jsx("span",{fg:s.hl?theme.accent:theme.textMuted,children:s.t},i))})}):null]})]})}init_sessions_db();var LOCAL_COMMANDS=[{name:"clear",description:"Clear chat messages",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"new",description:"Start a new session",category:"Client",aliases:["reset"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"theme",description:"Switch color theme or mode",category:"Client",aliases:[],argsHint:"[name|light|dark]",subcommands:[],source:"local",target:"local"},{name:"help",description:"Show keyboard shortcuts",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"keys",description:"Rebind keyboard shortcuts",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"logs",description:"Show gateway stderr log",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"title",description:"Set session title",category:"Client",aliases:[],argsHint:"[text]",subcommands:[],source:"local",target:"local"},{name:"rollback",description:"Browse & restore checkpoints",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"history",description:"Server-side transcript viewer",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"status",description:"Version, model, paths",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"usage",description:"Credits, account status, tokens, context fill, cost",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"profile",description:"Active profile details",category:"Info",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"journey",description:"Open the learning journey graph",category:"Info",aliases:["learning","memory-graph"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"steer",description:"Inject a note mid-turn (no interrupt)",category:"Session",aliases:[],argsHint:"[text]",subcommands:[],source:"local",target:"local"},{name:"reload-mcp",description:"Restart MCP servers & rediscover tools",category:"Session",aliases:[],argsHint:"[now|always]",subcommands:["now","always"],source:"local",target:"local"},{name:"reload",description:"Hot-reload ~/.hermes/.env (API keys)",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"reload-skills",description:"Re-scan ~/.hermes/skills/ for added/removed skills",category:"Session",aliases:["reload_skills"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"chafa",description:"Render image via chafa (demo)",category:"Client",aliases:[],argsHint:"<path>",subcommands:[],source:"local",target:"local"},{name:"splash",description:"Show the launch splash",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"goal",description:"Set/control the session goal",category:"Session",aliases:[],argsHint:"[text|done|pause|resume|clear|status]",subcommands:["done","pause","resume","clear","status"],source:"command",target:"gateway"},{name:"skin",description:"Switch Hermes skin (+ theme + eikon)",category:"Client",aliases:[],argsHint:"[name]",subcommands:[...SKINS],source:"local",target:"local"},{name:"voice",description:"Toggle voice recording",category:"Client",aliases:[],argsHint:"[on|off|status|tts]",subcommands:["on","off","status","tts"],source:"local",target:"local"},{name:"queue",description:"Queue a prompt for the next idle turn",category:"Session",aliases:["q"],argsHint:"[text]",subcommands:[],source:"local",target:"local"},{name:"yolo",description:"Toggle approval bypass",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"quit",description:"Exit herm",category:"Exit",aliases:["exit"],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"stash",description:"Park the prompt (pop/list to restore)",category:"Client",aliases:[],argsHint:"[pop|list]",subcommands:["pop","list"],source:"local",target:"local"},{name:"undo",description:"Remove the last conversation turn",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"redo",description:"Re-send the last undone message",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"retry",description:"Rewind and re-send the last user turn",category:"Session",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"setup",description:"Show setup guidance",category:"Client",aliases:[],argsHint:"",subcommands:[],source:"local",target:"local"},{name:"branch",description:"Fork current conversation",category:"Session",aliases:["fork"],argsHint:"[name]",subcommands:[],source:"local",target:"local"},{name:"compress",description:"Compress conversation context",category:"Session",aliases:["compact"],argsHint:"[here [N] | focus topic | --preview|--dry-run]",subcommands:[],source:"local",target:"local"},{name:"browser",description:"Connect/disconnect a CDP browser",category:"Session",aliases:[],argsHint:"[connect|disconnect|status] [url]",subcommands:["connect","disconnect","status"],source:"local",target:"local"}];function fallbacks(){return LOCAL_COMMANDS.map((c)=>c.name==="skin"?{...c,subcommands:skins()}:c)}var INTERCEPT=["save","resume","model","copy","paste","image","background","mouse","redraw"],LOCAL_NAMES=new Set([...LOCAL_COMMANDS.filter((command)=>command.target==="local").map((command)=>command.name),...INTERCEPT]);function resolve9(list3,name){let q5=name.toLowerCase();for(let c of list3)if(c.name.toLowerCase()===q5||c.aliases.some((a)=>a.toLowerCase()===q5))return{hit:c};let hits=new Set;for(let c of list3)for(let n of[c.name,...c.aliases])if(n.toLowerCase().startsWith(q5)){hits.add(c);break}if(hits.size===1)return{hit:[...hits][0]};if(hits.size===0)return{miss:!0};return{ambiguous:[...hits].map((c)=>`/${c.name}`).sort()}}function matchSub(list3,input){let m2=input.match(/^\/(\w+)\s+(\S*)$/);if(!m2)return null;let name=m2[1],sub2=m2[2],cmd=list3.find((c)=>c.name===name||c.aliases.includes(name));if(!cmd||cmd.subcommands.length===0)return null;let q5=sub2.toLowerCase(),matches=cmd.subcommands.filter((s)=>s.toLowerCase().startsWith(q5));if(matches.length===0)return null;return matches.map((s)=>({...cmd,name:`${cmd.name} ${s}`,description:`${cmd.name} \u2192 ${s}`,argsHint:"",subcommands:[]}))}var CATEGORY_ORDER=["Client","Session","Configuration","Config","Tools & Skills","Skills","Plugins","MCP","Info","Exit"];function sort(list3){let idx=(c)=>{let i=CATEGORY_ORDER.indexOf(c);return i<0?999:i};return[...list3].sort((a,b2)=>{let ca=idx(a.category)-idx(b2.category);return ca!==0?ca:a.name.localeCompare(b2.name)})}var import_react126=__toESM(require_react_production(),1);var bare=(s)=>s[0]==="/"?s.slice(1):s;function useSlashCommands(){let gw=useGateway(),ready=useGatewayReady(),[cmds,setCmds]=import_react126.useState(fallbacks),fetch2=import_react126.useCallback(async()=>{let res=await gw.request("commands.catalog").catch(()=>null),fallback=fallbacks();if(!res){setCmds(fallback);return}let cat=new Map;for(let g of res.categories??[])for(let[n]of g.pairs??[])cat.set(bare(n),g.name);let alias=new Map,addAlias=(name,value2)=>{let k2=bare(name),v2=bare(value2);if(k2===v2)return;let list3=alias.get(k2)??[];if(!list3.includes(v2))alias.set(k2,[...list3,v2])};for(let l of fallback)for(let a of l.aliases)addAlias(l.name,a);for(let[a,c]of Object.entries(res.canon??{}))addAlias(c,a);let sub2=new Map(Object.entries(res.sub??{}).map(([k2,v2])=>[bare(k2),v2])),local=new Map(fallback.map((c)=>[c.name,c])),remote2=(res.pairs??[]).map(([raw2,desc])=>{let name=bare(raw2),l=local.get(name),description=name==="quit"?desc.replace(/\s*\(usage:[^)]*\)\s*$/,""):desc;return{name,description,category:cat.get(name)??(name.includes(":")?"Skills":"Command"),aliases:alias.get(name)??[],argsHint:l?.argsHint??"",subcommands:sub2.get(name)??l?.subcommands??[],source:"command",target:LOCAL_NAMES.has(name)?"local":"gateway"}}),seen=new Set(remote2.map((c)=>c.name)),locals=fallback.filter((c)=>!seen.has(c.name));setCmds(sort([...locals,...remote2]))},[gw]);return import_react126.useEffect(()=>{if(ready)fetch2()},[ready,fetch2]),{cmds,refresh:fetch2}}var import_react140=__toESM(require_react_production(),1);var import_react127=__toESM(require_react_production(),1);var GROUPS2=[{title:"Global",scope:"global"},{title:"Composer",scope:"composer"},{title:"Lists",scope:"list"},{title:"Dialogs",scope:"dialog"},{title:"Sessions",scope:"sessions"},{title:"Agents",scope:"agents"},{title:"Config",scope:"config"},{title:"Eikon",scope:"eikon"}],COLS3=2,HelpDialog=()=>{let theme=useTheme().theme,keys=useKeys(),sections2=import_react127.useMemo(()=>GROUPS2.map((g)=>({title:g.title,rows:keys.all(g.scope).filter((e)=>e.id!=="leader"&&e.chord.length>0).map((e)=>[keys.print(e.id),e.desc])})).filter((s)=>s.rows.length>0),[keys]),total=sections2.reduce((n,s)=>n+s.rows.length+2,0),split2=Math.ceil(total/COLS3),cols2=[[],[]],acc2=0;for(let s of sections2){let h2=s.rows.length+2,i=acc2+h2<=split2||cols2[0].length===0?0:1;if(cols2[i].push(s),i===0)acc2+=h2}return $jsxs("box",{flexDirection:"column",width:104,children:[$jsxs("box",{height:1,flexDirection:"row",children:[$jsx("box",{flexGrow:1,children:$jsx("text",{fg:theme.text,children:$jsx("strong",{children:"Keyboard Shortcuts"})})}),$jsx("text",{fg:theme.textMuted,children:`leader = ${keys.print("leader")}`})]}),$jsx("box",{height:1}),$jsx("box",{flexDirection:"row",gap:3,children:cols2.map((col,ci)=>$jsx("box",{flexDirection:"column",flexGrow:1,flexBasis:0,children:col.map((s)=>$jsxs("box",{flexDirection:"column",marginBottom:1,children:[$jsx("text",{fg:theme.primary,children:$jsx("strong",{children:s.title})}),s.rows.map(([chord,desc])=>$jsxs("box",{flexDirection:"row",height:1,paddingLeft:1,children:[$jsx("box",{width:14,children:$jsx("text",{fg:theme.accent,children:chord})}),$jsx("box",{flexGrow:1,minWidth:0,height:1,overflow:"hidden",children:$jsx("text",{fg:theme.textMuted,children:desc})})]},chord+desc))]},s.title))},ci))}),$jsx("text",{fg:theme.textMuted,children:"esc to close"})]})};var import_react128=__toESM(require_react_production(),1);import{existsSync as existsSync29,readFileSync as readFileSync21}from"fs";import{homedir as homedir8}from"os";import{join as join24}from"path";var OC_TO_HERM=[["leader","leader"],["app_exit","app.exit"],["terminal_suspend","app.suspend"],["sidebar_toggle","app.sidebar"],["command_list","palette.open"],["editor_open","editor.open"],["theme_list","theme.pick"],["model_list","model.pick"],["status_view","status.open"],["session_new","session.new"],["session_compact","session.compress"],["session_timeline","session.timeline"],["session_interrupt","session.interrupt"],["session_rename","sessions.rename"],["messages_copy","reply.copy"],["messages_redo","session.redo"],["input_clear","input.clear"],["input_submit","input.submit"],["input_newline","input.newline"],["input_paste","clipboard.attach"]],TABLE2=new Map(OC_TO_HERM),ocPaths=(cwd=process.cwd(),home5=homedir8())=>[join24(home5,".config","opencode","tui.json"),join24(cwd,"tui.json"),join24(cwd,".opencode","tui.json"),join24(cwd,"opencode.json")],read3=(p)=>{if(!existsSync29(p))return{};return JSON.parse(readFileSync21(p,"utf8")).keybinds??{}},loadOcKeybinds=(cwd,home5)=>{let merged={},sources=[];for(let p of ocPaths(cwd,home5)){let kb=read3(p);if(Object.keys(kb).length===0)continue;Object.assign(merged,kb),sources.push(p)}let overrides={},skipped=[];for(let[oc,chord]of Object.entries(merged)){let herm=TABLE2.get(oc);if(herm)overrides[herm]=chord;else skipped.push(oc)}return{overrides,skipped,sources}};var GROUPS3=[{title:"Global",scope:"global"},{title:"Composer",scope:"composer"},{title:"Lists",scope:"list"},{title:"Dialogs",scope:"dialog"},{title:"Sessions",scope:"sessions"},{title:"Agents",scope:"agents"},{title:"Config",scope:"config"}],KeysDialog=(props)=>{let theme=useTheme().theme,keys=useKeys(),toast=useToast(),overrides=exports_preferences.get("keys")??{},rows3=import_react128.useMemo(()=>GROUPS3.flatMap((g)=>{let entries2=keys.all(g.scope).filter((e)=>e.id!=="leader");if(entries2.length===0)return[];return[{type:"header",title:g.title},...entries2.map((e)=>({type:"action",id:e.id,desc:e.desc,chord:e.chord,override:overrides[e.id]!==void 0}))]}),[keys,overrides]),actionRows=rows3.map((r,i)=>({r,i})).filter((x2)=>x2.r.type==="action"),[sel,setSel]=import_react128.useState(0),cur=actionRows[sel]?.r,curConflicts=cur?conflictsWith(keys.table,cur.id):[],write=(id,value2)=>{let next2={...exports_preferences.get("keys")??{}};if(value2===void 0)delete next2[id];else next2[id]=value2;exports_preferences.set("keys",next2)},rebind=(id)=>{let now=overrides[id]??DEFAULTS2[id].chord;openTextPrompt(props.dialog,{title:`Rebind ${id}`,label:"Chord (e.g. ctrl+k, <leader>m, shift+return; empty = unbind)",initial:now}).then((v2)=>{if(openKeys(props.dialog),v2===null)return;let parsed=parse2(v2);write(id,parsed.length===0?"none":v2)})},importOc=()=>{let r=loadOcKeybinds();if(r.sources.length===0)return toast.show({variant:"info",message:"No opencode tui.json found"});let n=Object.keys(r.overrides).length;openConfirm(props.dialog,{title:`Import ${n} keybind${n===1?"":"s"} from opencode?`,body:`${r.sources.map((s)=>`\xB7 ${s}`).join(`
|
|
4160
4160
|
`)}
|
|
4161
4161
|
|
|
4162
4162
|
${n} mapped \xB7 ${r.skipped.length} skipped (no herm equivalent)${r.skipped.length?`:
|
|
@@ -4172,9 +4172,9 @@ ${r.skipped.slice(0,8).join(", ")}${r.skipped.length>8?", \u2026":""}`:""}`,yes:
|
|
|
4172
4172
|
`).filter(Boolean).map((l)=>JSON.parse(l)).slice(-MAX)}function save3(list3){mkdirSync7(configDir(),{recursive:!0}),writeFileSync9(file2(),list3.map((e)=>JSON.stringify(e)).join(`
|
|
4173
4173
|
`)+`
|
|
4174
4174
|
`,"utf-8")}function push2(text5){let list3=load5(),at=Math.max(Date.now(),(list3[list3.length-1]?.at??0)+1);if(list3.push({text:text5,at}),list3.length>MAX)list3.shift();return save3(list3),list3.length}function pop2(){let list3=load5(),e=list3.pop();if(!e)return null;return save3(list3),e}function all(){return load5().reverse()}function drop(at){save3(load5().filter((e)=>e.at!==at))}var import_react139=__toESM(require_react_production(),1);var ctx=import_react139.createContext(null),BackgroundProvider=({children:children2})=>{let[jobs,setJobs]=import_react139.useState(()=>new Map),register2=import_react139.useCallback((id,title="")=>{if(!id)return;setJobs((prev)=>{if(prev.get(id)===title)return prev;let next2=new Map(prev);return next2.set(id,title),next2})},[]),unregister=import_react139.useCallback((id)=>{setJobs((prev)=>{if(!prev.has(id))return prev;let next2=new Map(prev);return next2.delete(id),next2})},[]),label2=import_react139.useCallback((id)=>jobs.get(id)?.trim()||void 0,[jobs]),ids3=import_react139.useMemo(()=>Array.from(jobs.keys()),[jobs]),value2=import_react139.useMemo(()=>({count:ids3.length,ids:ids3,register:register2,unregister,label:label2}),[ids3,register2,unregister,label2]);return $jsx(ctx.Provider,{value:value2,children:children2})},useBackground=makeUse(ctx,"useBackground");var initialTurn={messages:[],streaming:!1,hasContent:!1,toolActive:!1};function turnReducer(state3,a){switch(a.kind){case"reset":return initialTurn;case"load":return{...initialTurn,messages:a.messages};case"load.live":return{...initialTurn,messages:a.messages,streaming:a.streaming,hasContent:a.streaming&&Boolean(joinText(a.messages.at(-1)?.parts??[]))};case"push":return{...state3,messages:[...state3.messages,a.message]};case"user":return{...state3,messages:[...state3.messages,userMessage(a.text)]};case"system":return{...state3,messages:[...state3.messages,systemMessage(sanitize(a.text))]};case"background":return{...state3,messages:[...state3.messages,backgroundMessage(a.id,a.title,a.text)]};case"message.start":return{...state3,streaming:!0,hasContent:!1,toolActive:!1};case"message.delta":{let chunk=sanitize(a.chunk);if(!chunk)return state3;return{...state3,hasContent:!0,toolActive:!1,messages:appendText(state3.messages,chunk)}}case"message.complete":return{...state3,streaming:!1,hasContent:!1,toolActive:!1,messages:finalize(state3.messages,a.text!=null?sanitize(a.text):void 0,a.usage)};case"reference":{let text5=sanitize(a.text);if(!text5)return state3;return{...state3,hasContent:!0,toolActive:!1,messages:appendPart(state3.messages,{type:"text",key:pid(),content:text5,streaming:!1},!0)}}case"tool.start":{let preview2=sanitize(a.preview),args=sanitize(a.args),raw2=args||preview2,json2=raw2&&/^\s*\{/.test(raw2),part={type:"tool",id:a.id,name:a.name,args:json2?raw2:"",status:"running",startedAt:Date.now(),preview:preview2||void 0,verboseArgs:args||void 0};return{...state3,toolActive:!0,hasContent:!1,messages:appendPart(state3.messages,part,!0)}}case"tool.progress":return{...state3,messages:updateRunningTool(state3.messages,a.name,(p)=>({...p,preview:sanitize(a.preview)||p.preview}))};case"tool.generating":return{...state3,messages:updateRunningTool(state3.messages,a.name,(p)=>({...p,preview:p.preview??"generating\u2026"}))};case"tool.complete":{let summary2=sanitize(a.summary),error=sanitize(a.error),diff=sanitize(a.inline_diff),result=sanitize(a.result);return{...state3,toolActive:!1,messages:updateToolById(state3.messages,a.id,(p)=>({...p,status:a.error?"error":"done",duration:a.duration??(p.startedAt?Date.now()-p.startedAt:void 0),preview:summary2||diff||p.preview,result:error||summary2||void 0,verboseResult:result||void 0,diff:diff||void 0}))}}case"thinking":return{...state3,messages:upsertThinking(state3.messages,sanitize(a.text),a.final,a.verbose)};case"subagent":return{...state3,messages:renderSubagent(state3.messages,a.event,a.payload)};case"prompt":{let part={type:"prompt",id:a.id,variant:a.req.variant,req:a.req};return{...state3,messages:appendPart(state3.messages,part,!0)}}case"prompt.answered":return{...state3,messages:updatePrompt(state3.messages,a.id,(p)=>({...p,answered:{label:a.label,ok:a.ok,at:Date.now(),question:promptQuestion(p.req)}}))};case"error":{let msg=systemMessage(`Error: ${sanitize(a.text)}`);if(a.fatal===!1)return{...state3,messages:[...state3.messages,msg]};return{...state3,streaming:!1,hasContent:!1,toolActive:!1,messages:[...state3.messages,msg]}}case"interrupt.notice":{let clean5=sanitize(a.text),last4=state3.messages[state3.messages.length-1];if(last4?.role==="system"&&last4.parts[0]?.type==="text"&&last4.parts[0].content.includes(clean5))return state3;return{...state3,messages:[...state3.messages,systemMessage(clean5)]}}}}function userMessage(text5){return{id:mid(),role:"user",parts:[{type:"text",content:text5,streaming:!1}],timestamp:Date.now()/1000}}function systemMessage(text5){return{id:mid(),role:"system",parts:[{type:"text",content:text5,streaming:!1}],timestamp:Date.now()/1000}}function clip2(text5,max){return text5.length<=max?text5:text5.slice(0,max-1)+"\u2026"}function label2(text5,max){return clip2(sanitize(text5).replace(/\s+/g," ").trim(),max)}function backgroundMessage(id,title,text5){let tid=label2(id,32)||"?",name=label2(title,80);return{id:mid(),role:"assistant",speaker:`[bg ${tid}]${name?` ${name}`:""}`,parts:[{type:"text",content:sanitize(text5),streaming:!1}],timestamp:Date.now()/1000}}function flatten3(text5){if(typeof text5==="string")return text5;if(!Array.isArray(text5))return"";let out=[];for(let p of text5)if(p&&typeof p==="object"&&"type"in p&&p.type==="text"&&"text"in p&&typeof p.text==="string")out.push(p.text);return out.join(`
|
|
4175
|
-
`)}function transcriptToMessages(rows3){return rows3.filter((r)=>r.role==="user"||r.role==="assistant").map((r)=>({role:r.role,content:sanitize(flatten3(r.text))})).filter((r)=>r.content).map((r)=>({id:mid(),role:r.role,parts:[{type:"text",content:r.content,streaming:!1}],timestamp:Date.now()/1000}))}function assistant(parts2){return{id:mid(),role:"assistant",parts:parts2,timestamp:Date.now()/1000}}function withLastAssistant(messages,fn,otherwise){let last4=messages[messages.length-1];if(last4?.role==="assistant")return[...messages.slice(0,-1),fn(last4)];return[...messages,otherwise()]}function seal(parts2){let last4=parts2[parts2.length-1];if(last4?.type==="text"&&last4.streaming)return[...parts2.slice(0,-1),{...last4,streaming:!1}];return parts2}function appendText(messages,chunk){return withLastAssistant(messages,(m2)=>{let last4=m2.parts[m2.parts.length-1];if(last4?.type==="text"&&last4.streaming){let part={...last4,content:last4.content+chunk};return{...m2,parts:[...m2.parts.slice(0,-1),part]}}return{...m2,parts:[...m2.parts,{type:"text",key:pid(),content:chunk,streaming:!0}]}},()=>assistant([{type:"text",key:pid(),content:chunk,streaming:!0}]))}function appendPart(messages,part,close2){return withLastAssistant(messages,(m2)=>({...m2,parts:[...close2?seal(m2.parts):m2.parts,part]}),()=>assistant([part]))}function finalize(messages,final,usage){let last4=messages[messages.length-1];if(last4?.role==="assistant"){let tail=last4.parts[last4.parts.length-1],dup=final&&last4.parts.some((p)=>p.type==="text"&&sameText(p.content,final)),text5=tail?.type==="text"&&final&&sameText(tail.content,final)?tail.content:final,parts2=tail?.type==="text"&&tail.streaming?[...last4.parts.slice(0,-1),{...tail,content:text5||tail.content,streaming:!1}]:final&&!dup&&!sameText(joinText(last4.parts),final)?[...last4.parts,{type:"text",content:final,streaming:!1}]:seal(last4.parts);return expirePrompts([...messages.slice(0,-1),{...last4,parts:parts2,usage}])}let next2=final?[...messages,{...assistant([{type:"text",content:final,streaming:!1}]),usage}]:messages;return expirePrompts(next2)}function expirePrompts(messages){let at=Date.now();return messages.map((m2)=>m2.role==="assistant"?{...m2,parts:m2.parts.map((p)=>p.type==="prompt"&&!p.answered?{...p,answered:{label:"Timed out",ok:!1,at,question:promptQuestion(p.req)}}:p)}:m2)}function joinText(parts2){return parts2.filter((p)=>p.type==="text").map((p)=>p.content).join("")}function sameText(a,b2){return a.trim()===b2.trim()}function updateRunningTool(messages,name,fn){let last4=messages[messages.length-1];if(!last4||last4.role!=="assistant")return messages;for(let i=last4.parts.length-1;i>=0;i--){let p=last4.parts[i];if(p.type!=="tool"||p.status!=="running")continue;if(name&&p.name!==name)continue;let parts2=[...last4.parts];return parts2[i]=fn(p),[...messages.slice(0,-1),{...last4,parts:parts2}]}return messages}function updateToolById(messages,id,fn){let last4=messages[messages.length-1];if(!last4||last4.role!=="assistant")return messages;let parts2=last4.parts.map((p)=>p.type==="tool"&&p.id===id?fn(p):p);return[...messages.slice(0,-1),{...last4,parts:parts2}]}function updatePrompt(messages,id,fn){return messages.map((m2)=>{if(m2.role!=="assistant")return m2;if(!m2.parts.some((p)=>p.type==="prompt"&&p.id===id))return m2;return{...m2,parts:m2.parts.map((p)=>p.type==="prompt"&&p.id===id?fn(p):p)}})}function promptQuestion(req){if(req.variant==="clarify")return req.question;if(req.variant==="approval")return req.description||"Shell command";if(req.variant==="sudo")return"Sudo required";return req.env_var?`Secret: ${req.env_var}`:"Secret required"}function upsertThinking(messages,text5,final,verbose2){return withLastAssistant(messages,(m2)=>{let idx=m2.parts.findIndex((p)=>p.type==="thinking");if(idx>=0){let prev=m2.parts[idx],content=final?prev.content.trim()||text5:prev.content+text5,parts2=[...m2.parts];return parts2[idx]={...prev,content,streaming:!final,verbose:prev.verbose||verbose2||void 0},{...m2,parts:parts2}}return{...m2,parts:[{type:"thinking",key:pid(),content:text5,streaming:!final,verbose:verbose2},...m2.parts]}},()=>assistant([{type:"thinking",key:pid(),content:text5,streaming:!final,verbose:verbose2}]))}function renderSubagent(messages,event,p){let id=p.subagent_id?`sub-${p.subagent_id}`:`sub-${p.task_index}`;if(event==="start"){let goal=sanitize(p.goal),part={type:"tool",id,name:"delegate_task",args:"",status:"running",startedAt:Date.now(),preview:goal||void 0,goal:goal||void 0,depth:p.depth??0,trail:[]};return appendPart(messages,part,!0)}if(event==="tool"&&p.tool_name){let tname=sanitize(p.tool_name),tprev=sanitize(p.tool_preview);return updateToolById(messages,id,(t2)=>({...t2,trail:[...t2.trail??[],{name:tname,preview:tprev||void 0}],preview:tprev?`${tname}: ${tprev}`:tname}))}if(event==="complete"){let tokens3=(p.input_tokens??0)+(p.output_tokens??0),extra=tokens3?` \xB7 ${(tokens3/1000).toFixed(1)}k tok`:"",summary2=sanitize(p.summary);return updateToolById(messages,id,(t2)=>({...t2,status:p.status==="failed"||p.status==="error"||p.status==="timeout"||p.status==="interrupted"?"error":"done",duration:p.duration_seconds?p.duration_seconds*1000:t2.startedAt?Date.now()-t2.startedAt:void 0,result:summary2?summary2+extra:void 0,preview:t2.goal??t2.preview}))}return updateToolById(messages,id,(t2)=>({...t2,preview:sanitize(p.text)||t2.preview}))}var AGGRESSIVE="--aggressive is not supported; use '/compress here [N]' to keep only recent exchanges, or /undo to drop turns.";function flags(arg){let kept=[],preview2={on:!1,aggressive:!1};for(let tok of arg.split(/\s+/).filter(Boolean)){let low=tok.toLowerCase();if(low==="--preview"||low==="--dry-run"||low==="--dryrun")preview2.on=!0;else if(low==="--aggressive")preview2.aggressive=!0;else kept.push(tok)}return{arg:kept.join(" "),preview:preview2.on,aggressive:preview2.aggressive}}function partial(arg){let text5=arg.trim();if(!text5)return{on:!1,keep:2,focus:""};let bits=(text5.toLowerCase().startsWith("up to here")?text5.slice(6).trim():text5).toLowerCase().split(/\s+/),keep=(v2)=>Math.min(Math.max(parseInt(v2??"",10)||2,1),100);if(bits[0]==="here")return{on:!0,keep:keep(bits[1]),focus:""};if((bits[0]==="--keep"||bits[0]==="-k")&&bits[1])return{on:!0,keep:keep(bits[1]),focus:""};if(bits[0]?.startsWith("--keep="))return{on:!0,keep:keep(bits[0].split("=",2)[1]),focus:""};return{on:!1,keep:2,focus:text5}}function
|
|
4175
|
+
`)}function transcriptToMessages(rows3){return rows3.filter((r)=>r.role==="user"||r.role==="assistant").map((r)=>({role:r.role,content:sanitize(flatten3(r.text))})).filter((r)=>r.content).map((r)=>({id:mid(),role:r.role,parts:[{type:"text",content:r.content,streaming:!1}],timestamp:Date.now()/1000}))}function assistant(parts2){return{id:mid(),role:"assistant",parts:parts2,timestamp:Date.now()/1000}}function withLastAssistant(messages,fn,otherwise){let last4=messages[messages.length-1];if(last4?.role==="assistant")return[...messages.slice(0,-1),fn(last4)];return[...messages,otherwise()]}function seal(parts2){let last4=parts2[parts2.length-1];if(last4?.type==="text"&&last4.streaming)return[...parts2.slice(0,-1),{...last4,streaming:!1}];return parts2}function appendText(messages,chunk){return withLastAssistant(messages,(m2)=>{let last4=m2.parts[m2.parts.length-1];if(last4?.type==="text"&&last4.streaming){let part={...last4,content:last4.content+chunk};return{...m2,parts:[...m2.parts.slice(0,-1),part]}}return{...m2,parts:[...m2.parts,{type:"text",key:pid(),content:chunk,streaming:!0}]}},()=>assistant([{type:"text",key:pid(),content:chunk,streaming:!0}]))}function appendPart(messages,part,close2){return withLastAssistant(messages,(m2)=>({...m2,parts:[...close2?seal(m2.parts):m2.parts,part]}),()=>assistant([part]))}function finalize(messages,final,usage){let last4=messages[messages.length-1];if(last4?.role==="assistant"){let tail=last4.parts[last4.parts.length-1],dup=final&&last4.parts.some((p)=>p.type==="text"&&sameText(p.content,final)),text5=tail?.type==="text"&&final&&sameText(tail.content,final)?tail.content:final,parts2=tail?.type==="text"&&tail.streaming?[...last4.parts.slice(0,-1),{...tail,content:text5||tail.content,streaming:!1}]:final&&!dup&&!sameText(joinText(last4.parts),final)?[...last4.parts,{type:"text",content:final,streaming:!1}]:seal(last4.parts);return expirePrompts([...messages.slice(0,-1),{...last4,parts:parts2,usage}])}let next2=final?[...messages,{...assistant([{type:"text",content:final,streaming:!1}]),usage}]:messages;return expirePrompts(next2)}function expirePrompts(messages){let at=Date.now();return messages.map((m2)=>m2.role==="assistant"?{...m2,parts:m2.parts.map((p)=>p.type==="prompt"&&!p.answered?{...p,answered:{label:"Timed out",ok:!1,at,question:promptQuestion(p.req)}}:p)}:m2)}function joinText(parts2){return parts2.filter((p)=>p.type==="text").map((p)=>p.content).join("")}function sameText(a,b2){return a.trim()===b2.trim()}function updateRunningTool(messages,name,fn){let last4=messages[messages.length-1];if(!last4||last4.role!=="assistant")return messages;for(let i=last4.parts.length-1;i>=0;i--){let p=last4.parts[i];if(p.type!=="tool"||p.status!=="running")continue;if(name&&p.name!==name)continue;let parts2=[...last4.parts];return parts2[i]=fn(p),[...messages.slice(0,-1),{...last4,parts:parts2}]}return messages}function updateToolById(messages,id,fn){let last4=messages[messages.length-1];if(!last4||last4.role!=="assistant")return messages;let parts2=last4.parts.map((p)=>p.type==="tool"&&p.id===id?fn(p):p);return[...messages.slice(0,-1),{...last4,parts:parts2}]}function updatePrompt(messages,id,fn){return messages.map((m2)=>{if(m2.role!=="assistant")return m2;if(!m2.parts.some((p)=>p.type==="prompt"&&p.id===id))return m2;return{...m2,parts:m2.parts.map((p)=>p.type==="prompt"&&p.id===id?fn(p):p)}})}function promptQuestion(req){if(req.variant==="clarify")return req.question;if(req.variant==="approval")return req.description||"Shell command";if(req.variant==="sudo")return"Sudo required";return req.env_var?`Secret: ${req.env_var}`:"Secret required"}function upsertThinking(messages,text5,final,verbose2){return withLastAssistant(messages,(m2)=>{let idx=m2.parts.findIndex((p)=>p.type==="thinking");if(idx>=0){let prev=m2.parts[idx],content=final?prev.content.trim()||text5:prev.content+text5,parts2=[...m2.parts];return parts2[idx]={...prev,content,streaming:!final,verbose:prev.verbose||verbose2||void 0},{...m2,parts:parts2}}return{...m2,parts:[{type:"thinking",key:pid(),content:text5,streaming:!final,verbose:verbose2},...m2.parts]}},()=>assistant([{type:"thinking",key:pid(),content:text5,streaming:!final,verbose:verbose2}]))}function renderSubagent(messages,event,p){let id=p.subagent_id?`sub-${p.subagent_id}`:`sub-${p.task_index}`;if(event==="start"){let goal=sanitize(p.goal),part={type:"tool",id,name:"delegate_task",args:"",status:"running",startedAt:Date.now(),preview:goal||void 0,goal:goal||void 0,depth:p.depth??0,trail:[]};return appendPart(messages,part,!0)}if(event==="tool"&&p.tool_name){let tname=sanitize(p.tool_name),tprev=sanitize(p.tool_preview);return updateToolById(messages,id,(t2)=>({...t2,trail:[...t2.trail??[],{name:tname,preview:tprev||void 0}],preview:tprev?`${tname}: ${tprev}`:tname}))}if(event==="complete"){let tokens3=(p.input_tokens??0)+(p.output_tokens??0),extra=tokens3?` \xB7 ${(tokens3/1000).toFixed(1)}k tok`:"",summary2=sanitize(p.summary);return updateToolById(messages,id,(t2)=>({...t2,status:p.status==="failed"||p.status==="error"||p.status==="timeout"||p.status==="interrupted"?"error":"done",duration:p.duration_seconds?p.duration_seconds*1000:t2.startedAt?Date.now()-t2.startedAt:void 0,result:summary2?summary2+extra:void 0,preview:t2.goal??t2.preview}))}return updateToolById(messages,id,(t2)=>({...t2,preview:sanitize(p.text)||t2.preview}))}var AGGRESSIVE="--aggressive is not supported; use '/compress here [N]' to keep only recent exchanges, or /undo to drop turns.";function flags(arg){let kept=[],preview2={on:!1,aggressive:!1};for(let tok of arg.split(/\s+/).filter(Boolean)){let low=tok.toLowerCase();if(low==="--preview"||low==="--dry-run"||low==="--dryrun")preview2.on=!0;else if(low==="--aggressive")preview2.aggressive=!0;else kept.push(tok)}return{arg:kept.join(" "),preview:preview2.on,aggressive:preview2.aggressive}}function partial(arg){let text5=arg.trim();if(!text5)return{on:!1,keep:2,focus:""};let bits=(text5.toLowerCase().startsWith("up to here")?text5.slice(6).trim():text5).toLowerCase().split(/\s+/),keep=(v2)=>Math.min(Math.max(parseInt(v2??"",10)||2,1),100);if(bits[0]==="here")return{on:!0,keep:keep(bits[1]),focus:""};if((bits[0]==="--keep"||bits[0]==="-k")&&bits[1])return{on:!0,keep:keep(bits[1]),focus:""};if(bits[0]?.startsWith("--keep="))return{on:!0,keep:keep(bits[0].split("=",2)[1]),focus:""};return{on:!1,keep:2,focus:text5}}function compressPreview(arg,msgs){let f=flags(arg);if(f.aggressive&&!f.preview)return[AGGRESSIVE];if(!f.preview)return null;let p=partial(f.arg),at=p.on?[...msgs].reverse().reduce((acc2,m2,i)=>{if(acc2.length<p.keep&&m2.role==="user")return[...acc2,msgs.length-1-i];return acc2},[]).at(-1):void 0,head=at===void 0||at===0?msgs:msgs.slice(0,at),tail=at===void 0||at===0?[]:msgs.slice(at),lines3=["Preview \u2014 no changes made.",`Would compress ${head.length} of ${msgs.length} message(s) (~${Math.ceil(msgs.map(text2).join(`
|
|
4176
4176
|
|
|
4177
|
-
`).length/4).toLocaleString()} tokens currently in context).`];if(p.on&&tail.length)lines3.push(`Boundary: keeping the last ${p.keep} exchange(s) (${tail.length} message(s)) verbatim.`);else if(p.on)lines3.push("Boundary: 'here' split would keep everything \u2014 falling back to full compression.");if(p.focus)lines3.push(`Focus topic: "${p.focus}"`);if(lines3.push("Run the command again without --preview to apply."),f.aggressive)lines3.push(AGGRESSIVE);return lines3}function useSlash(c){let gw=useGateway(),dialog=useDialog(),toast=useToast(),themeCtx=useTheme(),cmd=useCommand(),renderer=useRenderer(),cfg=useHome("config"),bg2=useBackground(),ctx2=import_react140.useRef(c);ctx2.current=c;let gate=import_react140.useRef(cfg);gate.current=cfg;let destructive=import_react140.useCallback((arg,opts,action)=>{let a=arg.trim().toLowerCase(),skip=a==="now"||a==="once"||a==="approve"||a==="yes"||a==="always",bypass=!(gate.current?.approvals?.destructive_slash_confirm??!0)||process.env.HERMES_TUI_NO_CONFIRM==="1",persist2=a==="always",fire=()=>{if(persist2)Promise.resolve().then(() => (init_lane(),exports_lane)).then(({writeConfig:writeConfig2})=>writeConfig2(gw,[{key:"approvals.destructive_slash_confirm",to:!1}]).then((r)=>{if(r.failed.length){toast.show({variant:"warning",message:`couldn't persist: ${r.failed[0].err}`});return}home3.invalidate("config"),toast.show({variant:"success",message:`${opts.yes} \xB7 future runs silent`})}).catch((e)=>toast.show({variant:"error",message:e.message})));action()};if(skip||bypass)return fire();openConfirm(dialog,{title:opts.title,body:opts.body,yes:opts.yes,danger:!0}).then((ok)=>{if(ok)fire()})},[gw,dialog,toast]),pickEikon=import_react140.useCallback(()=>openEikonPicker(dialog,(n)=>set("eikon",n)),[dialog]),applyTitle=import_react140.useCallback((t2)=>{gw.request("session.title",{title:t2}).then((r)=>{ctx2.current.setTitle(r.title),ctx2.current.dispatch({kind:"system",text:`Title: ${r.title}`})}).catch((e)=>toast.show({variant:"error",message:e.message}))},[gw,toast]),runCompress=import_react140.useCallback(async(arg="")=>{let raw2=arg.trim(),pv=
|
|
4177
|
+
`).length/4).toLocaleString()} tokens currently in context).`];if(p.on&&tail.length)lines3.push(`Boundary: keeping the last ${p.keep} exchange(s) (${tail.length} message(s)) verbatim.`);else if(p.on)lines3.push("Boundary: 'here' split would keep everything \u2014 falling back to full compression.");if(p.focus)lines3.push(`Focus topic: "${p.focus}"`);if(lines3.push("Run the command again without --preview to apply."),f.aggressive)lines3.push(AGGRESSIVE);return lines3}function useSlash(c){let gw=useGateway(),dialog=useDialog(),toast=useToast(),themeCtx=useTheme(),cmd=useCommand(),renderer=useRenderer(),cfg=useHome("config"),bg2=useBackground(),ctx2=import_react140.useRef(c);ctx2.current=c;let gate=import_react140.useRef(cfg);gate.current=cfg;let destructive=import_react140.useCallback((arg,opts,action)=>{let a=arg.trim().toLowerCase(),skip=a==="now"||a==="once"||a==="approve"||a==="yes"||a==="always",bypass=!(gate.current?.approvals?.destructive_slash_confirm??!0)||process.env.HERMES_TUI_NO_CONFIRM==="1",persist2=a==="always",fire=()=>{if(persist2)Promise.resolve().then(() => (init_lane(),exports_lane)).then(({writeConfig:writeConfig2})=>writeConfig2(gw,[{key:"approvals.destructive_slash_confirm",to:!1}]).then((r)=>{if(r.failed.length){toast.show({variant:"warning",message:`couldn't persist: ${r.failed[0].err}`});return}home3.invalidate("config"),toast.show({variant:"success",message:`${opts.yes} \xB7 future runs silent`})}).catch((e)=>toast.show({variant:"error",message:e.message})));action()};if(skip||bypass)return fire();openConfirm(dialog,{title:opts.title,body:opts.body,yes:opts.yes,danger:!0}).then((ok)=>{if(ok)fire()})},[gw,dialog,toast]),pickEikon=import_react140.useCallback(()=>openEikonPicker(dialog,(n)=>set("eikon",n)),[dialog]),applyTitle=import_react140.useCallback((t2)=>{gw.request("session.title",{title:t2}).then((r)=>{ctx2.current.setTitle(r.title),ctx2.current.dispatch({kind:"system",text:`Title: ${r.title}`})}).catch((e)=>toast.show({variant:"error",message:e.message}))},[gw,toast]),runCompress=import_react140.useCallback(async(arg="")=>{let raw2=arg.trim(),pv=compressPreview(raw2,ctx2.current.turnRef.current.messages);if(pv){ctx2.current.dispatch({kind:"system",text:pv.join(`
|
|
4178
4178
|
`)}),toast.show({variant:pv.length===1?"warning":"info",message:pv.length===1?"compress unsupported":"Preview \u2014 no changes made"});return}toast.show({variant:"info",message:"Compressing session\u2026"});let r=await ctx2.current.session.compress(raw2).catch((err)=>{return toast.show({variant:"error",message:err.message}),null});if(!r)return;if(r.info)ctx2.current.setInfo(r.info);let out=r.lines?.length?r.lines:r.message?[r.message]:[];if(r.status==="preview"||r.status==="unsupported"||out.length){if(out.length)ctx2.current.dispatch({kind:"system",text:out.join(`
|
|
4179
4179
|
`)});toast.show({variant:r.status==="unsupported"?"warning":"info",message:r.status==="unsupported"?"compress unsupported":"Preview \u2014 no changes made"});return}if(ctx2.current.setUsage((u3)=>{let base3=r.usage??u3,max=r.usage?.context_max??u3?.context_max;if(typeof r.after_tokens!=="number"||typeof max!=="number")return base3;return{...base3??{input:0,output:0,total:0},context_used:r.after_tokens,context_max:max}}),!r.summary)return;let s=r.summary;if(s.noop){toast.show({variant:"info",message:s.headline??`No changes \xB7 ~${r.before_tokens??0} tokens`});return}let lines3=[s.headline,s.token_line,s.note].filter(Boolean).join(`
|
|
4180
4180
|
`);if(lines3)ctx2.current.dispatch({kind:"system",text:lines3});toast.show({variant:"success",message:s.headline??`Compressed ${r.before_messages??0}\u2192${r.after_messages??0} messages`})},[toast]),branch2=import_react140.useCallback((name)=>{let x2=ctx2.current;x2.session.branch(name?.trim()||void 0).then((id)=>id?void x2.activateSession(id):toast.show({variant:"error",message:"branch failed"})).catch((err)=>toast.show({variant:"error",message:err.message}))},[toast]),run=import_react140.useCallback((c2,arg="")=>{let x2=ctx2.current;if(c2.target==="local")switch(c2.name){case"clear":destructive(arg,{title:"Clear session?",body:"Discards the in-memory transcript. Your session on disk is unchanged; reload to restore.",yes:"clear"},()=>x2.dispatch({kind:"reset"}));return;case"new":destructive(arg,{title:"Start a new session?",body:"Ends the current session and starts a fresh one. The existing session remains saved and resumable.",yes:"new session"},()=>{x2.newSession()});return;case"theme":{let name=arg.trim();if(!name){openThemePicker(dialog,themeCtx);return}let mode2=name.toLowerCase();if(mode2==="dark"||mode2==="light"){themeCtx.setMode(mode2),x2.dispatch({kind:"system",text:`theme mode \u2192 ${mode2}`});return}if(!themeCtx.set(name)){toast.show({variant:"error",message:`unknown theme: ${name}`});return}x2.dispatch({kind:"system",text:`theme \u2192 ${name}`});return}case"help":dialog.replace($jsx(HelpDialog,{}));return;case"keys":openKeys(dialog);return;case"logs":openLogs(dialog);return;case"title":if(arg){applyTitle(arg);return}openTextPrompt(dialog,{title:"Session Title",initial:x2.title}).then((v2)=>{if(v2)applyTitle(v2)});return;case"rollback":openRollback(dialog,gw,toast);return;case"history":openHistory(dialog,gw);return;case"status":openStatus(dialog,x2.info,x2.sid);return;case"usage":openUsage(dialog,gw);return;case"profile":openProfile(dialog);return;case"journey":x2.goTo(TAB_SLASH.journey.tab,TAB_SLASH.journey.sub);return;case"chafa":if(!arg.trim()){toast.show({variant:"info",message:"usage: /chafa <path>"});return}openChafa(dialog,arg.trim());return;case"splash":x2.summoned.current=!0,x2.setSplash(!0);return;case"skin":{let name=arg.trim(),list3=skins();if(!name){x2.dispatch({kind:"system",text:`skin: ${x2.skin.skin?.name??"\u2014"}
|
|
@@ -4187,7 +4187,7 @@ ${body2}`:head}function formatProcessNotification(text5){let body2=text5.replace
|
|
|
4187
4187
|
`):frame2;if(url2.searchParams.get("json")==="1")return json2({frame:body2,match:grep?frame2.includes(grep):void 0,lines:frame2.split(`
|
|
4188
4188
|
`).length});return new Response(body2,{headers:{"Content-Type":"text/plain; charset=utf-8"}})}if(path4==="/logs"){let n=Number(url2.searchParams.get("n"))||200;return new Response(bridge.logs(n),{headers:{"Content-Type":"text/plain; charset=utf-8"}})}let pm=path4.match(/^\/plugin\/([^/]+)$/);if(pm&&req.method==="POST"){let body2=await req.json(),ok=await bridge.plugin(pm[1],body2.on!==!1);return json2({id:pm[1],on:body2.on!==!1,ok})}if(path4==="/push"&&req.method==="POST"){let body2=await req.json();if(!body2.type)return json2({error:"type required"},400);return bridge.push(body2),json2({pushed:body2.type})}if(path4==="/perf"){let d2=data();if(!d2)return json2({error:"PERF not enabled"},400);return json2(d2)}if(path4==="/tabs"){let ms2=Number(url2.searchParams.get("delay")||"500");for(let i=0;i<=TAB_MAX;i++)bridge.setTab(i),await new Promise((r)=>setTimeout(r,ms2));return bridge.setTab(CHAT_TAB),json2({cycled:TAB_MAX+1,delay:ms2})}if(path4==="/mem"){mem("control:snapshot");let m2=process.memoryUsage();return json2({rss:Math.round(m2.rss/1024/1024),heap:Math.round(m2.heapUsed/1024/1024),heapTotal:Math.round(m2.heapTotal/1024/1024),external:Math.round(m2.external/1024/1024)})}return json2({error:"not found",routes:["GET /status","GET /tab/:n","POST /send {message}","POST /key {name, ctrl?, shift?, meta?, raw?, safe?}","POST /keys {keys: [{name, ...}], delay?, safe?}","POST /type {text, delay?, safe?}","POST /input {text}","POST /plugin/:id {on}","POST /push {type, payload?}","GET /quit","GET /frame ?grep=pat&json=1","GET /logs ?n=200","GET /focus","GET /perf","GET /tabs","GET /mem"]},404)}function start(){if(!enabled2)return;Bun.serve({port:PORT,hostname:BIND,fetch:handle});let w2=warning();if(w2){process.stderr.write(`\x1B[33m[control] WARNING: ${w2.message}\x1B[0m
|
|
4189
4189
|
`);return}process.stderr.write(`\x1B[90m[control] http://${BIND}:${PORT}\x1B[0m
|
|
4190
|
-
`)}var import_react146=__toESM(require_react_production(),1);function select(dialog,opts){return new Promise((res)=>{let settled=!1,done2=(v2)=>{if(settled)return;settled=!0,res(v2),dialog.clear()};dialog.replace($jsx(DialogSelect,{title:opts.title,options:opts.options,placeholder:opts.placeholder,onSelect:(o)=>done2(o)}),()=>done2(null))})}function locate3(routes,name){let lower=name.toLowerCase(),hit2=TAB_SLASH[lower];if(hit2)return hit2;let i=[...routes.keys()].findIndex((n)=>n.toLowerCase()===lower);if(i<0)return;return{tab:TABS.length+i,sub:0}}function createApi(input){return{renderer:input.renderer,theme:{get current(){return input.theme.current.theme},get name(){return input.theme.current.name},get mode(){return input.theme.current.mode},set:(name)=>input.theme.current.set(name),setMode:(mode2)=>input.theme.current.setMode(mode2),has:(name)=>input.theme.current.has(name)},get keys(){return input.keys.current},ui:{dialog:input.dialog,toast:(o)=>input.toast.show({variant:o.variant??"info",title:o.title,message:o.message}),confirm:(o)=>openConfirm(input.dialog,o),prompt:(o)=>openTextPrompt(input.dialog,o),alert:(title,body2)=>openAlert(input.dialog,title,body2),select:(o)=>select(input.dialog,o)},kv:{get:(key5,fallback)=>{return get2("plugin")?.[key5]??fallback},set:(key5,value2)=>{let bag=get2("plugin")??{};set("plugin",{...bag,[key5]:value2})}},get client(){return input.gw.current},event:{on:(fn)=>{let c=input.gw.current,h2=(ev)=>fn(ev);return c.on("event",h2),()=>c.off("event",h2)}},route:{register:(defs)=>{for(let d2 of defs)input.routes.set(d2.name,d2);return input.bump(),()=>{for(let d2 of defs)input.routes.delete(d2.name);input.bump()}},navigate:(name,sub2)=>{let at=locate3(input.routes,name);if(!at)return;input.nav.current?.(at.tab,sub2??at.sub)},get current(){return input.cur.current?.()}},command:{register:(cmds)=>input.cmd.register(cmds)},slots:{register(){throw Error("slots.register is only available inside a plugin's tui() factory")}},eikon:{rasterizer:{register:(r)=>register(r)}},lifecycle:{signal:new AbortController().signal,onDispose:()=>()=>{}}}}function createScope(id,fail2){let ctrl=new AbortController,list3=[],done2=!1,onDispose=(fn)=>{if(done2)return()=>{};let key5=Symbol();return list3.push({key:key5,fn}),()=>{list3=list3.filter((x2)=>x2.key!==key5)}},track=(fn)=>{if(!fn)return()=>{};let ran=!1,drop2=()=>{},wrapped=()=>{if(ran)return;return ran=!0,drop2(),fn()};return drop2=onDispose(wrapped),wrapped},race=(fn,left)=>new Promise((res)=>{let t2=setTimeout(()=>res("timeout"),left);Promise.resolve().then(fn).then(()=>{clearTimeout(t2),res("ok")}).catch((e)=>{clearTimeout(t2),res(e instanceof Error?e:Error(String(e)))})}),dispose=async()=>{if(done2)return;done2=!0,ctrl.abort();let queue=[...list3].reverse();list3=[];let until2=Date.now()+5000;for(let item of queue){let left=until2-Date.now();if(left<=0){fail2(`[plugin:${id}] dispose budget exhausted`);return}let out=await race(item.fn,left);if(out==="ok")continue;if(out==="timeout"){fail2(`[plugin:${id}] dispose timed out`);return}fail2(`[plugin:${id}] dispose threw`,out)}};return{lifecycle:{signal:ctrl.signal,onDispose},track,dispose}}var import_react143=__toESM(require_react_production(),1);var fmt4=(d2)=>[d2.getHours(),d2.getMinutes(),d2.getSeconds()].map((n)=>String(n).padStart(2,"0")).join(":");function Clock(props){let[now,set3]=import_react143.useState(()=>new Date);return import_react143.useEffect(()=>{let t2=setInterval(()=>set3(new Date),1000);return()=>clearInterval(t2)},[]),$jsx("text",{fg:props.api.theme.current.textMuted,wrapMode:"none",children:fmt4(now)})}var plugin={id:"demo.clock",enabled:!1,tui(api){api.slots.register({order:100,slots:{app_bottom:()=>$jsx(Clock,{api})}})}},clock_default=plugin;var import_react144=__toESM(require_react_production(),1);import{readdirSync as readdirSync12,statSync as statSync11}from"fs";import{join as join27,basename as basename15}from"path";import{homedir as homedir10}from"os";var PREVIEW_MAX=200000,read4=(dir2)=>{return(dir2==="/"?[]:[{name:"..",dir:!0}]).concat(readdirSync12(dir2,{withFileTypes:!0}).filter((d2)=>!d2.name.startsWith(".")).sort((a,b2)=>a.isDirectory()===b2.isDirectory()?a.name.localeCompare(b2.name):a.isDirectory()?-1:1).map((d2)=>({name:d2.name,dir:d2.isDirectory()})))},isMd=(name)=>/\.(md|markdown|mdx)$/i.test(name);function Files(props){let api=props.api,theme=api.theme.current,[dir2,setDir]=import_react144.useState(()=>homedir10()),[sel,setSel]=import_react144.useState(0),[preview3,setPreview]=import_react144.useState(""),listing=import_react144.useMemo(()=>{try{return{rows:read4(dir2),error:""}}catch(e){return{rows:[],error:e instanceof Error?e.message:String(e)}}},[dir2]),rows3=listing.rows;import_react144.useEffect(()=>{setSel((s)=>Math.min(s,Math.max(0,rows3.length-1)))},[rows3.length]);let active=rows3[sel];import_react144.useEffect(()=>{if(!active||active.dir){setPreview("");return}let path4=join27(dir2,active.name),cancel=!1;return(async()=>{let st=statSync11(path4);if(st.size>PREVIEW_MAX){if(!cancel)setPreview(`(file too large \u2014 ${st.size} bytes)`);return}let text5=await Bun.file(path4).text();if(!cancel)setPreview(text5)})().catch((e)=>{if(!cancel)setPreview(`(read error: ${e})`)}),()=>{cancel=!0}},[dir2,active?.name,active?.dir]);let enter=()=>{if(!active)return;if(active.name===".."){setDir((d2)=>d2==="/"?"/":join27(d2,"..")),setSel(0);return}if(active.dir)setDir((d2)=>join27(d2,active.name)),setSel(0)};return useKeyboard((key5)=>{if(!props.focused||api.ui.dialog.open())return;if(key5.name==="left"){setDir((d2)=>d2==="/"?"/":join27(d2,"..")),setSel(0);return}handleListKey(api.keys,key5,{count:rows3.length,setSel,onActivate:enter})}),$jsxs("box",{flexGrow:1,flexDirection:"column",children:[$jsx("box",{height:1,flexShrink:0,paddingX:1,children:$jsx("text",{fg:theme.textMuted,wrapMode:"none",children:dir2})}),$jsxs("box",{flexGrow:1,flexDirection:"row",children:[$jsxs("box",{width:32,flexShrink:0,flexDirection:"column",border:!0,borderColor:theme.border,children:[rows3.map((e,i)=>$jsx("box",{height:1,paddingX:1,backgroundColor:i===sel?theme.backgroundElement:void 0,children:$jsx("text",{fg:i===sel?theme.selectedListItemText:e.dir?theme.accent:theme.text,wrapMode:"none",children:(e.dir?"\u25B8 ":" ")+e.name})},e.name)),listing.error?$jsx("box",{height:1,paddingX:1,children:$jsx("text",{fg:theme.error,wrapMode:"none",children:listing.error})}):null]}),$jsx("box",{flexGrow:1,flexDirection:"column",border:!0,borderColor:theme.border,children:active&&!active.dir?$jsxs($Fragment,{children:[$jsx("box",{height:1,flexShrink:0,paddingX:1,children:$jsxs("text",{fg:theme.textMuted,wrapMode:"none",children:[basename15(active.name),isMd(active.name)?" \xB7 markdown":""]})}),$jsx("scrollbox",{scrollY:!0,flexGrow:1,children:$jsx("text",{fg:theme.text,wrapMode:"word",children:preview3})})]}):$jsx("box",{paddingX:1,children:$jsx("text",{fg:theme.textMuted,children:"Select a file to preview."})})})]})]})}var plugin2={id:"demo.files",enabled:!1,tui(api){api.route.register([{name:"Files",description:"File browser",render:({focused})=>$jsx(Files,{api,focused})}]),api.command.register([{title:"Files: open browser",value:"plugin.files.open",category:"Plugin",onSelect:()=>api.route.navigate("Files")}])}},files_default=plugin2;var INTERNAL=[clock_default,files_default];var KV_ENABLED="enabled",Ctx7=import_react146.createContext(null);function fail2(msg,err){let tail=err instanceof Error?`: ${err.message}`:err!==void 0?`: ${String(err)}`:"";console.error(msg+tail)}var RouteBody=(props)=>props.render(props.ctx);class RouteBoundary extends import_react146.Component{state={};static getDerivedStateFromError(error){return{error}}componentDidCatch(error,_info){fail2(`[plugin:${this.props.id}] render error in route "${this.props.name}"`,error)}render(){if(this.state.error)return $jsx("text",{children:`Plugin ${this.props.id} route ${this.props.name}: ${this.state.error.message}`});return this.props.children}}function enabledMap(){let v2=get2("plugin")?.[KV_ENABLED];return v2&&typeof v2==="object"?v2:{}}function persist2(id,on){let bag=get2("plugin")??{},map={...enabledMap(),[id]:on};set("plugin",{...bag,[KV_ENABLED]:map})}function scoped(base3,reg,id,scope){let n=0;return{...base3,slots:{register(p){let sid2=n++?`${id}:${n}`:id;return scope.track(reg.register({...p,id:sid2}))}},route:{register:(defs)=>scope.track(base3.route.register(defs.map((def2)=>({...def2,render:(ctx2)=>$jsx(RouteBoundary,{id,name:def2.name,children:$jsx(RouteBody,{render:def2.render,ctx:ctx2})})})))),navigate:base3.route.navigate,get current(){return base3.route.current}},event:{on:(fn)=>scope.track(base3.event.on(fn))},command:{register:(cmds)=>scope.track(base3.command.register(cmds))},eikon:{rasterizer:{register:(r)=>scope.track(base3.eikon.rasterizer.register(r))}},kv:{get:(key5,fb)=>base3.kv.get(`${id}.${key5}`,fb),set:(key5,v2)=>base3.kv.set(`${id}.${key5}`,v2)},lifecycle:scope.lifecycle}}var CELLS=new WeakMap;function ctxFor(renderer,themeRef){let hit2=CELLS.get(renderer);if(hit2)return hit2.themeRef=themeRef,hit2.ctx;let cell={themeRef,ctx:{}};return Object.defineProperty(cell.ctx,"theme",{get:()=>cell.themeRef.current.theme,enumerable:!0}),CELLS.set(renderer,cell),cell.ctx}function PluginProvider(props){let list3=props.plugins??INTERNAL,renderer=useRenderer(),themeCtx=useTheme(),keys=useKeys(),dialog=useDialog(),toast=useToast(),cmd=useCommand(),gw=useGateway(),themeRef=import_react146.useRef(themeCtx);themeRef.current=themeCtx;let keysRef=import_react146.useRef(keys);keysRef.current=keys;let gwRef=import_react146.useRef(gw);gwRef.current=gw;let navRef=import_react146.useRef(null),curRef=import_react146.useRef(null),routes=import_react146.useRef(new Map).current,[rev3,bump2]=import_react146.useReducer((x2)=>x2+1,0),reg=import_react146.useMemo(()=>createReactSlotRegistry(renderer,ctxFor(renderer,themeRef),{onPluginError:(e)=>fail2(`[plugin:${e.pluginId}] ${e.phase} error in slot "${e.slot}"`,e.error)}),[renderer]),Slot2=import_react146.useMemo(()=>createSlot(reg),[reg]),api=import_react146.useMemo(()=>createApi({renderer,theme:themeRef,keys:keysRef,dialog,toast,gw:gwRef,cmd,routes,bump:bump2,nav:navRef,cur:curRef}),[renderer,dialog,toast,cmd,routes]),entries2=import_react146.useRef(new Map),[gen,force]=import_react146.useReducer((x2)=>x2+1,0),activate=async(id,write=!0)=>{let e=entries2.current.get(id);if(!e)return!1;if(e.enabled=!0,write)persist2(id,!0);if(e.scope)return!0;let scope=createScope(id,fail2),ok=await Promise.resolve().then(()=>e.plugin.tui(scoped(api,reg,id,scope))).then(()=>!0).catch((err)=>{return fail2(`[plugin:${id}] activation failed`,err),e.error=String(err?.message??err),!1});if(!ok||!e.enabled)return await scope.dispose(),force(),ok&&!0;return e.scope=scope,e.error=void 0,force(),!0},deactivate=async(id,write=!0)=>{let e=entries2.current.get(id);if(!e)return!1;if(e.enabled=!1,write)persist2(id,!1);let scope=e.scope;if(e.scope=void 0,scope)await scope.dispose();return force(),!0},started=import_react146.useRef(!1);import_react146.useEffect(()=>{if(started.current)return;started.current=!0;let on=enabledMap();for(let p of list3)entries2.current.set(p.id,{plugin:p,enabled:on[p.id]??p.enabled??!0});return(async()=>{for(let[id,e]of entries2.current)if(e.enabled)await activate(id,!1)})(),()=>{for(let[,e]of entries2.current)e.scope?.dispose();entries2.current.clear(),routes.clear(),reg.clear()}},[]);let value2=import_react146.useMemo(()=>({Slot:Slot2,routes:[...routes.values()],bind:(nav,current2)=>{navRef.current=nav,curRef.current=current2},status:()=>[...entries2.current.values()].map((e)=>({id:e.plugin.id,enabled:e.enabled,active:!!e.scope,error:e.error})),has:(slot2)=>reg.resolveEntries(slot2).length>0,activate:(id)=>activate(id),deactivate:(id)=>deactivate(id)}),[Slot2,routes,rev3,gen]);return $jsx(Ctx7.Provider,{value:value2,children:props.children})}var usePlugins=makeUse(Ctx7,"usePlugins");function useBridge(o){let gw=useGateway(),renderer=useRenderer(),plugins=usePlugins(),state3=import_react148.useRef(o);state3.current=o,import_react148.useEffect(()=>{if(!enabled2)return;setBridge({tab:()=>state3.current.tab,setTab:o.setTab,send:async(msg)=>{let s=state3.current;if(!s.ready)throw Error("not connected");if(s.streaming)throw Error("already streaming");s.setTab(CHAT_TAB);try{await gw.request("prompt.submit",{text:msg}),s.dispatch({kind:"user",text:msg})}catch(err){let text5=err instanceof Error?err.message:String(err);throw s.dispatch({kind:"system",text:`Failed to send: ${text5}`}),err}},ready:()=>state3.current.ready,streaming:()=>state3.current.streaming,messages:()=>state3.current.messages.length,session:()=>state3.current.sid,input:()=>state3.current.composer.current?.value()??"",setInput:(v2)=>state3.current.composer.current?.set(v2),focusRegion:()=>state3.current.focusRegion,setFocusRegion:o.setFocusRegion,renderer:()=>renderer,logs:(n)=>gw.tail(n),plugin:(id,on)=>on?plugins.activate(id):plugins.deactivate(id),push:(ev)=>gw.emit("event",ev)})},[gw,renderer,plugins])}var import_react156=__toESM(require_react_production(),1);var winDrive=(s,off=0)=>s.length>=off+3&&/[A-Za-z]/.test(s[off])&&s[off+1]===":"&&(s[off+2]==="\\"||s[off+2]==="/");function looksLikePath(s){let t2=s.trim();if(!t2||t2.includes(`
|
|
4190
|
+
`)}var import_react146=__toESM(require_react_production(),1);function select(dialog,opts){return new Promise((res)=>{let settled=!1,done2=(v2)=>{if(settled)return;settled=!0,res(v2),dialog.clear()};dialog.replace($jsx(DialogSelect,{title:opts.title,options:opts.options,placeholder:opts.placeholder,onSelect:(o)=>done2(o)}),()=>done2(null))})}function locate3(routes,name){let lower=name.toLowerCase(),hit2=TAB_SLASH[lower];if(hit2)return hit2;let i=[...routes.keys()].findIndex((n)=>n.toLowerCase()===lower);if(i<0)return;return{tab:TABS.length+i,sub:0}}function createApi(input){return{renderer:input.renderer,theme:{get current(){return input.theme.current.theme},get name(){return input.theme.current.name},get mode(){return input.theme.current.mode},set:(name)=>input.theme.current.set(name),setMode:(mode2)=>input.theme.current.setMode(mode2),has:(name)=>input.theme.current.has(name)},get keys(){return input.keys.current},ui:{dialog:input.dialog,toast:(o)=>input.toast.show({variant:o.variant??"info",title:o.title,message:o.message}),confirm:(o)=>openConfirm(input.dialog,o),prompt:(o)=>openTextPrompt(input.dialog,o),alert:(title,body2)=>openAlert(input.dialog,title,body2),select:(o)=>select(input.dialog,o)},kv:{get:(key5,fallback)=>{return get2("plugin")?.[key5]??fallback},set:(key5,value2)=>{let bag=get2("plugin")??{};set("plugin",{...bag,[key5]:value2})}},get client(){return input.gw.current},event:{on:(fn)=>{let c=input.gw.current,h2=(ev)=>fn(ev);return c.on("event",h2),()=>c.off("event",h2)}},route:{register:(defs)=>{for(let d2 of defs)input.routes.set(d2.name,d2);return input.bump(),()=>{for(let d2 of defs)input.routes.delete(d2.name);input.bump()}},navigate:(name,sub2)=>{let at=locate3(input.routes,name);if(!at)return;input.nav.current?.(at.tab,sub2??at.sub)},get current(){return input.cur.current?.()}},command:{register:(cmds)=>input.cmd.register(cmds)},slots:{register(){throw Error("slots.register is only available inside a plugin's tui() factory")}},eikon:{rasterizer:{register:(r)=>register(r)}},lifecycle:{signal:new AbortController().signal,onDispose:()=>()=>{}}}}function createScope(id,fail2){let ctrl=new AbortController,list3=[],done2=!1,onDispose=(fn)=>{if(done2)return()=>{};let key5=Symbol();return list3.push({key:key5,fn}),()=>{list3=list3.filter((x2)=>x2.key!==key5)}},track=(fn)=>{if(!fn)return()=>{};let ran=!1,drop2=()=>{},wrapped=()=>{if(ran)return;return ran=!0,drop2(),fn()};return drop2=onDispose(wrapped),wrapped},race=(fn,left)=>new Promise((res)=>{let t2=setTimeout(()=>res("timeout"),left);Promise.resolve().then(fn).then(()=>{clearTimeout(t2),res("ok")}).catch((e)=>{clearTimeout(t2),res(e instanceof Error?e:Error(String(e)))})}),dispose=async()=>{if(done2)return;done2=!0,ctrl.abort();let queue=[...list3].reverse();list3=[];let until2=Date.now()+5000;for(let item of queue){let left=until2-Date.now();if(left<=0){fail2(`[plugin:${id}] dispose budget exhausted`);return}let out=await race(item.fn,left);if(out==="ok")continue;if(out==="timeout"){fail2(`[plugin:${id}] dispose timed out`);return}fail2(`[plugin:${id}] dispose threw`,out)}};return{lifecycle:{signal:ctrl.signal,onDispose},track,dispose}}var import_react143=__toESM(require_react_production(),1);var fmt4=(d2)=>[d2.getHours(),d2.getMinutes(),d2.getSeconds()].map((n)=>String(n).padStart(2,"0")).join(":");function Clock(props){let[now,set3]=import_react143.useState(()=>new Date);return import_react143.useEffect(()=>{let t2=setInterval(()=>set3(new Date),1000);return()=>clearInterval(t2)},[]),$jsx("text",{fg:props.api.theme.current.textMuted,wrapMode:"none",children:fmt4(now)})}var plugin={id:"demo.clock",enabled:!1,tui(api){api.slots.register({order:100,slots:{app_bottom:()=>$jsx(Clock,{api})}})}},clock_default=plugin;var import_react144=__toESM(require_react_production(),1);import{readdirSync as readdirSync12,statSync as statSync11}from"fs";import{join as join27,basename as basename15}from"path";import{homedir as homedir10}from"os";var PREVIEW_MAX=200000,read4=(dir2)=>{return(dir2==="/"?[]:[{name:"..",dir:!0}]).concat(readdirSync12(dir2,{withFileTypes:!0}).filter((d2)=>!d2.name.startsWith(".")).sort((a,b2)=>a.isDirectory()===b2.isDirectory()?a.name.localeCompare(b2.name):a.isDirectory()?-1:1).map((d2)=>({name:d2.name,dir:d2.isDirectory()})))},isMd=(name)=>/\.(md|markdown|mdx)$/i.test(name);function Files(props){let api=props.api,theme=api.theme.current,[dir2,setDir]=import_react144.useState(()=>homedir10()),[sel,setSel]=import_react144.useState(0),[preview2,setPreview]=import_react144.useState(""),listing=import_react144.useMemo(()=>{try{return{rows:read4(dir2),error:""}}catch(e){return{rows:[],error:e instanceof Error?e.message:String(e)}}},[dir2]),rows3=listing.rows;import_react144.useEffect(()=>{setSel((s)=>Math.min(s,Math.max(0,rows3.length-1)))},[rows3.length]);let active=rows3[sel];import_react144.useEffect(()=>{if(!active||active.dir){setPreview("");return}let path4=join27(dir2,active.name),cancel=!1;return(async()=>{let st=statSync11(path4);if(st.size>PREVIEW_MAX){if(!cancel)setPreview(`(file too large \u2014 ${st.size} bytes)`);return}let text5=await Bun.file(path4).text();if(!cancel)setPreview(text5)})().catch((e)=>{if(!cancel)setPreview(`(read error: ${e})`)}),()=>{cancel=!0}},[dir2,active?.name,active?.dir]);let enter=()=>{if(!active)return;if(active.name===".."){setDir((d2)=>d2==="/"?"/":join27(d2,"..")),setSel(0);return}if(active.dir)setDir((d2)=>join27(d2,active.name)),setSel(0)};return useKeyboard((key5)=>{if(!props.focused||api.ui.dialog.open())return;if(key5.name==="left"){setDir((d2)=>d2==="/"?"/":join27(d2,"..")),setSel(0);return}handleListKey(api.keys,key5,{count:rows3.length,setSel,onActivate:enter})}),$jsxs("box",{flexGrow:1,flexDirection:"column",children:[$jsx("box",{height:1,flexShrink:0,paddingX:1,children:$jsx("text",{fg:theme.textMuted,wrapMode:"none",children:dir2})}),$jsxs("box",{flexGrow:1,flexDirection:"row",children:[$jsxs("box",{width:32,flexShrink:0,flexDirection:"column",border:!0,borderColor:theme.border,children:[rows3.map((e,i)=>$jsx("box",{height:1,paddingX:1,backgroundColor:i===sel?theme.backgroundElement:void 0,children:$jsx("text",{fg:i===sel?theme.selectedListItemText:e.dir?theme.accent:theme.text,wrapMode:"none",children:(e.dir?"\u25B8 ":" ")+e.name})},e.name)),listing.error?$jsx("box",{height:1,paddingX:1,children:$jsx("text",{fg:theme.error,wrapMode:"none",children:listing.error})}):null]}),$jsx("box",{flexGrow:1,flexDirection:"column",border:!0,borderColor:theme.border,children:active&&!active.dir?$jsxs($Fragment,{children:[$jsx("box",{height:1,flexShrink:0,paddingX:1,children:$jsxs("text",{fg:theme.textMuted,wrapMode:"none",children:[basename15(active.name),isMd(active.name)?" \xB7 markdown":""]})}),$jsx("scrollbox",{scrollY:!0,flexGrow:1,children:$jsx("text",{fg:theme.text,wrapMode:"word",children:preview2})})]}):$jsx("box",{paddingX:1,children:$jsx("text",{fg:theme.textMuted,children:"Select a file to preview."})})})]})]})}var plugin2={id:"demo.files",enabled:!1,tui(api){api.route.register([{name:"Files",description:"File browser",render:({focused})=>$jsx(Files,{api,focused})}]),api.command.register([{title:"Files: open browser",value:"plugin.files.open",category:"Plugin",onSelect:()=>api.route.navigate("Files")}])}},files_default=plugin2;var INTERNAL=[clock_default,files_default];var KV_ENABLED="enabled",Ctx7=import_react146.createContext(null);function fail2(msg,err){let tail=err instanceof Error?`: ${err.message}`:err!==void 0?`: ${String(err)}`:"";console.error(msg+tail)}var RouteBody=(props)=>props.render(props.ctx);class RouteBoundary extends import_react146.Component{state={};static getDerivedStateFromError(error){return{error}}componentDidCatch(error,_info){fail2(`[plugin:${this.props.id}] render error in route "${this.props.name}"`,error)}render(){if(this.state.error)return $jsx("text",{children:`Plugin ${this.props.id} route ${this.props.name}: ${this.state.error.message}`});return this.props.children}}function enabledMap(){let v2=get2("plugin")?.[KV_ENABLED];return v2&&typeof v2==="object"?v2:{}}function persist2(id,on){let bag=get2("plugin")??{},map={...enabledMap(),[id]:on};set("plugin",{...bag,[KV_ENABLED]:map})}function scoped(base3,reg,id,scope){let n=0;return{...base3,slots:{register(p){let sid2=n++?`${id}:${n}`:id;return scope.track(reg.register({...p,id:sid2}))}},route:{register:(defs)=>scope.track(base3.route.register(defs.map((def2)=>({...def2,render:(ctx2)=>$jsx(RouteBoundary,{id,name:def2.name,children:$jsx(RouteBody,{render:def2.render,ctx:ctx2})})})))),navigate:base3.route.navigate,get current(){return base3.route.current}},event:{on:(fn)=>scope.track(base3.event.on(fn))},command:{register:(cmds)=>scope.track(base3.command.register(cmds))},eikon:{rasterizer:{register:(r)=>scope.track(base3.eikon.rasterizer.register(r))}},kv:{get:(key5,fb)=>base3.kv.get(`${id}.${key5}`,fb),set:(key5,v2)=>base3.kv.set(`${id}.${key5}`,v2)},lifecycle:scope.lifecycle}}var CELLS=new WeakMap;function ctxFor(renderer,themeRef){let hit2=CELLS.get(renderer);if(hit2)return hit2.themeRef=themeRef,hit2.ctx;let cell={themeRef,ctx:{}};return Object.defineProperty(cell.ctx,"theme",{get:()=>cell.themeRef.current.theme,enumerable:!0}),CELLS.set(renderer,cell),cell.ctx}function PluginProvider(props){let list3=props.plugins??INTERNAL,renderer=useRenderer(),themeCtx=useTheme(),keys=useKeys(),dialog=useDialog(),toast=useToast(),cmd=useCommand(),gw=useGateway(),themeRef=import_react146.useRef(themeCtx);themeRef.current=themeCtx;let keysRef=import_react146.useRef(keys);keysRef.current=keys;let gwRef=import_react146.useRef(gw);gwRef.current=gw;let navRef=import_react146.useRef(null),curRef=import_react146.useRef(null),routes=import_react146.useRef(new Map).current,[rev3,bump2]=import_react146.useReducer((x2)=>x2+1,0),reg=import_react146.useMemo(()=>createReactSlotRegistry(renderer,ctxFor(renderer,themeRef),{onPluginError:(e)=>fail2(`[plugin:${e.pluginId}] ${e.phase} error in slot "${e.slot}"`,e.error)}),[renderer]),Slot2=import_react146.useMemo(()=>createSlot(reg),[reg]),api=import_react146.useMemo(()=>createApi({renderer,theme:themeRef,keys:keysRef,dialog,toast,gw:gwRef,cmd,routes,bump:bump2,nav:navRef,cur:curRef}),[renderer,dialog,toast,cmd,routes]),entries2=import_react146.useRef(new Map),[gen,force]=import_react146.useReducer((x2)=>x2+1,0),activate=async(id,write=!0)=>{let e=entries2.current.get(id);if(!e)return!1;if(e.enabled=!0,write)persist2(id,!0);if(e.scope)return!0;let scope=createScope(id,fail2),ok=await Promise.resolve().then(()=>e.plugin.tui(scoped(api,reg,id,scope))).then(()=>!0).catch((err)=>{return fail2(`[plugin:${id}] activation failed`,err),e.error=String(err?.message??err),!1});if(!ok||!e.enabled)return await scope.dispose(),force(),ok&&!0;return e.scope=scope,e.error=void 0,force(),!0},deactivate=async(id,write=!0)=>{let e=entries2.current.get(id);if(!e)return!1;if(e.enabled=!1,write)persist2(id,!1);let scope=e.scope;if(e.scope=void 0,scope)await scope.dispose();return force(),!0},started=import_react146.useRef(!1);import_react146.useEffect(()=>{if(started.current)return;started.current=!0;let on=enabledMap();for(let p of list3)entries2.current.set(p.id,{plugin:p,enabled:on[p.id]??p.enabled??!0});return(async()=>{for(let[id,e]of entries2.current)if(e.enabled)await activate(id,!1)})(),()=>{for(let[,e]of entries2.current)e.scope?.dispose();entries2.current.clear(),routes.clear(),reg.clear()}},[]);let value2=import_react146.useMemo(()=>({Slot:Slot2,routes:[...routes.values()],bind:(nav,current2)=>{navRef.current=nav,curRef.current=current2},status:()=>[...entries2.current.values()].map((e)=>({id:e.plugin.id,enabled:e.enabled,active:!!e.scope,error:e.error})),has:(slot2)=>reg.resolveEntries(slot2).length>0,activate:(id)=>activate(id),deactivate:(id)=>deactivate(id)}),[Slot2,routes,rev3,gen]);return $jsx(Ctx7.Provider,{value:value2,children:props.children})}var usePlugins=makeUse(Ctx7,"usePlugins");function useBridge(o){let gw=useGateway(),renderer=useRenderer(),plugins=usePlugins(),state3=import_react148.useRef(o);state3.current=o,import_react148.useEffect(()=>{if(!enabled2)return;setBridge({tab:()=>state3.current.tab,setTab:o.setTab,send:async(msg)=>{let s=state3.current;if(!s.ready)throw Error("not connected");if(s.streaming)throw Error("already streaming");s.setTab(CHAT_TAB);try{await gw.request("prompt.submit",{text:msg}),s.dispatch({kind:"user",text:msg})}catch(err){let text5=err instanceof Error?err.message:String(err);throw s.dispatch({kind:"system",text:`Failed to send: ${text5}`}),err}},ready:()=>state3.current.ready,streaming:()=>state3.current.streaming,messages:()=>state3.current.messages.length,session:()=>state3.current.sid,input:()=>state3.current.composer.current?.value()??"",setInput:(v2)=>state3.current.composer.current?.set(v2),focusRegion:()=>state3.current.focusRegion,setFocusRegion:o.setFocusRegion,renderer:()=>renderer,logs:(n)=>gw.tail(n),plugin:(id,on)=>on?plugins.activate(id):plugins.deactivate(id),push:(ev)=>gw.emit("event",ev)})},[gw,renderer,plugins])}var import_react156=__toESM(require_react_production(),1);var winDrive=(s,off=0)=>s.length>=off+3&&/[A-Za-z]/.test(s[off])&&s[off+1]===":"&&(s[off+2]==="\\"||s[off+2]==="/");function looksLikePath(s){let t2=s.trim();if(!t2||t2.includes(`
|
|
4191
4191
|
`))return!1;if(t2.startsWith("file://"))return!0;if(t2.startsWith("/")||t2.startsWith("~")||t2.startsWith("./")||t2.startsWith("../"))return!0;if(winDrive(t2))return!0;let q5=t2[0];if(q5==='"'||q5==="'"){let inner=t2[1];if(inner==="/"||inner==="~")return!0;if(winDrive(t2,1))return!0}return!1}var import_react150=__toESM(require_react_production(),1);var SEP=new Set(["-","_","/"," ","."]);function boundary2(hay,i){if(i===0)return!0;let prev=hay[i-1];if(SEP.has(prev))return!0;if(prev===prev.toLowerCase()&&hay[i]!==hay[i].toLowerCase())return!0;return!1}function score(needle,hay){if(!needle)return 0;let n=needle.toLowerCase(),h2=hay.toLowerCase(),pts=0,from2=0,prev=-2;for(let i=0;i<n.length;i++){let at=h2.indexOf(n[i],from2);if(at<0)return 0;if(pts+=1,at===0)pts+=8;if(at===prev+1)pts+=5;if(at!==prev+1&&boundary2(hay,at))pts+=4;pts-=(at-(prev<0?0:prev+1))*0.1,prev=at,from2=at+1}if(h2.startsWith(n))pts+=100;return pts-hay.length*0.01}function best(q5,cmd){return cmd.aliases.reduce((m2,a)=>Math.max(m2,score(q5,a)),score(q5,cmd.name))}function rank(list3,q5){if(!q5)return[...list3];return list3.map((cmd)=>({cmd,s:best(q5,cmd)})).filter((r)=>r.s>0).sort((a,b2)=>b2.s-a.s).map((r)=>r.cmd)}function boundary3(ch){return ch===void 0||/\s/.test(ch)||"({\"'`".includes(ch)}function tag2(s){return s?`${s.start}:${s.end}:${s.text}`:""}function exact(spot,cmds){let m2=spot.query.match(/^(\S+)(?:\s+(\S.*))?$/);if(!m2)return!1;return cmds.some((c)=>c.name===m2[1]||c.aliases.includes(m2[1]))&&(m2[2]!==void 0||spot.query===m2[1])}function slashTokenAt(input,caret=input.length){let off=Math.max(0,Math.min(caret,input.length));if(/^\/[A-Za-z0-9_-]*$/.test(input))return{text:input,query:input.slice(1),start:0,end:input.length,whole:!0};let line4=input.lastIndexOf(`
|
|
4192
4192
|
`,Math.max(0,off-1))+1,slash3=input.lastIndexOf("/",off);if(slash3<line4)return null;if(!boundary3(input[slash3-1]))return null;if(input[slash3-1]==="("&&input[slash3-2]==="]")return null;if(input[slash3-1]==="[")return null;let query2=input.slice(slash3+1).match(/^[A-Za-z0-9_-]*/)?.[0]??"",end=slash3+1+query2.length;if(input[end]==="/")return null;if(slash3===line4&&off>end&&/^\s+[^\n]*$/.test(input.slice(end,off)))return{text:input.slice(slash3,off),query:input.slice(slash3+1,off),start:slash3,end:off,whole:!0};if(off>end||off<slash3)return null;if(!query2&&input[slash3+1]==="/")return null;return{text:input.slice(slash3,end),query:query2,start:slash3,end,whole:!1}}function replaceSlashToken(input,spot,cmd){let text5=`/${cmd.name}${cmd.name.includes(" ")?" ":""}`;return input.slice(0,spot.start)+text5+input.slice(spot.end)}function useSlashPopover(input,cmds,caret=input.length){let[cursor,setCursor]=import_react150.useState(0),[dismissed,setDismissed]=import_react150.useState(null),spot=import_react150.useMemo(()=>slashTokenAt(input,caret),[input,caret]),key5=tag2(spot),popover=import_react150.useMemo(()=>{if(!spot||dismissed===key5)return null;if(spot.whole&&exact(spot,cmds))return null;let subs3=matchSub(cmds,spot.text);if(subs3)return subs3;return rank(cmds,spot.query)},[spot,cmds,dismissed,key5]),active=popover?Math.max(0,Math.min(cursor,popover.length-1)):0;import_react150.useEffect(()=>{setCursor((c)=>c===0?c:0),setDismissed((d2)=>d2&&d2!==key5?null:d2)},[key5]);let ghost=import_react150.useMemo(()=>{if(!popover||popover.length===0)return"";let hit2=popover[active];if(!hit2||hit2.name.includes(" "))return"";if(!spot||!/^\/\S*$/.test(spot.text))return"";let typed=spot.query;if(typed.length<2)return"";if(!hit2.name.toLowerCase().startsWith(typed.toLowerCase()))return"";return hit2.name.slice(typed.length)},[spot,popover,active]),open3=popover!==null&&popover.length>0;return{popover,cursor:active,setCursor,ghost,open:open3,spot,dismiss:(next2,off=next2?.length??caret)=>setDismissed(tag2(next2===void 0?spot:slashTokenAt(next2,off)))}}var import_react151=__toESM(require_react_production(),1);var exports_frecency={};__export(exports_frecency,{score:()=>score2,frecency:()=>exports_frecency,bump:()=>bump2,_reset:()=>_reset});import{join as join28}from"path";import{existsSync as existsSync32,readFileSync as readFileSync23,writeFileSync as writeFileSync10,appendFileSync,mkdirSync as mkdirSync8}from"fs";var MAX2=1000,file3=()=>join28(configDir(),"frecency.jsonl"),data2=null;function load6(){if(!existsSync32(file3()))return{};let rows3=readFileSync23(file3(),"utf-8").split(`
|
|
4193
4193
|
`).filter(Boolean).map((l)=>{try{return JSON.parse(l)}catch{return null}}).filter((e)=>e!==null),latest3={};for(let e of rows3)latest3[e.path]=e;let kept=Object.values(latest3).sort((a,b2)=>b2.at-a.at).slice(0,MAX2);if(kept.length<rows3.length)mkdirSync8(configDir(),{recursive:!0}),writeFileSync10(file3(),kept.map((e)=>JSON.stringify(e)).join(`
|
|
@@ -4200,13 +4200,13 @@ ${body2}`:head}function formatProcessNotification(text5){let body2=text5.replace
|
|
|
4200
4200
|
`).filter(Boolean).map(parse5).slice(-MAX3).reverse()}function enc3(e){if(e.parts.length===0)return JSON.stringify({input:e.input});return JSON.stringify({input:e.input,parts:e.parts})}function useInputHistory(input,restore){let hist=import_react153.useRef(null);if(hist.current===null)hist.current=load7();let[,bump3]=import_react153.useState(0),idx2=import_react153.useRef(-1),stash=import_react153.useRef({input:"",parts:[]}),push3=import_react153.useCallback((entry3)=>{idx2.current=-1,stash.current={input:"",parts:[]};let e=typeof entry3==="string"?{input:entry3,parts:[]}:entry3;if(!e.input&&e.parts.length===0)return;let h2=hist.current,top=h2[0];if(top&&top.input===e.input&&sameParts(top.parts,e.parts))return;h2.unshift(e);let DIR=configDir(),FILE=file4();if(!existsSync33(DIR))mkdirSync9(DIR,{recursive:!0});if(h2.length>MAX3)h2.length=MAX3,writeFileSync11(FILE,[...h2].reverse().map(enc3).join(`
|
|
4201
4201
|
`)+`
|
|
4202
4202
|
`,"utf-8");else appendFileSync2(FILE,enc3(e)+`
|
|
4203
|
-
`,"utf-8");bump3((n)=>n+1)},[]),up=import_react153.useCallback(()=>{let h2=hist.current;if(h2.length===0)return;if(idx2.current===-1)stash.current={input,parts:[]};let next2=Math.min(idx2.current+1,h2.length-1);idx2.current=next2,restore(h2[next2])},[input,restore]),down=import_react153.useCallback(()=>{if(idx2.current===-1)return;let next2=idx2.current-1;idx2.current=next2,restore(next2===-1?stash.current:hist.current[next2])},[restore]);return{push:push3,up,down}}function sameParts(a,b2){if(a.length!==b2.length)return!1;for(let i=0;i<a.length;i++)if(a[i]?.type!==b2[i]?.type)return!1;return!0}var STYLE={file:"extmark.file",agent:"extmark.agent",paste:"extmark.paste"};function styles(syntax2,theme){let ensure3=(name,def2)=>{let id=syntax2.getStyleId(name);if(id!==null)return id;return syntax2.registerStyle(name,def2)};return{file:ensure3(STYLE.file,{fg:theme.accent}),agent:ensure3(STYLE.agent,{fg:theme.primary,italic:!0}),paste:ensure3(STYLE.paste,{fg:theme.textMuted})}}class PartsBuffer{ta;ex;typeId;style;list=[];map=new Map;constructor(ta,style2){this.ta=ta,this.ex=ta.extmarks,this.style=style2,this.typeId=this.ex.registerType("prompt-part")}text(){return this.ta.plainText}alive(){return!this.ta.isDestroyed}insertText(str4){if(!this.alive())return;this.ta.insertText(str4)}insertPart(part,virtualText){if(!this.alive())return;let start2=this.ta.visualCursor.offset,end=start2+visualLen(virtualText);this.ta.insertText(virtualText+" ");let id=this.ex.create({start:start2,end,virtual:!0,styleId:styleFor(part.type,this.style),typeId:this.typeId}),idx2=this.list.length;this.list.push(withSource(part,start2,end,virtualText)),this.map.set(id,idx2)}sync(){if(!this.alive())return;let alive=this.ex.getAllForTypeId(this.typeId),next2=[],nextMap=new Map;for(let m2 of alive){let idx2=this.map.get(m2.id);if(idx2===void 0)continue;let p=this.list[idx2];if(!p)continue;nextMap.set(m2.id,next2.length),next2.push(rangeTo(p,m2.start,m2.end))}this.list=next2,this.map=nextMap}parts(){return this.sync(),this.list}toSnapshot(){return{v:1,input:this.text(),parts:[...this.parts()]}}fromSnapshot(snap3){if(!this.alive())return;this.ta.setText(snap3.input),this.ex.clear(),this.list=[],this.map=new Map;for(let p of snap3.parts){let r=rangeOf(p);if(!r)continue;let id=this.ex.create({start:r.start,end:r.end,virtual:!0,styleId:styleFor(p.type,this.style),typeId:this.typeId});this.map.set(id,this.list.length),this.list.push(p)}this.ta.gotoBufferEnd()}clear(){if(this.list=[],this.map=new Map,!this.alive())return;this.ta.setText(""),this.ex.clear()}expand(){if(!this.alive())return{text:"",parts:[]};this.sync();let text5=this.text(),marks=this.ex.getAllForTypeId(this.typeId).sort((a,b2)=>b2.start-a.start);for(let m2 of marks){let idx2=this.map.get(m2.id);if(idx2===void 0)continue;let p=this.list[idx2];if(p?.type!=="text")continue;text5=text5.slice(0,m2.start)+p.text+text5.slice(m2.end)}return{text:text5,parts:this.list.filter((p)=>p.type!=="text")}}}function visualLen(s){let B3=globalThis.Bun;return B3?.stringWidth?B3.stringWidth(s):s.length}function styleFor(k2,s){if(k2==="file")return s.file;if(k2==="agent")return s.agent;return s.paste}function withSource(p,start2,end,value2){if(p.type==="file")return{...p,source:p.source??{type:"file",path:"",text:{start:start2,end,value:value2}}};if(p.type==="agent")return{...p,source:{start:start2,end,value:value2}};return{...p,source:{text:{start:start2,end,value:value2}}}}function rangeTo(p,start2,end){if(p.type==="file"){let src4=p.source??{type:"file",path:"",text:{start:start2,end,value:""}};return{...p,source:{...src4,text:{...src4.text,start:start2,end}}}}if(p.type==="agent"){let src4=p.source??{start:start2,end,value:""};return{...p,source:{...src4,start:start2,end}}}let src3=p.source??{text:{start:start2,end,value:""}};return{...p,source:{text:{...src3.text,start:start2,end}}}}function rangeOf(p){if(p.type==="file")return p.source?.text;if(p.type==="agent")return p.source;return p.source?.text}var import_react154=__toESM(require_react_production(),1);var MAX_VISIBLE=10;function badge2(source2,theme){if(source2==="skill")return theme.success;if(source2==="plugin")return theme.info;if(source2==="mcp")return theme.warning;return null}var SlashPopover=import_react154.memo(({commands:cmds,cursor,onCursor,onSelect})=>{let theme=useTheme().theme;if(cmds.length===0)return $jsx("box",{border:!0,borderStyle:"single",borderColor:theme.border,backgroundColor:theme.backgroundPanel,paddingX:1,height:3,children:$jsx("text",{fg:theme.textMuted,children:"No matching commands"})});let rows3=import_react154.useMemo(()=>{let start3=Math.max(0,Math.min(cursor-2,cmds.length-MAX_VISIBLE)),items=cmds.slice(start3,start3+MAX_VISIBLE);return[{type:"header",cat:cmds[cursor]?.category??items[0]?.category??"Command"},...items.map((cmd,i)=>({type:"cmd",cmd,idx:start3+i}))]},[cmds,cursor]),start2=rows3.find((r)=>r.type==="cmd")?.idx??0,clipped=cmds.length>MAX_VISIBLE,above=clipped&&start2>0,below=clipped&&start2+MAX_VISIBLE<cmds.length,height2=rows3.length+2+(above?1:0)+(below?1:0);return $jsxs("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:theme.border,backgroundColor:theme.backgroundPanel,paddingX:1,height:height2,children:[above?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2191 more"})}):null,rows3.map((row4)=>{if(row4.type==="header")return $jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{children:$jsx("span",{fg:theme.textMuted,children:$jsx("strong",{children:row4.cat})})})},`h-${row4.cat}`);let active=row4.idx===cursor,color=badge2(row4.cmd.source,theme);return $jsxs("box",{height:1,flexDirection:"row",backgroundColor:active?theme.backgroundElement:void 0,onMouseOver:()=>onCursor(row4.idx),onMouseDown:()=>onSelect(row4.cmd),paddingLeft:2,paddingRight:1,children:[$jsx("box",{flexGrow:1,height:1,children:$jsxs("text",{children:[$jsxs("span",{fg:active?theme.primary:theme.text,children:["/",row4.cmd.name]}),row4.cmd.argsHint?$jsxs("span",{fg:theme.textMuted,children:[" ",row4.cmd.argsHint]}):null,$jsxs("span",{fg:theme.textMuted,children:[" ",row4.cmd.description]})]})}),$jsxs("box",{height:1,flexDirection:"row",children:[color?$jsx("text",{children:$jsxs("span",{fg:color,children:[" ",row4.cmd.source]})}):null,row4.cmd.keybind?$jsx("text",{children:$jsxs("span",{fg:theme.textMuted,children:[" ",row4.cmd.keybind]})}):null]})]},`c-${row4.idx}-${row4.cmd.name}`)}),below?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2193 more"})}):null]})});var import_react155=__toESM(require_react_production(),1);var MAX_VISIBLE2=10,AtRefPopover=import_react155.memo(({items,cursor,onCursor,onSelect})=>{let theme=useTheme().theme,start2=Math.max(0,Math.min(cursor-2,items.length-MAX_VISIBLE2)),visible2=items.slice(start2,start2+MAX_VISIBLE2),above=start2>0,below=start2+MAX_VISIBLE2<items.length,height2=visible2.length+2+(above?1:0)+(below?1:0);return $jsxs("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:theme.border,backgroundColor:theme.backgroundPanel,paddingX:1,height:height2,children:[above?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2191 more"})}):null,visible2.map((it,j2)=>{let i=start2+j2,active=i===cursor;return $jsxs("box",{height:1,flexDirection:"row",backgroundColor:active?theme.backgroundElement:void 0,onMouseOver:()=>onCursor(i),onMouseDown:()=>onSelect(i),paddingLeft:2,paddingRight:1,children:[$jsx("box",{flexGrow:1,height:1,overflow:"hidden",children:$jsxs("text",{children:[$jsx("span",{fg:active?theme.primary:theme.text,children:it.display}),it.text!==it.display?$jsx("span",{fg:theme.textMuted,children:` ${it.text}`}):null]})}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:it.meta})})]},it.text)}),below?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2193 more"})}):null]})});var MAX_ROWS=6,MAX_PREVIEWS=2;function fmt5(n){if(n<1000)return String(n);if(n<1e6)return`${(n/1000).toFixed(1)}k`;return`${(n/1e6).toFixed(2)}M`}var Composer=import_react156.memo(import_react156.forwardRef((props,ref)=>{let theme=useTheme().theme,syntaxStyle=useTheme().syntaxStyle,gw=useGateway(),keys=useKeys(),bg2=useBackground(),ta=import_react156.useRef(null),buf=import_react156.useRef(null),sids=import_react156.useMemo(()=>styles(syntaxStyle,theme),[syntaxStyle,theme]),[input,setInput]=import_react156.useState(""),[caret,setCaret]=import_react156.useState(0),[mode2,setMode]=import_react156.useState("normal"),modeRef=import_react156.useRef(mode2);modeRef.current=mode2;let pop3=useSlashPopover(mode2==="normal"?input:"",props.cmds,caret),atSpot=mode2==="normal"?atWordAt(input,caret):null,at=useAtRefPopover(mode2==="normal"?input:"",caret),slashReq=pop3.spot&&!pop3.open&&pop3.spot.query?{method:"complete.slash",params:{text:pop3.spot.text},replaceFrom:pop3.spot.start+1,replaceTo:pop3.spot.end}:null,comp=useCompletion(mode2==="normal"&&!atSpot?input:"",mode2!=="normal"||pop3.open,gw,slashReq),write=import_react156.useCallback((v2)=>{if(buf.current?.clear(),v2)ta.current?.setText(v2);ta.current?.gotoBufferEnd(),setInput(v2)},[]),restore=import_react156.useCallback((e)=>{if(e.parts.length===0){write(e.input);return}buf.current?.fromSnapshot({v:1,input:e.input,parts:[...e.parts]}),setInput(e.input)},[write]),hist=useInputHistory(input,restore),bindings=import_react156.useMemo(()=>[...toBindings(keys.chord("input.submit"),"submit"),...toBindings(keys.chord("input.newline"),"newline")],[keys]),live=import_react156.useRef({pop:pop3,at,comp,props,input});live.current={pop:pop3,at,comp,props,input};let wasDirty=import_react156.useRef(!1);import_react156.useEffect(()=>{let dirty2=input.trim().length>0;if(dirty2===wasDirty.current)return;wasDirty.current=dirty2,live.current.props.onDirty?.(dirty2)},[input]);let select2=(c)=>{let spot=live.current.pop.spot;if(spot&&!spot.whole){write(replaceSlashToken(live.current.input,spot,c));return}if(c.name.includes(" ")){write(`/${c.name} `);return}write(""),live.current.props.onSlash(c)},fill=(c)=>{let p=live.current.pop;if(!p.spot)return;let next2=replaceSlashToken(live.current.input,p.spot,c);p.dismiss(next2),write(next2)},atAccept=(idx2)=>{let off=ta.current?.cursorOffset,src3=live.current.input,which=idx2??live.current.at.cursor,it=live.current.at.items[which];if(!it)return;let a=atWordAt(src3,off),trail2=it.text.endsWith(":")||it.text.endsWith("/"),b2=buf.current;if(trail2||!b2||!ta.current||!a){let next2=live.current.at.accept(src3,idx2,off);if(next2!==null)write(next2);return}if(it.text.includes(":"))exports_frecency.bump(it.text);let eb=ta.current.editBuffer,s=eb.offsetToPosition(a.start),e=eb.offsetToPosition(a.start+a.word.length);if(!s||!e)return;ta.current.deleteRange(s.row,s.col,e.row,e.col),ta.current.cursorOffset=a.start;let part={type:"file",mime:"text/uri-list",filename:it.text,source:{type:"file",path:it.text,text:{start:a.start,end:a.start+it.text.length,value:it.text}}};b2.insertPart(part,it.text),setInput(ta.current.plainText)},paste=import_react156.useCallback((e)=>{e.preventDefault();let raw2=decodePasteBytes(e.bytes).replace(/\r\n?/g,`
|
|
4203
|
+
`,"utf-8");bump3((n)=>n+1)},[]),up=import_react153.useCallback(()=>{let h2=hist.current;if(h2.length===0)return;if(idx2.current===-1)stash.current={input,parts:[]};let next2=Math.min(idx2.current+1,h2.length-1);idx2.current=next2,restore(h2[next2])},[input,restore]),down=import_react153.useCallback(()=>{if(idx2.current===-1)return;let next2=idx2.current-1;idx2.current=next2,restore(next2===-1?stash.current:hist.current[next2])},[restore]);return{push:push3,up,down}}function sameParts(a,b2){if(a.length!==b2.length)return!1;for(let i=0;i<a.length;i++)if(a[i]?.type!==b2[i]?.type)return!1;return!0}var STYLE={file:"extmark.file",agent:"extmark.agent",paste:"extmark.paste"};function styles(syntax2,theme){let ensure3=(name,def2)=>{let id=syntax2.getStyleId(name);if(id!==null)return id;return syntax2.registerStyle(name,def2)};return{file:ensure3(STYLE.file,{fg:theme.accent}),agent:ensure3(STYLE.agent,{fg:theme.primary,italic:!0}),paste:ensure3(STYLE.paste,{fg:theme.textMuted})}}class PartsBuffer{ta;ex;typeId;style;list=[];map=new Map;constructor(ta,style2){this.ta=ta,this.ex=ta.extmarks,this.style=style2,this.typeId=this.ex.registerType("prompt-part")}text(){return this.ta.plainText}alive(){return!this.ta.isDestroyed}insertText(str4){if(!this.alive())return;this.ta.insertText(str4)}insertPart(part,virtualText){if(!this.alive())return;let start2=this.ta.visualCursor.offset,end=start2+visualLen(virtualText);this.ta.insertText(virtualText+" ");let id=this.ex.create({start:start2,end,virtual:!0,styleId:styleFor(part.type,this.style),typeId:this.typeId}),idx2=this.list.length;this.list.push(withSource(part,start2,end,virtualText)),this.map.set(id,idx2)}sync(){if(!this.alive())return;let alive=this.ex.getAllForTypeId(this.typeId),next2=[],nextMap=new Map;for(let m2 of alive){let idx2=this.map.get(m2.id);if(idx2===void 0)continue;let p=this.list[idx2];if(!p)continue;nextMap.set(m2.id,next2.length),next2.push(rangeTo(p,m2.start,m2.end))}this.list=next2,this.map=nextMap}parts(){return this.sync(),this.list}toSnapshot(){return{v:1,input:this.text(),parts:[...this.parts()]}}fromSnapshot(snap3){if(!this.alive())return;this.ta.setText(snap3.input),this.ex.clear(),this.list=[],this.map=new Map;for(let p of snap3.parts){let r=rangeOf(p);if(!r)continue;let id=this.ex.create({start:r.start,end:r.end,virtual:!0,styleId:styleFor(p.type,this.style),typeId:this.typeId});this.map.set(id,this.list.length),this.list.push(p)}this.ta.gotoBufferEnd()}clear(){if(this.list=[],this.map=new Map,!this.alive())return;this.ta.setText(""),this.ex.clear()}expand(){if(!this.alive())return{text:"",parts:[]};this.sync();let text5=this.text(),marks=this.ex.getAllForTypeId(this.typeId).sort((a,b2)=>b2.start-a.start);for(let m2 of marks){let idx2=this.map.get(m2.id);if(idx2===void 0)continue;let p=this.list[idx2];if(p?.type!=="text")continue;text5=text5.slice(0,m2.start)+p.text+text5.slice(m2.end)}return{text:text5,parts:this.list.filter((p)=>p.type!=="text")}}}function visualLen(s){let B3=globalThis.Bun;return B3?.stringWidth?B3.stringWidth(s):s.length}function styleFor(k2,s){if(k2==="file")return s.file;if(k2==="agent")return s.agent;return s.paste}function withSource(p,start2,end,value2){if(p.type==="file")return{...p,source:p.source??{type:"file",path:"",text:{start:start2,end,value:value2}}};if(p.type==="agent")return{...p,source:{start:start2,end,value:value2}};return{...p,source:{text:{start:start2,end,value:value2}}}}function rangeTo(p,start2,end){if(p.type==="file"){let src4=p.source??{type:"file",path:"",text:{start:start2,end,value:""}};return{...p,source:{...src4,text:{...src4.text,start:start2,end}}}}if(p.type==="agent"){let src4=p.source??{start:start2,end,value:""};return{...p,source:{...src4,start:start2,end}}}let src3=p.source??{text:{start:start2,end,value:""}};return{...p,source:{text:{...src3.text,start:start2,end}}}}function rangeOf(p){if(p.type==="file")return p.source?.text;if(p.type==="agent")return p.source;return p.source?.text}var import_react154=__toESM(require_react_production(),1);var MAX_VISIBLE=10;function badge2(source2,theme){if(source2==="skill")return theme.success;if(source2==="plugin")return theme.info;if(source2==="mcp")return theme.warning;return null}var SlashPopover=import_react154.memo(({commands:cmds,cursor,onCursor,onSelect})=>{let theme=useTheme().theme;if(cmds.length===0)return $jsx("box",{border:!0,borderStyle:"single",borderColor:theme.border,backgroundColor:theme.backgroundPanel,paddingX:1,height:3,children:$jsx("text",{fg:theme.textMuted,children:"No matching commands"})});let rows3=import_react154.useMemo(()=>{let start3=Math.max(0,Math.min(cursor-2,cmds.length-MAX_VISIBLE)),items=cmds.slice(start3,start3+MAX_VISIBLE);return[{type:"header",cat:cmds[cursor]?.category??items[0]?.category??"Command"},...items.map((cmd,i)=>({type:"cmd",cmd,idx:start3+i}))]},[cmds,cursor]),start2=rows3.find((r)=>r.type==="cmd")?.idx??0,clipped=cmds.length>MAX_VISIBLE,above=clipped&&start2>0,below=clipped&&start2+MAX_VISIBLE<cmds.length,height2=rows3.length+2+(above?1:0)+(below?1:0);return $jsxs("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:theme.border,backgroundColor:theme.backgroundPanel,paddingX:1,height:height2,children:[above?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2191 more"})}):null,rows3.map((row4)=>{if(row4.type==="header")return $jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{children:$jsx("span",{fg:theme.textMuted,children:$jsx("strong",{children:row4.cat})})})},`h-${row4.cat}`);let active=row4.idx===cursor,color=badge2(row4.cmd.source,theme);return $jsxs("box",{height:1,flexDirection:"row",backgroundColor:active?theme.backgroundElement:void 0,onMouseOver:()=>onCursor(row4.idx),onMouseDown:()=>onSelect(row4.cmd),paddingLeft:2,paddingRight:1,children:[$jsx("box",{flexGrow:1,height:1,children:$jsxs("text",{children:[$jsxs("span",{fg:active?theme.primary:theme.text,children:["/",row4.cmd.name]}),row4.cmd.argsHint?$jsxs("span",{fg:theme.textMuted,children:[" ",row4.cmd.argsHint]}):null,$jsxs("span",{fg:theme.textMuted,children:[" ",row4.cmd.description]})]})}),$jsxs("box",{height:1,flexDirection:"row",children:[color?$jsx("text",{children:$jsxs("span",{fg:color,children:[" ",row4.cmd.source]})}):null,row4.cmd.keybind?$jsx("text",{children:$jsxs("span",{fg:theme.textMuted,children:[" ",row4.cmd.keybind]})}):null]})]},`c-${row4.idx}-${row4.cmd.name}`)}),below?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2193 more"})}):null]})});var import_react155=__toESM(require_react_production(),1);var MAX_VISIBLE2=10,AtRefPopover=import_react155.memo(({items,cursor,onCursor,onSelect})=>{let theme=useTheme().theme,start2=Math.max(0,Math.min(cursor-2,items.length-MAX_VISIBLE2)),visible2=items.slice(start2,start2+MAX_VISIBLE2),above=start2>0,below=start2+MAX_VISIBLE2<items.length,height2=visible2.length+2+(above?1:0)+(below?1:0);return $jsxs("box",{flexDirection:"column",border:!0,borderStyle:"single",borderColor:theme.border,backgroundColor:theme.backgroundPanel,paddingX:1,height:height2,children:[above?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2191 more"})}):null,visible2.map((it,j2)=>{let i=start2+j2,active=i===cursor;return $jsxs("box",{height:1,flexDirection:"row",backgroundColor:active?theme.backgroundElement:void 0,onMouseOver:()=>onCursor(i),onMouseDown:()=>onSelect(i),paddingLeft:2,paddingRight:1,children:[$jsx("box",{flexGrow:1,height:1,overflow:"hidden",children:$jsxs("text",{children:[$jsx("span",{fg:active?theme.primary:theme.text,children:it.display}),it.text!==it.display?$jsx("span",{fg:theme.textMuted,children:` ${it.text}`}):null]})}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:it.meta})})]},it.text)}),below?$jsx("box",{height:1,paddingLeft:1,children:$jsx("text",{fg:theme.textMuted,children:"\u2193 more"})}):null]})});var resumeHint=(subagents,streaming)=>{let count4=typeof subagents==="number"?subagents:0;if(count4<1||streaming)return;return count4===1?"\u21A9 resumes when subagent finishes":`\u21A9 resumes when ${count4} subagents finish`},MAX_ROWS=6,MAX_PREVIEWS=2;function fmt5(n){if(n<1000)return String(n);if(n<1e6)return`${(n/1000).toFixed(1)}k`;return`${(n/1e6).toFixed(2)}M`}var Composer=import_react156.memo(import_react156.forwardRef((props,ref)=>{let theme=useTheme().theme,syntaxStyle=useTheme().syntaxStyle,gw=useGateway(),keys=useKeys(),bg2=useBackground(),ta=import_react156.useRef(null),buf=import_react156.useRef(null),sids=import_react156.useMemo(()=>styles(syntaxStyle,theme),[syntaxStyle,theme]),[input,setInput]=import_react156.useState(""),[caret,setCaret]=import_react156.useState(0),[mode2,setMode]=import_react156.useState("normal"),modeRef=import_react156.useRef(mode2);modeRef.current=mode2;let pop3=useSlashPopover(mode2==="normal"?input:"",props.cmds,caret),atSpot=mode2==="normal"?atWordAt(input,caret):null,at=useAtRefPopover(mode2==="normal"?input:"",caret),slashReq=pop3.spot&&!pop3.open&&pop3.spot.query?{method:"complete.slash",params:{text:pop3.spot.text},replaceFrom:pop3.spot.start+1,replaceTo:pop3.spot.end}:null,comp=useCompletion(mode2==="normal"&&!atSpot?input:"",mode2!=="normal"||pop3.open,gw,slashReq),write=import_react156.useCallback((v2)=>{if(buf.current?.clear(),v2)ta.current?.setText(v2);ta.current?.gotoBufferEnd(),setInput(v2)},[]),restore=import_react156.useCallback((e)=>{if(e.parts.length===0){write(e.input);return}buf.current?.fromSnapshot({v:1,input:e.input,parts:[...e.parts]}),setInput(e.input)},[write]),hist=useInputHistory(input,restore),bindings=import_react156.useMemo(()=>[...toBindings(keys.chord("input.submit"),"submit"),...toBindings(keys.chord("input.newline"),"newline")],[keys]),live=import_react156.useRef({pop:pop3,at,comp,props,input});live.current={pop:pop3,at,comp,props,input};let wasDirty=import_react156.useRef(!1);import_react156.useEffect(()=>{let dirty2=input.trim().length>0;if(dirty2===wasDirty.current)return;wasDirty.current=dirty2,live.current.props.onDirty?.(dirty2)},[input]);let select2=(c)=>{let spot=live.current.pop.spot;if(spot&&!spot.whole){write(replaceSlashToken(live.current.input,spot,c));return}if(c.name.includes(" ")){write(`/${c.name} `);return}write(""),live.current.props.onSlash(c)},fill=(c)=>{let p=live.current.pop;if(!p.spot)return;let next2=replaceSlashToken(live.current.input,p.spot,c);p.dismiss(next2),write(next2)},atAccept=(idx2)=>{let off=ta.current?.cursorOffset,src3=live.current.input,which=idx2??live.current.at.cursor,it=live.current.at.items[which];if(!it)return;let a=atWordAt(src3,off),trail2=it.text.endsWith(":")||it.text.endsWith("/"),b2=buf.current;if(trail2||!b2||!ta.current||!a){let next2=live.current.at.accept(src3,idx2,off);if(next2!==null)write(next2);return}if(it.text.includes(":"))exports_frecency.bump(it.text);let eb=ta.current.editBuffer,s=eb.offsetToPosition(a.start),e=eb.offsetToPosition(a.start+a.word.length);if(!s||!e)return;ta.current.deleteRange(s.row,s.col,e.row,e.col),ta.current.cursorOffset=a.start;let part={type:"file",mime:"text/uri-list",filename:it.text,source:{type:"file",path:it.text,text:{start:a.start,end:a.start+it.text.length,value:it.text}}};b2.insertPart(part,it.text),setInput(ta.current.plainText)},paste=import_react156.useCallback((e)=>{e.preventDefault();let raw2=decodePasteBytes(e.bytes).replace(/\r\n?/g,`
|
|
4204
4204
|
`),text5=/[^\n]/.test(raw2)?raw2.replace(/\n+$/,""):raw2;if(!text5){live.current.props.onAttachClipboard?.();return}let verbatim=()=>ta.current?.insertText(text5);if(looksLikePath(text5)){gw.request("input.detect_drop",{text:text5}).then((r)=>{if(!r.matched)return verbatim();if(r.is_image){let{path:path4,count:count4,name,width,height:height2,token_estimate}=r;if(live.current.props.onAttach?.({attached:!0,path:path4,count:count4,name,width,height:height2,token_estimate}),!r.text.startsWith("[User attached"))ta.current?.insertText(r.text+" ");return}live.current.props.onAttach?.({attached:!0,path:r.path,name:r.name}),ta.current?.insertText(r.text+" ")}).catch(verbatim);return}if(text5.split(`
|
|
4205
4205
|
`).length<5)return verbatim();gw.request("paste.collapse",{text:text5}).then((r)=>ta.current?.insertText(r.placeholder+" ")).catch(verbatim)},[gw]),submit4=()=>{if(live.current.at.open)return atAccept();let cc=live.current.comp;if(cc.open){let it=cc.items[cc.cursor];if(!it||!it.text)return;write(acceptCompletion(live.current.input,it,cc.replaceFrom,cc.replaceTo));return}let p=live.current.pop;if(p.open&&!(p.spot?.whole&&p.spot.query.includes(" "))){let c=p.popover?.[p.cursor];if(c)fill(c);return}let exp=buf.current?.expand()??{text:live.current.input,parts:[]};if(modeRef.current==="shell"){let cmd=exp.text.trim();if(!cmd)return;hist.push({input:cmd,parts:exp.parts}),write(""),setMode("normal"),live.current.props.onShell?.(cmd);return}let text5=exp.text.trim();if(live.current.props.streaming){if(!text5||!live.current.props.canSubmitPrompt)return;if(hist.push({input:text5,parts:exp.parts}),write(""),text5.startsWith("/"))return void live.current.props.onSend(text5,exp.parts);live.current.props.onEnqueue?.(text5);return}let hasAtt=(live.current.props.attachments?.length??0)>0;if(!text5&&!hasAtt){live.current.props.onEmptyEnter?.();return}if(!live.current.props.canSubmitPrompt)return;if(text5)hist.push({input:text5,parts:exp.parts});write(""),live.current.props.onSend(text5,exp.parts)};import_react156.useImperativeHandle(ref,()=>({value:()=>live.current.input,set:write,insert:(text5)=>ta.current?.insertText(text5),remember:hist.push,lines:()=>ta.current?.lineCount??1,isEmpty:()=>live.current.input.trim().length===0,mode:()=>modeRef.current,setMode,caret:()=>ta.current?.cursorOffset??0,popOpen:()=>live.current.pop.open||live.current.at.open||live.current.comp.open,popNav:(d2)=>{let a=live.current.at;if(a.open)return a.setCursor((c)=>Math.max(0,Math.min(a.items.length-1,c+d2)));let cc=live.current.comp;if(cc.open)return cc.setCursor((c)=>Math.max(0,Math.min(cc.items.length-1,c+d2)));let max=(live.current.pop.popover?.length??1)-1;pop3.setCursor((c)=>Math.max(0,Math.min(max,c+d2)))},popAccept:()=>{if(live.current.at.open)return atAccept();let cc=live.current.comp;if(cc.open){let it=cc.items[cc.cursor];if(it?.text)write(acceptCompletion(live.current.input,it,cc.replaceFrom,cc.replaceTo));return}let p=live.current.pop,c=p.popover?.[p.cursor];if(c)fill(c)},popCancel:()=>{let a=live.current.at;if(a.open)return a.dismiss();let cc=live.current.comp;if(cc.open)return cc.dismiss();let p=live.current.pop;if(p.open&&p.spot&&!p.spot.whole)return p.dismiss();write("")},historyUp:()=>{let t2=ta.current;if(!t2||modeRef.current==="shell")return!1;let buf2=live.current.input;if(t2.cursorOffset>0&&buf2.lastIndexOf(`
|
|
4206
4206
|
`,t2.cursorOffset-1)>=0)return!1;if(buf2.includes(`
|
|
4207
4207
|
`)&&t2.cursorOffset!==0)return t2.cursorOffset=0,!0;return hist.up(),!0},historyDown:()=>{let t2=ta.current;if(!t2||modeRef.current==="shell")return!1;let buf2=live.current.input;if(buf2.indexOf(`
|
|
4208
4208
|
`,t2.cursorOffset)>=0)return!1;if(buf2.includes(`
|
|
4209
|
-
`)&&t2.cursorOffset!==buf2.length)return t2.cursorOffset=buf2.length,!0;return hist.down(),!0}}),[hist.up,hist.down,pop3.setCursor,write]);let sidsRef=import_react156.useRef(sids);sidsRef.current=sids;let taRef=import_react156.useCallback((r)=>{if(ta.current=r,r&&!buf.current)buf.current=new PartsBuffer(r,sidsRef.current);if(!r)buf.current=null},[]),label3=!props.ready?"Connecting...":props.starting?props.status||"Starting agent...":props.streaming?props.status||"Generating...":"Ready",dot=props.ready?props.streaming?theme.warning:theme.success:theme.error,
|
|
4209
|
+
`)&&t2.cursorOffset!==buf2.length)return t2.cursorOffset=buf2.length,!0;return hist.down(),!0}}),[hist.up,hist.down,pop3.setCursor,write]);let sidsRef=import_react156.useRef(sids);sidsRef.current=sids;let taRef=import_react156.useCallback((r)=>{if(ta.current=r,r&&!buf.current)buf.current=new PartsBuffer(r,sidsRef.current);if(!r)buf.current=null},[]),label3=!props.ready?"Connecting...":props.starting?props.status||"Starting agent...":props.streaming?props.status||"Generating...":"Ready",dot=props.ready?props.streaming?theme.warning:theme.success:theme.error,resume=resumeHint(props.subagents,props.streaming),rows3=Math.min(MAX_ROWS,Math.max(1,input.split(`
|
|
4210
4210
|
`).length)),all2=props.attachments??[],previews=all2.filter((a)=>a.path&&classify(a.path)==="img").slice(0,MAX_PREVIEWS),chips=all2.filter((a)=>!previews.includes(a)).slice(0,MAX_PREVIEWS),shown=new Set([...previews,...chips]),attRows=all2.length>0?previews.length>0?2:1:0,lift=rows3+attRows+3,more=all2.filter((a)=>!shown.has(a)).length,bits=[props.hidden?.profile,props.hidden?.title,props.hidden?.place,props.hidden?.context].filter(Boolean);return $jsxs("box",{flexDirection:"column",position:"relative",children:[props.focused&&pop3.open?$jsx("box",{position:"absolute",bottom:lift,left:0,right:0,zIndex:2,children:$jsx(SlashPopover,{commands:pop3.popover,cursor:pop3.cursor,onCursor:pop3.setCursor,onSelect:select2})}):props.focused&&at.open?$jsx("box",{position:"absolute",bottom:lift,left:0,right:0,zIndex:2,children:$jsx(AtRefPopover,{items:at.items,cursor:at.cursor,onCursor:at.setCursor,onSelect:atAccept})}):props.focused&&comp.open?$jsx("box",{position:"absolute",bottom:lift,left:0,right:0,zIndex:2,children:$jsx(AtRefPopover,{items:comp.items,cursor:comp.cursor,onCursor:comp.setCursor,onSelect:(idx2)=>{let it=comp.items[idx2];if(it?.text)write(acceptCompletion(input,it,comp.replaceFrom,comp.replaceTo))}})}):null,(props.queue?.length??0)>0?$jsx("box",{flexDirection:"column",paddingX:1,paddingBottom:1,children:props.queue.map((q5,i)=>$jsx("box",{height:1,onMouseDown:()=>props.onDequeue?.(i),children:$jsxs("text",{children:[$jsxs("span",{fg:theme.borderSubtle,children:[i===0?"\u256D":"\u2502"," "]}),$jsxs("span",{fg:theme.textMuted,children:["\u23F8 ",i+1,". ",trunc5(q5,60)]})]})},i))}):null,$jsxs("box",{border:!0,borderStyle:"single",borderColor:mode2==="shell"?theme.primary:props.focused?theme.borderActive:theme.border,flexDirection:"column",position:"relative",children:[previews.length>0?$jsx("box",{flexDirection:"column",paddingX:1,maxHeight:MAX_PREVIEWS,overflow:"hidden",children:previews.map((a)=>$jsx(ChafaImage,{path:a.path,width:60,bare:!0},`p-${a.path}`))}):null,chips.length>0?$jsxs("box",{flexDirection:"row",flexWrap:"wrap",gap:1,paddingX:1,paddingTop:previews.length>0?0:1,paddingBottom:1,children:[chips.map((a,i)=>{if(a.path){let kind2=classify(a.path);return $jsxs("box",{flexDirection:"row",height:1,children:[$jsx(MediaChip,{path:a.path,bare:kind2==="img"}),kind2!=="img"&&a.token_estimate?$jsxs("text",{fg:theme.textMuted,children:[" ~",fmt5(a.token_estimate),"t"]}):null]},a.path)}return $jsxs("text",{children:[$jsx("span",{bg:theme.secondary,fg:theme.background,children:" file "}),$jsxs("span",{bg:theme.backgroundElement,fg:theme.textMuted,children:[" ",a.name??`file ${i+1}`," "]})]},a.name??i)}),more>0?$jsxs("text",{fg:theme.textMuted,children:["+",more]}):null]}):null,$jsxs("box",{flexDirection:"row",children:[$jsx("box",{width:1,children:$jsx("text",{fg:theme.primary,children:mode2==="shell"?"$":">"})}),$jsx("box",{width:1}),$jsx("textarea",{ref:taRef,syntaxStyle,onContentChange:()=>{let t2=ta.current;setInput(t2?.plainText??""),setCaret(t2?.cursorOffset??0)},onCursorChange:()=>{if(!live.current.input.includes("@")&&!live.current.input.includes("/"))return;let off=ta.current?.cursorOffset??0;setCaret((c)=>c===off?c:off)},onSubmit:submit4,onPaste:paste,keyBindings:bindings,wrapMode:"word",minHeight:1,maxHeight:MAX_ROWS,placeholder:mode2==="shell"?"Run a shell command (30s cap, cwd) \u2014 esc or \u232B to exit":props.streaming?"Type to queue... (Enter queues, click chip to edit)":"Message Hermes... (/ for commands, Shift+Enter for newline)",focused:props.focused,textColor:theme.text,focusedTextColor:theme.text,placeholderColor:theme.textMuted,cursorColor:theme.text,backgroundColor:"transparent",focusedBackgroundColor:"transparent",flexGrow:1})]}),pop3.ghost&&props.focused&&rows3===1&&pop3.spot?.whole?$jsx("box",{position:"absolute",top:attRows,left:2+input.length,height:1,children:$jsx("text",{fg:theme.textMuted,children:pop3.ghost})}):null]}),$jsxs("box",{height:1,flexDirection:"row",paddingX:1,children:[$jsxs("text",{children:[props.streaming?$jsx(SpinGlyph,{fg:dot}):$jsx("span",{fg:dot,children:"\u25CF"}),$jsxs("span",{fg:theme.textMuted,children:[" ",mode2==="shell"?"Shell":label3]}),mode2==="shell"?$jsx("span",{fg:theme.textMuted,children:" esc exit shell mode"}):props.starting&&props.escHint?$jsx("span",{fg:theme.warning,children:" esc again to cancel"}):props.starting?$jsx("span",{fg:theme.textMuted,children:" esc\xD72 cancel"}):props.streaming&&props.escHint?$jsx("span",{fg:theme.warning,children:" esc again to interrupt"}):props.streaming?$jsx("span",{fg:theme.textMuted,children:" esc\xD72 interrupt"}):null]}),$jsx("box",{flexGrow:1}),props.streaming&&(props.queue?.length??0)>0?$jsxs("text",{fg:theme.textMuted,children:[keys.print("queue.flush")," to send queued now "]}):null,bg2.count>0?$jsxs("text",{fg:theme.text,children:["\u25B6 ",bg2.count," "]}):null,resume?$jsxs("text",{fg:theme.textMuted,children:[resume," "]}):null,bits.length>0?$jsxs("text",{fg:theme.textMuted,children:[trunc5(bits.join(" \xB7 "),56)," "]}):null,props.model?$jsx("text",{fg:theme.textMuted,children:props.model}):null]})]})}));var import_react157=__toESM(require_react_production(),1);init_sessions_db();var normalize3=(sid2)=>sid2.trim().replace(/\.json$/i,"").replace(/^session_(?=\d{8}_)/,"");function useSession(){let gw=useGateway(),inflightMessages=(inflight)=>{let user2=String(inflight?.user??"").trim(),assistant2=String(inflight?.assistant??""),messages=[];if(user2)messages.push(...transcriptToMessages([{role:"user",text:user2}]));if(assistant2||inflight?.streaming)messages.push(...transcriptToMessages([{role:"assistant",text:assistant2}]));return messages},resume=import_react157.useCallback(async(sid2)=>{let target2=normalize3(sid2),res=await gw.request("session.resume",{session_id:target2}),id=res.session_id;gw.setSession(id),set("lastSessionId",res.resumed??target2);let messages=res.messages?.length?transcriptToMessages(res.messages):[];return{id,messages,info:res.info}},[gw]),create=import_react157.useCallback(async()=>{let res=await gw.request("session.create",{});return gw.setSession(res.session_id),{id:res.session_id,info:res.info}},[gw]),activate=import_react157.useCallback(async(sid2)=>{let target2=normalize3(sid2),res=await gw.request("session.activate",{session_id:target2}),id=res.session_id;gw.setSession(id),set("lastSessionId",res.session_key??id);let history=res.messages?.length?transcriptToMessages(res.messages):[],running2=Boolean(res.running||res.status==="working"||res.status==="waiting");return{id,info:res.info,messages:[...history,...inflightMessages(res.inflight)],running:running2,startedAt:res.started_at?res.started_at*1000:void 0,status:res.status}},[gw]),busy2=import_react157.useCallback(async()=>{try{return(await gw.request("agents.list")).processes?.some((p)=>p.status==="running")??!1}catch{return!0}},[gw]),close2=import_react157.useCallback(async(sid2,opts)=>{if(!sid2)return!1;if(opts?.preserveBackground&&await busy2())return!1;try{return await gw.request("session.close",{session_id:sid2}),!0}catch{return!1}},[gw,busy2]),boot2=import_react157.useCallback(async(launch)=>{let fresh2=async(note)=>({...await create(),messages:[],note});if(launch.mode==="resume"){let target2=launch.sid??exports_sessions_db.lastReal()?.id;if(!target2)return fresh2("no prior session to resume \u2014 starting fresh");try{return await resume(target2)}catch(e){let msg=e instanceof Error?e.message:String(e);return fresh2(`resume ${target2} failed: ${msg} \u2014 starting fresh`)}}let last4=get2("lastSessionId"),row4=last4?exports_sessions_db.byId(last4):null;if(row4?.message_count===0&&row4.parent_session_id==null)try{return await resume(row4.id)}catch{}return fresh2()},[create,resume]),interrupt=import_react157.useCallback(async()=>{await gw.request("session.interrupt")},[gw]),branch2=import_react157.useCallback(async(name)=>{return(await gw.request("session.branch",name?{name}:{})).session_id??null},[gw]),compress=import_react157.useCallback(async(arg="")=>{let raw2=arg.trim(),params=raw2?{raw_args:raw2,focus_topic:raw2}:{};return gw.request("session.compress",params)},[gw]),undo=import_react157.useCallback(async()=>{await gw.request("session.undo")},[gw]);return import_react157.useMemo(()=>({boot:boot2,create,resume,activate,close:close2,interrupt,branch:branch2,compress,undo}),[boot2,create,resume,activate,close2,interrupt,branch2,compress,undo])}init_sessions_db();init_hermes_analytics();function rehome(newHome){process.env.HERMES_HOME=newHome,setHome2(newHome),setHome(newHome),cache3.clear(),resetKanban(),close(),exports_preferences.reload(),home3.reset()}var import_react158=__toESM(require_react_production(),1);var Countdown=(p)=>{let theme=useTheme().theme,[n,setN]=import_react158.useState(p.seconds);import_react158.useEffect(()=>{if(n<=0){p.onFire();return}let t2=setTimeout(()=>setN((v2)=>v2-1),1000);return()=>clearTimeout(t2)},[n,p.onFire]),useKeyboard(()=>p.onCancel());let bar3="\u2588".repeat(n)+"\u2591".repeat(Math.max(0,p.seconds-n));return $jsxs("box",{flexDirection:"column",width:58,children:[$jsx("box",{height:1,children:$jsx("text",{fg:theme.warning,children:$jsx("strong",{children:p.title})})}),$jsx("box",{height:1}),$jsx("box",{minHeight:1,children:$jsx("text",{wrapMode:"word",children:p.body})}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsxs("text",{fg:theme.warning,children:[bar3," ",n,"s"]})}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:p.action})}),$jsx("box",{height:1}),$jsx("box",{height:1,children:$jsx("text",{fg:theme.textMuted,children:"press any key to cancel"})})]})};function openCountdown(dialog,opts){return new Promise((resolve4)=>{dialog.replace($jsx(Countdown,{...opts,onFire:()=>{dialog.clear(),resolve4(!0)},onCancel:()=>{dialog.clear(),resolve4(!1)}}),()=>resolve4(!1))})}var SECONDS=10,SUSPEND=process.platform==="darwin"?"pmset sleepnow":"systemctl suspend",run=(cmd)=>Bun.spawn(["sh","-c",cmd],{stdout:"ignore",stderr:"ignore"}),fired=new Map;function makeGoalHook(dialog,toast){let act=(goal,done2,total)=>{let pref=(exports_preferences.get("onGoalDone")??"toast").trim(),head=goal.length>60?goal.slice(0,57)+"\u2026":goal,n=total&&total>0?` ${done2}/${total} items`:"";if(toast.show({variant:"success",title:"Goal complete",message:head+n,duration:8000}),pref==="toast")return;let cmd=pref==="suspend"?SUSPEND:pref;openCountdown(dialog,{title:"Goal complete \u2014 "+(pref==="suspend"?"suspending":"running hook"),body:head,action:`\u2192 ${cmd}`,seconds:SECONDS}).then((ok)=>{if(ok)run(cmd)})};return{check:(sid2)=>{if(!sid2)return;io.goalState(sid2).then((s)=>{if(!s||s.status!=="done")return;if(fired.get(sid2)===s.goal)return;fired.set(sid2,s.goal);let list3=s.checklist??[],done2=list3.filter((i)=>i.status==="completed"||i.status==="impossible").length;act(s.goal,done2,list3.length)}).catch(()=>{})}}}var import_react160=__toESM(require_react_production(),1);function useVoice(gw,sys){let[enabled3,setEnabled]=import_react160.useState(!1),[recording,setRecording]=import_react160.useState(!1),[processing,setProcessing]=import_react160.useState(!1),[recordKeyRaw,setRecordKeyRaw]=import_react160.useState(),[tts,setTts]=import_react160.useState(!1),[onTranscript,setTranscript]=import_react160.useState(null),pending3=import_react160.useRef(0),recordGen=import_react160.useRef(0),toggleGen=import_react160.useRef(0),setOnTranscript=import_react160.useCallback((fn)=>setTranscript(fn?()=>fn:null),[]),reset4=import_react160.useCallback(()=>{toggleGen.current++,recordGen.current++,pending3.current=0,setEnabled(!1),setRecording(!1),setProcessing(!1),setTts(!1)},[]),recordKey=import_react160.useMemo(()=>parseVoiceRecordKey(recordKeyRaw),[recordKeyRaw]),keyLabel=import_react160.useMemo(()=>formatVoiceRecordKey(recordKey),[recordKey]),state3=import_react160.useMemo(()=>({enabled:enabled3,recording,processing,recordKey,tts}),[enabled3,recording,processing,recordKey,tts]),toggle=import_react160.useCallback(async(action,sid2)=>{let current2=++toggleGen.current;try{let r=await gw("voice.toggle",{action,session_id:sid2});if(toggleGen.current!==current2)return;if(r.enabled!==void 0){if(setEnabled(r.enabled),!r.enabled)recordGen.current++,setRecording(!1),setProcessing(!1)}if(r.tts!==void 0)setTts(r.tts);if(r.record_key)setRecordKeyRaw(r.record_key);let label3=formatVoiceRecordKey(parseVoiceRecordKey(r.record_key)),ttsMsg=r.tts?" \xB7 tts on":"",details2=action==="status"&&r.details?.trim()?` \xB7 ${r.details.trim()}`:"";sys(`voice ${r.enabled?"on":"off"}${ttsMsg} [${label3}]${details2}`)}catch(e){if(toggleGen.current!==current2)return;sys(`voice: ${e instanceof Error?e.message:"gateway error"}`)}},[gw,sys]),record2=import_react160.useCallback(async(sid2)=>{if(!enabled3){sys("voice: mode is off \u2014 enable with /voice on");return}if(pending3.current)return;let current2=++recordGen.current;pending3.current=current2;let starting=!recording,action=starting?"start":"stop";if(starting)setRecording(!0);else setRecording(!1),setProcessing(!1);try{let r=await gw("voice.record",{action,session_id:sid2});if(recordGen.current!==current2)return;if(starting&&r.status!=="recording"){if(setRecording(!1),r.status==="busy")setProcessing(!0),sys("voice: still transcribing; try again shortly")}}catch(e){if(recordGen.current!==current2)return;setRecording(!starting),sys(`voice error: ${e instanceof Error?e.message:"gateway error"}`)}finally{if(pending3.current===current2)pending3.current=0}},[enabled3,recording,gw,sys]);return{state:state3,toggle,record:record2,setEnabled,setRecording,setProcessing,setRecordKey:setRecordKeyRaw,reset:reset4,keyLabel,onTranscript,setOnTranscript}}function VoiceIndicator({voice,keyLabel}){let theme=useTheme().theme;if(!voice.enabled&&!voice.recording&&!voice.processing)return null;let text5,fg2=theme.text;if(voice.recording)text5="\u25CF recording",fg2=theme.error;else if(voice.processing)text5="\u25CC transcribing",fg2=theme.warning;else text5=`voice ready [${keyLabel}]`,fg2=theme.textMuted;return $jsx("text",{children:$jsxs("span",{fg:fg2,children:[text5," "]})})}function sessionCapabilities(input){let sessionConnected=Boolean(input.sid),metadataHydrated=input.ready;return{sessionConnected,metadataHydrated,canSubmitPrompt:sessionConnected,canDispatchGatewayCommand:sessionConnected,canDrainQueue:sessionConnected&&!input.streaming}}var import_react161=__toESM(require_react_production(),1);function openMessage(dialog,m2,ops){let text5=m2.parts.filter((p)=>p.type==="text").map((p)=>p.content).join("");dialog.replace($jsx(DialogSelect,{title:"Message Actions",options:[{title:"Copy",value:"copy",description:"message text to clipboard"},{title:"Rewind here",value:"rewind",description:"undo back to this turn (destructive)"},{title:"Fork here",value:"fork",description:"branch a new session at this point"}],onSelect:(o)=>{if(dialog.clear(),o.value==="copy")return void copyText(text5,ops.toast);if(o.value==="rewind")return ops.rewind(m2);if(o.value==="fork")return ops.fork(m2)}}))}async function undo(gw,count4,sid2){for(let i=0;i<count4;i++)await gw.request("session.undo",sid2?{session_id:sid2}:{})}var textOf=(message2)=>message2.parts.filter((part)=>part.type==="text").map((part)=>part.content).join("");function useMessageActions(args){let turns=import_react161.useCallback((message2)=>{let messages=args.turn.current.messages,at=messages.findIndex((item)=>item.id===message2.id);return at<0?0:messages.slice(at).filter((item)=>item.role==="user").length},[args.turn]),rewind=import_react161.useCallback(async(message2)=>{if(args.turn.current.streaming)return!1;let count4=turns(message2);if(!count4)return!1;try{await undo(args.gw,count4);let result=await args.gw.request("session.history");return args.dispatch({kind:"load",messages:transcriptToMessages(result.messages??[])}),args.composer.current?.set(textOf(message2)),args.focus("input"),!0}catch(err){return args.toast.show({variant:"error",message:err instanceof Error?err.message:String(err)}),!1}},[args.gw,args.toast,args.turn,args.dispatch,args.composer,args.focus,turns]),fork2=import_react161.useCallback(async(message2)=>{if(args.turn.current.streaming)return;let result=await args.gw.request("session.branch",{}).catch((err)=>{return args.toast.show({variant:"error",message:`branch failed: ${err.message}`}),null});if(!result?.session_id)return;try{if(await undo(args.gw,turns(message2),result.session_id),!await args.activate(result.session_id)){await args.session.close(result.session_id);return}args.composer.current?.set(textOf(message2)),args.focus("input"),args.toast.show({variant:"success",message:`forked \u2192 ${result.title??result.session_id}`})}catch(err){await args.session.close(result.session_id),args.toast.show({variant:"error",message:err instanceof Error?err.message:String(err)})}},[args.gw,args.toast,args.turn,args.activate,args.session,args.composer,args.focus,turns]),menu=import_react161.useCallback((message2)=>{if(args.turn.current.streaming)return;openMessage(args.dialog,message2,{rewind,fork:fork2,toast:args.toast})},[args.dialog,args.toast,args.turn,rewind,fork2]);return{rewind,fork:fork2,menu}}var BUSY_RE=/session busy|waiting for model response/i,App=(props)=>$jsx(ThemeProvider,{initial:props.initialTheme,children:$jsx(GatewayProvider,{client:props.gateway,children:$jsx(ToastProvider,{children:$jsx(KeysProvider,{overrides:props.keyOverrides,children:$jsx(DialogProvider,{children:$jsx(CommandProvider,{children:$jsx(PluginProvider,{plugins:props.plugins,children:$jsx(BackgroundProvider,{children:$jsx(AppInner,{launch:props.launch??{mode:"new"}})})})})})})})})}),AppInner=({launch:launch0})=>{let gw=useGateway(),gwRestart=useGatewayRestart(),dialog=useDialog(),dialogOpen=useDialogOpen(),themeCtx=useTheme(),toast=useToast(),renderer=useRenderer(),plugins=usePlugins(),session=useSession(),dims=useTerminalDimensions(),goalHook=import_react163.useMemo(()=>makeGoalHook(dialog,toast),[dialog,toast]),[turn,dispatch]=import_react163.useReducer(turnReducer,initialTurn),[ready,setReady]=import_react163.useState(!1),[sid2,setSid]=import_react163.useState(""),sidRef=import_react163.useRef(sid2);sidRef.current=sid2;let[starting,setStarting]=import_react163.useState(!1),startRef=import_react163.useRef(starting);startRef.current=starting;let active=turn.streaming||starting,capabilities=sessionCapabilities({sid:sid2,ready,streaming:active}),[tab,setTab]=import_react163.useState(CHAT_TAB),[subTabs,setSubTabs]=import_react163.useState(()=>({[SESSIONS_TAB]:0,[AUTOMATION_TAB]:0,[CONFIG_TAB]:0,[EIKON_TAB]:0})),setSub=import_react163.useCallback((tabIdx,sub2)=>setSubTabs((prev)=>prev[tabIdx]===sub2?prev:{...prev,[tabIdx]:sub2}),[]),sessSub=import_react163.useCallback((i)=>setSub(SESSIONS_TAB,i),[setSub]),autoSub=import_react163.useCallback((i)=>setSub(AUTOMATION_TAB,i),[setSub]),cfgSub=import_react163.useCallback((i)=>setSub(CONFIG_TAB,i),[setSub]),eikSub=import_react163.useCallback((i)=>setSub(EIKON_TAB,i),[setSub]),[hideSidebar,setHideSidebar]=import_react163.useState(!1),[usage,setUsage]=import_react163.useState(void 0),[info3,setInfo]=import_react163.useState(null),[title,setTitle]=import_react163.useState(""),caption=title.trim(),titleRef=import_react163.useRef(caption);titleRef.current=caption,import_react163.useEffect(()=>{process.removeAllListeners("SIGINT"),process.on("SIGINT",()=>quit(renderer,sidRef.current,titleRef.current,gw))},[renderer,gw]),import_react163.useEffect(()=>{let w2=warning();if(!w2)return;toast.show({variant:"warning",title:"control server exposed",message:w2.message,duration:15000})},[toast]);let[focusRegion,setFocusRegion]=import_react163.useState("input"),goToTab=import_react163.useCallback((t2)=>{setTab(t2),setFocusRegion(t2===CHAT_TAB?"input":"content")},[]),goTo=import_react163.useCallback((t2,sub2)=>{setTab(t2),setSubTabs((prev)=>prev[t2]===sub2?prev:{...prev,[t2]:sub2}),setFocusRegion(t2===CHAT_TAB?"input":"content")},[]),[status2,setStatus]=import_react163.useState(""),[escHint,setEscHint]=import_react163.useState(!1),[eikon,setEikon]=import_react163.useState(void 0),[queue,setQueue]=import_react163.useState([]),[busy2,setBusy]=import_react163.useState("queue"),turnRef=import_react163.useRef(turn);turnRef.current=turn;let queueRef=import_react163.useRef(queue);queueRef.current=queue;let launchRef=import_react163.useRef(launch0),launch=launchRef.current,[splash,setSplash]=import_react163.useState(launch.splash!==!1),[switching,setSwitching]=import_react163.useState(!1),summoned=import_react163.useRef(!1),creating=import_react163.useRef(!1),[composing,setComposing]=import_react163.useState(!1),splashLast=import_react163.useMemo(()=>launch.mode==="new"?lastReal():void 0,[launch.mode]),splashInfo=import_react163.useMemo(()=>info3?{agentVersion:info3.version,behind:info3.update_behind,model:info3.model}:void 0,[info3?.version,info3?.update_behind,info3?.model]),splashLastProp=import_react163.useMemo(()=>splashLast?{id:splashLast.id,title:splashLast.title}:void 0,[splashLast]),news=import_react163.useMemo(()=>readChangelog()?.headline,[]),[attachments,setAttachments]=import_react163.useState([]),[cloudH,setCloudH]=import_react163.useState(CLOUD_MIN),[pick2,setPick]=import_react163.useState(void 0),[skin2,setSkin]=import_react163.useState(()=>deriveSkin(void 0)),inflight=import_react163.useRef(!1),hold=import_react163.useRef(!1),pending3=import_react163.useRef(!1),[pulse,setPulse]=import_react163.useState(0),start2=import_react163.useCallback(()=>{inflight.current=!1,pending3.current=!1,setPulse((n)=>n+1)},[]),settle=import_react163.useCallback(()=>{if(!hold.current)return;hold.current=!1,setPulse((n)=>n+1)},[]),undone=import_react163.useRef([]),sessionStart=import_react163.useRef(Date.now()),composer2=import_react163.useRef(null),promptRef=import_react163.useRef(null),{cmds}=useSlashCommands(),cmdsRef=import_react163.useRef(cmds);cmdsRef.current=cmds;let sys=import_react163.useCallback((text5)=>dispatch({kind:"system",text:text5}),[]),voice=useVoice(gw.request.bind(gw),sys);import_react163.useEffect(()=>{voice.setOnTranscript((text5)=>{let c=composer2.current;if(!c)return;c.set(""),setTimeout(()=>sendRef.current(text5),0)})},[]);let[errorPulse,setErrorPulse]=import_react163.useState(!1);import_react163.useEffect(()=>{let restart=(mode2="resume")=>{let sid3=sidRef.current;if(mode2==="resume"&&sid3)launchRef.current={mode:"resume",sid:sid3,splash:!1};gw.setSession(""),setReady(!1),setStarting(!1),setStatus("gateway restarting"),voice.reset()},exit=(code2)=>{let text5=`gateway exited${code2===null?"":` (${code2})`}`,sid3=sidRef.current;if(sid3)launchRef.current={mode:"resume",sid:sid3,splash:!1};gw.setSession(""),setReady(!1),setStarting(!1),setStatus(text5),setErrorPulse(!0),voice.reset(),dispatch({kind:"system",text:text5})};return gw.on("restart",restart),gw.on("exit",exit),()=>{gw.off("restart",restart),gw.off("exit",exit)}},[gw]);let agentState=errorPulse?"error":turn.toolActive?"working":turn.streaming&&turn.hasContent?"speaking":active?"thinking":composing?"listening":"idle",onAvatarHold=import_react163.useCallback((s)=>{if(s==="error")setErrorPulse(!1)},[]),prompt=import_react163.useMemo(()=>pending2(turn.messages),[turn.messages]),cloudAuto=turn.streaming&&!turn.hasContent&&!prompt,[force,setForce]=import_react163.useState(void 0),cloud=!prompt&&(force??cloudAuto),prevStream=import_react163.useRef(turn.streaming);import_react163.useEffect(()=>{if(!prevStream.current&&turn.streaming)setForce(void 0),setPick(void 0);prevStream.current=turn.streaming},[turn.streaming]);let onPick=import_react163.useCallback((m2)=>{setPick((p)=>{if(m2&&p&&m2.id===p.id){setForce(!1);return}return setForce(!!m2),m2})},[]),onAvatar=import_react163.useCallback(()=>{let next2=!cloud;if(!next2)setPick(void 0);setForce(next2)},[cloud]),closeCloud=import_react163.useCallback(()=>{setForce(!1),setPick(void 0)},[]),intr=import_react163.useRef(()=>{}),steer=import_react163.useCallback((text5)=>{let v2=text5.trim();if(!v2)return;gw.request("session.steer",{text:v2}).then((r)=>toast.show(r.status==="queued"?{variant:"success",message:"Queued \u2014 lands on next tool result"}:{variant:"info",message:"No turn running; send as a normal message"})).catch((e)=>toast.show({variant:"error",message:e.message}))},[gw,toast]),openSteer=import_react163.useCallback(()=>{openTextPrompt(dialog,{title:"Steer active turn",label:"Soft nudge for the running session"}).then((v2)=>{if(v2)steer(v2)})},[dialog,steer]),onEnqueue=import_react163.useCallback((t2)=>{if(busy2==="steer"){let v2=t2.trim();if(!v2)return;gw.request("session.steer",{text:v2}).then((r)=>{if(r.status==="queued")return toast.show({variant:"success",message:"Queued \u2014 lands on next tool result"});setQueue((q5)=>[...q5,t2]),toast.show({variant:"info",message:"steer rejected \u2014 queued for next turn"})}).catch(()=>setQueue((q5)=>[...q5,t2]));return}if(busy2==="interrupt"){hold.current=!0,setQueue((q5)=>[t2,...q5]),intr.current();return}setQueue((q5)=>[...q5,t2])},[busy2,gw,toast]),onAttach=import_react163.useCallback((r)=>setAttachments((a)=>[...a,r]),[]),stream=useStream({dispatch,session,launchRef,sidRef,sessionStart,goalHook,setSid,setInfo,setReady,setTitle,setBusy,setStarting,setUsage,setStatus,setSkin,setErrorPulse,settle,onVoiceStatus:(state3)=>{voice.setRecording(state3==="listening"||state3==="recording"),voice.setProcessing(state3==="transcribing"||state3==="processing")},onVoiceTranscript:(text5,noSpeechLimit)=>{if(voice.setRecording(!1),voice.setProcessing(!1),noSpeechLimit){voice.setEnabled(!1),sys("voice: disabled after repeated silence");return}voice.onTranscript?.(text5)},start:start2}),interrupt=import_react163.useCallback(()=>{if(startRef.current&&!turnRef.current.streaming)hold.current=!0;stream.doInterrupt()},[stream.doInterrupt]);intr.current=interrupt;let reset4=import_react163.useCallback(()=>{stream.interrupted.current=!1,hold.current=!1,pending3.current=!1,toast.clear("credits.depleted"),undone.current=[],dispatch({kind:"reset"}),setUsage(void 0),setReady(!1),setStarting(!1),setStatus(""),setTitle(""),setAttachments([])},[toast]),newSession=import_react163.useCallback(async()=>{if(creating.current)return;creating.current=!0,setSwitching(!0);let prev=sidRef.current;summoned.current=!0,setSplash(!0),setReady(!1),gw.setSession("");try{let r=await session.create();if(reset4(),setSid(r.id),r.info)setInfo(r.info),setUsage(r.info.usage);if(setReady(!0),setStarting(!1),setStatus(""),sessionStart.current=Date.now(),prev)session.close(prev,{preserveBackground:!0})}catch(err){if(prev)gw.setSession(prev),setReady(!0);setSplash(!1),summoned.current=!1,dispatch({kind:"system",text:`Failed to create session: ${err instanceof Error?err.message:String(err)}`})}finally{creating.current=!1,setSwitching(!1)}},[reset4,session,gw]),switchSession=import_react163.useCallback(async(target2)=>{let prev=sidRef.current;summoned.current=!0,setSplash(!0),setSwitching(!0),gw.setSession(""),setSid(""),goToTab(CHAT_TAB);try{let res=await session.resume(target2);if(reset4(),setSid(res.id),res.info)setInfo(res.info),setUsage(res.info.usage);if(setReady(!0),sessionStart.current=Date.now(),res.messages.length)dispatch({kind:"load",messages:res.messages});if(prev&&prev!==res.id)session.close(prev,{preserveBackground:!0});setSplash(!1),summoned.current=!1}catch(err){if(prev)gw.setSession(prev),setSid(prev),setReady(!0);dispatch({kind:"system",text:`Failed to resume: ${err instanceof Error?err.message:String(err)}`}),setSplash(!1),summoned.current=!1}finally{setSwitching(!1)}},[reset4,session,goToTab,gw]),liveStatus=(state3,running2=!1)=>{if(state3==="waiting")return"waiting for input\u2026";if(state3==="starting")return"starting agent\u2026";return running2||state3==="working"?"running\u2026":"ready"},activateSession=import_react163.useCallback(async(target2)=>{let prev=sidRef.current;summoned.current=!0,setSplash(!0),setSwitching(!0),gw.setSession(""),setSid(""),goToTab(CHAT_TAB);try{let res=await session.activate(target2);if(reset4(),setSid(res.id),res.info)setInfo(res.info),setUsage(res.info.usage);if(sessionStart.current=res.startedAt??Date.now(),dispatch({kind:"load.live",messages:res.messages,streaming:res.running}),setStatus(liveStatus(res.status,res.running)),setReady(!0),setSplash(!1),summoned.current=!1,prev&&prev!==res.id)toast.show({variant:"info",message:"switched live session"});return!0}catch(err){if(prev)gw.setSession(prev),setSid(prev),setReady(!0);return dispatch({kind:"system",text:`Failed to activate: ${err instanceof Error?err.message:String(err)}`}),setSplash(!1),summoned.current=!1,!1}finally{setSwitching(!1)}},[reset4,session,goToTab,toast,gw]),switchProfile=import_react163.useCallback((newHome,name)=>{voice.reset(),rehome(newHome),reset4(),gw.setSession(""),setSid(""),setInfo(null),setSkin(deriveSkin(void 0)),summoned.current=!0,setSplash(!0),launchRef.current={mode:"new",splash:!0},toast.show({variant:"info",message:`Switching to '${name}'\u2026`}),goToTab(CHAT_TAB),gwRestart("new")},[reset4,goToTab,gwRestart,toast,gw]),loadEikon=import_react163.useCallback((path4)=>{try{setEikon(parseEikonFile(path4))}catch{setEikon(void 0)}},[]),eikonName=usePref("eikon"),eikonRev=import_react163.useSyncExternalStore(exports_eikon.onRevision,exports_eikon.revision);import_react163.useEffect(()=>{let p=eikonName&&exports_eikon.baked(eikonName)||bundledEikonPath(skin2.skin?.name);if(p)loadEikon(p);else setEikon(void 0)},[eikonName,eikonRev,skin2.skin?.name,loadEikon]);let messageActions=useMessageActions({gw,dialog,toast,session,activate:activateSession,composer:composer2,turn:turnRef,dispatch,focus:setFocusRegion}),rewind=messageActions.rewind,msgMenu=messageActions.menu,attachClipboard=import_react163.useCallback(()=>{gw.request("clipboard.paste").then((r)=>r.attached?setAttachments((a)=>[...a,r]):toast.show({variant:"info",message:r.message??"No image in clipboard"})).catch((e)=>toast.show({variant:"error",message:e.message}))},[gw,toast]),sendRef=import_react163.useRef(()=>{}),slash3=useSlash({dispatch,session,turnRef,queueRef,sendRef,composer:composer2,summoned,undone,capabilities,info:info3,sid:sid2,title:caption,skin:skin2,setQueue,setFocusRegion,setSplash,setAttachments,setInfo,setUsage,setTitle,newSession,switchSession,activateSession,rewind,goTo,attachClipboard,voiceToggle:voice.toggle}),send=import_react163.useCallback(async(raw2)=>{if(creating.current)return;if(["exit","quit",":q",":q!",":wq"].includes(raw2.trim()))return quit(renderer,sidRef.current,titleRef.current,gw);let m2=raw2.match(/^\/(\S+)(?:\s+([\s\S]*))?$/);if(m2){let[,name,arg=""]=m2,r=resolve9(cmdsRef.current,name);if("hit"in r)return slash3(r.hit,arg.trim());if("ambiguous"in r){let head=r.ambiguous.slice(0,6).join(", ");return dispatch({kind:"system",text:`ambiguous: /${name} \u2192 ${head}${r.ambiguous.length>6?", \u2026":""}`})}}let text5=raw2;if(hasInterp(raw2))setStatus("interpolating\u2026"),text5=await interpolate(gw,raw2),setStatus("");stream.interrupted.current=!1;let withMedia=attachments.length?[...attachments.flatMap((a)=>a.path?[`MEDIA:${a.path}`]:[]),text5].filter(Boolean).join(`
|
|
4211
4211
|
`):text5;if(pending3.current){setQueue((q5)=>[...q5,raw2]),setStatus("queued for next turn");return}pending3.current=!0,setPulse((n)=>n+1),gw.request("prompt.submit",{text:text5}).then((r)=>{if(dispatch({kind:"user",text:withMedia}),r.status==="streaming"&&!turnRef.current.streaming)setStarting(!0),setStatus("starting agent\u2026");setAttachments([]),undone.current=[],setTab(CHAT_TAB)}).catch((e)=>{let msg=e instanceof Error?e.message:String(e);if(BUSY_RE.test(msg)){pending3.current=!1,setPulse((n)=>n+1),inflight.current=!0,setQueue((q5)=>[text5,...q5]),setStatus("queued for next turn"),toast.show({variant:"info",message:"queued for next turn"}),setTimeout(()=>{inflight.current=!1,setPulse((n)=>n+1)},400);return}pending3.current=!1,setPulse((n)=>n+1),inflight.current=!1,setStarting(!1),dispatch({kind:"system",text:`submit failed: ${msg}`}),toast.show({variant:"error",message:msg})})},[gw,slash3,attachments,toast]);sendRef.current=send;let onShell=import_react163.useCallback((command)=>{setSplash(!1),dispatch({kind:"system",text:`$ ${command}`}),setStatus("running\u2026"),gw.request("shell.exec",{command}).then((r)=>{let out=(r.stdout??"").trimEnd(),err=(r.stderr??"").trimEnd(),body2=[out,err&&`stderr:
|
|
4212
4212
|
${err}`].filter(Boolean).join(`
|