nexsys4 1.0.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,101 +1 @@
1
- !function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var a=Object.create,o=Object.defineProperty,i=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,t,n,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var l,u=s(t),d=0,p=u.length;d<p;d++)l=u[d],c.call(e,l)||l===n||o(e,l,{get:(e=>t[e]).bind(null,l),enumerable:!(a=i(t,l))||a.enumerable});return e},__toESM=(e,t,n)=>(n=null!=e?a(l(e)):{},__copyProps(!t&&e&&e.__esModule?n:o(n,"default",{value:e,enumerable:!0}),e));let u=__toESM(t,1);t=__toESM(t);let d=__toESM(n,1);n=__toESM(n);var p,m=Symbol.for("nexsys4.nexusClientOverrides.installed"),g=Symbol.for("nexsys4.nexusClientOverrides.originals"),h=200,resolveOverrideTargets=e=>({buffer:"function"==typeof e?.buffer?e.buffer():null,platform:"function"==typeof e?.platform?e.platform():null,datahandler:"function"==typeof e?.datahandler?e.datahandler():null}),getActiveNexSys=()=>globalThis.nexSys&&"object"==typeof globalThis.nexSys?globalThis.nexSys:null,getSystemSettings=(e=getActiveNexSys())=>e?.state?.system?.settings||e?.sys?.settings||{},isOverrideTabEnabled=(e=getActiveNexSys())=>Boolean(getSystemSettings(e).overrideTab),normalizeTargetQuery=e=>{const t=String(e??"").trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1).toLowerCase()}`:""},getInputArea=()=>globalThis.document?.getElementsByTagName?.("textarea")?.[0]??null,createTabCompletion=()=>({txt:null,qry:null,vals:null,index:0,reset(){this.txt=null,this.qry=null,this.vals=null,this.index=0},tc(){const e=getInputArea();if(!e)return;if(this.txt??=String(e.value??"").split(" "),this.qry??=normalizeTargetQuery(this.txt.at(-1)),!this.qry)return;const t=Array.isArray(globalThis.nexGui?.colors?.enemies)?globalThis.nexGui.colors.enemies:[],n=Array.isArray(globalThis.GMCP?.WhoList)?globalThis.GMCP.WhoList:[];this.vals??=[...new Set([...t.map(e=>String(e)),...n.map(e=>String(e?.name??"")).filter(e=>e.startsWith(this.qry))])],this.vals.length&&(this.index>this.vals.length-1?(this.txt[this.txt.length-1]=this.qry,this.index=0):(this.txt[this.txt.length-1]=this.vals[this.index],this.index+=1),e.value=this.txt.join(" "))}}),ensureTabCompletion=(e=getActiveNexSys())=>{if(e?.tabCompletion?.tc&&e?.tabCompletion?.reset)return e.tabCompletion;const t=createTabCompletion();return e&&"object"==typeof e&&(e.tabCompletion=t),t},renderCustomPrompt=(e,t={})=>{const n=e?.api?.prompt,a=t?.line;try{const e="function"==typeof n?.getCustomPrompt?n.getCustomPrompt():"function"==typeof n?.render?n.render(t):null;return"string"!=typeof e?null:(a?.parsed_line&&"object"==typeof a.parsed_line&&(a.parsed_line.formatted=()=>e),e)}catch(o){return console.error("nexSys4 custom prompt render failed",o),null}},createAddBlockOverride=()=>function add_block(e=[]){const t=getActiveNexSys();t?.prepend_line&&(e.unshift(t.prepend_line),t.prepend_line=!1);const n=Boolean(getSystemSettings(t).customPrompt);let a=0;for(let i=0;i<e.length;i+=1){const o=e[i];if(!o||o.gag)continue;if(!o.parsed_line&&!o.html_line)continue;const s=Boolean(o.is_prompt&&n&&o.parsed_line)?renderCustomPrompt(t,{line:o,source:"nexus-client-override"}):null;o.is_prompt&&0===a&&null===s?o.gag=!0:(!o.parsed_line||"function"!=typeof o.parsed_line.text||o.parsed_line.text()||0!==a&&i!==e.length-1||null!==s)&&("function"==typeof this._fill_tab_completion&&this._fill_tab_completion(o),a+=1,this.lineid+=1,o.id=this.lineid,this.lines.push(o),this.unread=!0)}const o=this.prune_lines?.()??!1;(a||o)&&this.on_lines_changed?.()},createProcessLinesOverride=()=>function process_lines(e=[]){if(this.gagged)return;if(!e.length)return;this.current_block=e;const t=this.reflexes?.();for(let n=0;n<e.length&&!(n>=1e3);n+=1)if(this.current_line=e[n],this.current_line.index=n,e[n]?.line&&String(e[n].line).indexOf(String.fromCharCode(7))>=0&&this.platform?.()?.beep?.(),!this.fullstop&&"function"==typeof t?.handle_triggers){const a=t.handle_triggers(e,n);Array.isArray(a)&&(e=a)}t?.run_function?.("onBlock",e,"ALL"),this.buffer?.()?.add_block?.(e),this.current_line=void 0,this.current_block=void 0},createOnKeyUpOverride=()=>function on_key_up(e){if(!this._nexus?.datahandler?.()?.is_connected?.())return!0;if(this.dialog_has_focus?.())return!0;const t=getActiveNexSys(),n=isOverrideTabEnabled(t),a=n?ensureTabCompletion(t):null;return this.tab_pressed?9!==e||(this.tab_pressed=!1,n?(a?.tc?.(),!1):(this.player_targetted||this._nexus?.datahandler?.()?.tab_target?.(!1),this.player_targetted=!1,!1)):(a?.reset?.(),!0)},createSendCommandOverride=e=>function send_command(t){const n=getActiveNexSys(),a=Date.now();if(n&&"object"==typeof n&&(n.sentCommands=[...(Array.isArray(n.sentCommands)?n.sentCommands:[]).slice(0,h-1),{cmd:t,time:a}]),"function"==typeof e)return e.call(this,t);this._socket&&(this._socket.send(`${t}\r\n`),this.last_send=a)},installNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e||e[m])return Boolean(e);const{buffer:t,platform:n,datahandler:a}=resolveOverrideTargets(e);return!!(t&&n&&a)&&(e[g]={buffer:t,platform:n,datahandler:a,process_lines:e.process_lines,add_block:t.add_block,on_key_up:n.on_key_up,send_command:a.send_command},e.process_lines=createProcessLinesOverride(),t.add_block=createAddBlockOverride(),n.on_key_up=createOnKeyUpOverride(),a.send_command=createSendCommandOverride(a.send_command),e[m]=!0,!0)},uninstallNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e?.[m])return!1;const t=e[g];if(!t)return delete e[m],!1;const n=t.buffer||resolveOverrideTargets(e).buffer,a=t.platform||resolveOverrideTargets(e).platform,o=t.datahandler||resolveOverrideTargets(e).datahandler;return e.process_lines=t.process_lines,n&&(n.add_block=t.add_block),a&&(a.on_key_up=t.on_key_up),o&&(o.send_command=t.send_command),delete e[g],delete e[m],!0},b=["send","sendGmcp","on","off","notice","getCommandSeparator","now","setTimeout","clearTimeout","getVariable","setVariable","emitLocal","raiseToEventStream"],y=Object.freeze({promptRender:["renderPrompt"],gmcpSnapshot:["getGMCP"],debugToggle:["setDebugEnabled","isDebugEnabled"],destroy:["destroy"]}),resolveAdapterCapabilities=e=>{const t=e?.capabilities&&"object"==typeof e.capabilities?e.capabilities:{},n={};return Object.entries(y).forEach(([a,o])=>{const i=Object.prototype.hasOwnProperty.call(t,a)?Boolean(t[a]):o.every(t=>"function"==typeof e?.[t]);if(i){const t=o.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter capability "${a}" requires methods: ${t.join(", ")}`)}n[a]=i}),Object.freeze(n)},assertAdapterContract=e=>{const t=b.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter missing required methods: ${t.join(", ")}`);return resolveAdapterCapabilities(e),e},v=["Char.Vitals","Char.Status","Char.Afflictions.List","Char.Afflictions.Add","Char.Afflictions.Remove","Char.Defences.List","Char.Defences.Add","Char.Defences.Remove","Char.Items.Add","Char.Items.Remove","Char.Items.Update","Char.Items.List","IRE.Rift.List","IRE.Rift.Change","Room.Info","IRE.Target.Info"],registerEventStreamBindings=({eventBus:e,emit:t,pushTrace:n,eventRegistrations:a})=>{if(!e?.registerEvent)return;const registerBinding=(t,o)=>{const i=`nexsys4-${t.replace(/\W+/g,"-")}`,callback=e=>o(e);e.registerEvent(t,callback,{id:i,tags:["nexsys4"]}),a.push({eventName:t,id:i}),n("register:eventStream",{eventName:t,id:i})};v.forEach(e=>{registerBinding(e,n=>{t("GmcpEvent",{tag:e,payload:n??null,rawTag:e})})}),registerBinding("PromptEvent",e=>{t("PromptEvent",{source:"eventstream-prompt",payload:e??null})})},registerStartupGag=({onLocalEvent:e,client:t,notice:n,isDebugEnabled:a})=>{if("function"!=typeof e)return;const gagBlock=()=>{a()||t?.current_block?.forEach(e=>e.gag=!0)};let o=null,i=null,s=null;i=e("CuringStartupBeginEvent",()=>{i?.(),i=null,o||(o=e("PromptEvent",gagBlock))}),s=e("CuringStartupCompleteEvent",()=>{s?.(),s=null,gagBlock(),o?.(),o=null,n("loaded using startup spam gag.")})},escapeRegExp$2=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),createTriggerRegex=e=>e.regex instanceof RegExp?e.regex:new RegExp(`^${escapeRegExp$2(e.text)}$`,"i"),resolveTriggerReason=(e,t={})=>"function"==typeof e.resolveReason?e.resolveReason(t):e.reason,resolveTriggerPayload=(e,t,n={})=>{const a={id:e,source:"text"},o=resolveTriggerReason(t,n);return void 0!==t.have&&(a.have=t.have),void 0!==o&&(a.reason=o),"function"==typeof t.resolvePayload&&Object.assign(a,t.resolvePayload(n,a)||{}),a},createBalanceTextTrigger=(e,t)=>({name:`${e}-${t.name}`,regex:createTriggerRegex(t),action:({args:n,emit:a})=>{a("BalanceStateTextEvent",resolveTriggerPayload(e,t,n.groups))}}),createBalanceTextTriggersFromFamilies=(e=[])=>e.flatMap(({id:e,entries:t=[]})=>t.map(t=>createBalanceTextTrigger(e,t))),S=["a dolomite grain","a calcite mote","a bisemutum chip","an azurite mote","a magnesium chip","an aurum flake","a plumbum flake","a stannum flake","an arsenic pellet","a ferrum flake","an antimony flake","a cuprum flake","an argentum flake","a calamine crystal","a pinch of ground cinnabar","a pinch of realgar crystals","a quartz grain","a pinch of ground malachite","a quicksilver droplet","a potash crystal","a gypsum crystal"],x=["dolomite grains","calcite motes","bisemutum chips","azurite motes","magnesium chips","aurum flakes","plumbum flakes","stannum flakes","arsenic pellets","ferrum flakes","antimony flakes","cuprum flakes","argentum flakes","calamine crystals","pinches of ground cinnabar","pinches of ground realgar","quartz grains","pinches of ground malachite","quicksilver droplets","potash crystals","gypsum crystals"],C=["a bloodroot leaf","a piece of kelp","a goldenseal root","some prickly ash bark","some bayberry bark","a ginseng root","a ginger root","a bellwort flower","a lobelia seed","a hawthorn berry","a valerian leaf","a skullcap flower","slippery elm","a kola nut","sileris berry","some irid moss","a black cohosh root","a prickly pear","some myrrh gum","an echinacea root"],w=["bloodroot leaves","pieces of kelp","goldenseal roots","pieces of prickly ash bark","pieces of bayberry bark","ginseng roots","ginger roots","bellwort flowers","lobelia seeds","hawthorn berries","valerian leaves","skullcap flowers","slippery elms","kola nuts","sileris berries","pieces of irid moss","cohosh roots","prickly pears","myrrh gums","echinacea roots"],k={"a dolomite grain":"dolomite","a calcite mote":"calcite","a bisemutum chip":"bisemutum","an azurite mote":"azurite","a magnesium chip":"magnesium","an aurum flake":"aurum","a plumbum flake":"plumbum","a stannum flake":"stannum","an arsenic pellet":"arsenic","a ferrum flake":"ferrum","an antimony flake":"antimony","a cuprum flake":"cuprum","an argentum flake":"argentum","a calamine crystal":"calamine","a pinch of ground cinnabar":"cinnabar","a pinch of realgar crystals":"realgar","a quartz grain":"quartz","a pinch of ground malachite":"malachite","a quicksilver droplet":"quicksilver","a potash crystal":"potash","a gypsum crystal":"gypsum","a bloodroot leaf":"bloodroot","a piece of kelp":"kelp","a goldenseal root":"goldenseal","some prickly ash bark":"ash","some bayberry bark":"bayberry","a ginseng root":"ginseng","a ginger root":"ginger","a bellwort flower":"bellwort","a lobelia seed":"lobelia","a hawthorn berry":"hawthorn","a valerian leaf":"valerian","a skullcap flower":"skullcap","slippery elm":"elm","a kola nut":"kola","sileris berry":"sileris","some irid moss":"moss","a black cohosh root":"cohosh","a prickly pear":"pear","some myrrh gum":"myrrh","an echinacea root":"echinacea","dolomite grains":"dolomite","calcite motes":"calcite","bisemutum chips":"bisemutum","azurite motes":"azurite","magnesium chips":"magnesium","aurum flakes":"aurum","plumbum flakes":"plumbum","stannum flakes":"stannum","arsenic pellets":"arsenic","ferrum flakes":"ferrum","antimony flakes":"antimony","cuprum flakes":"cuprum","argentum flakes":"argentum","calamine crystals":"calamine","pinches of ground cinnabar":"cinnabar","pinches of ground realgar":"realgar","quartz grains":"quartz","pinches of ground malachite":"malachite","quicksilver droplets":"quicksilver","potash crystals":"potash","gypsum crystals":"gypsum","bloodroot leaves":"bloodroot","pieces of kelp":"kelp","goldenseal roots":"goldenseal","pieces of prickly ash bark":"ash","pieces of bayberry bark":"bayberry","ginseng roots":"ginseng","ginger roots":"ginger","bellwort flowers":"bellwort","lobelia seeds":"lobelia","hawthorn berries":"hawthorn","valerian leaves":"valerian","skullcap flowers":"skullcap","slippery elms":"elm","kola nuts":"kola","sileris berries":"sileris","pieces of irid moss":"moss","cohosh roots":"cohosh","prickly pears":"pear","myrrh gums":"myrrh","echinacea roots":"echinacea"},E={antimony:"ginger",argentum:"lobelia",arsenic:"bayberry",aurum:"kelp",bisemutum:"myrrh",calamine:"hawthorn",calcite:"pear",cinnabar:"elm",cuprum:"bellwort",dolomite:"echinacea",ferrum:"ginseng",gypsum:"cohosh",magnesium:"bloodroot",malachite:"skullcap",plumbum:"goldenseal",potash:"moss",quartz:"kola",quicksilver:"sileris",realgar:"valerian",stannum:"ash"},P={ash:"stannum",bayberry:"arsenic",bellwort:"cuprum",bloodroot:"magnesium",cohosh:"gypsum",echinacea:"dolomite",elm:"cinnabar",ginseng:"ferrum",ginger:"antimony",goldenseal:"plumbum",hawthorn:"calamine",kelp:"aurum",kola:"quartz",lobelia:"argentum",moss:"potash",myrrh:"bisemutum",pear:"calcite",sileris:"quicksilver",skullcap:"malachite",valerian:"realgar"},T={azurite:0,bisemutum:0,magnesium:0,plumbum:0,arsenic:0,potash:0,stannum:0,malachite:0,realgar:0,cinnabar:0,antimony:0,ferrum:0,quartz:0,quicksilver:0,aurum:0,calamine:0,cuprum:0,argentum:0,gypsum:0,calcite:0,dolomite:0,ginseng:0,bloodroot:0,kelp:0,hawthorn:0,lobelia:0,bellwort:0,ginger:0,bayberry:0,ash:0,goldenseal:0,moss:0,valerian:0,elm:0,skullcap:0,sileris:0,kola:0,cohosh:0,pear:0,myrrh:0,echinacea:0},escapeRegExp$1=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),buildAlternation=(e=[])=>e.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean).map(escapeRegExp$1).join("|"),exactEntry=(e,t,n,a)=>({name:e,text:t,have:n,reason:a}),regexEntry=(e,t,n,a)=>({name:e,regex:t,have:n,reason:a}),dynamicReasonEntry=(e,t,n,a)=>({name:e,regex:t,have:n,resolveReason:a}),dynamicPayloadEntry=(e,t,n)=>({name:e,regex:t,resolvePayload:n}),R=[...C,...S].filter(e=>"some irid moss"!==e&&"a potash crystal"!==e),M=new RegExp(`^You eat (?<item>${buildAlternation(R)})\\.$`,"i"),D=/^Balance used: (?<duration>\d+\.\d{1,2})s\.$/i,O=/^Equilibrium used: (?<duration>\d+\.\d{1,2})s\.$/i,normalizeConsumedHerb=e=>{const t=String(e||"").trim().toLowerCase();return k[t]||t},parseObservedDurationSeconds=(e={})=>Number.parseFloat(String(e.duration||"")),$=[{id:"balance",entries:[exactEntry("ready","You have recovered balance on all limbs.",!0,"ready"),dynamicPayloadEntry("used",D,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"equilibrium",entries:[exactEntry("ready","You have recovered equilibrium.",!0,"ready"),dynamicPayloadEntry("used",O,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"herb",entries:[exactEntry("ready","You may eat another plant or mineral.",!0,"ready"),dynamicReasonEntry("use",M,!1,e=>normalizeConsumedHerb(e?.item))]},{id:"focus",entries:[exactEntry("ready","Your mind is able to focus once again.",!0,"ready"),exactEntry("use","You focus your mind intently on curing your mental maladies.",!1,"focus"),regexEntry("shriek",/^A diminutive homunculus resembling \w+ turns its head towards you, its jaws opening wider than what seems possible\. The homunculus stares intently at you and lets out an ear-piercing shriek that disrupts your thoughts\.$/i,!1,"shriek"),regexEntry("concussion",/^(?:The blow sets your head to spinning - you cannot concentrate on anything\.|\w+ swings (?:his|her) shield around, smashing your temple with a backhanded blow\.)$/i,!1,"concussion"),exactEntry("failed","You concentrate, but your mind is too tired to focus.",!1,"failed")]},{id:"sip",entries:[exactEntry("ready","You may drink another health or mana elixir.",!0,"ready"),exactEntry("health","The elixir heals and soothes you.",!1,"health"),exactEntry("mana","Your mind feels stronger and more alert.",!1,"mana"),regexEntry("apply",/^You take some elixir from .+ and rub it into your .+\.$/i,!1,"apply"),regexEntry("failed",/^(?:The elixir flows down your throat without effect\.|The health elixir fizzles away without any discernable effect\.)$/i,!1,"failed")]},{id:"moss",entries:[exactEntry("ready","You may eat another bit of irid moss or potash.",!0,"ready"),exactEntry("use","You feel your health and mana replenished.",!1,"consume"),exactEntry("failed","The potash slides down without effect.",!1,"failed")]},{id:"tree",entries:[exactEntry("ready","You may utilise the tree tattoo again.",!0,"ready"),exactEntry("use","You touch the tree of life tattoo.",!1,"touch"),exactEntry("failed","Your tree of life tattoo glows faintly for a moment then fades, leaving you unchanged.",!1,"failed")]},{id:"salve",entries:[exactEntry("ready","You may apply another salve to yourself.",!0,"ready"),exactEntry("failed","The salve dissolves and quickly disappears after you apply it.",!1,"failed"),regexEntry("restoration",/^\[Curing\]: APPLY RESTORATION TO \w+$/i,!1,"restoration"),regexEntry("apply",/^(?:\[Curing\]: APPLY (?:MENDING|EPIDERMAL|CALORIC).*$|You take out some salve and quickly rub it on your(?:\s\w+)+\.)$/i,!1,"apply")]},{id:"immunity",entries:[exactEntry("ready","Your system is able to absorb antidotes once again.",!0,"ready"),exactEntry("failed","The liquid reacts with the substance still present in your system, cancelling itself out.",!1,"failed"),exactEntry("use","[Curing]: SIP IMMUNITY",!1,"immunity")]},{id:"rebounding",entries:[exactEntry("aura","You feel an aura of rebounding surround you.",!0,"aura"),exactEntry("discharged","Your aura of weapons rebounding disappears.",!0,"discharged"),exactEntry("already-on","You puff on the pipe, but your existing aura of weapons rebounding negates any effect.",!0,"already-on"),regexEntry("malachite",/^You take a long drag of malachite off your pipe\.?$/i,!1,"malachite"),regexEntry("skullcap",/^You take a long drag of skullcap off your pipe\.$/i,!1,"skullcap")]},{id:"smoke",entries:[exactEntry("ready","Your lungs have recovered enough to smoke another mineral or plant.",!0,"ready"),exactEntry("failed","Your lungs have not yet recovered enough to allow you to smoke.",!1,"failed"),regexEntry("use",/^You take a long drag of/i,!1,"smoke")]},{id:"dragonbreath",entries:[regexEntry("ready",/^Your \w+ summoning is complete\.$/i,!0,"ready"),exactEntry("failed","You already have your breath summoned, Wyrm.",!1,"failed"),exactEntry("lightning","You feel your eyes begin to blaze as you summon lightning to your belly.",!1,"lightning"),exactEntry("fire","With an almost inaudible growl, you begin summoning a fiery inferno into your belly.",!1,"fire"),exactEntry("acid","With a great effort, you begin to summon caustic hell to your innards.",!1,"acid"),exactEntry("cold","Flaring your wings and head back, you begin summoning forth the icy cold of the pure, endless void into your belly.",!1,"cold"),exactEntry("venom","With a great shudder, you begin to summon forth the defiling, deadly wyrmvenom of legend.",!1,"venom"),exactEntry("psi","Calling upon the vast well of mental power at your disposal, you begin to summon a mind-rending blast of psi energy.",!1,"psi")]},{id:"deafness",entries:[exactEntry("ready","The aural world fades to silence.",!0,"ready"),exactEntry("calamine","You eat a calamine crystal.",!1,"calamine"),exactEntry("hawthorn","You eat a hawthorn berry.",!1,"hawthorn")]},{id:"deaf",entries:[exactEntry("already-on","You are already deaf.",!0,"already-on"),exactEntry("trance","The world about you falls silent as the deafness trance sinks upon you.",!0,"trance"),exactEntry("use","You stare straight ahead and concentrate on a distant focal point.",!1,"deaf")]},{id:"blind",entries:[exactEntry("already-on","You are already blind.",!0,"already-on"),exactEntry("ready","You open your eyes once more, and the world about you is darkness.",!0,"ready"),exactEntry("use","You close your eyes for a moment.",!1,"blind")]},{id:"speed",entries:[exactEntry("ready","Tiny tremours spread through your body as the world seems to slow down.",!0,"ready"),exactEntry("use","[Curing]: SIP SPEED",!1,"speed")]},{id:"sileris",entries:[exactEntry("quicksilver-ready","The quicksilver hardens into a supple metallic shell.",!0,"quicksilver"),exactEntry("berry-ready","The sileris berry juice hardens into a supple purple shell.",!0,"sileris"),exactEntry("quicksilver-use","You apply a quicksilver droplet to yourself.",!1,"quicksilver"),exactEntry("berry-use","You apply a sileris berry to yourself.",!1,"sileris")]},{id:"voice",entries:[exactEntry("ready","You have recovered voice balance.",!0,"ready")]},{id:"tremolo",entries:[exactEntry("ready","You may mangle a limb with the vibrato or tremolo once again.",!0,"ready"),regexEntry("arm-use",/^With a trilling vibrato you attack \w+'s broken (?:left|right) arm\. (?:He|She) screams in pain\.$/i,!1,"arm"),regexEntry("leg-use",/^Using a heavy tremolo you brutally punish \w+'s already shattered (?:left|right) leg\.$/i,!1,"leg")]},{id:"homunculus",entries:[exactEntry("ready","You may order your homunculus once more.",!0,"ready"),exactEntry("failed","You are unable to order your homunculus again so soon.",!1,"failed"),regexEntry("use",/^Focusing your mind on a diminutive homunculus resembling (?:\w+), you command it to disrupt (?:\w+)'s focus\. The homunculus turns towards (?:him|her) before letting out an ear-piercing shriek\.$/i,!1,"shriek")]},{id:"fitness",entries:[exactEntry("ready","You may purge your lungs once again.",!0,"ready"),exactEntry("use","You inhale deeply, purging yourself of your asthmatic condition.",!1,"fitness"),exactEntry("failed","You may not purge your lungs again as of this time.",!1,"failed")]},{id:"bloodboil",entries:[exactEntry("ready","You may boil your blood once again.",!0,"ready"),exactEntry("use","You summon spirits of fire to burn off that which afflicts you.",!1,"bloodboil"),exactEntry("failed","You have not recovered enough to boil your blood again as of yet.",!1,"failed")]},{id:"dragonheal",entries:[exactEntry("ready","You may purge your great form of afflictions once again.",!0,"ready"),exactEntry("use","You let out a great keening, and cast the impurities from your form.",!1,"dragonheal"),exactEntry("failed-recovery","You have not yet recovered enough to purge your great form of afflictions.",!1,"failed"),exactEntry("failed-disjointed","Your mind and body are too disjointed to invoke your healing powers, wyrm.",!1,"failed")]},{id:"rage",entries:[exactEntry("ready","You may channel your rage to cure your afflictions once again.",!0,"ready"),exactEntry("use","You allow your pent-up rage to vent and your eyes flash dangerously.",!1,"rage")]},{id:"salt",entries:[exactEntry("use","Directing the energy of salt, you surround yourself with a primal aura, purging yourself of ailments.",!1,"salt"),exactEntry("ready","You may channel alchemical energy to heal yourself once again.",!0,"ready"),exactEntry("failed","You have not recovered enough to heal yourself with alchemical energy once again.",!1,"failed")]},{id:"shrugging",entries:[exactEntry("ready","Your body has recovered enough to shrug afflictions once again.",!0,"ready"),exactEntry("use","Focusing inward, you purge your body of afflictions.",!1,"shrugging"),exactEntry("failed","You may not shrug again so soon.",!1,"failed")]},{id:"fool",entries:[exactEntry("ready","You may heal another affliction.",!0,"ready"),exactEntry("use","You press the Fool tarot to your forehead.",!1,"fool"),exactEntry("failed","The Fool has no effect on you.",!1,"failed")]},{id:"writhe",entries:[regexEntry("free",/^You have writhed free\b/i,!0,"ready"),exactEntry("no-affliction","You begin to writhe helplessly, throwing your body off balance.",!0,"no-affliction"),exactEntry("entangled","You begin to struggle free of your entanglement.",!1,"entangled"),exactEntry("transfixation","You begin trying to wrest your mind free of that which has transfixed it.",!1,"transfixation"),exactEntry("failed-entangled","You twist and turn as you attempt to escape from your entanglement.",!1,"failed"),exactEntry("failed-transfixation","You continue trying to wrest your mind free.",!1,"failed")]},{id:"impalewrithe",entries:[exactEntry("free-direct","With an heroic effort you manage to writhe yourself free from the weapon that impaled you.",!0,"impale"),exactEntry("use","You begin to writhe furiously to escape the blade that has impaled you.",!1,"impale"),regexEntry("free-swathe",/^With a vicious snarl \w+ carves a merciless swathe through your steaming guts\. You gurgle and choke as s?he withdraws (?:his|her) dripping blade, glistening with gore\.$/i,!0,"impale"),regexEntry("free-wrench",/^Searing pain tears through your midsection as you wrench away from [A-Z][a-z]+, (?:his|her) weapon ripping unceremoniously through your innards\.$/i,!0,"impale"),regexEntry("free-slide",/^With a snarl of contempt, \w+ allows you to slide free of (?:her|his) weapon\.$/i,!0,"impale")]},{id:"alleviate",entries:[exactEntry("ready","You may purge your body of afflictions once again.",!0,"ready"),exactEntry("use","Applying your knowledge of anatomy, you massage pressure points with your fingers, and a flood of relief courses through your body.",!1,"alleviate"),exactEntry("no-afflictions","There are no pesky afflictions keeping you from your destiny, Warrior.",!1,"no-afflictions"),exactEntry("failed","You are too exhausted to purge your body of afflictions.",!1,"failed")]},{id:"slough",entries:[exactEntry("use","You allow your outer layers to slough away, their fires extinguished along with the impurities contaminating them.",!1,"slough"),exactEntry("ready","You may slough off the impurities that plague you once again.",!0,"ready"),exactEntry("failed","You may not slough off the impurities again quite yet.",!1,"failed")]}],createBalanceTextTriggers=()=>({group:"balance/text",triggers:createBalanceTextTriggersFromFamilies($)}),parsePositiveInteger=(e,t=1)=>{const n=Number.parseInt(String(e??""),10);return Number.isFinite(n)&&n>0?n:t},cleanItemText=e=>String(e||"").trim(),emitInventoryDelta=({emit:e,item:t,delta:n,source:a="text-trigger"})=>{e("CacheInventoryDeltaTextEvent",{item:cleanItemText(t),delta:n,source:a})},createCacheTextTriggers=()=>({group:"cache/text",triggers:[{name:"rift-out",regex:/^You remove (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)\.$/i,action:({args:e,emit:t})=>{const n=e?.groups||{};t("CacheRiftOutTextEvent",{item:cleanItemText(n.item),amount:parsePositiveInteger(n.amount),riftAmount:parsePositiveInteger(n.riftAmount,0),source:"text-trigger"})}},{name:"curative-consume",regex:/^You eat (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{t("CacheCurativeConsumedTextEvent",{item:cleanItemText((e?.groups||{}).item),amount:1,source:"text-trigger"})}},{name:"rift-in",regex:/^You store (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)(?<capacityMarker>, which is the maximum for that type of object)?\.$/i,action:({args:e,emit:t})=>{const n=e?.groups||{};t("CacheRiftInTextEvent",{item:cleanItemText(n.item),amount:parsePositiveInteger(n.amount),riftAmount:parsePositiveInteger(n.riftAmount,0),atCapacity:Boolean(n.capacityMarker),source:"text-trigger"})}},{name:"rift-full",regex:/^You may not store any more of that type of thing\.$/i,action:({emit:e})=>{e("CacheRiftFullTextEvent",{source:"text-trigger"})}},{name:"inventory-empty",regex:/^You have no (?<item>.+?) in your inventory\.$/i,action:({args:e,emit:t})=>{t("CacheInventoryEmptyTextEvent",{item:cleanItemText((e?.groups||{}).item),source:"text-trigger"})}},{name:"give-away",regex:/^You give (?<item>.+?) to .+\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}},{name:"receive",regex:/^.+ gives (?<item>.+?) to you\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:1})}},{name:"drop",regex:/^You drop (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}}]}),normalizeTextValue=e=>String(e||"").trim(),parseDelimitedEntries=e=>String(e||"").split(/[|,]/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),parseSpaceDelimitedEntries=e=>String(e||"").replace(/\s+\((\d+)\)/g,"($1)").trim().split(/\s+/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),buildLimbPayload=({args:e,client:t,source:n="text-trigger"})=>({limb:normalizeTextValue(e.groups?.limb),raw:normalizeTextValue(t?.current_line?.line),source:n}),createLimbTextTriggers=()=>({group:"limb/selfDamage",triggers:[{name:"carve-hit",regex:/^As .+? carves into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:n})=>{n("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"crunch-hit",regex:/^As .+?'s? blow crunches into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:n})=>{n("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"pain-subsides",regex:/^The pain plaguing your (?<limb>.+) subsides\.$/,action:({args:e,client:t,emit:n})=>{n("LimbResetTextEvent",buildLimbPayload({args:e,client:t}))}}]}),normalizeTag=e=>String(e||"").trim().toLowerCase(),normalizeCommandSeparator=e=>String(e??"").trim(),toNumber=(e,t=0)=>{const n=Number(e);return Number.isFinite(n)?n:t},toOptionalBooleanFromYesNo=e=>{if(null==e||""===e)return;if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;const t=String(e).trim().toLowerCase();return!!["yes","1","true","on"].includes(t)||!["no","0","false","off"].includes(t)&&void 0},boolWord=e=>e?"on":"off",nowMs=()=>Date.now(),I={classQueue:{name:"class",type:"c!p!t!w",pre:["touch soul","stand"],post:[],exclusions:["fullQueue"]},freeQueue:{name:"free",type:"free",pre:["touch soul","stand"],post:[],exclusions:["fullQueue","shieldQueue"]},fullQueue:{name:"full",type:"ebc!w!p!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","shieldQueue","classQueue"]},shieldQueue:{name:"shield",type:"eb!w!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","fullQueue"]},shipQueue:{name:"ship",type:"s!w!t",pre:["touch soul","stand"],post:[],exclusions:[]},bloodcloakQueue:{name:"bloodcloak",type:"!teb",pre:["touch soul"],post:[],exclusions:["fullQueue","freeQueue"]},battlerageQueue:{name:"battlerage",type:"!p!t!wu",pre:["touch soul"],post:[],exclusions:[]},stunQueue:{name:"stun",type:"!t",pre:["touch soul"],post:[],exclusions:[]}},escapeRegExp=e=>String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),normalizeTriggerName=e=>String(e||"").replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,""),resolveSeparator=e=>normalizeCommandSeparator(e?.settings?.command_separator??e?.settings?.commandSeparator)||"|",splitCommands=(e,t)=>String(e||"").split(String(t||"|")||"|").map(e=>e.trim()).filter(Boolean),createQueueSentTrigger=([e,t])=>({name:`sent-${normalizeTriggerName(e)}`,regex:new RegExp(`^\\[System\\]: Added (?<commands>.+) to your ${escapeRegExp(t.type)} queue\\.$`,"i"),action:({args:n,client:a,emit:o})=>{const i=resolveSeparator(a),s=normalizeTextValue(n.groups?.commands);o("QueueSentTextEvent",{raw:normalizeTextValue(a?.current_line?.line),queueId:e,queueName:t.name,queueType:t.type,rawCommands:s,commands:splitCommands(s,i),separator:i,source:"text-trigger"})}}),createQueueTextTriggers=()=>({group:"queue/text",triggers:Object.entries(I).map(createQueueSentTrigger)}),createAffPrioritySnapshotTriggers=()=>({group:"serverside/affPrioritySnapshot",session:{name:"affPriorities",completionEvent:"ServersideAffPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"aff-priority-header",regex:/^Your affliction curing priorities(?::| for the priority set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideAffPrioSnapshotOpenTextEvent",{topic:"affPriorities",reason:"aff-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<prio>\d+):\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{const n=parseSpaceDelimitedEntries(e.groups.entries);return!!n.length&&(n.forEach(n=>{t("ServersideAffPrioTextEvent",{aff:n,prio:Number(e.groups.prio)})}),!0)}},{name:"close",closer:!0,closeReason:"aff-priority-terminal-line",regex:/^Affs with priority 26 are ignored\.$/i}]}),createCuringSetSnapshotTriggers=()=>{let e=[],t="";const reset=()=>{e=[],t=""};return{group:"serverside/curingSetSnapshot",session:{name:"curingSets",completionEvent:"ServersideCuringSetSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"curingset-list-header",regex:/^Your current curing sets$/,action:()=>{reset()}},{name:"set-line",regex:/^(?!-+$)(?<name>\S+)(?<current> \(current\))?$/,action:({args:n})=>{const a=String(n.groups?.name||"").trim();return!!a&&(e.push(a),n.groups?.current&&(t=a),!0)}},{name:"close",closer:!0,closeReason:"curingset-total-line",regex:/^You are using a total of (?<used>\d+) of your allowed (?<limit>\d+) curing sets\.$/,action:({args:n,emit:a})=>{a("ServersideCuringSetsTextEvent",{sets:[...e],activeSet:t,used:Number(n.groups.used),limit:Number(n.groups.limit)})}},{name:"empty",opener:!0,closer:!0,openReason:"curingset-empty-header",closeReason:"curingset-empty-line",regex:/^You have no sets defined/,action:({emit:e})=>{reset(),e("ServersideCuringSetsTextEvent",{sets:[],activeSet:"",used:0})}}]}},createCuringSetSwitchTriggers=()=>({group:"serverside/curingSetSwitch",triggers:[{name:"switched",regex:/^You will now cure using the (?<set>\S+) set\.$/,action:({args:e,emit:t})=>{t("ServersideCuringSetSwitchedTextEvent",{set:e.groups?.set||""})}}]}),createDefPrioritySnapshotTriggers=()=>({group:"serverside/defPrioritySnapshot",session:{name:"defPriorities",completionEvent:"ServersideDefPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"def-priority-header",regex:/^Your defence priorities(?::| for curing set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioSnapshotOpenTextEvent",{topic:"defPriorities",reason:"def-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<def>\w+)\s*: (?<prio>\d+)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio)})}}]}),createLivePriorityConfirmationTriggers=()=>({group:"serverside/livePriorityConfirmations",triggers:[{name:"aff-set",regex:/^You have set the '(?<aff>[^']+)' affliction to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideAffPrioTextEvent",{aff:String(e.groups.aff||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}},{name:"def-set",regex:/^You have set the '(?<def>\w+)' defence to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}}]}),emitStatus$1=(e,t,n)=>{e("ServersideStatusTextEvent",{key:t,value:n})},createLiveStatusConfirmationTriggers=()=>({group:"serverside/liveStatusConfirmations",triggers:[{name:"enabled",regex:/^Curing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"enabled",/^activated$/.test(e.groups.value))}},{name:"transmutation-on",regex:/^You will now use transmutation cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!0)}},{name:"transmutation-off",regex:/^You will now use concoction-based cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!1)}},{name:"sip-priority",regex:/^Curing will now prioritise (?<value>mana|health) over (?<other>mana|health)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-threshold",regex:/^(?<kind>Health|Mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"sipHealthAt":"sipManaAt",Number(e.groups.value))}},{name:"moss-threshold",regex:/^Moss (?<kind>health|mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"mossHealthAt":"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Automatic usage of focusing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focus",/^activated$/.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^You will now prioritise (?<value>focus|herbs) over (?<other>focus|herbs)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focusOverHerbs",/^focus$/.test(e.groups.value))}},{name:"tree",regex:/^Automatic usage of the tree tattoo (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"tree",/^activated$/.test(e.groups.value)?"on":"off")}},{name:"clot-on",regex:/^You will now attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!0)}},{name:"clot-off",regex:/^You will no longer attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!1)}},{name:"clot-at",regex:/^Will clot above (?<value>\d+) bleeding\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAt",Number(e.groups.value))}},{name:"insomnia-on",regex:/^You will now use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!0)}},{name:"insomnia-off",regex:/^You will now not use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!1)}},{name:"fractures-above",regex:/^Will cure health based afflictions above (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^You will now use mana if above (?<value>\d+)% of your maximum mana reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"manaThreshold",Number(e.groups.value))}},{name:"batch-on",regex:/^You will now attempt to cure multiple things at once\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!0)}},{name:"batch-off",regex:/^You will now cure one thing at a time\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!1)}},{name:"clot-above",regex:/^You will now use corrupted clotting if above (?<value>\d+)% of your maximum health reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAbove",Number(e.groups.value))}}]}),emitStatus=(e,t,n)=>{e("ServersideStatusTextEvent",{key:t,value:n})},N=[()=>({group:"system/systemEvent",triggers:[{name:"line",regex:/^SystemEvent (?<eventName>.+)$/,action:({args:e,client:t,emit:n})=>{const a=normalizeTextValue(e.groups?.eventName);if(!a)return;const o=normalizeTextValue(t?.current_line?.line);n(a,{raw:o});const i=a.match(/^(?<queueName>[A-Za-z]+)QueueFired$/);i?.groups?.queueName&&n("QueueFiredTextEvent",{raw:o,queueName:i.groups.queueName})}},{name:"all-queues-cleared",regex:/^\[System\]: All queued commands cleared\.$/,action:({client:e,emit:t})=>{t("AllQueuesClearedTextEvent",{raw:normalizeTextValue(e?.current_line?.line)})}}]}),()=>({group:"system/separatorChanged",triggers:[{name:"separator-changed",regex:/^Your command separator is now:\s*(?<sep>\S+)\s*$/,action:({args:e,emit:t})=>{const n=String(e.groups?.sep||"").trim();n&&t("CommandSeparatorChangedTextEvent",{separator:n})}}]}),createBalanceTextTriggers,createCacheTextTriggers,createLimbTextTriggers,createQueueTextTriggers,()=>({group:"serverside/statusSnapshot",session:{name:"status",completionEvent:"ServersideStatusSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"status-header",regex:/^Curing Status:$/},{name:"enabled",regex:/^Enabled:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"enabled",/^yes$/i.test(e.groups.value))}},{name:"reporting",regex:/^Reporting commands:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"reporting",/^yes$/i.test(e.groups.value))}},{name:"sipping",regex:/^Sipping:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipping",/^yes$/i.test(e.groups.value))}},{name:"afflictions",regex:/^Affliction Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"afflictions",/^yes$/i.test(e.groups.value))}},{name:"defences",regex:/^Defence Upkeep:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"defences",/^yes$/i.test(e.groups.value))}},{name:"transmutation",regex:/^Curing Method:\s+(?<value>\w+)$/,action:({args:e,emit:t})=>{emitStatus(t,"transmutation","transmutation"===String(e.groups.value||"").toLowerCase())}},{name:"fallback",regex:/^Fallback Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"fallback",/^yes$/i.test(e.groups.value))}},{name:"custom-aff-priority",regex:/^Custom Curing Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customAffPriority",/^yes$/i.test(e.groups.value))}},{name:"custom-def-priority",regex:/^Custom Defence Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customDefPriority",/^yes$/i.test(e.groups.value))}},{name:"sip-priority",regex:/^Health\/Mana Priority:\s+(?<value>Health|Mana)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-health-at",regex:/^Sip health at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipHealthAt",Number(e.groups.value))}},{name:"sip-mana-at",regex:/^Sip mana at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipManaAt",Number(e.groups.value))}},{name:"moss-health-at",regex:/^Eat moss below health:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossHealthAt",Number(e.groups.value))}},{name:"moss-mana-at",regex:/^Eat moss below mana:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Use focus:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focus",/^yes$/i.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^Focus over herbs:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focusOverHerbs",/^yes$/i.test(e.groups.value))}},{name:"clot",regex:/^Use clot:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"clot",/^yes$/i.test(e.groups.value))}},{name:"tree",regex:/^Use tree:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"tree",/^yes$/i.test(e.groups.value)?"on":"off")}},{name:"clot-at",regex:/^Clot at:\s+(?<value>\d+) bleeding$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAt",Number(e.groups.value))}},{name:"insomnia",regex:/^Use insomnia:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"insomnia",/^yes$/i.test(e.groups.value))}},{name:"fractures-above",regex:/^Will cure fractures above:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^Will use mana above:\s+(?<value>\d+)% mana$/,action:({args:e,emit:t})=>{emitStatus(t,"manaThreshold",Number(e.groups.value))}},{name:"clot-health",regex:/^Will clot health until:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAbove",Number(e.groups.value))}},{name:"batch",regex:/^Batch actions:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"batch",/^yes$/i.test(e.groups.value))}},{name:"kaido-transmute",closer:!0,closeReason:"status-terminal-line",regex:/^Use Kaido Transmute:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"kaidoTransmute",/^yes$/i.test(e.groups.value))}}]}),createAffPrioritySnapshotTriggers,createDefPrioritySnapshotTriggers,createCuringSetSnapshotTriggers,createCuringSetSwitchTriggers,createLiveStatusConfirmationTriggers,createLivePriorityConfirmationTriggers,()=>({group:"serverside/queuePrediction",triggers:[{name:"queue-line",regex:/^CURING QUEUE(?:\s+LIST)?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersideQueueListTextEvent",{queue:parseDelimitedEntries(e.groups.entries)})}},{name:"predictions-line",regex:/^CURING PREDICTIONS?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersidePredictionsTextEvent",{predictions:parseDelimitedEntries(e.groups.entries).reduce((e,t)=>(e[t]=!0,e),{})})}}]})],createTriggerCatalog=()=>N.map(e=>e()),registerTextTriggers=({triggerApi:e,client:t,emit:n,onLocalEvent:a,pushTrace:o,triggerIds:i,registerCleanup:s,registerTriggerGroupActivity:l,triggerSessions:c})=>{if(!e?.triggers?.add)return void o("register:nexAction:skipped",{reason:"trigger-api-unavailable"});const u="function"==typeof e.triggers.enable&&"function"==typeof e.triggers.disable,sessionToggleTag=e=>`session:${e}`,setSessionTriggers=(t,n)=>{if(!u)return;const a=sessionToggleTag(t);n?e.triggers.enable([a]):e.triggers.disable([a]),o(n?"session:enable":"session:disable",{session:t,tag:a})},resetSession=(e,t={})=>{const n=c[e];return!!n&&(n.active=!1,n.hasLines=!1,n.lastReason=String(t.reason||"reset"),n.lastClosedAt=Date.now(),setSessionTriggers(e,!1),o("session:reset",{session:e,...t}),!0)},beginSession=(e,t={})=>{const n=c[e];return!!n&&(setSessionTriggers(e,!0),n.active?(o("session:reopen",{session:e,...t}),!1):(n.active=!0,n.hasLines=!1,n.lastReason=String(t.reason||t.source||"begin"),n.lastOpenedAt=Date.now(),o("session:begin",{session:e,...t}),!0))},markSessionHasData=e=>{const t=c[e];t?.active&&!t.hasLines&&(t.hasLines=!0)},completeSession=(e,t={})=>{const a=c[e];if(!a?.active)return!1;const i=a.hasLines;return a.active=!1,a.hasLines=!1,a.lastReason=String(t.reason||"complete"),a.lastClosedAt=Date.now(),setSessionTriggers(e,!1),o("session:complete",{session:e,reason:a.lastReason,hadLines:i,completionEvent:t.completionEvent||""}),t.completionEvent&&n(t.completionEvent,{topic:e,reason:a.lastReason}),!0},registerTextTrigger=({id:a,group:s,regex:c,action:u,enabled:d=!0,tags:p=[],once:m,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:w})=>{e.triggers.add({id:a,regex:c,enabled:d,tags:p,once:m,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:w,action:e=>u({args:e,client:t,emit:n,pushTrace:o})}),i.push(a),l(s,"triggerCount"),o("register:nexAction",{id:a,group:s,enabled:d,regex:c instanceof RegExp?c.source:String(c)})};createTriggerCatalog().forEach(e=>{const t=e.session;t&&"function"==typeof a&&((t.resetEvents||[]).forEach(({event:n,reason:o})=>{s(a(n,()=>resetSession(t.name,{reason:o,event:n}))),l(e.group,"hookCount")}),(t.fallbackCloseEvents||[]).forEach(({event:n,reason:o})=>{s(a(n,()=>completeSession(t.name,{reason:o,completionEvent:t.completionEvent}))),l(e.group,"hookCount")})),e.triggers.forEach(n=>{const a=t?.name,o=Boolean(a&&!0===n.opener),i=Boolean(a&&!0===n.closer),s=["nexsys4","adapter","text",`group:${e.group}`],l=Boolean(a)&&!o,d=l?[sessionToggleTag(a)]:[],p=(!l||!u)&&(n.enabled??!0);registerTextTrigger({id:`nexsys4-${e.group.replace(/[\\/]+/g,"-")}-${n.name}`,group:e.group,regex:n.regex,enabled:p,tags:[...s,...d,...n.tags||[]],once:n.once,duration:n.duration,fg:n.fg,bg:n.bg,lines:n.lines,prompt:n.prompt,finalAction:n.finalAction,onRemove:n.onRemove,onDisable:n.onDisable,onEnable:n.onEnable,action:s=>{if(o)beginSession(a,{group:e.group,trigger:n.name,reason:n.openReason||"open"});else if(a&&!c[a]?.active)return;const l="function"==typeof n.action?n.action(s):void 0;return!a||o||i||!1===l||markSessionHasData(a),i&&completeSession(a,{reason:n.closeReason||"close",completionEvent:t.completionEvent}),l}})})})},L="",j="#c1bfff",B="#FFF2D7",F=`<span style="color:${j}">[-</span><span style="color:${"#cf6dfc"}">nexSys</span><span style="color:${j}">-] </span>`,q=Object.freeze({fg:B,bg:L}),U=Object.freeze({default:Object.freeze({default:Object.freeze({message:q})}),affGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +aff ",fg:"orange",bg:L}),message:Object.freeze({fg:"green",bg:L})})}),affLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -aff ",fg:"orange",bg:L}),message:Object.freeze({fg:"red",bg:L})})}),defGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +def ",fg:"purple",bg:L}),message:Object.freeze({fg:"green",bg:L})})}),defLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -def ",fg:"purple",bg:L}),message:Object.freeze({fg:"red",bg:L})})}),balanceRecovered:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" onBal ",fg:"brown",bg:L}),message:Object.freeze({fg:"green",bg:L})})}),balanceLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" offBal ",fg:"brown",bg:L}),message:Object.freeze({fg:"red",bg:L})})}),trackableGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" + ",fg:"white",bg:L}),message:Object.freeze({fg:"green",bg:L})})}),trackableLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" - ",fg:"white",bg:L}),message:Object.freeze({fg:"red",bg:L})})}),priority:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:"priority change: ",fg:"yellow",bg:L}),message:Object.freeze({fg:"red",bg:L})})}),output:Object.freeze({default:Object.freeze({message:Object.freeze({fg:"red",bg:L})})})}),escapeHtml$1=e=>String(e||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),normalizeNoticeToken=(e,t="")=>String(e||t).trim().toLowerCase(),resolveNoticeStyle=(e={})=>{const t=String(e.category||"default").trim(),n=normalizeNoticeToken(e.action,"default"),a=U[t]||U.default;return a[n]||a.default||U.default.default},normalizeNoticePart=(e,t=q)=>"string"==typeof e?{text:e,fg:t.fg,bg:t.bg}:{text:String(e?.text||""),fg:String(e?.fg??t.fg??q.fg),bg:String(e?.bg??t.bg??q.bg)},buildNoticeParts=(e,t={})=>{const n=resolveNoticeStyle(t),a=n.message||q;if(Array.isArray(t.parts)&&t.parts.length)return t.parts.map(e=>normalizeNoticePart(e,a)).filter(e=>e.text);if(t.title)return[normalizeNoticePart({text:String(t.title),fg:t.titleFg??a.fg,bg:t.titleBg??a.bg},a),normalizeNoticePart({text:String(e),fg:t.fg??a.fg,bg:t.bg??a.bg},a)].filter(e=>e.text);const o=[];return n.prefix?.text&&o.push(normalizeNoticePart(n.prefix,a)),o.push(normalizeNoticePart({text:String(e),fg:t.fg??a.fg,bg:t.bg??a.bg},a)),o.filter(e=>e.text)},renderSpanStyle=e=>["white-space:pre-wrap",e.fg?`color:${escapeHtml$1(e.fg)}`:"",e.bg?`background-color:${escapeHtml$1(e.bg)}`:""].filter(Boolean).join(";"),renderNoticeHtml=(e,t={},n=[])=>`<span class="nexsys4-notice" style="white-space:pre-wrap;">${F}${t.html?String(t.html):(n.length?n:buildNoticeParts(e,t)).map(e=>`<span style="${renderSpanStyle(e)}">${escapeHtml$1(e.text)}</span>`).join("")}</span>`,createNoticeTransport=({client:e,emit:t,pushTrace:n})=>({notice(a,o={}){const i=String(a),s=buildNoticeParts(i,o);e.add_html_line(renderNoticeHtml(i,o,s)),n("notice",{message:i,context:o,parts:s}),t("NoticeEvent",{message:i,context:o,parts:s})}}),createTriggerSessionState=()=>({active:!1,hasLines:!1,lastReason:"idle",lastOpenedAt:0,lastClosedAt:0}),createAdapterDebugState=({debug:e=!1,traceLimit:t=200,now:n=()=>Date.now(),logLabel:a="nexSys4.adapter"}={})=>{let o=Boolean(e);const i=Math.max(1,Number(t||200)),s=[],l=new Map,c={status:createTriggerSessionState(),affPriorities:createTriggerSessionState(),defPriorities:createTriggerSessionState(),curingSets:createTriggerSessionState()},pushTrace=(e,t={})=>{if(!o)return null;const l={at:n(),type:e,detail:t};return s.push(l),s.length>i&&s.splice(0,s.length-i),console.log(`[${a}] ${e}`,t),l};return{pushTrace,triggerSessions:c,registerTriggerGroupActivity:(e,t="triggerCount")=>{const n=String(e||"").trim();if(!n)return null;const a=l.get(n)||{name:n,triggerCount:0,hookCount:0};return a[t]=Number(a[t]||0)+1,l.set(n,a),a},setDebugEnabled(e){o=Boolean(e),pushTrace("debug",{enabled:o})},isDebugEnabled:()=>o,snapshotTriggerGroups:()=>[...l.values()].map(e=>({...e})).sort((e,t)=>e.name.localeCompare(t.name)),snapshotTriggerSessions:()=>Object.entries(c).reduce((e,[t,n])=>(e[t]={...n},e),{}),snapshotRecentTrace:()=>[...s]}},createAdapterEventHub=({pushTrace:e=()=>{},errorLabel:t="nexSys4 adapter listener failed"}={})=>{const n=new Map,normalizeEventName=e=>String(e||"").trim(),emit=(a,o)=>{const i=normalizeEventName(a),s=n.get(i);if(!i||!s?.size)return i&&e("emit",{event:i,listenerCount:0,payload:o}),0;const l=[...s];return e("emit",{event:i,listenerCount:l.length,payload:o}),l.forEach(e=>{if(n.get(i)?.has(e))try{e(o)}catch(a){console.error(t,{event:i,error:a})}}),l.length},on=(t,a)=>{const o=normalizeEventName(t);if(!o||"function"!=typeof a)return()=>{};let i=n.get(o);return i||(i=new Set,n.set(o,i)),i.add(a),e("on",{event:o,listenerCount:i.size}),()=>off(o,a)},off=(t,a)=>{const o=normalizeEventName(t),i=n.get(o);if(!o||!i)return!1;const s=i.delete(a);return i.size||n.delete(o),e("off",{event:o,removed:s,listenerCount:i.size}),s};return{emit,on,off,clear(){n.clear()}}},createAdapterLifecycle=({eventBus:e,triggerApi:t,pushTrace:n=()=>{},clearListeners:a=()=>{}}={})=>{const o=[],i=[],s=[],destroy=()=>{const l=s.length,c=o.length,u=[...i];s.splice(0).forEach(e=>{try{e()}catch(t){console.error("nexSys4 adapter cleanup failed",{error:t})}}),e?.removeListener&&o.forEach(({eventName:t,id:n})=>{e.removeListener(t,n)}),t?.triggers?.remove&&i.forEach(e=>t.triggers.remove(e)),n("destroy",{eventRegistrations:c,triggerIds:u,internalCleanupCount:l}),a()};return{eventRegistrations:o,triggerIds:i,registerCleanup:e=>"function"==typeof e?(s.push(e),e):()=>{},destroy}},summarizePromptContext=(e={})=>({source:e.source||"",hasLine:Boolean(e.line)}),createAdapterPromptSink=({emit:e,pushTrace:t})=>{const renderPrompt=(n,a={})=>{const o=String(n??""),i=a?.line;return i?.parsed_line&&"object"==typeof i.parsed_line&&(i.parsed_line.formatted=()=>o),e("PromptRendered",{prompt:o,context:a}),t("renderPrompt",{promptLength:o.length,context:summarizePromptContext(a)}),o};return{renderPrompt}},normalizeOutboundCommands=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[],normalizeGmcpRequests=e=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],createAdapterTransport=({client:e,emit:t,pushTrace:n,resolveSeparator:a}={})=>({send(o=[],i={}){const s=normalizeOutboundCommands(o);if(!s.length)return[];const l=s.join(a()||"|");return e?.send_commands&&e.send_commands(l,!1),n("send",{commands:s,payload:l,context:i}),t("OutboundCommandsEvent",{commands:s,payload:l,context:i}),s},sendGmcp(a=[],o={}){const i="function"==typeof e?.datahandler?e.datahandler():null;if("function"!=typeof i?.send_GMCP)return[];const s=normalizeGmcpRequests(a);if(!s.length)return[];const l=[];return s.forEach(e=>{try{i.send_GMCP(e),l.push(e)}catch(t){console.error("nexSys4 GMCP request failed",{request:e,error:t})}}),l.length&&(n("sendGmcp",{requests:l,context:o}),t("AdapterGmcpRequest",{requests:l,context:o})),l},getVariable(t){if(!e?.variables)return;const n=e.variables();return"function"==typeof n?.get?n.get(t):n?.vars?.[t]},setVariable(t,n){if(!e?.variables)return n;const a=e.variables();return"function"==typeof a?.set?(a.set(t,n),n):a?.vars?(a.vars[t]=n,n):n}}),createNexusAdapter=(e={})=>{const t=e.nexusclient||globalThis.nexusclient,monotonicNowMs=()=>globalThis.performance?.now?globalThis.performance.now():Date.now();let n=null;const resolveSeparator=()=>n||normalizeCommandSeparator(e.separator??t?.settings?.command_separator??t?.settings?.commandSeparator),a=e.eventStream||globalThis.eventStream,o=e.nexAction||globalThis.nexAction,getGMCP=()=>e.GMCP||globalThis.GMCP,{pushTrace:i,triggerSessions:s,registerTriggerGroupActivity:l,setDebugEnabled:c,isDebugEnabled:u,snapshotTriggerGroups:d,snapshotTriggerSessions:p,snapshotRecentTrace:m}=createAdapterDebugState({debug:e.debug,traceLimit:e.traceLimit}),{emit:g,on:h,off:b,clear:y}=createAdapterEventHub({pushTrace:i}),{eventRegistrations:v,triggerIds:S,registerCleanup:x,destroy:C}=createAdapterLifecycle({eventBus:a,triggerApi:o,pushTrace:i,clearListeners:y}),{send:w,sendGmcp:k,getVariable:E,setVariable:P}=createAdapterTransport({client:t,emit:g,pushTrace:i,resolveSeparator}),normalizeEventName=e=>String(e||"").trim(),{notice:T}=createNoticeTransport({client:t,emit:g,pushTrace:i}),{renderPrompt:R}=createAdapterPromptSink({emit:g,pushTrace:i}),emitLocal=(e,t)=>{const n=normalizeEventName(e);return!!n&&(g(n,t),i("emit:local",{event:n,payload:t}),!0)},raiseToEventStream=(e,t)=>{const n=normalizeEventName(e);return!(!n||!a?.raiseEvent)&&(a.raiseEvent(n,t),i("emit:eventstream",{topic:n,payload:t}),!0)};o?.triggers?.remove&&o.triggers.remove(["nexsys4"]),a?.removeByTag&&a.removeByTag(["nexsys4"]),registerEventStreamBindings({eventBus:a,emit:g,pushTrace:i,eventRegistrations:v}),registerTextTriggers({triggerApi:o,client:t,emit:g,onLocalEvent:h,pushTrace:i,triggerIds:S,registerCleanup:x,registerTriggerGroupActivity:l,triggerSessions:s}),!1!==e.startupGag&&registerStartupGag({onLocalEvent:h,client:t,notice:T,isDebugEnabled:u});const addOnceTrigger=({id:e,regex:n,action:a})=>o?.triggers?.add?(o.triggers.add({id:e,regex:n,enabled:!0,once:!0,tags:["nexsys4","probe",`probe:${e}`],action:e=>a({args:e,client:t,emit:g,pushTrace:i})}),S.push(e),i("probe-trigger:add",{id:e,regex:n instanceof RegExp?n.source:String(n)}),()=>{o?.triggers?.remove&&o.triggers.remove(e),i("probe-trigger:remove",{id:e})}):()=>{};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send:w,sendGmcp:k,on:h,off:b,notice:T,getCommandSeparator:()=>resolveSeparator(),setSeparator(e){n=normalizeCommandSeparator(e)||null},addOnceTrigger,now:monotonicNowMs,setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),renderPrompt:R,getVariable:E,setVariable:P,emitLocal,raiseToEventStream,destroy:C,getGMCP,setDebugEnabled:c,isDebugEnabled:u,debugInfo:()=>({debugEnabled:u(),startupGagEnabled:!1!==e.startupGag,separator:resolveSeparator(),eventRegistrations:v.map(e=>({...e})),triggerIds:[...S],triggerGroups:d(),triggerSessions:p(),hasEventStream:Boolean(a?.registerEvent),hasNexActionTriggers:Boolean(o?.triggers?.add),recentTrace:m()})}},createMockAdapter=(e={})=>{const t=new Map,n=new Map,a=new Map;let o=normalizeCommandSeparator(e.separator??"|");const i=[],s=[],l=[],c=[],u=[],d=[];let p=Boolean(e.debug);const m=Math.max(1,Number(e.traceLimit||200)),g=[],pushTrace=(e,t={})=>{const n={at:nowMs(),type:e,detail:t};g.push(n),g.length>m&&g.splice(0,g.length-m),p&&console.log(`[nexSys4.mockAdapter] ${e}`,t)},normalizeEventName=e=>String(e||"").trim(),emit=(e,n)=>{const a=normalizeEventName(e),o=t.get(a);if(!a||!o?.size)return a&&pushTrace("emit",{event:a,listenerCount:0,payload:n}),0;const i=[...o];return pushTrace("emit",{event:a,listenerCount:i.length,payload:n}),i.forEach(e=>{if(t.get(a)?.has(e))try{e(n)}catch(o){console.error("nexSys4 mock adapter listener failed",{event:a,error:o})}}),i.length},on=(e,n)=>{const a=normalizeEventName(e);if(!a||"function"!=typeof n)return()=>{};let o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),pushTrace("on",{event:a,listenerCount:o.size}),()=>off(a,n)},off=(e,n)=>{const a=normalizeEventName(e),o=t.get(a);if(!a||!o)return!1;const i=o.delete(n);return o.size||t.delete(a),pushTrace("off",{event:a,removed:i,listenerCount:o.size}),i},removeOnceTrigger=e=>{const t=String(e||"").trim();if(!t)return!1;const n=a.delete(t);return pushTrace("probe-trigger:remove",{id:t,removed:n}),n},addOnceTrigger=({id:e,regex:t,action:n}={})=>{const o=String(e||"").trim();return o&&t instanceof RegExp&&"function"==typeof n?(a.set(o,{regex:t,action:n}),pushTrace("probe-trigger:add",{id:o,regex:t.source}),()=>removeOnceTrigger(o)):()=>{}},fireText=(e,t={})=>{const n=String(e??"");pushTrace("fireText",{text:n,detail:t,triggerCount:a.size});const o=[];return[...a.entries()].forEach(([e,i])=>{i.regex.lastIndex=0;const s=i.regex.exec(n);s&&(a.delete(e),o.push(e),i.action({args:{raw:n,line:n,text:n,groups:s.groups||{},matches:[...s]},detail:t}))}),o};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send(e=[],t={}){const n=Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[];return n.length?(i.push({commands:n,context:t}),pushTrace("send",{commands:n,context:t}),emit("OutboundCommandsEvent",{commands:n,context:t}),n):[]},sendGmcp(e=[],t={}){const n=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)];return n.length?(u.push(...n),pushTrace("sendGmcp",{requests:n,context:t}),emit("AdapterGmcpRequest",{requests:n,context:t}),n):[]},on,off,emit,notice(e,t={}){s.push({message:String(e),context:t}),pushTrace("notice",{message:String(e),context:t})},getCommandSeparator:()=>o,setSeparator:e=>(o=normalizeCommandSeparator(e),pushTrace("setSeparator",{separator:o}),o),addOnceTrigger,fireText,now:()=>"function"==typeof e.now?e.now():nowMs(),setTimeout:(e,t)=>setTimeout(e,t),clearTimeout(e){clearTimeout(e)},renderPrompt(e,t={}){const n=String(e??""),a={prompt:n,context:t};return d.push(a),pushTrace("renderPrompt",{promptLength:n.length,source:t.source||"",hasLine:Boolean(t.line)}),emit("PromptRendered",a),n},getVariable:e=>n.get(e),setVariable:(e,t)=>(n.set(e,t),t),emitLocal(e,t){const n=String(e||"").trim();if(!n)return!1;const a={event:n,payload:t};return l.push(a),pushTrace("emit:local",a),emit(n,t),!0},raiseToEventStream(e,t){const n=String(e||"").trim();if(!n)return!1;const a={topic:n,payload:t};return c.push(a),pushTrace("emit:eventstream",a),!0},destroy(){t.clear(),a.clear()},getSentBatches:()=>i,getNotices:()=>s,getLocalEvents:()=>l,getEventStreamEvents:()=>c,getGmcpRequests:()=>u,getRenderedPrompts:()=>d,getGMCP:()=>e.gmcp||{},setDebugEnabled(e){p=Boolean(e),pushTrace("debug",{enabled:p})},isDebugEnabled:()=>p,debugInfo:()=>({debugEnabled:p,separator:o,recentTrace:[...g],sentBatchCount:i.length,gmcpRequests:[...u],renderedPromptCount:d.length})}},defineStringPrototypeHelper=(e,t)=>"function"!=typeof String.prototype[e]&&(Object.defineProperty(String.prototype,e,{configurable:!0,writable:!0,value:t}),!0),installStringPrototypeHelpers=()=>({toProperCase:defineStringPrototypeHelper("toProperCase",function toProperCase(){return this.replace(/\w\S*/g,function formatWord(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}),capitalize:defineStringPrototypeHelper("capitalize",function capitalize(){return this.charAt(0).toUpperCase()+this.slice(1)})}),V={list:["accentato","addiction","aeon","agoraphobia","airfisted","amnesia","anorexia","asphyxiating","asthma","betrayal","blackout","blindness","blistered","bloodfire","bound","breathless","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","bruisedribs","burning","cadmuscurse","calcifiedskull","calcifiedtorso","claustrophobia","clumsiness","coldfate","concussion","condemned","conflagration","confusion","constricted","convergence","corruption","crackedribs","cremated","crescendo","crushedthroat","daeggerimpale","damagedhead","damagedleftarm","damagedleftleg","damagedrightarm","damagedrightleg","darkshade","dazed","dazzled","deadening","deafness","death","deathsickness","deepsleep","degenerate","dehydrated","dementia","demonstain","depression","deteriorate","diminished","disloyalty","disrupted","dissonance","dizziness","earworm","empoweredmannaz","empoweredloshre","enlightenment","enmesh","ensorcelled","entangled","epilepsy","fear","flamefisted","flushings","fratricide","frostbite","frozen","fulminated","generosity","grievouswounds","guilt","hamstrung","haemophilia","hallucinations","hatred","healthleech","heartseed","hecatecurse","hellsight","hindered","homunculusmercury","horror","hypersomnia","hypochondria","hypothermia","icebound","icefisted","impaled","impatience","indifference","inquisition","insomnia","internalbleeding","isolation","itching","justice","kaisurge","kkractlebrand","laceratedthroat","lapsingconsciousness","latched","lethargy","lightbind","loneliness","lovers","lovestruck","lullaby","manaleech","masochism","mildtrauma","mangledleftarm","mangledleftleg","mangledrightarm","mangledrightleg","mangledhead","mindclamp","mindravaged","muddled","mycalium","nausea","numbedleftarm","numbedrightarm","pacified","palpatarfeed","paralysis","paranoia","parasite","peace","penitence","petrified","phlogisticated","pinshot","pressure","prone","pyramides","pyre","rebbies","recklessness","reeling","retribution","revealed","sandfever","scalded","scrambledbrains","scytherus","selarnia","sensitivity","serioustrauma","shadowmadness","shivering","shyness","silenced","silver","skullfractures","slashedthroat","sleeping","slickness","slimeobscure","snared","solarburn","speechless","spiritburn","stridulating","stun","stupidity","stuttering","succumbed","temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine","tenderskin","tension","timeflux","timeloop","tonguetied","torntendons","transfixation","trueblind","unweavingbody","unweavingmind","unweavingspirit","vertigo","vinewreathed","vitiated","vitrified","voidfisted","voyria","waterbonds","weakenedmind","weariness","webbed","woeconstrained","whisperingmadness","wristfractures","unconsciousness","harmonic","bop","spiritwrack","bedevil","loki","moon","evileye","dragoncurse","swiftcurse"],prios:{aeon:4,concussion:4,crushedthroat:4,paralysis:4,peace:4,sleeping:5,grievouswounds:5,latched:5,dazzled:5,unweavingbody:5,unweavingmind:5,unweavingspirit:5,weariness:5,prone:5,timeloop:5,fulminated:5,spiritburn:6,heartseed:6,guilt:6,tenderskin:6,pyramides:6,parasite:6,hypochondria:6,pacified:6,depression:6,confusion:6,mindravaged:6,retribution:6,shadowmadness:6,whisperingmadness:6,hellsight:6,anorexia:7,scalded:7,mycalium:7,frostbite:7,flushings:7,rebbies:7,sandfever:7,asthma:7,healthleech:7,impatience:8,itching:8,fratricide:8,scytherus:8,clumsiness:8,kkractlebrand:8,damagedleftleg:8,darkshade:8,slickness:8,recklessness:8,dementia:8,icebound:8,bound:9,daeggerimpale:9,entangled:9,sensitivity:9,transfixation:9,webbed:9,tonguetied:9,haemophilia:9,lethargy:9,manaleech:9,dissonance:9,pyre:9,skullfractures:10,damagedrightleg:10,hypersomnia:10,earworm:10,crescendo:10,diminished:10,torntendons:11,brokenleftleg:11,brokenrightleg:11,hallucinations:11,calcifiedskull:12,calcifiedtorso:12,mangledleftleg:12,mangledrightleg:12,disrupted:12,mangledhead:12,voyria:12,crackedribs:12,hypothermia:13,impaled:13,brokenleftarm:13,brokenrightarm:13,indifference:13,addiction:13,nausea:13,deadening:13,frozen:13,shivering:13,mildtrauma:13,internalbleeding:13,stupidity:14,wristfractures:14,damagedleftarm:14,disloyalty:14,tension:15,damagedhead:15,dazed:15,burning:15,lovers:16,pressure:16,damagedrightarm:16,temperedcholeric:16,temperedmelancholic:16,temperedphlegmatic:16,temperedsanguine:16,mangledleftarm:17,mangledrightarm:17,agoraphobia:18,claustrophobia:18,generosity:18,justice:18,loneliness:18,vertigo:18,paranoia:19,serioustrauma:20,epilepsy:20,laceratedthroat:22,slashedthroat:22,stuttering:22,selarnia:23,fear:23,masochism:23,dizziness:25,shyness:25,stridulating:25,horror:26,bleeding:30,amnesia:30,blackout:30,insomnia:30,deafness:30,blindness:30,harmonic:100,bop:100,spiritwrack:100,bedevil:100,loki:100,moon:100,evileye:100,dragoncurse:100,swiftcurse:100},types:{countable:{pressure:{min:0,max:5},crescendo:{min:0,max:5},unweavingbody:{min:0,max:5},unweavingspirit:{min:0,max:5},unweavingmind:{min:0,max:5},burning:{min:0,max:5},horror:{min:0,max:5},pyre:{min:0,max:3},temperedcholeric:{min:0,max:8},temperedmelancholic:{min:0,max:8},temperedphlegmatic:{min:0,max:8},temperedsanguine:{min:0,max:8},torntendons:{min:0,max:6},crackedribs:{min:0,max:6},skullfractures:{min:0,max:6},wristfractures:{min:0,max:6}},nonServerside:{accentato:0,airfisted:0,asphyxiating:0,blistered:0,bloodfire:0,bruisedribs:0,cadmuscurse:0,coldfate:0,condemned:0,conflagration:0,constricted:0,convergence:0,corruption:0,cremated:0,death:0,deathsickness:0,deepsleep:0,degenerate:0,dehydrated:0,demonstain:0,deteriorate:0,empoweredloshre:0,empoweredmannaz:0,enlightenment:0,enmesh:0,ensorcelled:0,flamefisted:0,hamstrung:0,hatred:0,hecatecurse:0,hindered:0,homunculusmercury:0,icefisted:0,inquisition:0,isolation:0,kaisurge:0,lightbind:0,lullaby:0,mindclamp:0,muddled:0,numbedleftarm:0,numbedrightarm:0,palpatarfeed:0,petrified:0,phlogisticated:0,pinshot:0,revealed:0,scrambledbrains:0,silenced:0,silver:0,slimeobscure:0,solarburn:0,stun:0,timeflux:0,trueblind:0,vinewreathed:0,vitiated:0,vitrified:0,voidfisted:0,waterbonds:0,weakenedmind:0,unconsciousness:0},timed:{accentato:{length:20},aeon:{length:16},airfisted:{length:16},betrayal:{length:15},blackout:{length:20},blistered:{length:20},breathless:{length:3},bruisedribs:{length:30},cadmuscurse:{length:20},condemned:{length:20},constricted:{length:30},corruption:{length:45},dazzled:{length:60},dehydrated:{length:60},demonstain:{length:120},empoweredloshre:{length:12},empoweredmannaz:{length:20},enmesh:{length:5},ensorcelled:{length:20},flamefisted:{length:30},hamstrung:{length:9},heartseed:{length:11},hecatecurse:{length:16},icefisted:{length:30},inquisition:{length:30},lightbind:{length:22},lovestruck:{length:5},muddled:{length:12},numbedleftarm:{length:7.5},numbedrightarm:{length:7.5},palpatarfeed:{length:20},phlogisticated:{length:45},pinshot:{length:18},reeling:{length:20},revealed:{length:60},scalded:{length:20},scrambledbrains:{length:60},silver:{length:180},slimeobscure:{length:60},solarburn:{length:5},snared:{length:20},speechless:{length:300},stridulating:{length:15},stun:{length:3},succumbed:{length:30},timeflux:{length:60},trueblind:{length:6},unconsciousness:{length:10},vinewreathed:{length:30},vitrified:{length:45},voidfisted:{length:5},waterbonds:{length:30},weakenedmind:{length:60},woeconstrained:{length:30}},unknown:{moon:["stupidity","confusion","epilepsy","masochism","hypersomnia","hallucinations"],loki:["stupidity","clumsiness","recklessness","asthma","shyness","darkshade","paralysis","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","sensitivity","disloyalty","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","selarnia","slickness","scytherus"],evileye:["confusion","dizziness"],dragoncurse:["recklessness","clumsiness","epilepsy","dizziness","pacified","nausea","addiction","anorexia","generosity","disloyalty","sensitivity","vertigo","paranoia","stupidity","hypochondria","lethargy","shivering","frozen","impatience","paralysis","asthma","agoraphobia"],harmonic:["stupidity","recklessness"],bop:["stupidity","recklessness"],swiftcurse:["stupidity","clumsiness","recklessness","asthma","paralysis","deafness","sensitivity","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","impatience","claustrophobia","vertigo","agoraphobia","masochism","epilepsy","manaleech","pacified","dementia","healthleech"],bedevil:["stupidity","recklessness"]},uncurable:{bloodfire:!0,cadmuscurse:!0,conflagration:!0,death:!0,deathsickness:!0,deepsleep:!0,enlightenment:!0,isolation:!0,lullaby:!0,mindclamp:!0,palpatarfeed:!0,penitence:!0,scalded:!0,stun:!0,weakenedmind:!0}}},H=((e=>{const t=new Set(e.list),n={};for(const[a,o]of Object.entries(e.prios))n[o]||(n[o]=[]),n[o].push(a);Object.freeze({affSet:t,prioArrays:Object.freeze(n)})})(V),{herb:{length:1.6,aff_modifiers:{homunculusmercury:{multiplier:1,offset:.5}}},focus:{length:2.5,aff_modifiers:{weakenedmind:{multiplier:2,offset:.5},whisperingmadness:{multiplier:1.6,offset:0}}},sip:{length:4.5,aff_modifiers:{skullfractures:{multiplier:1,offset:1}}},moss:{length:6},tree:{length:15,aff_modifiers:{slimeobscure:{multiplier:1,offset:10}}},equilibrium:{length:20,aff_modifiers:{confusion:{multiplier:1.5,offset:0}}},balance:{length:20,aff_modifiers:{lethargy:{multiplier:1.25,offset:0}}},salve:{length:4,aff_modifiers:{timeflux:{multiplier:1.5,offset:0}}},immunity:{length:10},rebounding:{length:9},smoke:{length:1.5},dragonbreath:{length:1.5},deafness:{length:3},deaf:{length:6},blind:{length:6},speed:{length:6},wake:{length:20},sileris:{length:8},free:{length:0},voice:{length:2.5},tremolo:{length:6},homunculus:{length:12},fitness:{length:10},bloodboil:{length:10},dragonheal:{length:20},rage:{length:10},salt:{length:10},shrugging:{length:10},alleviate:{length:10},slough:{length:10},fool:{length:40},writhe:{length:6},impalewrithe:{length:4},entity:{length:4},word:{length:5},anathema:{length:5},systemOutput:{length:1}}),W=["itching","paralysis","fear","brokenrightarm","brokenleftarm","brokenrightleg","brokenleftleg","lapsingconsciousness","aeon","lovers","confusion","epilepsy","pacified","blackout","dazed","justice","slashedthroat","hellsight","peace","dazzled","shyness","dizziness","slickness","asthma","nausea","selarnia","weariness","scytherus","fratricide","haemophilia","clumsiness","hallucinations","healthleech","dementia","recklessness","anorexia","masochism","impatience","stupidity","generosity","addiction","deadening","manaleech","stuttering","paranoia","agoraphobia","loneliness","claustrophobia","vertigo","hypersomnia","shivering","frozen","burning","sensitivity","hypochondria","lethargy","disloyalty","darkshade","voyria","dissonance","phlogisticated","silver","spiritburn","tenderskin","guilt","skullfractures","wristfractures","crackedribs","torntendons","indifference","retribution","shadowmadness","parasite","depression","timeloop","crushedthroat","tension","unweavingspirit","grievouswounds","pyramides","flushings","rebbies","mycalium","sandfever","crescendo","fulminated","frostbite"],G={ferrum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ferrum",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},magnesium:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat magnesium",order:["paralysis","slickness","pyramides"],prio:0},aurum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat aurum",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},calamine:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat calamine",order:["deafness"],delay:2.5,prio:0},argentum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat argentum",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},cuprum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat cuprum",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},antimony:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat antimony",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},arsenic:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat arsenic",prio:0},stannum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat stannum",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},plumbum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],command:"eat plumbum",prio:0},calcite:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat calcite",prio:0},ginseng:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginseng",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},bloodroot:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bloodroot",order:["paralysis","slickness","pyramides"],prio:0},kelp:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat kelp",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},hawthorn:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat hawthorn",order:["deafness"],delay:2.5,prio:0},lobelia:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat lobelia",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},bellwort:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bellwort",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},ginger:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginger",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},bayberry:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bayberry",prio:0},ash:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ash",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},goldenseal:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat goldenseal",order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],prio:0},pear:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat pear",prio:0},smoke:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","disloyalty","hellsight","manaleech","slickness","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},cinnabar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},malachite:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke malachite",prio:0},realgar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke realgar",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},elm:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke elm",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},skullcap:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke skullcap",prio:0},valerian:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke valerian",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},caloric:{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply caloric",order:["frozen","shivering","frostbite"],prio:0},"epidermal to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to body",order:["anorexia","itching"],prio:0},"epidermal to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to head",order:["blindness","scalded","deafness","stuttering"],prio:0},"epidermal to ears":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to ears",order:["deafness"],prio:0},"mending to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to head",order:["crushedthroat","dazzled"],prio:0},"mending to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to arms",order:["brokenleftarm","brokenrightarm"],prio:0},"mending to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to legs",order:["brokenleftleg","brokenrightleg"],prio:0},"mending to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to torso",order:["burning"],prio:0},"mending to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to body",order:["selarnia"],prio:0},"restoration to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to head",order:["mangledhead","damagedhead","calcifiedskull","concussion","tonguetied","slashedthroat","laceratedthroat"],delay:4,prio:0},"restoration to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to torso",order:["hypothermia","heartseed","serioustrauma","mildtrauma","calcifiedtorso","internalbleeding"],delay:4,prio:0},"restoration to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to arms",order:["mangledleftarm","mangledrightarm","damagedleftarm","damagedrightarm"],delay:4,prio:0},"restoration to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to legs",order:["mangledleftleg","mangledrightleg","damagedleftleg","damagedrightleg"],delay:4,prio:0},focus:{bals_req:["focus"],bals_used:["focus"],blocks:["death","impatience","sleeping"],command:"focus",order:["stupidity","epilepsy","dizziness","shyness","claustrophobia","paranoia","confusion","hallucinations","dementia","pacified","peace","lovers","generosity","masochism","loneliness","vertigo","recklessness","agoraphobia","anorexia","stuttering"],prio:0},"health to head":{bals_req:["sip"],bals_used:["sip"],command:"apply health to head",order:["skullfractures"],prio:0},"health to torso":{bals_req:["sip"],bals_used:["sip"],command:"apply health to torso",order:["crackedribs","grievouswounds"],prio:0},"health to arms":{bals_req:["sip"],bals_used:["sip"],command:"apply health to arms",order:["wristfractures"],prio:0},"health to legs":{bals_req:["sip"],bals_used:["sip"],command:"apply health to legs",order:["torntendons","latched","kkractlebrand"],prio:0},concentrate:{blocks:["death","sleeping","confusion"],command:"concentrate",order:["disrupted"],prio:0},immunity:{bals_req:["immunity"],bals_used:["immunity"],blocks:["death","sleeping","anorexia"],command:"sip immunity",order:["voyria"],prio:0},stand:{bals_req:["balance","equilibrium"],blocks:["death","sleeping","paralysis","brokenrightleg","brokenleftleg","damagedleftleg","damagedrightleg","mangledrightleg","mangledleftleg","entangled","transfixation","impaled","webbed","bound"],command:"stand",order:["prone"],prio:0},tree:{bals_used:["tree"],bals_req:["tree"],blocks:["death","sleeping","paralysis",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],command:"touch tree",order:W,prio:0},health:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip health",prio:0},mana:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip mana",prio:0},potash:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat potash",prio:0},moss:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat moss",prio:0},fitness:{bals_req:["equilibrium","balance","fitness"],bals_used:["balance","fitness"],blocks:["death","weariness","sleeping"],skills:["Monk","Shikudo","Runewarden"],command:"fitness",order:["asthma"],prio:0},bloodboil:{bals_req:["equilibrium","balance","bloodboil"],bals_used:["equilibrium","bloodboil"],blocks:["death","haemophilia","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Magi"],command:"cast bloodboil",order:W,prio:0},restore:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"restore",order:["brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","skullfractures","torntendons","wristfractures","crackedribs"],prio:0},dragonflex:{bals_req:["balance"],bals_used:["balance"],command:"dragonflex",skills:["Dragon"],order:["webbed","entangled"],prio:0},dragonheal:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"dragonheal",skills:["Dragon"],blocks:["death","sleeping",["recklessness","weariness"]],order:W,prio:0},dwinnu:{bals_req:["voice"],bals_used:["voice"],command:"chant dwinnu",skills:["Bard"],order:["webbed","entangled"],prio:0},rage:{bals_req:["rage"],bals_used:["rage"],command:"rage",skills:["Runewarden"],order:["pacified","peace","lovers","generosity"],prio:95},"touch soul":{command:"touch soul",blocks:["death"],order:["amnesia"],prio:101},salt:{bals_req:["equilibrium","salt"],bals_used:["salt","equilibrium"],blocks:["death","stupidity","sleeping"],skills:["Alchemist"],command:"educe salt",order:W,prio:0},siphon:{bals_req:["angel"],bals_used:["angel"],blocks:["death","sleeping"],skills:["Apostate","Priest"],command:"educe salt",order:W,prio:0},shrugging:{bals_req:["equilibrium","balance","shrugging"],bals_used:["shrugging"],blocks:["death","weariness","sleeping"],skills:["Serpent"],command:"shrugging",order:W,prio:0},slough:{bals_req:["equilibrium","balance","slough"],bals_used:["slough","balance"],blocks:["death","weariness","sleeping"],skills:["Fire Elemental Lord"],command:"slough impurities",order:W,prio:0},fool:{bals_req:["equilibrium","balance","fool"],bals_used:["fool","balance"],blocks:["death","prone","paralysis","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Occultist"],command:"fling fool at me",order:W,prio:0},alleviate:{bals_req:["equilibrium","balance","alleviate"],bals_used:["alleviate","balance"],blocks:["death","paralysis","sleeping"],skills:["Blademaster"],command:"alleviate",order:W,prio:0}},normalizeCureCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],Y=Object.freeze(Object.fromEntries(Object.entries(G).map(([e,t])=>[e,Object.freeze({...t,command:Object.freeze(normalizeCureCommand(t.command))})]))),K=Object.freeze(Object.entries(Y).reduce((e,[t,n])=>((Array.isArray(n.order)?n.order:[]).forEach(n=>{e[n]||(e[n]=[]),e[n].push(t)}),e),{})),Q={acrobatics:{command:"acrobatics on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},airpocket:{command:["outr calcite","eat calcite"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},alertness:{static:!0,command:"alertness on",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},antiforce:{command:"intone gaiartha",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],serverside:!0},aria:{command:"sing aria at me",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"]},arctar:{command:"command orb",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Occultist"],serverside:!1,preempt:!0},arrowcatching:{command:"arrowcatch on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},astronomy:{static:!0,command:"astronomy empower me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},balancing:{command:"balancing on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},belltattoo:{command:"touch bell",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0,preempt:!0},blindness:{command:["outr arsenic","eat arsenic"],bals_req:["herb"],bals_used:["herb"],blocks:["death","sleeping","anorexia"],serverside:!0},blocking:{command:"block d",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","prone"],serverside:!1,preempt:!0},bloodshield:{command:"activate bloodshield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!0,preempt:!0},bodyaugment:{command:"intone mainaas",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},bodyblock:{static:!0,command:"bdb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},boostedregeneration:{command:"boost regeneration",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},bulk:{command:"mutate bulk",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},cloak:{command:"touch cloak",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},chargeshield:{static:!0,command:"cast chargeshield at me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},coldresist:{command:"activate cold resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},compoundmask:{command:["wear mask","secure mask"],bals_req:["free"],bals_used:["free"],skills:["Alchemist"],serverside:!1},consciousness:{command:"consciousness on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},constitution:{static:!0,command:"constitution",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},curseward:{static:!0,command:"curseward",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],serverside:!0},deafness:{command:["outr calamine","eat calamine"],bals_req:["herb","deafness"],bals_used:["herb","deafness"],blocks:["death","sleeping","anorexia"],serverside:!0},deathsight:{static:!0,command:"deathsight",bals_req:["balance","equilibrium"],bals_used:["free"],serverside:!0,preempt:!0},deflect:{command:"deflect",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","prone","sleeping"],skills:["Runewarden","Paladin","Infernal","Unnamable"],serverside:!0,preempt:!0},density:{command:"wear shackle",bals_req:["salve"],bals_used:["salve"],blocks:["death","slickness","sleeping"],serverside:!0},devilmark:{static:!0,command:"devilmark",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},diamondskin:{static:!0,command:"cast diamondskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},distortedaura:{static:!0,command:"distortaura",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},dragonarmour:{static:!0,command:"dragonarmour",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Dragon"],serverside:!0},dragonbreath:{command:"summon ice",bals_req:["balance","equilibrium","dragonbreath"],bals_used:["free","dragonbreath"],blocks:["death","prone","sleeping"],skills:["Dragon"],preempt:!0,serverside:!0},drunkensailor:{command:"drunkensailor",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},durability:{command:"intone tsuura",bals_req:["balance","equilibrium"],skills:["Depthswalker"],blocks:["death","sleeping","prone"],bals_used:["word"],serverside:!0},electricresist:{command:"activate electric resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},endure:{command:"endure",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["free"],serverside:!0,preempt:!0},enhancedform:{command:["amalgamate enhancement","imbibe enhancement"],bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!1,preempt:!0},evadeblock:{command:"evb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},eyes:{command:"mutate eyes",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},fireresist:{command:"activate fire resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},fangbarrier:{command:"apply quicksilver",bals_req:["salve","sileris"],bals_used:["salve","sileris"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0},fireshroud:{command:"ignite shroud",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0,skills:["Fire Elemental Lord"]},fury:{command:"fury on",bals_req:["balance"],bals_used:["equilibrium"],skills:["Runewarden","Unnamable"],serverside:!0},flying:{command:"fly",bals_req:["balance, equilibrium"],bals_used:["balance"],blocks:["prone","death","sleeping","entangled","transfixation","impaled","webbed","bound"],serverside:!1,clientOnly:!0},ghost:{static:!0,command:"conjure ghost",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},gripping:{command:"grip",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Unnamable","Shikudo","Bard","Blademaster","Jester","Shaman"],serverside:!0,preempt:!0},groundwatch:{command:"groundwatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},"guarding right leg":{command:"guard right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left leg":{command:"guard left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding right leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding right arm":{command:"guard right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right leg","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left arm":{command:"guard left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding right leg","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding head":{command:"guard head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding right leg","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding torso":{command:"guard torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding right leg","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},heartsfury:{command:"heartsfury",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},heldbreath:{command:"hold breath",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","asthma","sleeping"],preempt:!0,serverside:!0},hiding:{command:"hide",bals_req:["equilibrium","balance"],bals_used:["balance"],skills:["Serpent"],serverside:!0},hypersight:{command:"hypersight on",bals_req:["balance"],bals_used:["equilibrium"],serverside:!0},immunity:{command:"immunity",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},insomnia:{command:"insomnia",bals_req:["free"],bals_used:["free"],blocks:["death","hypersomnia","sleeping"],serverside:!0,preempt:!0},insulation:{command:"apply caloric",bals_req:["salve"],bals_used:["salve"],blocks:["death","sleeping","slickness","hypothermia"],serverside:!0},insufflate:{command:["get phial from pack","amalgamate insufflate potency 4 stability 1","imbibe insufflate"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},ironform:{static:!0,command:["get phial from pack","amalgamate petrifying potency 4 stability 1","imbibe petrifying"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},joints:{command:"mutate joints",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},kaiboost:{command:"kai boost",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],preempt:!0,serverside:!0},kaitrance:{command:"kai trance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},kola:{command:["outr quartz","eat quartz"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},lay:{command:"sing lay",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},levitating:{command:"sip levitation",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},lifevision:{static:!0,command:"lifevision",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},lipreading:{static:!0,command:"lipread",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},locketdeath:{command:"solicit locket for immortality",bals_req:["free"],bals_used:["free"],serverside:!1},magicresist:{command:"activate magic resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},blademastery:{command:"mastery on",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Unnamable"],preempt:!0,serverside:!0},meditate:{command:"meditate",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","impatience"],preempt:!1,serverside:!1},mercury:{static:!0,command:"educe mercury",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},metabolise:{command:"metabolise paralysis",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!1,preempt:!1},metawake:{command:"metawake on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","lullaby"],serverside:!0,preempt:!0},mindcloak:{command:"mind cloak on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],preempt:!0,skills:["Monk","Shikudo"],serverside:!0},mindnet:{command:"mindnet on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},mindseye:{static:!0,command:"touch mindseye",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},morimbuul:{command:"ldeck draw morimbuul",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],serverside:!1,preempt:!1},mounted:{command:"",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],preempt:!0,serverside:!1,clientOnly:!0},mouths:{command:"mutate mouths",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},nightsight:{command:"nightsight",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},numbness:{command:"numb",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"]},"parrying right leg":{command:"parry right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","guarding right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left leg":{command:"parry left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","guarding right leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying right arm":{command:"parry right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","guarding right leg","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left arm":{command:"parry left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","guarding right leg","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying head":{command:"parry head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","guarding right leg","parrying left","parrying right","parrying centre"]},"parrying torso":{command:"parry torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","guarding right leg","parrying head","parrying left","parrying right","parrying centre"]},"parrying left":{command:"trueparry left",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","guarding right leg","parrying right","parrying centre"]},"parrying right":{command:"trueparry right",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","guarding right leg","parrying centre"]},"parrying centre":{command:"trueparry centre",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","guarding right leg"]},pinchblock:{command:"pnb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},projectiles:{command:"projectiles on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],blocks:["death","sleeping","mounted"],preempt:!0,serverside:!0},poisonresist:{command:"sip venom",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},precision:{command:"intone trusad",bals_req:["balance","equilibrium"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},prismatic:{command:"strum lyre",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],serverside:!1},rebounding:{command:"smoke malachite",bals_req:["smoke","rebounding"],bals_used:["smoke","rebounding"],blocks:["death","asthma","sleeping"],serverside:!0},reflections:{command:"point wand235913 at me",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],preempt:!0,serverside:!1},regeneration:{command:"regeneration on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo"],blocks:["death","sleeping"],serverside:!0,preempt:!0},resistance:{command:"resistance",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Monk","Shikudo","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},scales:{static:!0,command:"scales",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0},secondsight:{static:!0,command:"secondsight",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},selfishness:{command:"selfishness",bals_req:["balance","equilibrium"],bals_used:["balance"],serverside:!0},shield:{command:"touch shield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},shintrance:{command:"shin trance",bals_req:["free"],bals_used:["free"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0,preempt:!0},shinclarity:{static:!0,command:"clarity",bals_req:["balance"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shinbinding:{static:!0,command:"shinbinding on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shipwarning:{command:"shipwarning on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0},shroud:{static:!0,command:"shroud",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Occultist","Serpent"],serverside:!0},softfocusing:{command:"softfocus on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0,preempt:!0},songbird:{command:"whistle for songbird",bals_req:["equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Bard"]},speed:{command:"sip speed",bals_req:["speed"],bals_used:["speed"],blocks:["death","anorexia","sleeping"],serverside:!0},splitmind:{command:"split mind",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},skysight:{command:"manifest skysight",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},skywatch:{command:"skywatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},stonefist:{static:!0,command:"cast stonefist",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},stoneskin:{static:!0,command:"cast stoneskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},sulphur:{static:!0,command:"educe sulphur",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},tekurastance:{command:"tekurastance",bals_req:["free"],bals_used:["balance"],skills:["Monk","Shikudo"]},telesense:{command:"telesense on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},temperance:{command:"sip frost",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},tempest:{command:"manifest tempest",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},mutatetentacles:{command:"mutate tentacles",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},thirdeye:{command:"thirdeye",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tin:{static:!0,command:"educe tin",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Alchemist"],serverside:!0},tentacles:{command:"tentacles",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Occultist"],serverside:!0},toughness:{command:"toughness",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},treewatch:{command:"treewatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tune:{command:"sing tune",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},twoartsstance:{command:"twoartsstance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Blademaster"]},vigilance:{command:"vigilance on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},vitality:{command:"vitality on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},weathering:{command:"weathering on",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Infernal","Paladin","Monk","Shikudo","Blademaster","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},weaving:{static:!0,command:"weaving on",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0}},normalizeDefCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefPriority=(e,t)=>{const n=Number(e);return Number.isFinite(n)?n<0?0:n>26?26:n:0},Z=Object.freeze(Object.fromEntries(Object.entries(Q).map(([e,t])=>{const n=!1!==t.serverside;return[e,Object.freeze({...t,command:Object.freeze(normalizeDefCommand(t.command)),bals_req:Object.freeze(normalizeDefList(t.bals_req)),bals_used:Object.freeze(normalizeDefList(t.bals_used)),skills:Object.freeze(normalizeDefList(t.skills)),opps:Object.freeze(normalizeDefList(t.opps)),blocks:Object.freeze(t.blocks?[...t.blocks]:[]),serverside:n,preempt:!0===t.preempt,static:!0===t.static,clientOnly:!0===t.clientOnly,defaultPriority:normalizeDefPriority(t.defaultPriority,n)})]}))),X=Object.freeze(Object.keys(Z).reduce((e,t)=>(e[t]=Number(Z[t].defaultPriority),e),{})),buildDefBySkillIndex=()=>{const e=Object.entries(Z).reduce((e,[t,n])=>{const a=n.skills;return Array.isArray(a)&&a.forEach(n=>{e[n]||(e[n]=[]),e[n].push(t)}),e},{});return Object.freeze(Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Object.freeze([...t])])))},J=(buildDefBySkillIndex(),Object.freeze({CHAR_VITALS:"nexsys4.gmcp.char.vitals",CHAR_STATUS:"nexsys4.gmcp.char.status",CHAR_AFFLICTIONS_LIST:"nexsys4.gmcp.char.afflictions.list",CHAR_AFFLICTIONS_ADD:"nexsys4.gmcp.char.afflictions.add",CHAR_AFFLICTIONS_REMOVE:"nexsys4.gmcp.char.afflictions.remove",CHAR_DEFENCES_LIST:"nexsys4.gmcp.char.defences.list",CHAR_DEFENCES_ADD:"nexsys4.gmcp.char.defences.add",CHAR_DEFENCES_REMOVE:"nexsys4.gmcp.char.defences.remove",IRE_RIFT_LIST:"nexsys4.gmcp.ire.rift.list",IRE_RIFT_CHANGE:"nexsys4.gmcp.ire.rift.change",CHAR_ITEMS_LIST:"nexsys4.gmcp.char.items.list",CHAR_ITEMS_DELTA:"nexsys4.gmcp.char.items.delta",ROOM_INFO:"nexsys4.gmcp.room.info",TARGET_INFO:"nexsys4.gmcp.target.info"})),isRecord$3=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),normalizeLocation=e=>String(e??"inv").trim().toLowerCase()||"inv",mergeDefinedRecord=(...e)=>e.reduce((e,t)=>(Object.entries(isRecord$3(t)?t:{}).forEach(([t,n])=>{void 0!==n&&(e[t]=n)}),e),{}),mergeResourceStats=(e=[],t=[])=>{const n=new Map;return[...e,...t].forEach(e=>{const t=String(e?.key||"").trim().toLowerCase();t&&n.set(t,e)}),[...n.values()]},mergeBalancePatches=(e=[],t=[])=>[...Array.isArray(e)?e:[],...Array.isArray(t)?t:[]],mergeStatusPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{};return{...n,...a,status:{...isRecord$3(n.status)?n.status:{},...isRecord$3(a.status)?a.status:{}}}},mergeVitalsPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{},o=isRecord$3(n.vitals)?n.vitals:{},i=isRecord$3(a.vitals)?a.vitals:{};return{...n,...a,vitals:{...o,...i,kind:i.kind||o.kind,vitals:mergeDefinedRecord(o.vitals,i.vitals),balances:mergeDefinedRecord(o.balances,i.balances),balancePatches:mergeBalancePatches(o.balancePatches,i.balancePatches),resourceStats:mergeResourceStats(Array.isArray(o.resourceStats)?o.resourceStats:[],Array.isArray(i.resourceStats)?i.resourceStats:[])}}},mergeTargetPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{};return{...n,...a,target:mergeDefinedRecord(n.target,a.target)}},ee=new Map([[J.CHAR_STATUS,{keyFor:()=>J.CHAR_STATUS,merge:mergeStatusPayload}],[J.CHAR_VITALS,{keyFor:()=>J.CHAR_VITALS,merge:mergeVitalsPayload}],[J.CHAR_AFFLICTIONS_LIST,{keyFor:()=>J.CHAR_AFFLICTIONS_LIST,merge:(e,t)=>t}],[J.CHAR_DEFENCES_LIST,{keyFor:()=>J.CHAR_DEFENCES_LIST,merge:(e,t)=>t}],[J.CHAR_ITEMS_LIST,{keyFor:({payload:e}={})=>`${J.CHAR_ITEMS_LIST}:${normalizeLocation(e?.location)}`,merge:(e,t)=>t}],[J.IRE_RIFT_LIST,{keyFor:()=>J.IRE_RIFT_LIST,merge:(e,t)=>t}],[J.TARGET_INFO,{keyFor:()=>J.TARGET_INFO,merge:mergeTargetPayload}]]),te=new Set([J.CHAR_AFFLICTIONS_ADD,J.CHAR_AFFLICTIONS_REMOVE,J.CHAR_DEFENCES_ADD,J.CHAR_DEFENCES_REMOVE,J.CHAR_ITEMS_DELTA,J.IRE_RIFT_CHANGE]),createGmcpBlockBuffer=({coalesce:e=!0}={})=>{const t=[],flush=()=>{if(!e){const e=[...t];return t.length=0,e}const n=new Map,a=[],o=[];return t.forEach(e=>{const t=ee.get(e.topic);if(t){const a=t.keyFor(e),o=n.get(a);return void(o?n.set(a,{...o,payload:t.merge(o.payload,e.payload)}):n.set(a,e))}te.has(e.topic)?o.push(e):a.push(e)}),t.length=0,[...n.values(),...a,...o]};return{enqueue:(e={})=>{const n=String(e.topic||"").trim();n&&t.push({topic:n,payload:Object.prototype.hasOwnProperty.call(e,"payload")?e.payload:null})},flush,size:()=>t.length}},createEventBus=({label:e="nexSys4.eventBus",debugEnabled:t=!1,traceLimit:n=200}={})=>{const a=new Map,o=new Set;let i=Boolean(t);const s=Math.max(1,Number(n||200)),l=[],pushTrace=(t,n={})=>{if(!i)return null;const a={at:Date.now(),type:t,detail:n};return l.push(a),l.length>s&&l.splice(0,l.length-s),console.log(`[${e}] ${t}`,n),a},on=(e,t)=>{const n=String(e||"").trim();if(!n||"function"!=typeof t)return()=>{};const o=a.get(n)||new Set;return o.add(t),a.set(n,o),pushTrace("on",{topic:n,listenerCount:o.size}),()=>off(n,t)},off=(e,t)=>{const n=String(e||"").trim(),o=a.get(n);if(!n||!o)return!1;const i=o.delete(t);return o.size||a.delete(n),pushTrace("off",{topic:n,removed:i,listenerCount:o.size}),i},onAny=e=>"function"!=typeof e?()=>{}:(o.add(e),pushTrace("onAny",{listenerCount:o.size}),()=>offAny(e)),offAny=e=>{const t=o.delete(e);return pushTrace("offAny",{removed:t,listenerCount:o.size}),t},emit=(e,t)=>{const n=String(e||"").trim();if(!n)return 0;const s=[...a.get(n)||[]],l=[...o];return i&&pushTrace("emit",{topic:n,listenerCount:s.length,anyListenerCount:l.length,payload:t}),s.forEach(e=>{try{e(t,n)}catch(a){console.error("nexSys4 event bus handler failed",{topic:n,error:a})}}),l.forEach(e=>{try{e(t,n)}catch(a){console.error("nexSys4 event bus global handler failed",{topic:n,error:a})}}),s.length+l.length};return{on,off,onAny,offAny,emit,clear:()=>{a.clear(),o.clear()},setDebugEnabled(e){i=Boolean(e)},debugInfo:()=>({label:e,debugEnabled:i,topics:[...a.keys()],anyListenerCount:o.size,recentTrace:[...l]})}},re=Object.freeze({RUNTIME_STARTED:"nexsys4.runtime.started",RUNTIME_STOPPED:"nexsys4.runtime.stopped",RAW_GMCP:"nexsys4.raw.gmcp",SYSTEM_VITALS_CHANGED:"nexsys4.system.vitals.changed",SYSTEM_HEALTH_CHANGED:"nexsys4.system.health.changed",SYSTEM_MANA_CHANGED:"nexsys4.system.mana.changed",SYSTEM_RAGE_CHANGED:"nexsys4.system.rage.changed",SYSTEM_BLEED_CHANGED:"nexsys4.system.bleed.changed",SYSTEM_STATUS_CHANGED:"nexsys4.system.status.changed",SYSTEM_CLASS_CHANGED:"nexsys4.system.class.changed",SYSTEM_TARGET_CHANGED:"nexsys4.system.target.changed",SYSTEM_ROOM_CHANGED:"nexsys4.system.room.changed",SYSTEM_ROOM_ITEMS_CHANGED:"nexsys4.system.room_items.changed",SYSTEM_RUNTIME_CHANGED:"nexsys4.system.runtime.changed",SYSTEM_PAUSE_CHANGED:"nexsys4.system.pause.changed",SYSTEM_PAUSED:"nexsys4.system.paused",SYSTEM_UNPAUSED:"nexsys4.system.unpaused",SYSTEM_LOADED:"nexsys4.system.loaded",SYSTEM_SETTINGS_CHANGED:"nexsys4.system.settings.changed",SYSTEM_BASELINE_CHANGED:"nexsys4.system.baseline.changed",SYSTEM_DEATH_DETECTED:"nexsys4.system.death.detected",SYSTEM_MOUNT_CHANGED:"nexsys4.system.mount.changed",SYSTEM_WIELDED_CHANGED:"nexsys4.system.wielded.changed",UI_CONFIG_CHANGED:"nexsys4.ui.config.changed",AFF_GOT:"nexsys4.aff.got",AFF_LOST:"nexsys4.aff.lost",AFF_STACK_CHANGED:"nexsys4.aff.stack.changed",AFF_PRIORITY_CHANGED:"nexsys4.aff.priority.changed",DEF_GOT:"nexsys4.def.got",DEF_LOST:"nexsys4.def.lost",DEF_PRIORITY_CHANGED:"nexsys4.def.priority.changed",BALANCE_GOT:"nexsys4.balance.got",BALANCE_LOST:"nexsys4.balance.lost",BALANCE_RESET:"nexsys4.balance.reset",BALANCE_DURATION_OBSERVED:"nexsys4.balance.duration.observed",BALANCE_TIMER_RESTARTED:"nexsys4.balance.timer.restarted",EQBAL_GOT:"nexsys4.eqbal.got",LIMB_HIT:"nexsys4.limb.hit",LIMB_RESET:"nexsys4.limb.reset",LIMB_STAGE_CHANGED:"nexsys4.limb.stage.changed",LIMB_DECAY:"nexsys4.limb.decay",CACHE_AMOUNT_CHANGED:"nexsys4.cache.amount.changed",CACHE_INVENTORY_LIST:"nexsys4.cache.inventory.list",CACHE_RIFT_LIST:"nexsys4.cache.rift.list",CACHE_PRECACHE_CHANGED:"nexsys4.cache.precache.changed",ITEM_ROOM_ADDED:"nexsys4.item.room.added",ITEM_ROOM_REMOVED:"nexsys4.item.room.removed",ITEM_ROOM_UPDATED:"nexsys4.item.room.updated",ITEM_ROOM_LIST:"nexsys4.item.room.list",ITEM_INV_ADDED:"nexsys4.item.inv.added",ITEM_INV_REMOVED:"nexsys4.item.inv.removed",ITEM_INV_UPDATED:"nexsys4.item.inv.updated",ITEM_INV_LIST:"nexsys4.item.inv.list",QUEUE_UPDATED:"nexsys4.queue.updated",QUEUE_FLUSHED:"nexsys4.queue.flushed",QUEUE_DEFERRED:"nexsys4.queue.deferred",QUEUE_CLEARED:"nexsys4.queue.cleared",QUEUE_SENT:"nexsys4.queue.sent",QUEUE_FIRED:"nexsys4.queue.fired",QUEUE_FIRED_ACK:"nexsys4.queue.fired.ack",SERVERSIDE_AFF_PRIORITY_SET:"nexsys4.serverside.aff.priority.set",SERVERSIDE_DEF_PRIORITY_SET:"nexsys4.serverside.def.priority.set",SERVERSIDE_DIRTY:"nexsys4.serverside.dirty",SERVERSIDE_EVALUATED:"nexsys4.serverside.evaluated",SERVERSIDE_RULE_CHANGED:"nexsys4.serverside.rule.changed",RULE_ADDED:"nexsys4.rule.added",RULE_REMOVED:"nexsys4.rule.removed",RULE_ENABLED:"nexsys4.rule.enabled",RULE_DISABLED:"nexsys4.rule.disabled",RULE_PACK_LOADED:"nexsys4.rule.pack.loaded",RULE_PACK_UNLOADED:"nexsys4.rule.pack.unloaded",RULE_ORDER_CHANGED:"nexsys4.rule.order.changed",RULE_ACTIVATED:"nexsys4.rule.activated",RULE_DEACTIVATED:"nexsys4.rule.deactivated"}),ne=Object.freeze({IDLE:"IDLE",PROBING_SEPARATOR:"PROBING_SEPARATOR",BOOTING:"BOOTING",PROVISIONING_CURINGSET:"PROVISIONING_CURINGSET",AWAITING_SNAPSHOTS:"AWAITING_SNAPSHOTS",CAPTURING_SNAPSHOTS:"CAPTURING_SNAPSHOTS",RUNNING:"RUNNING",FAILED:"FAILED"}),isRuntimeReadyPhase=e=>e===ne.RUNNING,ae=Object.freeze({OUTPUT_COMPLETE:"SystemOutputCompleteEvent",STARTUP_BEGIN:"CuringStartupBeginEvent",STARTUP_COMPLETE:"CuringStartupCompleteEvent",STARTUP_FINALIZED:"CuringStartupFinalizedEvent",CURINGSET_READY:"CuringSetReadyEvent"}),oe=Object.freeze(["IRE.Rift.Request","IRE.Time.Request","Char.Skills.Get","Char.Items.Inv"]),buildStartupSnapshotCommands=()=>[`echo SystemEvent ${ae.STARTUP_BEGIN}`,"curing on","curing status","curing priority list","curing queue list","curing predictions","curing priority defence list","def","score","date",`echo SystemEvent ${ae.STARTUP_COMPLETE}`],buildStartupSnapshotBurst=()=>({gmcpRequests:[...oe],commands:buildStartupSnapshotCommands()}),ie=Object.freeze(["status","affPriorities","defPriorities"]),normalizeTimeoutMs=(e,t=1e3)=>{const n=Number(e);return Number.isFinite(n)&&n>0?Math.floor(n):t},normalizeRetryCount=(e,t=0)=>{const n=Number(e);return Number.isFinite(n)&&n>=0?Math.floor(n):t},createStartupCoordinator=({adapter:e,systemModel:t,serverside:n,persistence:a,seedBaselineFromObservedStartup:o=()=>{},noticeCenter:i,buildPersistenceSnapshot:s,startupTimeoutMs:l=1e3,maxStartupRetries:c=0,publishStartupPhase:u=()=>{},publishLoaded:d=()=>{},releaseStartupPause:p=()=>!1,setRuntimePhase:m=(e,n={})=>{t.setRuntime({phase:e,...n})}})=>{let g=!1,h=0,b=null,y=null;const v=normalizeTimeoutMs(l),S=normalizeRetryCount(c),clearConvergenceTimer=()=>{b&&(e.clearTimeout(b),b=null)},getMissingRequiredTopics=()=>{if("function"==typeof n.getMissingStartupFlags)return n.getMissingStartupFlags(ie);const e=n.getStartupStatus();return ie.filter(t=>!e.flags?.[t])},formatMissingRequiredTopics=(e=[])=>e.length?` Missing required captures: ${e.join(", ")}.`:"",startConvergenceTimer=()=>{clearConvergenceTimer(),b=e.setTimeout(()=>{if(g)return;const e=getMissingRequiredTopics();retryOrFail(e.length?`Startup snapshots did not converge within ${v}ms.`:`Startup closing fence did not arrive within ${v}ms.`,{phase:"snapshot-timeout-retry",source:"startup-timeout",missingRequired:e})},v)},complete=(e="startup-check")=>{clearConvergenceTimer(),m(ne.RUNNING,{startupFailureMessage:""}),o(),a.save(s()),u("startup-complete"),p({source:"startup-complete"}),d({source:"startup-complete",topic:re.SYSTEM_LOADED}),i.publish("output","startup complete",{source:e})},fail=(e,{source:t="startup-failed",missingRequired:n=[]}={})=>{clearConvergenceTimer(),g=!0;const a=`${e}${formatMissingRequiredTopics(n)}`;return m(ne.FAILED,{paused:!0,startupFailureMessage:a}),u("startup-failed"),i.publish("output",a,{force:!0,source:t,title:"startup failed: ",fg:"#fee2e2",bg:"#450a0a",titleFg:"#ffffff",titleBg:"#7f1d1d"}),!1},retryOrFail=(e,{phase:t,source:n,missingRequired:a=[]}={})=>!g&&(h>=S?fail(`${e} Exhausted ${S} startup retr${1===S?"y":"ies"}.`,{source:n,missingRequired:a}):(h+=1,requestSnapshots(y,t||"snapshot-retry",{source:n,retry:h,missingRequired:a}),!1)),requestSnapshots=(t,n="snapshot-request",a={})=>{if(y="function"==typeof t?t:y,"function"!=typeof y)return[];const o={source:"startup-snapshots",phase:n,attempt:h+1,retryCount:h,...a},{gmcpRequests:i,commands:s}=buildStartupSnapshotBurst();m(ne.AWAITING_SNAPSHOTS),u(n),e.sendGmcp(i,o);const l=y(s,o);return startConvergenceTimer(),l};return{reset:()=>{g=!1,h=0,clearConvergenceTimer(),n.resetStartupStatus?.(),m(ne.IDLE,{startupFailureMessage:""})},fail,requestSnapshots,handleFenceBegin:()=>!g&&(m(ne.CAPTURING_SNAPSHOTS),u("snapshot-begin"),!0),handleFenceComplete:(e="snapshot:complete:text")=>{if(g)return!1;u("snapshot-complete");const t=n.getStartupStatus();t.flags.queue||n.updateObservedQueue([]),t.flags.predictions||n.updateObservedPredictions({});const a=getMissingRequiredTopics();return a.length?retryOrFail("Startup closing fence arrived before required snapshots converged.",{phase:"snapshot-retry",source:e,missingRequired:a}):(g=!0,complete(e),!0)},dispose(){clearConvergenceTimer()},isResolved:()=>g}},se="nexsys4-default",normalizeCommand=e=>String(e||"").trim().toLowerCase().replace(/\s+/g," "),isServersideCommand=e=>{const t=normalizeCommand(e);return t.startsWith("curing ")||t.startsWith("curingset ")},normalizeSetName=e=>String(e||"").trim().toLowerCase(),toNumberMaybe=e=>{if("number"==typeof e&&Number.isFinite(e))return e;const t=Number(e);return Number.isFinite(t)?t:e},normalizeBoolean=e=>{if("boolean"==typeof e)return e;const t=String(e||"").trim().toLowerCase();return!!["on","yes","true","activated","enabled"].includes(t)||!["off","no","false","disabled"].includes(t)&&Boolean(e)},normalizeStatusValue=(e,t)=>{switch(e){case"enabled":case"reporting":case"afflictions":case"defences":case"sipping":case"transmutation":case"focus":case"useVault":case"clot":case"fallback":case"kaidoTransmute":case"customAffPriority":case"customDefPriority":case"batch":case"insomnia":return normalizeBoolean(t);case"focusOverHerbs":{if("boolean"==typeof t)return t;const e=String(t||"").trim().toLowerCase();return!!["focus","first","yes","on","true"].includes(e)||!["herbs","second","no","off","false"].includes(e)&&Boolean(t)}case"tree":{if("custom"===t)return"custom";if("boolean"==typeof t)return t?"on":"off";const e=String(t||"").trim().toLowerCase();return["custom","on","off"].includes(e)?e:["yes","activated","enabled","true"].includes(e)?"on":["no","disabled","false"].includes(e)?"off":e||"off"}case"sipPriority":return"mana"===String(t||"").trim().toLowerCase()?"mana":"health";default:return toNumberMaybe(t)}},createServersideContext=({affModel:e,defModel:t,balanceModel:n,systemModel:a,trackables:o,now:i})=>{const s=a.getRoom().items||{};let l=null;const isTarget=e=>Array.isArray(e)?e.some(e=>isTarget(e)):"function"==typeof a.isTarget&&a.isTarget(e);return{haveAff:t=>e.haveAff(t),haveAffs:(t=[])=>e.haveAffs(t),haveAnAff:(t=[])=>e.haveAnAff(t),affCount:t=>Number(e.get?.(t)?.count||0),affElapsed:t=>e.elapsed(t),sortedActiveAffs:()=>(null===l&&(l="function"==typeof e.currentSorted?e.currentSorted():[]),l),haveDef:e=>t.haveDef(e),haveDefs:(e=[])=>e.every(e=>t.haveDef(e)),haveADef:(e=[])=>e.some(e=>t.haveDef(e)),haveBal:e=>n.have(e),haveBals:(e=[])=>e.every(e=>n.have(e)),haveABal:(e=[])=>e.some(e=>n.have(e)),balElapsed:e=>n.elapsed(e),suspendCuring:(e={})=>({...e&&"object"==typeof e?e:{},suspendCuring:!0}),trackableElapsed:e=>{const t=o[e];return t?.have?i()-t.since:Number.POSITIVE_INFINITY},roomHasItem:e=>Boolean(s[e]),isTarget,isClass:e=>a.isClass(e)}},buildCountablePriorityDefaults=e=>"function"!=typeof e.getCountablePriorityNames?{}:e.getCountablePriorityNames().reduce((e,t)=>(e[t]=0,e),{}),normalizeServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26?t:0},isServersideAffPriorityNumber=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},canonicalAffPriority=e=>{const t=normalizeServersideAffPriority(e);return 26===t?0:t},buildBaselineAffPriorities=e=>({...e.list().reduce((t,n)=>(t[n]=normalizeServersideAffPriority(e.getPriority(n)),t),{}),...buildCountablePriorityDefaults(e)}),buildObservedAffPriorities=e=>({...e.list().reduce((e,t)=>(e[t]=0,e),{}),...buildCountablePriorityDefaults(e)}),buildBaselineDefPriorities=(e,t="")=>e.list().reduce((n,a)=>{const o=e.get(a);return!o?.serverside||o.static?n:e.isAvailableForClass(a,t)?(n[a]=e.getPriority(a),n):n},{}),buildObservedDefPriorities=(e,t="")=>e.list().reduce((n,a)=>e.get(a)?.serverside&&e.isAvailableForClass(a,t)?(n[a]=0,n):n,{}),buildBaselineCurePriorities=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=Number(n.prio||0),e),{}),mergeWithResets=(e,t={})=>{const n={...e};return Object.entries(t).forEach(([t,a])=>{n[t]="RESET"!==a?a:e[t]}),n},createInitialServersideState=({baselineSettings:e,affModel:t,defModel:n,systemModel:a,cureTable:o})=>{const i=a?.getClass?.()||"",s=buildBaselineAffPriorities(t),l=buildBaselineDefPriorities(n,i),c=buildBaselineCurePriorities(o);return{baseline:{settings:{...e},affPriorities:s,defPriorities:l,curePriorities:c},sessionBaseline:{settings:{...e},affPriorities:{...s},defPriorities:{...l},curePriorities:{...c}},derived:{},desired:{},observed:{settings:{...e},affPriorities:buildObservedAffPriorities(t),defPriorities:buildObservedDefPriorities(n,i),curePriorities:buildBaselineCurePriorities(o),prioAff:null,manualQueue:[],predictions:{},prioritySet:""},pending:new Map,capture:{affPriorities:null,defPriorities:null,prioritySet:""},transient:{prioAff:null,manualQueue:[],predictions:{},staticDefRequests:{},fullPriorityReset:!1},diagnostics:{lastCommands:[],lastReasons:[],desyncCounter:0,recoveryCounter:0,commandRepeatCounter:0},curingsets:{sets:[],activeSet:"",priorSet:"",used:0,limit:0},startup:{flags:{status:!1,affPriorities:!1,defPriorities:!1,queue:!1,predictions:!1,curingsets:!1}},lastDiffCommands:[],rules:[],dirty:!0}},createCuringSetProvisioner=({adapter:e,serverside:t,dispatchCommands:n,setRuntimePhase:a=()=>{},publishStartupPhase:o=()=>{},options:i={}}={})=>{const s=`echo SystemEvent ${ae.CURINGSET_READY}`,l=Math.max(50,Number(i.curingSetProvisionTimeoutMs??i.startupTimeoutMs??1e3)),c=Math.max(1,Number(i.maxCuringSetProvisionAttempts??4));let u=!1,d=0,p=!1,m=null,g={onReady:()=>{},onAbort:()=>{}};const clearTimer=()=>{m&&(e?.clearTimeout?.(m),m=null)},settle=()=>{u=!1,clearTimer()},finishReady=()=>{const{onReady:e}=g;settle(),e({createdThisRun:p})},finishAbort=e=>{const{onAbort:t}=g;settle(),t(e)},sendProbe=(t,a)=>{clearTimer(),d+=1,n([...t,"curingset list",s],{source:"curingset-provision",reason:a,attempt:d}),m=e?.setTimeout?.(()=>{u&&finishAbort(`nexSys4 could not confirm its curing set within ${l}ms (no response from the game). Reload to retry.`)},l)},handleBarrier=()=>{if(!u)return;clearTimer();const e=t.getCuringSets?.()??{},n=(e.sets||[]).map(e=>normalizeSetName(e)),a=normalizeSetName(e.activeSet),o=Number(e.used||0),i=Number(e.limit||0),s=n.includes(se);"nexsys4-default"!==a?d>=c?finishAbort(`nexSys4 could not secure its curing set after ${c} attempts. Reload to retry.`):s?sendProbe([`curingset switch ${se}`],"switch"):i>0&&o>=i?finishAbort(`nexSys4 needs its own curing set but all ${i} slots are full. Delete a set or CURINGSET EXPAND (25cr), then reload.`):(p=!0,sendProbe([`curingset new ${se}`,`curingset switch ${se}`],"create")):finishReady()};return{start({onReady:e=()=>{},onAbort:t=()=>{}}={}){g={onReady:e,onAbort:t},u=!0,d=0,p=!1,a(ne.PROVISIONING_CURINGSET),o("provision-curingset"),sendProbe([],"list")},handleBarrier,wasCreatedThisRun:()=>p,isActive:()=>u,dispose(){settle()}}},le=Object.freeze({STARTED:"nexSys.start(): startup initiated.",ALREADY_STARTED:"nexSys.start(): runtime is already started.",STARTUP_PENDING:"nexSys.start(): runtime is already started; startup is still in progress.",STARTUP_FAILED:"nexSys.start(): runtime startup failed. Check the console and in-game notices.",SEPARATOR_PROBE:"nexSys.start(): command separator unknown; sending config to auto-detect. Startup will resume on capture."}),ce=Object.freeze(["config","more","more"]),createRuntimeStartupOrchestrator=({adapter:e,systemModel:t,persistenceApi:n,startup:a,curingSetProvisioner:o,noticeCenter:i,syncDebugMode:s,isStarted:l,markStarted:c,setRuntimePhase:u,publishStartupPhase:d,attachEventWiring:p,promptPresenter:m,publishRuntimeStarted:g,hydrateCacheFromAdapterGmcp:h,commandDispatcher:b,debugOverride:y})=>{let v=null;const continueStartup=()=>{c(),u(ne.BOOTING,{startupFailureMessage:""}),d("init"),g(),p(),m.start(),h(),o.start({onReady:()=>{a.requestSnapshots(b.sendCommands)},onAbort:e=>{a.fail(e,{source:"curingset-provision"})}})};return{dispose(){v&&(v(),v=null),o?.dispose?.()},start(){if(l()){const e=t.getRuntime().phase;return e===ne.FAILED?le.STARTUP_FAILED:e===ne.RUNNING?le.ALREADY_STARTED:le.STARTUP_PENDING}if(v)return le.SEPARATOR_PROBE;t.setSettings({commandSeparator:void 0},{setBaseline:!0}),n.loadPersistence(),void 0!==y&&t.setSettings({debug:Boolean(y)},{setBaseline:!0}),a.reset();const o=normalizeCommandSeparator(t.getSettings().commandSeparator),c=normalizeCommandSeparator(e.getCommandSeparator()),p=o||c;return s(),p?(t.getSettings().commandSeparator!==p&&t.setSettings({commandSeparator:p},{setBaseline:!0}),continueStartup(),le.STARTED):(u(ne.PROBING_SEPARATOR),d("separator-probe"),i.publish("output","Command separator not configured. Sending config to auto-detect...",{source:"separator-probe"}),v=e.addOnceTrigger({id:"nexsys4-separator-probe",regex:/\bCommandSeparator\s+(?<sep>\S+)/,action:({args:n})=>{const a=normalizeCommandSeparator(String(n.groups?.sep||"").trim());a&&(v=null,e.setSeparator(a),t.setSettings({commandSeparator:a},{setBaseline:!0}),continueStartup())}}),ce.forEach(t=>{e.send([t],{source:"separator-probe"})}),le.SEPARATOR_PROBE)}}},ue=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],de="nexsys4.parsed_gmcp_vitals",hasOwn$6=(e,t)=>Boolean(e)&&Object.prototype.hasOwnProperty.call(e,t),parseNumericVital=(e,t)=>{if(!hasOwn$6(e,t))return;const n=toNumber(e[t],NaN);return Number.isFinite(n)?n:void 0},parseResourceStat=e=>{const[t,n]=String(e).split(":");if(!t||void 0===n)return null;const a=t.trim().toLowerCase(),o=n.trim();if(!a)return null;const i=toNumber(o.endsWith("%")?o.slice(0,-1):o,NaN),s=toOptionalBooleanFromYesNo(o);return{key:a,value:Number.isFinite(i)?i:o,balanceState:Number.isFinite(i)?void 0:s}},toBalancePatches=(e={})=>Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>({id:e,have:t})),parseGmcpVitals=(e={})=>{const t=e&&"object"==typeof e&&!Array.isArray(e)?e:{},n=ue.reduce((e,n)=>({...e,[n]:parseNumericVital(t,n)}),{}),a={balance:toOptionalBooleanFromYesNo(t.bal),equilibrium:toOptionalBooleanFromYesNo(t.eq)};return{kind:de,vitals:n,balances:a,balancePatches:toBalancePatches(a),resourceStats:(Array.isArray(t.charstats)?t.charstats:[]).map(parseResourceStat).filter(Boolean)}},toParsedGmcpVitals=(e={})=>"nexsys4.parsed_gmcp_vitals"!==e?.kind?parseGmcpVitals(e):{...e,balancePatches:Array.isArray(e.balancePatches)?e.balancePatches:toBalancePatches(e.balances||{})},hasOwn$5=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isRecord$2=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),readFirstDefined=(e,t=[])=>{for(const n of t)if(hasOwn$5(e,n)&&void 0!==e[n]&&null!==e[n])return e[n]},parseAffName=(e={})=>{if("string"==typeof e)return e.toLowerCase();if(Array.isArray(e)){const t=e[0];if("string"==typeof t)return t.toLowerCase();const n=t&&"object"==typeof t?t:{};return String(n.affliction||n.defence||n.name||n.aff||n.def||"").toLowerCase()}const t=e&&"object"==typeof e?e:{};return String(t.affliction||t.defence||t.name||t.aff||t.def||"").toLowerCase()},parseRoomItems=(e={})=>Array.isArray(e?.items)?e.items.reduce((e,t)=>{const n=String(t?.name||t?.item||"").trim();return n?(e[n]=(e[n]||0)+1,e):e},{}):e?.items&&"object"==typeof e.items?{...e.items}:{},normalizeItemLocation$2=(e={},t=e?.item||e)=>String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),normalizeInventoryDeltaName=e=>"string"==typeof e?e:e?.name||e?.item||"",createInventoryDelta=(e,t={})=>{const n=t?.item||t,a=normalizeItemLocation$2(t,n);return{location:a,inventoryDelta:{id:n?.id??t?.id,location:a,name:normalizeInventoryDeltaName(n),icon:n?.icon??null,attrib:n?.attrib??null,amount:n?.amount??n?.count??n?.qty??t?.amount??t?.count,delta:n?.delta??t?.delta,action:e.split(".").pop(),direction:e.endsWith("remove")?"remove":e.endsWith("add")?"add":void 0},dirtyReason:`gmcp:${e}`}},hasInventoryIdentity=(e={})=>void 0!==e.id&&null!==e.id&&""!==e.id||Boolean(String(e.name||"").trim()),normalizeTargetRecord=(e={})=>{if(!isRecord$2(e))return{};const t={},n=readFirstDefined(e,["id","ID"]),a=readFirstDefined(e,["Text","text","short_desc"]),o=readFirstDefined(e,["HP","hp","hpperc"]);return void 0!==n&&(t.id=n),void 0!==a&&(t.text=a),void 0!==o&&(t.hp=o),t},createGmcpApplier=({emit:e=()=>{}}={})=>{const translate=(e={})=>{const t=[],emitTranslated=(e,n)=>{t.push({topic:e,payload:n})},n=normalizeTag(e.tag||e.rawTag||e.gmcp_method),a=e.payload;switch(n){case"char.vitals":emitTranslated(J.CHAR_VITALS,{vitals:parseGmcpVitals(a||{})});break;case"char.status":emitTranslated(J.CHAR_STATUS,{status:a||{}});break;case"char.afflictions.list":emitTranslated(J.CHAR_AFFLICTIONS_LIST,{afflictions:Array.isArray(a)?a:[]});break;case"char.afflictions.add":{const e=parseAffName(a);e&&emitTranslated(J.CHAR_AFFLICTIONS_ADD,{name:e});break}case"char.afflictions.remove":{const e=parseAffName(a);e&&emitTranslated(J.CHAR_AFFLICTIONS_REMOVE,{name:e});break}case"char.defences.list":emitTranslated(J.CHAR_DEFENCES_LIST,{defences:Array.isArray(a)?a:[]});break;case"char.defences.add":{const e=parseAffName(a);e&&emitTranslated(J.CHAR_DEFENCES_ADD,{name:e});break}case"char.defences.remove":{const e=parseAffName(a);e&&emitTranslated(J.CHAR_DEFENCES_REMOVE,{name:e});break}case"ire.rift.list":emitTranslated(J.IRE_RIFT_LIST,{rift:a||{}});break;case"ire.rift.change":emitTranslated(J.IRE_RIFT_CHANGE,{change:a||{}});break;case"char.items.list":emitTranslated(J.CHAR_ITEMS_LIST,{location:normalizeItemLocation$2(a),items:Array.isArray(a?.items)?a.items:[]});break;case"char.items.add":case"char.items.remove":case"char.items.update":{const e=createInventoryDelta(n,a||{}),t=hasInventoryIdentity(e.inventoryDelta)?e.inventoryDelta:null;emitTranslated(J.CHAR_ITEMS_DELTA,{inventoryDelta:t,dirtyReason:e.dirtyReason});break}case"room.info":emitTranslated(J.ROOM_INFO,{room:a||{},roomItems:parseRoomItems(a||{})});break;case"ire.target.info":emitTranslated(J.TARGET_INFO,{target:normalizeTargetRecord(a||{})})}return t};return{translate,apply(t){translate(t).forEach(({topic:t,payload:n})=>{e(t,n)})}}},pe=Object.freeze({inv:re.ITEM_INV_LIST,room:re.ITEM_ROOM_LIST}),me=Object.freeze({inv:Object.freeze({add:re.ITEM_INV_ADDED,remove:re.ITEM_INV_REMOVED,update:re.ITEM_INV_UPDATED}),room:Object.freeze({add:re.ITEM_ROOM_ADDED,remove:re.ITEM_ROOM_REMOVED,update:re.ITEM_ROOM_UPDATED})}),normalizeItemLocation$1=e=>String(e||"").trim().toLowerCase()||"inv",createItemTopicNotifier=({publishPublic:e=()=>{}}={})=>{const notifyList=(t,n)=>{const a=pe[normalizeItemLocation$1(t)];a&&e(a,{location:normalizeItemLocation$1(t),items:Array.isArray(n)?n:[]})},notifyDelta=t=>{const n=normalizeItemLocation$1(t.location),a=String(t.action||t.direction||"").trim().toLowerCase(),o=me[n]?.[a];o&&e(o,t)};return{notify({topic:e,payload:t}={}){e!==J.CHAR_ITEMS_DELTA?e===J.CHAR_ITEMS_LIST&&notifyList(t?.location,t?.items):t?.inventoryDelta&&notifyDelta(t.inventoryDelta)}}},fallbackClone=(e,t=new WeakMap)=>{if(null==e)return e;if("object"!=typeof e)return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e)){const n=[];return t.set(e,n),e.forEach(e=>n.push(fallbackClone(e,t))),n}if(e instanceof Set){const n=new Set;return t.set(e,n),[...e].forEach(e=>n.add(fallbackClone(e,t))),n}if(e instanceof Map){const n=new Map;return t.set(e,n),[...e.entries()].forEach(([e,a])=>{n.set(fallbackClone(e,t),fallbackClone(a,t))}),n}const n={};return t.set(e,n),Object.entries(e).forEach(([e,a])=>{"function"!=typeof a&&(n[e]=fallbackClone(a,t))}),n},deepClone$1=e=>{if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return fallbackClone(e)}},deepMerge=(e,t)=>{const n=Array.isArray(e)?[...e]:{...e||{}};return Object.entries(t||{}).forEach(([e,t])=>{!t||"object"!=typeof t||Array.isArray(t)||!n[e]||"object"!=typeof n[e]||Array.isArray(n[e])?n[e]=t:n[e]=deepMerge(n[e],t)}),n},deepFreeze=e=>e&&"object"==typeof e?(Object.isFrozen(e)||(Object.freeze(e),Object.keys(e).forEach(t=>deepFreeze(e[t]))),e):e,createSnapshotCache=({getVersion:e=()=>0,buildSnapshot:t=()=>({})}={})=>{let n=NaN,a=null;return()=>{const o=e();return a&&n===o||(n=o,a=deepFreeze(t())),a}},fe=Object.freeze(["head","torso","leftarm","rightarm","leftleg","rightleg"]),ge=Object.freeze({healthy:0,damaged:1,broken:2,mangled:3}),he=new Set(Object.keys(ge)),be=Object.freeze({head:"head",torso:"torso",leftarm:"leftarm",rightarm:"rightarm",leftleg:"leftleg",rightleg:"rightleg"}),ye={brokenleftarm:{limb:"leftarm",stage:"broken"},brokenrightarm:{limb:"rightarm",stage:"broken"},brokenleftleg:{limb:"leftleg",stage:"broken"},brokenrightleg:{limb:"rightleg",stage:"broken"},damagedhead:{limb:"head",stage:"damaged"},damagedleftarm:{limb:"leftarm",stage:"damaged"},damagedrightarm:{limb:"rightarm",stage:"damaged"},damagedleftleg:{limb:"leftleg",stage:"damaged"},damagedrightleg:{limb:"rightleg",stage:"damaged"},mangledhead:{limb:"head",stage:"mangled"},mangledleftarm:{limb:"leftarm",stage:"mangled"},mangledrightarm:{limb:"rightarm",stage:"mangled"},mangledleftleg:{limb:"leftleg",stage:"mangled"},mangledrightleg:{limb:"rightleg",stage:"mangled"},mildtrauma:{limb:"torso",stage:"damaged"},serioustrauma:{limb:"torso",stage:"mangled"}},normalizeLimbId=e=>{const t=String(e||"").trim().toLowerCase().replace(/\s+/g,"");return be[t]||t},buildAfflictionStageSnapshot=(e=[])=>{const t=fe.reduce((e,t)=>(e[t]="healthy",e),{});return e.forEach(e=>{const n=ye[String(e||"").trim().toLowerCase()];if(!n)return;const a=t[n.limb]||"healthy";(ge[n.stage]??0)>(ge[a]??0)&&(t[n.limb]=n.stage)}),t},createLimbModel=({now:e=Date.now,setTimeoutFn:t,clearTimeoutFn:n,damageResetMs:a=18e4}={})=>{const o=new Set;let i=0;const s=new Map,l=new Map,c=fe.reduce((t,n)=>(t[n]={id:n,percent:0,hits:0,stage:"healthy",updatedAt:e()},t),{}),emit=(e,t)=>{i+=1,t?.limb&&s.set(t.limb,(s.get(t.limb)??0)+1),o.forEach(n=>n(e,t))},cancelResetTimer=e=>{const t=l.get(e);null!=t&&(n(t),l.delete(e))},scheduleResetTimer=n=>{cancelResetTimer(n);const o=t(()=>{l.delete(n);const t=c[n];!t||t.percent<=0||(t.percent=0,t.hits=0,t.updatedAt=e(),emit("LimbDecay",{limb:n,value:deepClone$1(t)}))},a);l.set(n,o)},buildEntrySnapshot=(e={})=>({id:e.id,percent:e.percent,hits:e.hits,stage:e.stage,updatedAt:e.updatedAt}),u=new Map,getEntrySnapshot=e=>c[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>s.get(e)??0,buildSnapshot:()=>buildEntrySnapshot(c[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>fe.reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),setStage=(t,n,a="manual")=>{const o=normalizeLimbId(t),i=String(n||"").trim().toLowerCase();if(!c[o]||!he.has(i))return!1;if(c[o].stage===i)return!1;const s=c[o],l=s.stage;return s.stage=i,s.percent=0,s.hits=0,s.updatedAt=e(),cancelResetTimer(o),emit("LimbStageChanged",{limb:o,stage:i,previousStage:l,source:a,value:deepClone$1(s)}),!0},applyAfflictionTransition=(e,t)=>{const n=ye[String(e||"").toLowerCase()];return!!n&&(t?(setStage(n.limb,n.stage,"affliction"),!0):"damaged"===n.stage?(setStage(n.limb,"healthy","affliction"),!0):"mangled"===n.stage?(setStage(n.limb,"damaged","affliction"),!0):"broken"===n.stage&&(setStage(n.limb,"healthy","affliction"),!0))},syncFromAfflictions=(e=[],t="affliction-list")=>{const n=buildAfflictionStageSnapshot(e);return fe.reduce((e,a)=>n[a]===c[a].stage?e:setStage(a,n[a],t)||e,!1)};return{onChange:e=>(o.add(e),()=>o.delete(e)),list:()=>[...fe],snapshot:()=>d(),hit:(t,n,a="manual")=>{const o=normalizeLimbId(t),i=Number(n);if(!c[o]||!Number.isFinite(i)||i<=0)return!1;const s=c[o],l=s.stage;s.percent=Math.max(0,s.percent+i),s.hits+=1,s.updatedAt=e();let u=null;return"healthy"===s.stage&&s.percent>=100?(s.stage="damaged",s.percent=0,s.hits=0,u="damaged",cancelResetTimer(o)):"damaged"===s.stage&&s.percent>=100?(s.stage="mangled",s.percent=0,s.hits=0,u="mangled",cancelResetTimer(o)):scheduleResetTimer(o),emit("LimbHit",{limb:o,amount:i,source:a,transition:u,previousStage:l,value:deepClone$1(s)}),u&&emit("LimbStageChanged",{limb:o,stage:s.stage,previousStage:l,source:a,value:deepClone$1(s)}),!0},reset:(t,n="manual")=>{const a=normalizeLimbId(t);if(!c[a])return!1;const o=c[a],i=o.stage;return(0!==o.percent||0!==o.hits||"healthy"!==i)&&(o.percent=0,o.hits=0,o.stage="healthy",o.updatedAt=e(),cancelResetTimer(a),emit("LimbReset",{limb:a,source:n,previousStage:i,value:deepClone$1(o)}),"healthy"!==i&&emit("LimbStageChanged",{limb:a,stage:"healthy",previousStage:i,source:n,value:deepClone$1(o)}),!0)},setStage,applyAfflictionTransition,syncFromAfflictions,dispose(){fe.forEach(cancelResetTimer)},get:e=>getEntrySnapshot(normalizeLimbId(e))}},buildLimbSnapshot=(e,t)=>{const n=e?.get?.(t);return n?{id:n.id,percent:n.percent,hits:n.hits,stage:n.stage}:null},didLimbChange=(e,t)=>Boolean(e&&t)&&(e.percent!==t.percent||e.hits!==t.hits||e.stage!==t.stage),syncTorsoTrauma=({affModel:e,serverside:t,stage:n,source:a,at:o})=>{switch(n){case"damaged":return e?.lose?.("serioustrauma",{source:a,at:o}),e?.got?.("mildtrauma",{source:a,at:o}),t?.removePrediction?.("serioustrauma"),t?.addPrediction?.("mildtrauma"),!0;case"mangled":return e?.lose?.("mildtrauma",{source:a,at:o}),e?.got?.("serioustrauma",{source:a,at:o}),t?.removePrediction?.("mildtrauma"),t?.addPrediction?.("serioustrauma"),!0;case"healthy":return e?.lose?.("mildtrauma",{source:a,at:o}),e?.lose?.("serioustrauma",{source:a,at:o}),t?.removePrediction?.("mildtrauma"),t?.removePrediction?.("serioustrauma"),!0;default:return!1}},buildObserveResult=(e,t,n,a=!1)=>({changed:didLimbChange(t,n)||a,traumaSynced:a,stageChanged:t?.stage!==n?.stage,limb:e,before:t,after:n}),applyObservedLimbHit=({limbModel:e,affModel:t,serverside:n,limb:a,amount:o,source:i="manual",at:s})=>{const l=normalizeLimbId(a),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.hit(l,o,i);const u=buildLimbSnapshot(e,l),d=didLimbChange(c,u),p=c.stage!==u?.stage,m=!("torso"!==l||!p)&&syncTorsoTrauma({affModel:t,serverside:n,stage:u?.stage,source:i,at:s});return{changed:d||m,traumaSynced:m,stageChanged:p,limb:l,before:c,after:u}},applyObservedLimbReset=({limbModel:e,affModel:t,serverside:n,limb:a,source:o="manual",at:i})=>{const s=normalizeLimbId(a),l=buildLimbSnapshot(e,s);return l?(e.reset(s,o),buildObserveResult(s,l,buildLimbSnapshot(e,s),"torso"===s&&syncTorsoTrauma({affModel:t,serverside:n,stage:"healthy",source:o,at:i}))):{changed:!1,traumaSynced:!1,stageChanged:!1,limb:s,before:null,after:null}},applyObservedLimbStage=({limbModel:e,affModel:t,serverside:n,limb:a,stage:o,source:i="manual",at:s})=>{const l=normalizeLimbId(a),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.setStage(l,o,i);const u=buildLimbSnapshot(e,l),d=c.stage!==u?.stage,p=!("torso"!==l||!d)&&syncTorsoTrauma({affModel:t,serverside:n,stage:u?.stage,source:i,at:s});return{changed:didLimbChange(c,u)||p,traumaSynced:p,stageChanged:d,limb:l,before:c,after:u}},ve=new Set(["char.items.add","char.items.remove","char.items.update"]),registerAdapterEvents=({register:e,options:t,queueTranslatedGmcp:n,publishPublic:a,publishPublicScoped:o,markDirty:i,flushCycle:s,outputCycle:l,startup:c,curingSetProvisioner:u,curingSetGuard:d,curingMasterSwitch:p,queueController:m,serverside:g,balanceModel:h,adapter:b,systemModel:y,affModel:v,cacheModel:S,limbModel:x,savePersistence:C})=>{e("GmcpEvent",e=>{n(e);const o=normalizeTag(e?.tag||e?.rawTag||e?.gmcp_method);!0===t.publishRawGmcp&&a(re.RAW_GMCP,{source:"adapter-gmcp",tag:o,payload:e?.payload??e?.gmcp_args??null}),ve.has(o)||i("gmcp-buffered")}),e("PromptEvent",()=>s("prompt")),e("ForcePopulateEvent",()=>s("force")),e("SystemOutputCompleteEvent",()=>{l.markComplete()&&s("output-complete")}),e(ae.CURINGSET_READY,()=>{u?.handleBarrier()}),e(ae.STARTUP_BEGIN,()=>{c.handleFenceBegin()}),e(ae.STARTUP_COMPLETE,()=>{c.handleFenceComplete("snapshot:complete:text")}),e("QueueFiredTextEvent",e=>{e?.queueName&&m.acknowledgeFired(e.queueName)}),e("QueueSentTextEvent",e=>{const t=e?.queueId||e?.queueName||e?.queueType;t&&m.acknowledgeSent(t,e)}),e("AllQueuesClearedTextEvent",()=>{m.listQueues().forEach(e=>{m.clear(e)})}),e("CommandSeparatorChangedTextEvent",({separator:e}={})=>{const t=normalizeCommandSeparator(e);t&&(b?.setSeparator(t),y?.setSettings({commandSeparator:t},{setBaseline:!0}),C?.())}),e("BalanceStateTextEvent",e=>{const t=String(e?.id||"").trim().toLowerCase();if(!t)return;const n=String(e?.reason||e?.source||"text"),a=Number(e?.durationSeconds);if(!0!==e?.have){if(!1===e?.have){if(Number.isFinite(a)&&a>0)return void h.observeServerUse(t,a,{source:n});h.lose(t,n)}}else h.gain(t,n)}),e("CacheRiftOutTextEvent",(e={})=>{const t=S?.observeRiftOutText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-out:${t.name}`)}),e("CacheRiftInTextEvent",(e={})=>{const t=S?.observeRiftInText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-in:${t.name}`)}),e("CacheRiftFullTextEvent",(e={})=>{const t=S?.invalidateRiftSnapshot?.({source:e.source||"text-trigger"});b?.sendGmcp?.(["IRE.Rift.Request"],{source:"cache-rift-full-text"}),t&&i("text:cache-rift-resync")}),e("CacheInventoryEmptyTextEvent",(e={})=>{const t=S?.observeInventoryEmptyText?.({item:e.item,source:e.source||"text-trigger"});t?.name&&(i(`text:cache-empty:${t.name}`),b?.sendGmcp?.(["Char.Items.Inv"],{source:"cache-inventory-empty-text",item:e.item||"",name:t.name}))}),e("CacheCurativeConsumedTextEvent",(e={})=>{const t=S?.observeCurativeConsumedText?.({item:e.item,amount:e.amount,source:e.source||"text-trigger"});t?.name&&i(`text:cache-consume:${t.name}`)}),e("CacheInventoryDeltaTextEvent",(e={})=>{const t=S?.observeInventoryDeltaText?.({item:e.item,amount:e.amount,delta:e.delta,source:e.source||"text-trigger"});t?.name&&i(`text:cache-${t.delta>0?"add":"remove"}:${t.name}`)}),e("LimbDamageTextEvent",e=>{const t=applyObservedLimbHit({limbModel:x,affModel:v,serverside:g,limb:e?.limb,amount:e?.amount,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&t.stageChanged&&i(`text-limb-torso:${t.after?.stage||"unknown"}`)}),e("LimbResetTextEvent",e=>{const t=applyObservedLimbReset({limbModel:x,affModel:v,serverside:g,limb:e?.limb,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&i("text-limb-torso:healthy")}),e("ServersideStatusTextEvent",(e={})=>{"enabled"!==String(e.key||"").trim().toLowerCase()?g.parseStatusLine(e):p?.observeConfirmation(Boolean(e.value))}),e("ServersideStatusSnapshotCompleteTextEvent",()=>{g.markStartupCaptured("status")}),e("ServersideAffPrioSnapshotOpenTextEvent",e=>{g.beginObservedAffPrioritySnapshot(e?.set||"")}),e("ServersideAffPrioSnapshotCompleteTextEvent",()=>{g.completeObservedAffPrioritySnapshot()}),e("ServersideDefPrioSnapshotOpenTextEvent",e=>{g.beginObservedDefPrioritySnapshot(e?.set||"")}),e("ServersideDefPrioSnapshotCompleteTextEvent",()=>{g.completeObservedDefPrioritySnapshot()}),e("ServersideAffPrioTextEvent",e=>{if(!e?.aff)return;const t=Number(e.prio),n=g.updateObservedAffPriority(e.aff,t);if("live-confirmation"===e.source){const a="function"==typeof v?.normalizePriorityName?v.normalizePriorityName(e.aff):String(e.aff||"").toLowerCase();o(re.SERVERSIDE_AFF_PRIORITY_SET,{id:a,priority:t,source:"live-confirmation",accepted:n},a)}}),e("ServersideDefPrioTextEvent",e=>{if(!e?.def)return;const t=String(e.def||"").toLowerCase(),n=Number(e.prio),a=g.updateObservedDefPriority(t,n);"live-confirmation"===e.source&&o(re.SERVERSIDE_DEF_PRIORITY_SET,{id:t,priority:n,source:"live-confirmation",accepted:a},t)}),e("ServersideQueueListTextEvent",e=>{g.updateObservedQueue(e?.queue||[])}),e("ServersidePredictionsTextEvent",e=>{g.updateObservedPredictions(e?.predictions||{})}),e("ServersideCuringSetsTextEvent",e=>{g.observeCuringSets({sets:e?.sets||[],activeSet:e?.activeSet||"",used:e?.used,limit:e?.limit})}),e("ServersideCuringSetSwitchedTextEvent",e=>{d?.handleSwitched({set:e?.set||""})}),e("SnappedGotTrackableEvent",()=>{g.setTrackable("snapTrack",!0,{source:"text",label:"Snapped"}),b.setTimeout(()=>{g.setTrackable("snapTrack",!1,{source:"timer",label:"Snapped"})},8e3)})},Se={short:{rl:"right leg",ll:"left leg",ra:"right arm",la:"left arm",h:"head",tt:"torso",c:"centre",l:"left",r:"right"},long:{"right leg":"rl","left leg":"ll","right arm":"ra","left arm":"la",head:"h",torso:"tt",centre:"c",left:"l",right:"r"}},xe=["e","w","s","n","ne","se","sw","nw","in","out","d","u"],Ce={e:"east",w:"west",s:"south",n:"north",ne:"northeast",se:"southeast",sw:"southwest",nw:"northwest",in:"in",out:"out",down:"down",d:"down",u:"up",up:"up"},we={e:"west",w:"east",s:"north",n:"south",ne:"southwest",se:"northwest",sw:"northeast",nw:"southeast",in:"out",out:"in",down:"up",d:"up",u:"down",up:"down"},ke={east:"e",west:"w",south:"s",north:"n",northeast:"ne",northwest:"nw",southeast:"se",southwest:"sw",in:"in",out:"out",down:"d",up:"up"},Ee=["Alchemist","Apostate","Bard","Blademaster","Depthswalker","Dragon","Druid","Infernal","Jester","Magi","Monk","Shikudo","Occultist","Paladin","Pariah","Priest","Psion","Runewarden","Sentinel","Serpent","Shaman","Sylvan","Unnamable","Air Elemental Lord","Earth Elemental Lord","Fire Elemental Lord","Water Elemental Lord"],normalizeClassName=(e="")=>{const t=String(e||"").trim();return t?/\bdragon\b/i.test(t)?"Dragon":Ee.find(e=>e.toLowerCase()===t.toLowerCase())||t:""},classesMatch=(e="",t="")=>normalizeClassName(e).toLowerCase()===normalizeClassName(t).toLowerCase(),classListIncludes=(e=[],t="")=>{const n=Array.isArray(e)?e:e?[e]:[];if(!n.length)return!0;const a=normalizeClassName(t).toLowerCase();return n.some(e=>normalizeClassName(e).toLowerCase()===a)},hasOwn$4=(e,t)=>Object.prototype.hasOwnProperty.call(e||{},t),normalizeCommandList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeStringList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizePrioritySeed=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},normalizeDefenseConfig=(e={})=>{const t=!1!==e.serverside;return deepFreeze({...deepClone$1(e),command:normalizeCommandList(e.command),bals_req:normalizeStringList(e.bals_req),bals_used:normalizeStringList(e.bals_used),blocks:deepClone$1(e.blocks||[]),skills:normalizeStringList(e.skills),opps:normalizeStringList(e.opps),serverside:t,preempt:!0===e.preempt,static:!0===e.static,clientOnly:!0===e.clientOnly,defaultPriority:normalizePrioritySeed(e.defaultPriority)})},createDefEntry=(e,t,n,a)=>({id:e,have:!1,lastChangeAt:0,order:t,seedStatic:n.static,defaultPriority:a,priorityOverride:null,command:n.command,bals_req:n.bals_req,bals_used:n.bals_used,blocks:n.blocks,skills:n.skills,opps:n.opps,serverside:n.serverside,preempt:n.preempt,static:n.static,clientOnly:n.clientOnly}),resolveDefensePriority=(e={})=>null===e.priorityOverride||void 0===e.priorityOverride?Number(e.defaultPriority??-1):Number(e.priorityOverride),matchesClass=(e=[],t="")=>!e||!e.length||(Array.isArray(t)?t.some(t=>classListIncludes(e,t)):classListIncludes(e,t)),isActiveStaticPriority=e=>{const t=Number(e);return Number.isFinite(t)&&t>0},createInitialDefenseState=({defTable:e={},defPrios:t={}}={})=>{const n=Object.keys(e),a={},o={};return n.forEach((n,i)=>{const s=normalizeDefenseConfig(e[n]),l=hasOwn$4(t,n)?normalizePrioritySeed(t[n]):s.defaultPriority;o[n]=l,a[n]=createDefEntry(n,i,s,l)}),{list:n,state:a,defaultPrios:o}},normalizeObservedDefenseId=e=>("string"==typeof e?e:String(e?.name||e?.id||e||"")).toLowerCase().replace(/\s*\(([^)]+)\)/g," $1").trim(),normalizeItemLocation=e=>String(e||"").trim().toLowerCase()||"inv",registerGmcpBridges=({registerGmcpListener:e,systemModel:t,balanceModel:n,affModel:a,defModel:o,cacheModel:i,limbModel:s,serverside:l,adapter:c,markDirty:u})=>{const requestInventoryResync=e=>{c?.sendGmcp?.(["Char.Items.Inv"],{source:e})};e(J.CHAR_VITALS,({vitals:e}={})=>{t.updateVitals(e),n.applyVitals(e),u("gmcp:vitals")}),e(J.CHAR_STATUS,({status:e}={})=>{t.updateStatus(e||{}),u("gmcp:status")}),e(J.CHAR_AFFLICTIONS_LIST,({afflictions:e}={})=>{const t=Array.isArray(e)?e:[];a.applyList(t),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted&&s.syncFromAfflictions(a.currentSorted(),"gmcp-list"),u("gmcp:aff-list")}),e(J.CHAR_AFFLICTIONS_ADD,({name:e}={})=>{e&&(a.got(e,{source:"gmcp-add"}),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"gmcp-add"):s.applyAfflictionTransition(e,!0),u(`gmcp:aff-add:${e}`))}),e(J.CHAR_AFFLICTIONS_REMOVE,({name:e}={})=>{e&&(a.lose(e,{source:"gmcp-remove"}),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"gmcp-remove"):s.applyAfflictionTransition(e,!1),l.getTransientPrioAff()===e&&l.clearPrioAff(),u(`gmcp:aff-remove:${e}`))}),e(J.CHAR_DEFENCES_LIST,({defences:e}={})=>{o.applyList(Array.isArray(e)?e:[],"gmcp-list"),u("gmcp:def-list")}),e(J.CHAR_DEFENCES_ADD,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);if(t){if(t.startsWith("parrying "))for(const e of o.list())e!==t&&e.startsWith("parrying ")&&o.get(e)?.have&&o.setHave(e,!1,"gmcp-parry-implied-remove");o.setHave(t,!0,"gmcp-add"),"mindseye"===t&&requestInventoryResync("cache-visibility-resync:mindseye"),u(`gmcp:def-add:${t}`)}}),e(J.CHAR_DEFENCES_REMOVE,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);t&&(o.setHave(t,!1,"gmcp-remove"),"blindness"===t&&requestInventoryResync("cache-visibility-resync:blindness"),u(`gmcp:def-remove:${t}`))}),e(J.IRE_RIFT_LIST,({rift:e}={})=>{i.observeRiftSnapshot?.(e||{}),u("gmcp:rift-list")}),e(J.IRE_RIFT_CHANGE,({change:e}={})=>{const t=i.observeRiftChange?.(e||{});t?.name&&u(`gmcp:rift-change:${t.name}`)}),e(J.CHAR_ITEMS_LIST,({items:e,location:n}={})=>{const a=normalizeItemLocation(n),o=Array.isArray(e)?e:[];if("inv"===a){i.observeInventorySnapshot?.(o);const toWieldedItem=e=>e?{id:e.id??null,name:String(e.name||""),icon:e.icon||null}:null;t.updateWielded("left",toWieldedItem(o.find(e=>"l"===e.attrib))),t.updateWielded("right",toWieldedItem(o.find(e=>"L"===e.attrib)))}u("gmcp:items-list")}),e(J.CHAR_ITEMS_DELTA,({inventoryDelta:e}={})=>{if(e){const n=normalizeItemLocation(e.location),a="inv"===n||"room"===n?i.observeItemDelta?.(e):null;if(a?.changed&&a.name&&u(`gmcp:room-pickup:${a.name}`),"inv"===n&&"update"===e.action){const{id:n,name:a,icon:o,attrib:i}=e,s=t.getChar().wielded;s.left?.id===n&&"l"!==i&&t.updateWielded("left",null),s.right?.id===n&&"L"!==i&&t.updateWielded("right",null),"l"===i?t.updateWielded("left",{id:n,name:a,icon:o}):"L"===i&&t.updateWielded("right",{id:n,name:a,icon:o})}}}),e(J.ROOM_INFO,({room:e,roomItems:n}={})=>{t.updateRoom(e||{}),t.setRoomItems(n||{}),u("gmcp:room-info")}),e(J.TARGET_INFO,({target:e}={})=>{t.updateTarget(e||{}),u("gmcp:target")})},normalizeBridgeSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),isSystemOutputBalance=(e={})=>"systemoutput"===normalizeBridgeSegment(e?.id),_e=Object.freeze(["balance","equilibrium"]),getCounterpartEqbalBalance=e=>{const t=normalizeBridgeSegment(e);return _e.includes(t)?"balance"===t?"equilibrium":"balance":null},buildEqbalRecoveredPayload=(e,t={})=>{const n=normalizeBridgeSegment(t?.id),a=getCounterpartEqbalBalance(n);return a&&e?.have?.(n)&&e.have(a)?{...t,id:"eqbal",have:!0,recoveredId:n,balances:{balance:Boolean(e.have("balance")),equilibrium:Boolean(e.have("equilibrium"))}}:null},getRecoveredBalanceSeconds=(e={})=>{const t=Number(e?.durationMs);if(Number.isFinite(t)&&t>0)return t/1e3;const n=Number(e?.lastLostAtMs),a=Number(e?.lastGotAtMs);return Number.isFinite(n)&&Number.isFinite(a)&&a>n?(a-n)/1e3:Number(e?.durationSeconds??e?.baseDurationSeconds)},formatBalanceNotice=(e={})=>{const t=String(e?.id||"").trim(),n=getRecoveredBalanceSeconds(e);return t?!Number.isFinite(n)||n<=0?t:`${t}(${n.toFixed(2)})`:""},shouldEchoPriorityChange=(e={})=>["manual","public-api"].includes(String(e?.source||"").toLowerCase()),formatPriorityNotice=(e={},t)=>{const n=String(t||"").trim(),a=Number(e?.priority??e?.value),o=normalizeBridgeSegment(e?.domain),i=o&&"keepup"!==o?` (${o})`:!0===e?.static?" (static)":"";return n?Number.isFinite(a)?`${n} ${a}${i}`:`${n}${i}`:""},Pe=Object.freeze({RuleAdded:re.RULE_ADDED,RuleRemoved:re.RULE_REMOVED,RuleEnabled:re.RULE_ENABLED,RuleDisabled:re.RULE_DISABLED,RulePackLoaded:re.RULE_PACK_LOADED,RulePackUnloaded:re.RULE_PACK_UNLOADED,RuleOrderChanged:re.RULE_ORDER_CHANGED}),Te=Object.freeze({hp:{topic:re.SYSTEM_HEALTH_CHANGED,maxKey:"maxhp"},mp:{topic:re.SYSTEM_MANA_CHANGED,maxKey:"maxmp"},rage:{topic:re.SYSTEM_RAGE_CHANGED},bleed:{topic:re.SYSTEM_BLEED_CHANGED}}),buildVitalResourcePayload=(e={},t,{maxKey:n}={})=>{const a=e.changedFields?.[t];if(!a)return null;const o=a.current,i=a.previous;return{max:n?e.current?.[n]:o,current:o,previous:i,diff:o-i}},publishVitalResourceTopics=(e,t={})=>{Object.entries(Te).forEach(([n,a])=>{const o=buildVitalResourcePayload(t,n,a);o&&e(a.topic,o)})},registerSystemModelBridge=({registerModelListener:e,publishPublic:t,syncDebugMode:n,systemModel:a,serverside:o,handleVitalsSideEffects:i})=>{e(a.onChange((e,a={})=>{switch(e){case"VitalsUpdated":t(re.SYSTEM_VITALS_CHANGED,a),publishVitalResourceTopics(t,a),i();break;case"StatusUpdated":t(re.SYSTEM_STATUS_CHANGED,a);break;case"ClassChanged":o.setBaselineFromRuntime(),t(re.SYSTEM_CLASS_CHANGED,a);break;case"TargetUpdated":t(re.SYSTEM_TARGET_CHANGED,a);break;case"RoomUpdated":t(re.SYSTEM_ROOM_CHANGED,a);break;case"RoomItemsUpdated":t(re.SYSTEM_ROOM_ITEMS_CHANGED,a);break;case"RuntimeStateChanged":t(re.SYSTEM_RUNTIME_CHANGED,a);break;case"PauseStateChanged":t(re.SYSTEM_PAUSE_CHANGED,a),t(a.paused?re.SYSTEM_PAUSED:re.SYSTEM_UNPAUSED,a);break;case"SettingsChanged":a.changedKeys?.includes("debug")&&n(),t(re.SYSTEM_SETTINGS_CHANGED,a);break;case"BaselineIntentChanged":t(re.SYSTEM_BASELINE_CHANGED,a);break;case"WieldedUpdated":t(re.SYSTEM_WIELDED_CHANGED,a);break;case"MountUpdated":t(re.SYSTEM_MOUNT_CHANGED,a);break;case"DeathDetected":t(re.SYSTEM_DEATH_DETECTED,a)}}))},registerAfflictionModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,systemModel:o,affModel:i,serverside:s})=>{e(i.onChange((e,l={})=>{switch("AffGot"!==e&&"AffLost"!==e||"aeon"!==l?.name||o.setRuntime({aeonLocked:i.haveAff("aeon")}),e){case"AffGot":n(re.AFF_GOT,l,l.name),a.publish("affGot",l.name,{...l,action:"got"});break;case"AffLost":n(re.AFF_LOST,l,l.name),a.publish("affLost",l.name,{...l,action:"lost"}),s.getTransientPrioAff()===l.name&&s.clearPrioAff();break;case"AffStackChanged":n(re.AFF_STACK_CHANGED,l,l.name);break;case"AffPriorityChanged":t(re.AFF_PRIORITY_CHANGED,l),shouldEchoPriorityChange(l)&&a.publish("priority",formatPriorityNotice(l,l.name),{...l,action:"set",subject:"aff"})}}))},registerDefenseModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,defModel:o})=>{e(o.onChange((e,o={})=>{switch(e){case"DefGot":n(re.DEF_GOT,o,o.id),a.publish("defGot",o.id,{...o,action:"got"});break;case"DefLost":n(re.DEF_LOST,o,o.id),a.publish("defLost",o.id,{...o,action:"lost"});break;case"DefPriorityChanged":t(re.DEF_PRIORITY_CHANGED,o),shouldEchoPriorityChange(o)&&a.publish("priority",formatPriorityNotice(o,o.id),{...o,action:"set",subject:"def"})}}))},registerBalanceModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,balanceModel:o})=>{e(o.onChange((e,i={})=>{switch(e){case"BalanceGot":n(re.BALANCE_GOT,i,i.id);{const e=buildEqbalRecoveredPayload(o,i);e&&t(re.EQBAL_GOT,e)}isSystemOutputBalance(i)||a.publish("balanceRecovered",formatBalanceNotice(i),{...i,action:"got"});break;case"BalanceLost":n(re.BALANCE_LOST,i,i.id),a.publish("balanceLost",i.id,{...i,action:"lost"});break;case"BalanceReset":n(re.BALANCE_RESET,i,i.id);break;case"BalanceDurationObserved":n(re.BALANCE_DURATION_OBSERVED,i,i.id);break;case"BalanceLossTimerRestarted":t(re.BALANCE_TIMER_RESTARTED,i)}}))},registerLimbModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,limbModel:a})=>{e(a.onChange((e,a={})=>{switch(e){case"LimbHit":n(re.LIMB_HIT,a,a.limb);break;case"LimbReset":n(re.LIMB_RESET,a,a.limb);break;case"LimbStageChanged":n(re.LIMB_STAGE_CHANGED,a,a.limb);break;case"LimbDecay":t(re.LIMB_DECAY,a)}}))},registerCacheModelBridge=({registerModelListener:e,publishPublic:t,cacheModel:n})=>{e(n.onChange((e,n={})=>{switch(e){case"CacheAmountChanged":t(re.CACHE_AMOUNT_CHANGED,n);break;case"CacheInventoryListApplied":t(re.CACHE_INVENTORY_LIST,n);break;case"CacheRiftListApplied":t(re.CACHE_RIFT_LIST,n);break;case"CacheDesiredPrecacheChanged":t(re.CACHE_PRECACHE_CHANGED,n)}}))},registerQueueModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,queueController:o})=>{e(o.onChange((e,i={})=>{switch(e){case"QueueFlushed":t(re.QUEUE_FLUSHED,i),a.publish("output",`Queue sent: ${i.queueId}`,i);break;case"QueueDeferred":t(re.QUEUE_DEFERRED,i);break;case"QueueUpdated":t(re.QUEUE_UPDATED,i);break;case"QueueCleared":t(re.QUEUE_CLEARED,i);break;case"QueueSentAcknowledged":{const e=o.getQueue(i.queueId)?.name||i.queueName||i.queueId;n(re.QUEUE_SENT,{...i,queueName:e},e);break}case"QueueFiredAcknowledged":{const e=o.getQueue(i.queueId)?.name||i.queueId;t(re.QUEUE_FIRED_ACK,i),n(re.QUEUE_FIRED,{...i,queueName:e},e);break}}}))},registerServersideModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,serverside:o,runtimeControl:i,systemModel:s,onServersideDirty:l})=>{let c=new Set;const syncRuleSuspendPause=(e=[])=>{c=new Set((e||[]).filter(Boolean).map(e=>String(e)));const t=c.size>0;s?.getRuntime?.().rulesSuspended!==t&&(s?.setRuntime?.({rulesSuspended:t}),i?.syncCuringState?.({source:"rule-suspend"}))},addRuleSuspend=e=>{e&&!c.has(String(e))&&syncRuleSuspendPause([...c,String(e)])},removeRuleSuspend=e=>{if(!e||!c.has(String(e)))return;const t=new Set(c);t.delete(String(e)),syncRuleSuspendPause([...t])};e(o.onChange((e,o={})=>{const i=Pe[e];if(i)t(i,o);else switch(e){case"TrackableGot":a.publish("trackableGot",o.label||o.name,{...o,action:"got"});break;case"TrackableLost":a.publish("trackableLost",o.label||o.name,{...o,action:"lost"});break;case"ServersideDirty":l?.(o),t(re.SERVERSIDE_DIRTY,o);break;case"ServersideEvaluated":syncRuleSuspendPause(o.suspendingRules||[],o.source),t(re.SERVERSIDE_EVALUATED,o);break;case"RuleSuspendActivated":addRuleSuspend(o.id);break;case"RuleSuspendDeactivated":removeRuleSuspend(o.id);break;case"RuleActivated":o.suspendsCuring&&addRuleSuspend(o.id),n(re.RULE_ACTIVATED,o,o.id);break;case"RuleDeactivated":o.suspendsCuring&&removeRuleSuspend(o.id),n(re.RULE_DEACTIVATED,o,o.id)}}))},registerModelEventBridges=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,syncDebugMode:o,systemModel:i,affModel:s,defModel:l,balanceModel:c,cacheModel:u,limbModel:d,queueController:p,serverside:m,runtimeControl:g,handleVitalsSideEffects:h,onServersideDirty:b})=>{registerSystemModelBridge({registerModelListener:e,publishPublic:t,syncDebugMode:o,systemModel:i,serverside:m,handleVitalsSideEffects:h}),registerAfflictionModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,systemModel:i,affModel:s,serverside:m}),registerDefenseModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,defModel:l}),registerBalanceModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,balanceModel:c}),registerLimbModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,limbModel:d}),registerCacheModelBridge({registerModelListener:e,publishPublic:t,cacheModel:u}),registerQueueModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,queueController:p}),registerServersideModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,serverside:m,runtimeControl:g,systemModel:i,onServersideDirty:b})},Ae="Flying above ",Re=new Set(["dragon","air elemental lord","earth elemental lord","fire elemental lord","water elemental lord"]),registerCrossModelBridges=({registerModelListener:e,systemModel:t,defModel:n})=>{e(t.onChange((e,t={})=>{if("RoomUpdated"===e){const e=String(t?.current?.name||"").startsWith(Ae);return void n.setHave("flying",e,"room-info")}"ClassChanged"===e&&Re.has(String(t?.class||"").toLowerCase())&&n.setHave("mounted",!1,"class-change")}))},createRuntimeEventWiring=({adapter:e,internalEvents:t})=>{let n=[];const addUnsubscriber=e=>{"function"==typeof e&&n.push(e)},dispose=()=>{n.forEach(e=>{try{e()}catch(t){console.error("nexSys4 unsubscribe failure",t)}}),n=[]};return{attach:({options:n,queueTranslatedGmcp:a,publishPublic:o,publishPublicScoped:i,noticeCenter:s,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:p,cacheModel:m,limbModel:g,queueController:h,serverside:b,markDirty:y,invalidateOutput:v,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:w,curingSetGuard:k,curingMasterSwitch:E,runtimeControl:P,savePersistence:T})=>{dispose();const register=(t,n)=>{addUnsubscriber(e.on(t,n))},registerModelListener=e=>{addUnsubscriber(e)},registerGmcpListener=(e,n)=>{registerModelListener(t.on(e,n))};registerAdapterEvents({register,options:n,queueTranslatedGmcp:a,publishPublic:o,publishPublicScoped:i,markDirty:y,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:w,curingSetGuard:k,curingMasterSwitch:E,runtimeControl:P,queueController:h,serverside:b,balanceModel:p,adapter:e,systemModel:c,affModel:u,cacheModel:m,limbModel:g,savePersistence:T}),register("OutboundCommandsEvent",(e={})=>{if("output-cycle"!==e?.context?.source)return;const t=Array.isArray(e.commands)?e.commands.filter(Boolean).map(e=>String(e)):[];if(!t.length)return;const n=c.getSettings().commandSeparator||"|";s.publish("output",`(${t.join(n)})`,{action:"commands",commands:t,source:e?.context?.cycleSource||e?.context?.source||"output-cycle"})}),registerGmcpBridges({registerGmcpListener,systemModel:c,balanceModel:p,affModel:u,defModel:d,cacheModel:m,limbModel:g,serverside:b,adapter:e,markDirty:y}),registerModelEventBridges({registerModelListener,publishPublic:o,publishPublicScoped:i,noticeCenter:s,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:p,cacheModel:m,limbModel:g,queueController:h,serverside:b,runtimeControl:P,handleVitalsSideEffects:P.handleVitalsSideEffects,onServersideDirty:v}),registerCrossModelBridges({registerModelListener,systemModel:c,defModel:d})},dispose}},createRuntimeControlApi=({systemModel:e,serverside:t,queueController:n,noticeCenter:a,markDirty:o,onResume:i,dispatchCommands:s,curingMasterSwitch:l})=>{let c=!1;const buildSystemEventCommand=e=>e?`echo SystemEvent ${e}`:null,syncServersideCuring=(e,t={})=>{if("function"!=typeof s)return[];const n=e?"curing off":"curing on";if(e&&!1===l?.getObservedEnabled())return[];if(!e&&!0===l?.getObservedEnabled())return[];l?.markExpected(n);const a=buildSystemEventCommand(t.completionEvent);return s(a?[n,a]:[n],{source:t.source||(e?"runtime-pause":"runtime-unpause")})},syncCuringState=(t={})=>{const n=e.getRuntime();return syncServersideCuring(n.paused||n.rulesSuspended,t)},setPaused=(t,a={})=>{const s=Boolean(t),l=e.getRuntime();return l.paused===s?(a.forceCuringSync&&syncCuringState(a),!1):!(!s&&!isRuntimeReadyPhase(l.phase))&&(e.setRuntime({paused:s}),o(s?"paused":"unpaused"),syncCuringState(a),s||(n.flushDeferred(),i?.(a.source||"unpause")),!0)},ensureSlowModeRule=()=>{t.lifecycle.add({id:"runtime-slow-mode",pack:"runtime",evaluate:()=>e.getRuntime().slowMode?{settings:{sipHealthAt:30,sipManaAt:20,mossHealthAt:20,mossManaAt:20,batch:!1}}:null})};return{setPaused,syncCuringState,setSlowMode(t){const n=Boolean(t);return e.getRuntime().slowMode!==n&&(e.setRuntime({slowMode:n}),ensureSlowModeRule(),o(n?"slow-on":"slow-off"),!0)},handleVitalsSideEffects(){const t=e.getChar().dead;t&&!c&&(setPaused(!0,{source:"death-detected"}),a.publish("output","Death detected. Pausing nexSys runtime.",{source:"death-detected"})),!t&&c&&(setPaused(!1,{source:"death-recover"}),a.publish("output","Resurrection detected. Resuming nexSys runtime.",{source:"death-recover"})),c=t}}},Me="curing on",De="curing off",createCuringMasterSwitch=({setPaused:e,noticeCenter:t})=>{let n=null,a=null;return{getObservedEnabled:()=>n,markExpected(e){const t=String(e||"").trim().toLowerCase();return(t===Me||t===De)&&(a=t,!0)},observeConfirmation(o){const i=Boolean(o);return n=i,a===(i?Me:De)?(a=null,{attributed:!0,enabled:i}):(a=null,i?e(!1,{source:"user-curing-on"}):(e(!0,{source:"user-curing-off"}),t.publish("output","Manual `curing off` detected. nexSys is paused and will not re-enable curing; send `curing on` to resume.",{source:"user-curing-off"})),{attributed:!1,enabled:i})}}},createCuringSetGuard=({serverside:e,systemModel:t,noticeCenter:n})=>{let a=!1,o=!1;const isRunningSession=()=>isRuntimeReadyPhase(t.getRuntime().phase),markNexsysSwitch=()=>{o=!0},handleSwitched=({set:t}={})=>{const i=normalizeSetName(t);if(!i)return;const s=o;o=!1,e.observeActiveCuringSet?.(i),isRunningSession()&&("nexsys4-default"!==i?s||a||(a=!0,n.publish("output",`nexSys paused — curing set is now ${i}; nexSys operates only in ${se} and will resume when you switch back.`,{source:"curingset-foreign",force:!0})):a&&(a=!1,n.publish("output",`nexSys resumed — curing set is back to ${se}.`,{source:"curingset-foreign-resume",force:!0})))},unload=({remove:t=!0}={})=>{const n=e.getCuringSets?.()??{},o=(n.sets||[]).map(e=>normalizeSetName(e)).filter(Boolean),i=normalizeSetName(n.priorSet),s=i&&"nexsys4-default"!==i&&o.includes(i)?i:o.find(e=>e&&"nexsys4-default"!==e)||"",l=[];s&&(markNexsysSwitch(),e.switchCuringSet(s),l.push(`curingset switch ${s}`));const c=t||!s;return c&&(e.deleteCuringSet(se),l.push(`curingset delete ${se}`)),a=!1,{restoreTarget:s,removed:c,commands:l}};return{handleSwitched,markNexsysSwitch,unload,isForeignPaused:()=>a}};function $constructor(e,t,n){function init(n,a){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:a,constr:_,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,a);const o=_.prototype,i=Object.keys(o);for(let e=0;e<i.length;e++){const t=i[e];t in n||(n[t]=o[t].bind(n))}}const a=n?.Parent??Object;class Definition extends a{}function _(e){var t;const a=n?.Parent?new Definition:this;init(a,e),(t=a._zod).deferred??(t.deferred=[]);for(const n of a._zod.deferred)n();return a}return Object.defineProperty(Definition,"name",{value:e}),Object.defineProperty(_,"init",{value:init}),Object.defineProperty(_,Symbol.hasInstance,{value:t=>!!(n?.Parent&&t instanceof n.Parent)||t?._zod?.traits?.has(e)}),Object.defineProperty(_,"name",{value:e}),_}var Oe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},$e=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(p=globalThis).__zod_globalConfig??(p.__zod_globalConfig={});var Ie=globalThis.__zod_globalConfig;function config(e){return e&&Object.assign(Ie,e),Ie}function getEnumValues(e){const t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,n])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function jsonStringifyReplacer(e,t){return"bigint"==typeof t?t.toString():t}function cached(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function nullish(e){return null==e}function cleanRegex(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function floatSafeRemainder(e,t){const n=e/t,a=Math.round(n),o=Number.EPSILON*Math.max(Math.abs(n),1);return Math.abs(n-a)<o?0:n-a}var Ne=Symbol("evaluating");function defineLazy(e,t,n){let a;Object.defineProperty(e,t,{get(){if(a!==Ne)return void 0===a&&(a=Ne,a=n()),a},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function assignProp(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function mergeDefs(...e){const t={};for(const n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function esc(e){return JSON.stringify(e)}function slugify(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var ze="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function isObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var Le=cached(()=>{if(Ie.jitless)return!1;if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function isPlainObject$2(e){if(!1===isObject(e))return!1;const t=e.constructor;if(void 0===t)return!0;if("function"!=typeof t)return!0;const n=t.prototype;return!1!==isObject(n)&&!1!==Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")}function shallowClone(e){return isPlainObject$2(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var je=new Set(["string","number","symbol"]);function escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function clone$1(e,t,n){const a=new e._zod.constr(t??e._zod.def);return t&&!n?.parent||(a._zod.parent=e),a}function normalizeParams(e){const t=e;if(!t)return{};if("string"==typeof t)return{error:()=>t};if(void 0!==t?.message){if(void 0!==t?.error)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,"string"==typeof t.error?{...t,error:()=>t.error}:t}function optionalKeys(e){return Object.keys(e).filter(t=>"optional"===e[t]._zod.optin&&"optional"===e[t]._zod.optout)}var Be={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function pick(e,t){const n=e._zod.def,a=n.checks;if(a&&a.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const e={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(e[a]=n.shape[a])}return assignProp(this,"shape",e),e},checks:[]}))}function omit(e,t){const n=e._zod.def,a=n.checks;if(a&&a.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const a={...e._zod.def.shape};for(const e in t){if(!(e in n.shape))throw new Error(`Unrecognized key: "${e}"`);t[e]&&delete a[e]}return assignProp(this,"shape",a),a},checks:[]}))}function extend(e,t){if(!isPlainObject$2(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const n=e._zod.def.shape;for(const e in t)if(void 0!==Object.getOwnPropertyDescriptor(n,e))throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return assignProp(this,"shape",n),n}}))}function safeExtend(e,t){if(!isPlainObject$2(t))throw new Error("Invalid input to safeExtend: expected a plain object");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return assignProp(this,"shape",n),n}}))}function merge(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return assignProp(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function partial(e,t,n){const a=t._zod.def.checks;if(a&&a.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");return clone$1(t,mergeDefs(t._zod.def,{get shape(){const a=t._zod.def.shape,o={...a};if(n)for(const t in n){if(!(t in a))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=e?new e({type:"optional",innerType:a[t]}):a[t])}else for(const t in a)o[t]=e?new e({type:"optional",innerType:a[t]}):a[t];return assignProp(this,"shape",o),o},checks:[]}))}function required(e,t,n){return clone$1(t,mergeDefs(t._zod.def,{get shape(){const a=t._zod.def.shape,o={...a};if(n)for(const t in n){if(!(t in o))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=new e({type:"nonoptional",innerType:a[t]}))}else for(const t in a)o[t]=new e({type:"nonoptional",innerType:a[t]});return assignProp(this,"shape",o),o}}))}function aborted(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!0!==e.issues[n]?.continue)return!0;return!1}function explicitlyAborted(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!1===e.issues[n]?.continue)return!0;return!1}function prefixIssues(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function unwrapMessage(e){return"string"==typeof e?e:e?.message}function finalizeIssue(e,t,n){const a=e.message?e.message:unwrapMessage(e.inst?._zod.def?.error?.(e))??unwrapMessage(t?.error?.(e))??unwrapMessage(n.customError?.(e))??unwrapMessage(n.localeError?.(e))??"Invalid input",{inst:o,continue:i,input:s,...l}=e;return l.path??(l.path=[]),l.message=a,t?.reportInput&&(l.input=s),l}function getLengthableOrigin(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function issue(...e){const[t,n,a]=e;return"string"==typeof t?{message:t,code:"custom",input:n,inst:a}:{...t}}var initializer$1=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,jsonStringifyReplacer,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Fe=$constructor("$ZodError",initializer$1),qe=$constructor("$ZodError",initializer$1,{Parent:Error});function flattenError(e,t=e=>e.message){const n={},a=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):a.push(t(o));return{formErrors:a,fieldErrors:n}}function formatError(e,t=e=>e.message){const n={_errors:[]},processError=(e,a=[])=>{for(const o of e.issues)if("invalid_union"===o.code&&o.errors.length)o.errors.map(e=>processError({issues:e},[...a,...o.path]));else if("invalid_key"===o.code)processError({issues:o.issues},[...a,...o.path]);else if("invalid_element"===o.code)processError({issues:o.issues},[...a,...o.path]);else{const e=[...a,...o.path];if(0===e.length)n._errors.push(t(o));else{let a=n,i=0;for(;i<e.length;){const n=e[i];i!==e.length-1?a[n]=a[n]||{_errors:[]}:(a[n]=a[n]||{_errors:[]},a[n]._errors.push(t(o))),a=a[n],i++}}}};return processError(e),n}var _parse=e=>(t,n,a,o)=>{const i=a?{...a,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw new Oe;if(s.issues.length){const t=new(o?.Err??e)(s.issues.map(e=>finalizeIssue(e,i,config())));throw ze(t,o?.callee),t}return s.value},_parseAsync=e=>async(t,n,a,o)=>{const i=a?{...a,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){const t=new(o?.Err??e)(s.issues.map(e=>finalizeIssue(e,i,config())));throw ze(t,o?.callee),t}return s.value},_safeParse=e=>(t,n,a)=>{const o=a?{...a,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new Oe;return i.issues.length?{success:!1,error:new(e??Fe)(i.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:i.value}},Ue=_safeParse(qe),_safeParseAsync=e=>async(t,n,a)=>{const o=a?{...a,async:!0}:{async:!0};let i=t._zod.run({value:n,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:i.value}},Ve=_safeParseAsync(qe),_encode=e=>(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _parse(e)(t,n,o)},_decode=e=>(t,n,a)=>_parse(e)(t,n,a),_encodeAsync=e=>async(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _parseAsync(e)(t,n,o)},_decodeAsync=e=>async(t,n,a)=>_parseAsync(e)(t,n,a),_safeEncode=e=>(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _safeParse(e)(t,n,o)},_safeDecode=e=>(t,n,a)=>_safeParse(e)(t,n,a),_safeEncodeAsync=e=>async(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _safeParseAsync(e)(t,n,o)},_safeDecodeAsync=e=>async(t,n,a)=>_safeParseAsync(e)(t,n,a),He=/^[cC][0-9a-z]{6,}$/,We=/^[0-9a-z]+$/,Ge=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ye=/^[0-9a-vA-V]{20}$/,Ke=/^[A-Za-z0-9]{27}$/,Qe=/^[a-zA-Z0-9_-]{21}$/,Ze=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Xe=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Je=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,et="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function emoji(){return new RegExp(et,"u")}var tt=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,rt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,nt=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,at=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ot=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,it=/^[A-Za-z0-9_-]*$/,st=/^https?$/,lt=/^\+[1-9]\d{6,14}$/,ct="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ut=new RegExp(`^${ct}$`);function timeSource(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time$1(e){return new RegExp(`^${timeSource(e)}$`)}function datetime$1(e){const t=timeSource({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const a=`${t}(?:${n.join("|")})`;return new RegExp(`^${ct}T(?:${a})$`)}var string$1=e=>new RegExp(`^${e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*"}$`),dt=/^-?\d+$/,pt=/^-?\d+(?:\.\d+)?$/,mt=/^[^A-Z]*$/,ft=/^[^a-z]*$/,gt=$constructor("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ht={number:"number",bigint:"bigint",object:"date"},bt=$constructor("$ZodCheckLessThan",(e,t)=>{gt.init(e,t);const n=ht[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,a=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<a&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=a=>{(t.inclusive?a.value<=t.value:a.value<t.value)||a.issues.push({origin:n,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:a.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),yt=$constructor("$ZodCheckGreaterThan",(e,t)=>{gt.init(e,t);const n=ht[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,a=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>a&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=a=>{(t.inclusive?a.value>=t.value:a.value>t.value)||a.issues.push({origin:n,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:a.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),vt=$constructor("$ZodCheckMultipleOf",(e,t)=>{gt.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof n.value?n.value%t.value!==BigInt(0):0!==floatSafeRemainder(n.value,t.value))&&n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),St=$constructor("$ZodCheckNumberFormat",(e,t)=>{gt.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),a=n?"int":"number",[o,i]=Be[t.format];e._zod.onattach.push(e=>{const a=e._zod.bag;a.format=t.format,a.minimum=o,a.maximum=i,n&&(a.pattern=dt)}),e._zod.check=s=>{const l=s.value;if(n){if(!Number.isInteger(l))return void s.issues.push({expected:a,format:t.format,code:"invalid_type",continue:!1,input:l,inst:e});if(!Number.isSafeInteger(l))return void(l>0?s.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!t.abort}):s.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!t.abort}))}l<o&&s.issues.push({origin:"number",input:l,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),l>i&&s.issues.push({origin:"number",input:l,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),xt=$constructor("$ZodCheckMaxLength",(e,t)=>{var n;gt.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const a=n.value;if(a.length<=t.maximum)return;const o=getLengthableOrigin(a);n.issues.push({origin:o,code:"too_big",maximum:t.maximum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),Ct=$constructor("$ZodCheckMinLength",(e,t)=>{var n;gt.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const a=n.value;if(a.length>=t.minimum)return;const o=getLengthableOrigin(a);n.issues.push({origin:o,code:"too_small",minimum:t.minimum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),wt=$constructor("$ZodCheckLengthEquals",(e,t)=>{var n;gt.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{const a=n.value,o=a.length;if(o===t.length)return;const i=getLengthableOrigin(a),s=o>t.length;n.issues.push({origin:i,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),kt=$constructor("$ZodCheckStringFormat",(e,t)=>{var n,a;gt.init(e,t),e._zod.onattach.push(e=>{const n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??(n.patterns=new Set),n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(a=e._zod).check??(a.check=()=>{})}),Et=$constructor("$ZodCheckRegex",(e,t)=>{kt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),_t=$constructor("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=mt),kt.init(e,t)}),Pt=$constructor("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ft),kt.init(e,t)}),Tt=$constructor("$ZodCheckIncludes",(e,t)=>{gt.init(e,t);const n=escapeRegex(t.includes),a=new RegExp("number"==typeof t.position?`^.{${t.position}}${n}`:n);t.pattern=a,e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(a)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),At=$constructor("$ZodCheckStartsWith",(e,t)=>{gt.init(e,t);const n=new RegExp(`^${escapeRegex(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Rt=$constructor("$ZodCheckEndsWith",(e,t)=>{gt.init(e,t);const n=new RegExp(`.*${escapeRegex(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Mt=$constructor("$ZodCheckOverwrite",(e,t)=>{gt.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Dt=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});const t=e.split("\n").filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),a=t.map(e=>e.slice(n)).map(e=>" ".repeat(2*this.indent)+e);for(const o of a)this.content.push(o)}compile(){const e=Function,t=this?.args;return new e(...t,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}},Ot={major:4,minor:4,patch:3},$t=$constructor("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Ot;const a=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&a.unshift(e);for(const o of a)for(const t of o._zod.onattach)t(e);if(0===a.length)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const runChecks=(e,t,n)=>{let a,o=aborted(e);for(const i of t){if(i._zod.def.when){if(explicitlyAborted(e))continue;if(!i._zod.def.when(e))continue}else if(o)continue;const t=e.issues.length,s=i._zod.check(e);if(s instanceof Promise&&!1===n?.async)throw new Oe;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,e.issues.length!==t&&(o||(o=aborted(e,t)))});else{if(e.issues.length===t)continue;o||(o=aborted(e,t))}}return a?a.then(()=>e):e},handleCanaryResult=(t,n,o)=>{if(aborted(t))return t.aborted=!0,t;const i=runChecks(n,a,o);if(i instanceof Promise){if(!1===o.async)throw new Oe;return i.then(t=>e._zod.parse(t,o))}return e._zod.parse(i,o)};e._zod.run=(t,n)=>{if(n.skipChecks)return e._zod.parse(t,n);if("backward"===n.direction){const a=e._zod.parse({value:t.value,issues:[]},{...n,skipChecks:!0});return a instanceof Promise?a.then(e=>handleCanaryResult(e,t,n)):handleCanaryResult(a,t,n)}const o=e._zod.parse(t,n);if(o instanceof Promise){if(!1===n.async)throw new Oe;return o.then(e=>runChecks(e,a,n))}return runChecks(o,a,n)}}defineLazy(e,"~standard",()=>({validate:t=>{try{const n=Ue(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch(n){return Ve(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),It=$constructor("$ZodString",(e,t)=>{$t.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??string$1(e._zod.bag),e._zod.parse=(n,a)=>{if(t.coerce)try{n.value=String(n.value)}catch(a){}return"string"==typeof n.value||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),Nt=$constructor("$ZodStringFormat",(e,t)=>{kt.init(e,t),It.init(e,t)}),zt=$constructor("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Xe),Nt.init(e,t)}),Lt=$constructor("$ZodUUID",(e,t)=>{if(t.version){const e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=uuid(e))}else t.pattern??(t.pattern=uuid());Nt.init(e,t)}),jt=$constructor("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Je),Nt.init(e,t)}),Bt=$constructor("$ZodURL",(e,t)=>{Nt.init(e,t),e._zod.check=n=>{try{const a=n.value.trim();if(!t.normalize&&t.protocol?.source===st.source&&!/^https?:\/\//i.test(a))return void n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});const o=new URL(a);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),void(t.normalize?n.value=o.href:n.value=a)}catch(a){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Ft=$constructor("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=emoji()),Nt.init(e,t)}),qt=$constructor("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Qe),Nt.init(e,t)}),Ut=$constructor("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=He),Nt.init(e,t)}),Vt=$constructor("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=We),Nt.init(e,t)}),Ht=$constructor("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Ge),Nt.init(e,t)}),Wt=$constructor("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Ye),Nt.init(e,t)}),Gt=$constructor("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Ke),Nt.init(e,t)}),Yt=$constructor("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=datetime$1(t)),Nt.init(e,t)}),Kt=$constructor("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=ut),Nt.init(e,t)}),Qt=$constructor("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=time$1(t)),Nt.init(e,t)}),Zt=$constructor("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Ze),Nt.init(e,t)}),Xt=$constructor("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=tt),Nt.init(e,t),e._zod.bag.format="ipv4"}),Jt=$constructor("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=rt),Nt.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),er=$constructor("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=nt),Nt.init(e,t)}),tr=$constructor("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=at),Nt.init(e,t),e._zod.check=n=>{const a=n.value.split("/");try{if(2!==a.length)throw new Error;const[e,t]=a;if(!t)throw new Error;const n=Number(t);if(`${n}`!==t)throw new Error;if(n<0||n>128)throw new Error;new URL(`http://[${e}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function isValidBase64(e){if(""===e)return!0;if(/\s/.test(e))return!1;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var rr=$constructor("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=ot),Nt.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{isValidBase64(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});function isValidBase64URL(e){if(!it.test(e))return!1;const t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return isValidBase64(t.padEnd(4*Math.ceil(t.length/4),"="))}var nr=$constructor("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=it),Nt.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{isValidBase64URL(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),ar=$constructor("$ZodE164",(e,t)=>{t.pattern??(t.pattern=lt),Nt.init(e,t)});function isValidJWT(e,t=null){try{const n=e.split(".");if(3!==n.length)return!1;const[a]=n;if(!a)return!1;const o=JSON.parse(atob(a));return(!("typ"in o)||"JWT"===o?.typ)&&(!!o.alg&&(!t||"alg"in o&&o.alg===t))}catch{return!1}}var or=$constructor("$ZodJWT",(e,t)=>{Nt.init(e,t),e._zod.check=n=>{isValidJWT(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),ir=$constructor("$ZodNumber",(e,t)=>{$t.init(e,t),e._zod.pattern=e._zod.bag.pattern??pt,e._zod.parse=(n,a)=>{if(t.coerce)try{n.value=Number(n.value)}catch(s){}const o=n.value;if("number"==typeof o&&!Number.isNaN(o)&&Number.isFinite(o))return n;const i="number"==typeof o?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),n}}),sr=$constructor("$ZodNumberFormat",(e,t)=>{St.init(e,t),ir.init(e,t)}),lr=$constructor("$ZodUnknown",(e,t)=>{$t.init(e,t),e._zod.parse=e=>e}),cr=$constructor("$ZodNever",(e,t)=>{$t.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function handleArrayResult(e,t,n){e.issues.length&&t.issues.push(...prefixIssues(n,e.issues)),t.value[n]=e.value}var ur=$constructor("$ZodArray",(e,t)=>{$t.init(e,t),e._zod.parse=(n,a)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),n;n.value=Array(o.length);const i=[];for(let e=0;e<o.length;e++){const s=o[e],l=t.element._zod.run({value:s,issues:[]},a);l instanceof Promise?i.push(l.then(t=>handleArrayResult(t,n,e))):handleArrayResult(l,n,e)}return i.length?Promise.all(i).then(()=>n):n}});function handlePropertyResult(e,t,n,a,o,i){const s=n in a;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(...prefixIssues(n,e.issues))}s||o?void 0===e.value?s&&(t.value[n]=void 0):t.value[n]=e.value:e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]})}function normalizeDef(e){const t=Object.keys(e.shape);for(const a of t)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${a}": expected a Zod schema`);const n=optionalKeys(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function handleCatchall(e,t,n,a,o,i){const s=[],l=o.keySet,c=o.catchall._zod,u=c.def.type,d="optional"===c.optin,p="optional"===c.optout;for(const m in t){if("__proto__"===m)continue;if(l.has(m))continue;if("never"===u){s.push(m);continue}const o=c.run({value:t[m],issues:[]},a);o instanceof Promise?e.push(o.then(e=>handlePropertyResult(e,n,m,t,d,p))):handlePropertyResult(o,n,m,t,d,p)}return s.length&&n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>n):n}var dr=$constructor("$ZodObject",(e,t)=>{if($t.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const e=t.shape;Object.defineProperty(t,"shape",{get:()=>{const n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}const n=cached(()=>normalizeDef(t));defineLazy(e._zod,"propValues",()=>{const e=t.shape,n={};for(const t in e){const a=e[t]._zod;if(a.values){n[t]??(n[t]=new Set);for(const e of a.values)n[t].add(e)}}return n});const a=isObject,o=t.catchall;let i;e._zod.parse=(t,s)=>{i??(i=n.value);const l=t.value;if(!a(l))return t.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),t;t.value={};const c=[],u=i.shape;for(const e of i.keys){const n=u[e],a="optional"===n._zod.optin,o="optional"===n._zod.optout,i=n._zod.run({value:l[e],issues:[]},s);i instanceof Promise?c.push(i.then(n=>handlePropertyResult(n,t,e,l,a,o))):handlePropertyResult(i,t,e,l,a,o)}return o?handleCatchall(c,l,t,s,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),pr=$constructor("$ZodObjectJIT",(e,t)=>{dr.init(e,t);const n=e._zod.parse,a=cached(()=>normalizeDef(t)),generateFastpass=e=>{const t=new Dt(["shape","payload","ctx"]),n=a.value,parseStr=e=>{const t=esc(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");const o=Object.create(null);let i=0;for(const a of n.keys)o[a]="key_"+i++;t.write("const newResult = {};");for(const a of n.keys){const n=o[a],i=esc(a),s=e[a],l="optional"===s?._zod?.optin,c="optional"===s?._zod?.optout;t.write(`const ${n} = ${parseStr(a)};`),l&&c?t.write(`\n if (${n}.issues.length) {\n if (${i} in input) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n }\n \n if (${n}.value === undefined) {\n if (${i} in input) {\n newResult[${i}] = undefined;\n }\n } else {\n newResult[${i}] = ${n}.value;\n }\n \n `):l?t.write(`\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n \n if (${n}.value === undefined) {\n if (${i} in input) {\n newResult[${i}] = undefined;\n }\n } else {\n newResult[${i}] = ${n}.value;\n }\n \n `):t.write(`\n const ${n}_present = ${i} in input;\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n if (!${n}_present && !${n}.issues.length) {\n payload.issues.push({\n code: "invalid_type",\n expected: "nonoptional",\n input: undefined,\n path: [${i}]\n });\n }\n\n if (${n}_present) {\n if (${n}.value === undefined) {\n newResult[${i}] = undefined;\n } else {\n newResult[${i}] = ${n}.value;\n }\n }\n\n `)}t.write("payload.value = newResult;"),t.write("return payload;");const s=t.compile();return(t,n)=>s(e,t,n)};let o;const i=isObject,s=!Ie.jitless,l=s&&Le.value,c=t.catchall;let u;e._zod.parse=(d,p)=>{u??(u=a.value);const m=d.value;return i(m)?s&&l&&!1===p?.async&&!0!==p.jitless?(o||(o=generateFastpass(t.shape)),d=o(d,p),c?handleCatchall([],m,d,p,u,e):d):n(d,p):(d.issues.push({expected:"object",code:"invalid_type",input:m,inst:e}),d)}});function handleUnionResults(e,t,n,a){for(const i of e)if(0===i.issues.length)return t.value=i.value,t;const o=e.filter(e=>!aborted(e));return 1===o.length?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>finalizeIssue(e,a,config())))}),t)}var mr=$constructor("$ZodUnion",(e,t)=>{$t.init(e,t),defineLazy(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),defineLazy(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),defineLazy(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),defineLazy(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){const e=t.options.map(e=>e._zod.pattern);return new RegExp(`^(${e.map(e=>cleanRegex(e.source)).join("|")})$`)}});const n=1===t.options.length?t.options[0]._zod.run:null;e._zod.parse=(a,o)=>{if(n)return n(a,o);let i=!1;const s=[];for(const e of t.options){const t=e._zod.run({value:a.value,issues:[]},o);if(t instanceof Promise)s.push(t),i=!0;else{if(0===t.issues.length)return t;s.push(t)}}return i?Promise.all(s).then(t=>handleUnionResults(t,a,e,o)):handleUnionResults(s,a,e,o)}}),fr=$constructor("$ZodIntersection",(e,t)=>{$t.init(e,t),e._zod.parse=(e,n)=>{const a=e.value,o=t.left._zod.run({value:a,issues:[]},n),i=t.right._zod.run({value:a,issues:[]},n);return o instanceof Promise||i instanceof Promise?Promise.all([o,i]).then(([t,n])=>handleIntersectionResults(e,t,n)):handleIntersectionResults(e,o,i)}});function mergeValues(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(isPlainObject$2(e)&&isPlainObject$2(t)){const n=Object.keys(t),a=Object.keys(e).filter(e=>-1!==n.indexOf(e)),o={...e,...t};for(const i of a){const n=mergeValues(e[i],t[i]);if(!n.valid)return{valid:!1,mergeErrorPath:[i,...n.mergeErrorPath]};o[i]=n.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let a=0;a<e.length;a++){const o=mergeValues(e[a],t[a]);if(!o.valid)return{valid:!1,mergeErrorPath:[a,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function handleIntersectionResults(e,t,n){const a=new Map;let o;for(const l of t.issues)if("unrecognized_keys"===l.code){o??(o=l);for(const e of l.keys)a.has(e)||a.set(e,{}),a.get(e).l=!0}else e.issues.push(l);for(const l of n.issues)if("unrecognized_keys"===l.code)for(const e of l.keys)a.has(e)||a.set(e,{}),a.get(e).r=!0;else e.issues.push(l);const i=[...a].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(i.length&&o&&e.issues.push({...o,keys:i}),aborted(e))return e;const s=mergeValues(t.value,n.value);if(!s.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}var gr=$constructor("$ZodRecord",(e,t)=>{$t.init(e,t),e._zod.parse=(n,a)=>{const o=n.value;if(!isPlainObject$2(o))return n.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),n;const i=[],s=t.keyType._zod.values;if(s){n.value={};const l=new Set;for(const u of s)if("string"==typeof u||"number"==typeof u||"symbol"==typeof u){l.add("number"==typeof u?u.toString():u);const s=t.keyType._zod.run({value:u,issues:[]},a);if(s instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(s.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:s.issues.map(e=>finalizeIssue(e,a,config())),input:u,path:[u],inst:e});continue}const c=s.value,d=t.valueType._zod.run({value:o[u],issues:[]},a);d instanceof Promise?i.push(d.then(e=>{e.issues.length&&n.issues.push(...prefixIssues(u,e.issues)),n.value[c]=e.value})):(d.issues.length&&n.issues.push(...prefixIssues(u,d.issues)),n.value[c]=d.value)}let c;for(const e in o)l.has(e)||(c=c??[],c.push(e));c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:c})}else{n.value={};for(const s of Reflect.ownKeys(o)){if("__proto__"===s)continue;if(!Object.prototype.propertyIsEnumerable.call(o,s))continue;let l=t.keyType._zod.run({value:s,issues:[]},a);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if("string"==typeof s&&pt.test(s)&&l.issues.length){const e=t.keyType._zod.run({value:Number(s),issues:[]},a);if(e instanceof Promise)throw new Error("Async schemas not supported in object keys currently");0===e.issues.length&&(l=e)}if(l.issues.length){"loose"===t.mode?n.value[s]=o[s]:n.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(e=>finalizeIssue(e,a,config())),input:s,path:[s],inst:e});continue}const c=t.valueType._zod.run({value:o[s],issues:[]},a);c instanceof Promise?i.push(c.then(e=>{e.issues.length&&n.issues.push(...prefixIssues(s,e.issues)),n.value[l.value]=e.value})):(c.issues.length&&n.issues.push(...prefixIssues(s,c.issues)),n.value[l.value]=c.value)}}return i.length?Promise.all(i).then(()=>n):n}}),hr=$constructor("$ZodEnum",(e,t)=>{$t.init(e,t);const n=getEnumValues(t.entries),a=new Set(n);e._zod.values=a,e._zod.pattern=new RegExp(`^(${n.filter(e=>je.has(typeof e)).map(e=>"string"==typeof e?escapeRegex(e):e.toString()).join("|")})$`),e._zod.parse=(t,o)=>{const i=t.value;return a.has(i)||t.issues.push({code:"invalid_value",values:n,input:i,inst:e}),t}}),br=$constructor("$ZodTransform",(e,t)=>{$t.init(e,t),e._zod.optin="optional",e._zod.parse=(n,a)=>{if("backward"===a.direction)throw new $e(e.constructor.name);const o=t.transform(n.value,n);if(a.async)return(o instanceof Promise?o:Promise.resolve(o)).then(e=>(n.value=e,n.fallback=!0,n));if(o instanceof Promise)throw new Oe;return n.value=o,n.fallback=!0,n}});function handleOptionalResult(e,t){return void 0===t&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var yr=$constructor("$ZodOptional",(e,t)=>{$t.init(e,t),e._zod.optin="optional",e._zod.optout="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if("optional"===t.innerType._zod.optin){const a=e.value,o=t.innerType._zod.run(e,n);return o instanceof Promise?o.then(e=>handleOptionalResult(e,a)):handleOptionalResult(o,a)}return void 0===e.value?e:t.innerType._zod.run(e,n)}}),vr=$constructor("$ZodExactOptional",(e,t)=>{yr.init(e,t),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Sr=$constructor("$ZodNullable",(e,t)=>{$t.init(e,t),defineLazy(e._zod,"optin",()=>t.innerType._zod.optin),defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)}|null)$`):void 0}),defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>null===e.value?e:t.innerType._zod.run(e,n)}),xr=$constructor("$ZodDefault",(e,t)=>{$t.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);if(void 0===e.value)return e.value=t.defaultValue,e;const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(e=>handleDefaultResult(e,t)):handleDefaultResult(a,t)}});function handleDefaultResult(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}var Cr=$constructor("$ZodPrefault",(e,t)=>{$t.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>("backward"===n.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),wr=$constructor("$ZodNonOptional",(e,t)=>{$t.init(e,t),defineLazy(e._zod,"values",()=>{const e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(n,a)=>{const o=t.innerType._zod.run(n,a);return o instanceof Promise?o.then(t=>handleNonOptionalResult(t,e)):handleNonOptionalResult(o,e)}});function handleNonOptionalResult(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var kr=$constructor("$ZodCatch",(e,t)=>{$t.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(a=>(e.value=a.value,a.issues.length&&(e.value=t.catchValue({...e,error:{issues:a.issues.map(e=>finalizeIssue(e,n,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=a.value,a.issues.length&&(e.value=t.catchValue({...e,error:{issues:a.issues.map(e=>finalizeIssue(e,n,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),Er=$constructor("$ZodPipe",(e,t)=>{$t.init(e,t),defineLazy(e._zod,"values",()=>t.in._zod.values),defineLazy(e._zod,"optin",()=>t.in._zod.optin),defineLazy(e._zod,"optout",()=>t.out._zod.optout),defineLazy(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if("backward"===n.direction){const a=t.out._zod.run(e,n);return a instanceof Promise?a.then(e=>handlePipeResult(e,t.in,n)):handlePipeResult(a,t.in,n)}const a=t.in._zod.run(e,n);return a instanceof Promise?a.then(e=>handlePipeResult(e,t.out,n)):handlePipeResult(a,t.out,n)}});function handlePipeResult(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var _r=$constructor("$ZodReadonly",(e,t)=>{$t.init(e,t),defineLazy(e._zod,"propValues",()=>t.innerType._zod.propValues),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"optin",()=>t.innerType?._zod?.optin),defineLazy(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(handleReadonlyResult):handleReadonlyResult(a)}});function handleReadonlyResult(e){return e.value=Object.freeze(e.value),e}var Pr,Tr=$constructor("$ZodCustom",(e,t)=>{gt.init(e,t),$t.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{const a=n.value,o=t.fn(a);if(o instanceof Promise)return o.then(t=>handleRefineResult(t,n,a,e));handleRefineResult(o,n,a,e)}});function handleRefineResult(e,t,n,a){if(!e){const e={code:"custom",input:n,inst:a,path:[...a._zod.def.path??[]],continue:!a._zod.def.abort};a._zod.def.params&&(e.params=a._zod.def.params),t.issues.push(issue(e))}}var Ar=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const n=t[0];return this._map.set(e,n),n&&"object"==typeof n&&"id"in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const n={...this.get(t)??{}};delete n.id;const a={...n,...this._map.get(e)};return Object.keys(a).length?a:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function registry(){return new Ar}(Pr=globalThis).__zod_globalRegistry??(Pr.__zod_globalRegistry=registry());var Rr=globalThis.__zod_globalRegistry;function _string(e,t){return new e({type:"string",...normalizeParams(t)})}function _email(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...normalizeParams(t)})}function _guid(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuid(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuidv4(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...normalizeParams(t)})}function _uuidv6(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...normalizeParams(t)})}function _uuidv7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...normalizeParams(t)})}function _url(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...normalizeParams(t)})}function _emoji(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...normalizeParams(t)})}function _nanoid(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid2(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...normalizeParams(t)})}function _ulid(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...normalizeParams(t)})}function _xid(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ksuid(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv4(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv6(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv4(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv6(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64url(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...normalizeParams(t)})}function _e164(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...normalizeParams(t)})}function _jwt(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...normalizeParams(t)})}function _isoDateTime(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...normalizeParams(t)})}function _isoDate(e,t){return new e({type:"string",format:"date",check:"string_format",...normalizeParams(t)})}function _isoTime(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...normalizeParams(t)})}function _isoDuration(e,t){return new e({type:"string",format:"duration",check:"string_format",...normalizeParams(t)})}function _coercedNumber(e,t){return new e({type:"number",coerce:!0,checks:[],...normalizeParams(t)})}function _int(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...normalizeParams(t)})}function _unknown(e){return new e({type:"unknown"})}function _never(e,t){return new e({type:"never",...normalizeParams(t)})}function _lt(e,t){return new bt({check:"less_than",...normalizeParams(t),value:e,inclusive:!1})}function _lte(e,t){return new bt({check:"less_than",...normalizeParams(t),value:e,inclusive:!0})}function _gt(e,t){return new yt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!1})}function _gte(e,t){return new yt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!0})}function _multipleOf(e,t){return new vt({check:"multiple_of",...normalizeParams(t),value:e})}function _maxLength(e,t){return new xt({check:"max_length",...normalizeParams(t),maximum:e})}function _minLength(e,t){return new Ct({check:"min_length",...normalizeParams(t),minimum:e})}function _length(e,t){return new wt({check:"length_equals",...normalizeParams(t),length:e})}function _regex(e,t){return new Et({check:"string_format",format:"regex",...normalizeParams(t),pattern:e})}function _lowercase(e){return new _t({check:"string_format",format:"lowercase",...normalizeParams(e)})}function _uppercase(e){return new Pt({check:"string_format",format:"uppercase",...normalizeParams(e)})}function _includes(e,t){return new Tt({check:"string_format",format:"includes",...normalizeParams(t),includes:e})}function _startsWith(e,t){return new At({check:"string_format",format:"starts_with",...normalizeParams(t),prefix:e})}function _endsWith(e,t){return new Rt({check:"string_format",format:"ends_with",...normalizeParams(t),suffix:e})}function _overwrite(e){return new Mt({check:"overwrite",tx:e})}function _normalize(e){return _overwrite(t=>t.normalize(e))}function _trim(){return _overwrite(e=>e.trim())}function _toLowerCase(){return _overwrite(e=>e.toLowerCase())}function _toUpperCase(){return _overwrite(e=>e.toUpperCase())}function _slugify(){return _overwrite(e=>slugify(e))}function _array(e,t,n){return new e({type:"array",element:t,...normalizeParams(n)})}function _refine(e,t,n){return new e({type:"custom",check:"custom",fn:t,...normalizeParams(n)})}function _superRefine(e,t){const n=_check(t=>(t.addIssue=e=>{if("string"==typeof e)t.issues.push(issue(e,t.value,n._zod.def));else{const a=e;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=t.value),a.inst??(a.inst=n),a.continue??(a.continue=!n._zod.def.abort),t.issues.push(issue(a))}},e(t.value,t)),t);return n}function _check(e,t){const n=new gt({check:"custom",...normalizeParams(t)});return n._zod.check=e,n}function initializeContext(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Rr,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function process(e,t,n={path:[],schemaPath:[]}){var a;const o=e._zod.def,i=t.seen.get(e);if(i)return i.count++,n.schemaPath.includes(e)&&(i.cycle=n.path),i.schema;const s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s);const l=e._zod.toJSONSchema?.();if(l)s.schema=l;else{const a={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,a);else{const n=s.schema,i=t.processors[o.type];if(!i)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);i(e,t,n,a)}const i=e._zod.parent;i&&(s.ref||(s.ref=i),process(i,t,a),t.seen.get(i).isParent=!0)}const c=t.metadataRegistry.get(e);return c&&Object.assign(s.schema,c),"input"===t.io&&isTransforming(e)&&(delete s.schema.examples,delete s.schema.default),"input"===t.io&&"_prefault"in s.schema&&((a=s.schema).default??(a.default=s.schema._prefault)),delete s.schema._prefault,t.seen.get(e).schema}function extractDefs(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const a=new Map;for(const o of e.seen.entries()){const t=e.metadataRegistry.get(o[0])?.id;if(t){const e=a.get(t);if(e&&e!==o[0])throw new Error(`Duplicate schema id "${t}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);a.set(t,o[0])}}const makeURI=t=>{const a="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){const n=e.external.registry.get(t[0])?.id,o=e.external.uri??(e=>e);if(n)return{ref:o(n)};const i=t[1].defId??t[1].schema.id??"schema"+e.counter++;return t[1].defId=i,{defId:i,ref:`${o("__shared")}#/${a}/${i}`}}if(t[1]===n)return{ref:"#"};const o=`#/${a}/`,i=t[1].schema.id??"__schema"+e.counter++;return{defId:i,ref:o+i}},extractToDef=e=>{if(e[1].schema.$ref)return;const t=e[1],{ref:n,defId:a}=makeURI(e);t.def={...t.schema},a&&(t.defId=a);const o=t.schema;for(const i in o)delete o[i];o.$ref=n};if("throw"===e.cycles)for(const o of e.seen.entries()){const e=o[1];if(e.cycle)throw new Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>\n\nSet the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of e.seen.entries()){const n=o[1];if(t!==o[0]){if(e.external){const n=e.external.registry.get(o[0])?.id;if(t!==o[0]&&n){extractToDef(o);continue}}(e.metadataRegistry.get(o[0])?.id||n.cycle||n.count>1&&"ref"===e.reused)&&extractToDef(o)}else extractToDef(o)}}function finalize$1(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const flattenRef=t=>{const n=e.seen.get(t);if(null===n.ref)return;const a=n.def??n.schema,o={...a},i=n.ref;if(n.ref=null,i){flattenRef(i);const n=e.seen.get(i),s=n.schema;if(!s.$ref||"draft-07"!==e.target&&"draft-04"!==e.target&&"openapi-3.0"!==e.target?Object.assign(a,s):(a.allOf=a.allOf??[],a.allOf.push(s)),Object.assign(a,o),t._zod.parent===i)for(const e in a)"$ref"!==e&&"allOf"!==e&&(e in o||delete a[e]);if(s.$ref&&n.def)for(const e in a)"$ref"!==e&&"allOf"!==e&&e in n.def&&JSON.stringify(a[e])===JSON.stringify(n.def[e])&&delete a[e]}const s=t._zod.parent;if(s&&s!==i){flattenRef(s);const t=e.seen.get(s);if(t?.schema.$ref&&(a.$ref=t.schema.$ref,t.def))for(const e in a)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(a[e])===JSON.stringify(t.def[e])&&delete a[e]}e.override({zodSchema:t,jsonSchema:a,path:n.path??[]})};for(const l of[...e.seen.entries()].reverse())flattenRef(l[0]);const a={};if("draft-2020-12"===e.target?a.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?a.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?a.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const n=e.external.registry.get(t)?.id;if(!n)throw new Error("Schema is missing an `id` property");a.$id=e.external.uri(n)}Object.assign(a,n.def??n.schema);const o=e.metadataRegistry.get(t)?.id;void 0!==o&&a.id===o&&delete a.id;const i=e.external?.defs??{};for(const l of e.seen.entries()){const e=l[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,i[e.defId]=e.def)}e.external||Object.keys(i).length>0&&("draft-2020-12"===e.target?a.$defs=i:a.definitions=i);try{const n=JSON.parse(JSON.stringify(a));return Object.defineProperty(n,"~standard",{value:{...t["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(t,"input",e.processors),output:createStandardJSONSchemaMethod(t,"output",e.processors)}},enumerable:!1,writable:!1}),n}catch(s){throw new Error("Error converting schema to JSON.")}}function isTransforming(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const a=e._zod.def;if("transform"===a.type)return!0;if("array"===a.type)return isTransforming(a.element,n);if("set"===a.type)return isTransforming(a.valueType,n);if("lazy"===a.type)return isTransforming(a.getter(),n);if("promise"===a.type||"optional"===a.type||"nonoptional"===a.type||"nullable"===a.type||"readonly"===a.type||"default"===a.type||"prefault"===a.type)return isTransforming(a.innerType,n);if("intersection"===a.type)return isTransforming(a.left,n)||isTransforming(a.right,n);if("record"===a.type||"map"===a.type)return isTransforming(a.keyType,n)||isTransforming(a.valueType,n);if("pipe"===a.type)return!!e._zod.traits.has("$ZodCodec")||(isTransforming(a.in,n)||isTransforming(a.out,n));if("object"===a.type){for(const e in a.shape)if(isTransforming(a.shape[e],n))return!0;return!1}if("union"===a.type){for(const e of a.options)if(isTransforming(e,n))return!0;return!1}if("tuple"===a.type){for(const e of a.items)if(isTransforming(e,n))return!0;return!(!a.rest||!isTransforming(a.rest,n))}return!1}var createToJSONSchemaMethod=(e,t={})=>n=>{const a=initializeContext({...n,processors:t});return process(e,a),extractDefs(a,e),finalize$1(a,e)},createStandardJSONSchemaMethod=(e,t,n={})=>a=>{const{libraryOptions:o,target:i}=a??{},s=initializeContext({...o??{},target:i,io:t,processors:n});return process(e,s),extractDefs(s,e),finalize$1(s,e)},Mr={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},stringProcessor=(e,t,n,a)=>{const o=n;o.type="string";const{minimum:i,maximum:s,format:l,patterns:c,contentEncoding:u}=e._zod.bag;if("number"==typeof i&&(o.minLength=i),"number"==typeof s&&(o.maxLength=s),l&&(o.format=Mr[l]??l,""===o.format&&delete o.format,"time"===l&&delete o.format),u&&(o.contentEncoding=u),c&&c.size>0){const e=[...c];1===e.length?o.pattern=e[0].source:e.length>1&&(o.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}},numberProcessor=(e,t,n,a)=>{const o=n,{minimum:i,maximum:s,format:l,multipleOf:c,exclusiveMaximum:u,exclusiveMinimum:d}=e._zod.bag;"string"==typeof l&&l.includes("int")?o.type="integer":o.type="number";const p="number"==typeof d&&d>=(i??Number.NEGATIVE_INFINITY),m="number"==typeof u&&u<=(s??Number.POSITIVE_INFINITY),g="draft-04"===t.target||"openapi-3.0"===t.target;p?g?(o.minimum=d,o.exclusiveMinimum=!0):o.exclusiveMinimum=d:"number"==typeof i&&(o.minimum=i),m?g?(o.maximum=u,o.exclusiveMaximum=!0):o.exclusiveMaximum=u:"number"==typeof s&&(o.maximum=s),"number"==typeof c&&(o.multipleOf=c)},neverProcessor=(e,t,n,a)=>{n.not={}},unknownProcessor=(e,t,n,a)=>{},enumProcessor=(e,t,n,a)=>{const o=getEnumValues(e._zod.def.entries);o.every(e=>"number"==typeof e)&&(n.type="number"),o.every(e=>"string"==typeof e)&&(n.type="string"),n.enum=o},customProcessor=(e,t,n,a)=>{if("throw"===t.unrepresentable)throw new Error("Custom types cannot be represented in JSON Schema")},transformProcessor=(e,t,n,a)=>{if("throw"===t.unrepresentable)throw new Error("Transforms cannot be represented in JSON Schema")},arrayProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def,{minimum:s,maximum:l}=e._zod.bag;"number"==typeof s&&(o.minItems=s),"number"==typeof l&&(o.maxItems=l),o.type="array",o.items=process(i.element,t,{...a,path:[...a.path,"items"]})},objectProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def;o.type="object",o.properties={};const s=i.shape;for(const u in s)o.properties[u]=process(s[u],t,{...a,path:[...a.path,"properties",u]});const l=new Set(Object.keys(s)),c=new Set([...l].filter(e=>{const n=i.shape[e]._zod;return"input"===t.io?void 0===n.optin:void 0===n.optout}));c.size>0&&(o.required=Array.from(c)),"never"===i.catchall?._zod.def.type?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=process(i.catchall,t,{...a,path:[...a.path,"additionalProperties"]})):"output"===t.io&&(o.additionalProperties=!1)},unionProcessor=(e,t,n,a)=>{const o=e._zod.def,i=!1===o.inclusive,s=o.options.map((e,n)=>process(e,t,{...a,path:[...a.path,i?"oneOf":"anyOf",n]}));i?n.oneOf=s:n.anyOf=s},intersectionProcessor=(e,t,n,a)=>{const o=e._zod.def,i=process(o.left,t,{...a,path:[...a.path,"allOf",0]}),s=process(o.right,t,{...a,path:[...a.path,"allOf",1]}),isSimpleIntersection=e=>"allOf"in e&&1===Object.keys(e).length;n.allOf=[...isSimpleIntersection(i)?i.allOf:[i],...isSimpleIntersection(s)?s.allOf:[s]]},recordProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def;o.type="object";const s=i.keyType,l=s._zod.bag?.patterns;if("loose"===i.mode&&l&&l.size>0){const e=process(i.valueType,t,{...a,path:[...a.path,"patternProperties","*"]});o.patternProperties={};for(const t of l)o.patternProperties[t.source]=e}else"draft-07"!==t.target&&"draft-2020-12"!==t.target||(o.propertyNames=process(i.keyType,t,{...a,path:[...a.path,"propertyNames"]})),o.additionalProperties=process(i.valueType,t,{...a,path:[...a.path,"additionalProperties"]});const c=s._zod.values;if(c){const e=[...c].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(o.required=e)}},nullableProcessor=(e,t,n,a)=>{const o=e._zod.def,i=process(o.innerType,t,a),s=t.seen.get(e);"openapi-3.0"===t.target?(s.ref=o.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]},nonoptionalProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType},defaultProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,n.default=JSON.parse(JSON.stringify(o.defaultValue))},prefaultProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,"input"===t.io&&(n._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},catchProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);let i;t.seen.get(e).ref=o.innerType;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i},pipeProcessor=(e,t,n,a)=>{const o=e._zod.def,i=o.in._zod.traits.has("$ZodTransform"),s="input"===t.io?i?o.out:o.in:o.out;process(s,t,a);t.seen.get(e).ref=s},readonlyProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,n.readOnly=!0},optionalProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType},Dr=$constructor("ZodISODateTime",(e,t)=>{Yt.init(e,t),Jr.init(e,t)});function datetime(e){return _isoDateTime(Dr,e)}var Or=$constructor("ZodISODate",(e,t)=>{Kt.init(e,t),Jr.init(e,t)});function date(e){return _isoDate(Or,e)}var $r=$constructor("ZodISOTime",(e,t)=>{Qt.init(e,t),Jr.init(e,t)});function time(e){return _isoTime($r,e)}var Ir=$constructor("ZodISODuration",(e,t)=>{Zt.init(e,t),Jr.init(e,t)});function duration$1(e){return _isoDuration(Ir,e)}var initializer=(e,t)=>{Fe.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>formatError(e,t)},flatten:{value:t=>flattenError(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},isEmpty:{get:()=>0===e.issues.length}})},Nr=$constructor("ZodError",initializer,{Parent:Error}),zr=_parse(Nr),Lr=_parseAsync(Nr),jr=_safeParse(Nr),Br=_safeParseAsync(Nr),Fr=_encode(Nr),qr=_decode(Nr),Ur=_encodeAsync(Nr),Vr=_decodeAsync(Nr),Hr=_safeEncode(Nr),Wr=_safeDecode(Nr),Gr=_safeEncodeAsync(Nr),Yr=_safeDecodeAsync(Nr),Kr=new WeakMap;function _installLazyMethods(e,t,n){const a=Object.getPrototypeOf(e);let o=Kr.get(a);if(o||(o=new Set,Kr.set(a,o)),!o.has(t)){o.add(t);for(const e in n){const t=n[e];Object.defineProperty(a,e,{configurable:!0,enumerable:!1,get(){const n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var Qr=$constructor("ZodType",(e,t)=>($t.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:createStandardJSONSchemaMethod(e,"input"),output:createStandardJSONSchemaMethod(e,"output")}}),e.toJSONSchema=createToJSONSchemaMethod(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>zr(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>jr(e,t,n),e.parseAsync=async(t,n)=>Lr(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>Br(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Fr(e,t,n),e.decode=(t,n)=>qr(e,t,n),e.encodeAsync=async(t,n)=>Ur(e,t,n),e.decodeAsync=async(t,n)=>Vr(e,t,n),e.safeEncode=(t,n)=>Hr(e,t,n),e.safeDecode=(t,n)=>Wr(e,t,n),e.safeEncodeAsync=async(t,n)=>Gr(e,t,n),e.safeDecodeAsync=async(t,n)=>Yr(e,t,n),_installLazyMethods(e,"ZodType",{check(...e){const t=this.def;return this.clone(mergeDefs(t,{checks:[...t.checks??[],...e.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return clone$1(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(refine(e,t))},superRefine(e,t){return this.check(superRefine(e,t))},overwrite(e){return this.check(_overwrite(e))},optional(){return optional(this)},exactOptional(){return exactOptional(this)},nullable(){return nullable(this)},nullish(){return optional(nullable(this))},nonoptional(e){return nonoptional(this,e)},array(){return array(this)},or(e){return union([this,e])},and(e){return intersection(this,e)},transform(e){return pipe(this,transform(e))},default(e){return _default(this,e)},prefault(e){return prefault(this,e)},catch(e){return _catch(this,e)},pipe(e){return pipe(this,e)},readonly(){return readonly(this)},describe(e){const t=this.clone();return Rr.add(t,{description:e}),t},meta(...e){if(0===e.length)return Rr.get(this);const t=this.clone();return Rr.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get:()=>Rr.get(e)?.description,configurable:!0}),e)),Zr=$constructor("_ZodString",(e,t)=>{It.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>stringProcessor(e,t,n,a);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,_installLazyMethods(e,"_ZodString",{regex(...e){return this.check(_regex(...e))},includes(...e){return this.check(_includes(...e))},startsWith(...e){return this.check(_startsWith(...e))},endsWith(...e){return this.check(_endsWith(...e))},min(...e){return this.check(_minLength(...e))},max(...e){return this.check(_maxLength(...e))},length(...e){return this.check(_length(...e))},nonempty(...e){return this.check(_minLength(1,...e))},lowercase(e){return this.check(_lowercase(e))},uppercase(e){return this.check(_uppercase(e))},trim(){return this.check(_trim())},normalize(...e){return this.check(_normalize(...e))},toLowerCase(){return this.check(_toLowerCase())},toUpperCase(){return this.check(_toUpperCase())},slugify(){return this.check(_slugify())}})}),Xr=$constructor("ZodString",(e,t)=>{It.init(e,t),Zr.init(e,t),e.email=t=>e.check(_email(en,t)),e.url=t=>e.check(_url(nn,t)),e.jwt=t=>e.check(_jwt(xn,t)),e.emoji=t=>e.check(_emoji(an,t)),e.guid=t=>e.check(_guid(tn,t)),e.uuid=t=>e.check(_uuid(rn,t)),e.uuidv4=t=>e.check(_uuidv4(rn,t)),e.uuidv6=t=>e.check(_uuidv6(rn,t)),e.uuidv7=t=>e.check(_uuidv7(rn,t)),e.nanoid=t=>e.check(_nanoid(sn,t)),e.guid=t=>e.check(_guid(tn,t)),e.cuid=t=>e.check(_cuid(ln,t)),e.cuid2=t=>e.check(_cuid2(cn,t)),e.ulid=t=>e.check(_ulid(un,t)),e.base64=t=>e.check(_base64(yn,t)),e.base64url=t=>e.check(_base64url(vn,t)),e.xid=t=>e.check(_xid(dn,t)),e.ksuid=t=>e.check(_ksuid(pn,t)),e.ipv4=t=>e.check(_ipv4(mn,t)),e.ipv6=t=>e.check(_ipv6(gn,t)),e.cidrv4=t=>e.check(_cidrv4(hn,t)),e.cidrv6=t=>e.check(_cidrv6(bn,t)),e.e164=t=>e.check(_e164(Sn,t)),e.datetime=t=>e.check(datetime(t)),e.date=t=>e.check(date(t)),e.time=t=>e.check(time(t)),e.duration=t=>e.check(duration$1(t))});function string(e){return _string(Xr,e)}var Jr=$constructor("ZodStringFormat",(e,t)=>{Nt.init(e,t),Zr.init(e,t)}),en=$constructor("ZodEmail",(e,t)=>{jt.init(e,t),Jr.init(e,t)}),tn=$constructor("ZodGUID",(e,t)=>{zt.init(e,t),Jr.init(e,t)}),rn=$constructor("ZodUUID",(e,t)=>{Lt.init(e,t),Jr.init(e,t)}),nn=$constructor("ZodURL",(e,t)=>{Bt.init(e,t),Jr.init(e,t)}),an=$constructor("ZodEmoji",(e,t)=>{Ft.init(e,t),Jr.init(e,t)}),sn=$constructor("ZodNanoID",(e,t)=>{qt.init(e,t),Jr.init(e,t)}),ln=$constructor("ZodCUID",(e,t)=>{Ut.init(e,t),Jr.init(e,t)}),cn=$constructor("ZodCUID2",(e,t)=>{Vt.init(e,t),Jr.init(e,t)}),un=$constructor("ZodULID",(e,t)=>{Ht.init(e,t),Jr.init(e,t)}),dn=$constructor("ZodXID",(e,t)=>{Wt.init(e,t),Jr.init(e,t)}),pn=$constructor("ZodKSUID",(e,t)=>{Gt.init(e,t),Jr.init(e,t)}),mn=$constructor("ZodIPv4",(e,t)=>{Xt.init(e,t),Jr.init(e,t)}),gn=$constructor("ZodIPv6",(e,t)=>{Jt.init(e,t),Jr.init(e,t)}),hn=$constructor("ZodCIDRv4",(e,t)=>{er.init(e,t),Jr.init(e,t)}),bn=$constructor("ZodCIDRv6",(e,t)=>{tr.init(e,t),Jr.init(e,t)}),yn=$constructor("ZodBase64",(e,t)=>{rr.init(e,t),Jr.init(e,t)}),vn=$constructor("ZodBase64URL",(e,t)=>{nr.init(e,t),Jr.init(e,t)}),Sn=$constructor("ZodE164",(e,t)=>{ar.init(e,t),Jr.init(e,t)}),xn=$constructor("ZodJWT",(e,t)=>{or.init(e,t),Jr.init(e,t)}),Cn=$constructor("ZodNumber",(e,t)=>{ir.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>numberProcessor(e,t,n,a),_installLazyMethods(e,"ZodNumber",{gt(e,t){return this.check(_gt(e,t))},gte(e,t){return this.check(_gte(e,t))},min(e,t){return this.check(_gte(e,t))},lt(e,t){return this.check(_lt(e,t))},lte(e,t){return this.check(_lte(e,t))},max(e,t){return this.check(_lte(e,t))},int(e){return this.check(int(e))},safe(e){return this.check(int(e))},positive(e){return this.check(_gt(0,e))},nonnegative(e){return this.check(_gte(0,e))},negative(e){return this.check(_lt(0,e))},nonpositive(e){return this.check(_lte(0,e))},multipleOf(e,t){return this.check(_multipleOf(e,t))},step(e,t){return this.check(_multipleOf(e,t))},finite(){return this}});const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null}),wn=$constructor("ZodNumberFormat",(e,t)=>{sr.init(e,t),Cn.init(e,t)});function int(e){return _int(wn,e)}var kn=$constructor("ZodUnknown",(e,t)=>{lr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>unknownProcessor(e,t,n,a)});function unknown(){return _unknown(kn)}var En=$constructor("ZodNever",(e,t)=>{cr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>neverProcessor(e,t,n,a)});function never(e){return _never(En,e)}var _n=$constructor("ZodArray",(e,t)=>{ur.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>arrayProcessor(e,t,n,a),e.element=t.element,_installLazyMethods(e,"ZodArray",{min(e,t){return this.check(_minLength(e,t))},nonempty(e){return this.check(_minLength(1,e))},max(e,t){return this.check(_maxLength(e,t))},length(e,t){return this.check(_length(e,t))},unwrap(){return this.element}})});function array(e,t){return _array(_n,e,t)}var Pn=$constructor("ZodObject",(e,t)=>{pr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>objectProcessor(e,t,n,a),defineLazy(e,"shape",()=>t.shape),_installLazyMethods(e,"ZodObject",{keyof(){return _enum(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:unknown()})},loose(){return this.clone({...this._zod.def,catchall:unknown()})},strict(){return this.clone({...this._zod.def,catchall:never()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return extend(this,e)},safeExtend(e){return safeExtend(this,e)},merge(e){return merge(this,e)},pick(e){return pick(this,e)},omit(e){return omit(this,e)},partial(...e){return partial(On,this,e[0])},required(...e){return required(Ln,this,e[0])}})});function object(e,t){return new Pn({type:"object",shape:e??{},...normalizeParams(t)})}var Tn=$constructor("ZodUnion",(e,t)=>{mr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>unionProcessor(e,t,n,a),e.options=t.options});function union(e,t){return new Tn({type:"union",options:e,...normalizeParams(t)})}var An=$constructor("ZodIntersection",(e,t)=>{fr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>intersectionProcessor(e,t,n,a)});function intersection(e,t){return new An({type:"intersection",left:e,right:t})}var Rn=$constructor("ZodRecord",(e,t)=>{gr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>recordProcessor(e,t,n,a),e.keyType=t.keyType,e.valueType=t.valueType});function record(e,t,n){return t&&t._zod?new Rn({type:"record",keyType:e,valueType:t,...normalizeParams(n)}):new Rn({type:"record",keyType:string(),valueType:e,...normalizeParams(t)})}var Mn=$constructor("ZodEnum",(e,t)=>{hr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>enumProcessor(e,t,n,a),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(e,a)=>{const o={};for(const i of e){if(!n.has(i))throw new Error(`Key ${i} not found in enum`);o[i]=t.entries[i]}return new Mn({...t,checks:[],...normalizeParams(a),entries:o})},e.exclude=(e,a)=>{const o={...t.entries};for(const t of e){if(!n.has(t))throw new Error(`Key ${t} not found in enum`);delete o[t]}return new Mn({...t,checks:[],...normalizeParams(a),entries:o})}});function _enum(e,t){return new Mn({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...normalizeParams(t)})}var Dn=$constructor("ZodTransform",(e,t)=>{br.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>transformProcessor(e,t,n,a),e._zod.parse=(n,a)=>{if("backward"===a.direction)throw new $e(e.constructor.name);n.addIssue=a=>{if("string"==typeof a)n.issues.push(issue(a,n.value,t));else{const t=a;t.fatal&&(t.continue=!1),t.code??(t.code="custom"),t.input??(t.input=n.value),t.inst??(t.inst=e),n.issues.push(issue(t))}};const o=t.transform(n.value,n);return o instanceof Promise?o.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=o,n.fallback=!0,n)}});function transform(e){return new Dn({type:"transform",transform:e})}var On=$constructor("ZodOptional",(e,t)=>{yr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>optionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function optional(e){return new On({type:"optional",innerType:e})}var $n=$constructor("ZodExactOptional",(e,t)=>{vr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>optionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function exactOptional(e){return new $n({type:"optional",innerType:e})}var In=$constructor("ZodNullable",(e,t)=>{Sr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>nullableProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function nullable(e){return new In({type:"nullable",innerType:e})}var Nn=$constructor("ZodDefault",(e,t)=>{xr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>defaultProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function _default(e,t){return new Nn({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var zn=$constructor("ZodPrefault",(e,t)=>{Cr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>prefaultProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function prefault(e,t){return new zn({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var Ln=$constructor("ZodNonOptional",(e,t)=>{wr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>nonoptionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function nonoptional(e,t){return new Ln({type:"nonoptional",innerType:e,...normalizeParams(t)})}var jn=$constructor("ZodCatch",(e,t)=>{kr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>catchProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function _catch(e,t){return new jn({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})}var Bn=$constructor("ZodPipe",(e,t)=>{Er.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>pipeProcessor(e,t,n,a),e.in=t.in,e.out=t.out});function pipe(e,t){return new Bn({type:"pipe",in:e,out:t})}var Fn=$constructor("ZodReadonly",(e,t)=>{_r.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>readonlyProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function readonly(e){return new Fn({type:"readonly",innerType:e})}var qn=$constructor("ZodCustom",(e,t)=>{Tr.init(e,t),Qr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>customProcessor(e,t,n,a)});function refine(e,t={}){return _refine(qn,e,t)}function superRefine(e,t){return _superRefine(e,t)}function number(e){return _coercedNumber(Cn,e)}var isRecord$1=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),isSupportedPersistenceSchemaVersion=e=>2===Number(e),createEmptyPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:{},affSettings:{defaults:{}},defSettings:{defaults:{},static:{}},cacheSettings:{precache:{}}}),Un=record(string(),unknown()).catch(()=>({})),Vn=object({schemaVersion:number().refine(isSupportedPersistenceSchemaVersion),systemSettings:Un,affSettings:object({defaults:Un}).catch(()=>({defaults:{}})),defSettings:object({defaults:Un,static:Un}).catch(()=>({defaults:{},static:{}})),cacheSettings:object({precache:Un}).catch(()=>({precache:{}}))}),normalizePersistenceSnapshot=(e,{assumeCurrentVersion:t=!1}={})=>{const n=t&&isRecord$1(e)&&null==e.schemaVersion?{...e,schemaVersion:2}:e,a=Vn.safeParse(n);return a.success?a.data:createEmptyPersistenceSnapshot()},createRuntimePersistenceApi=({persistence:e,systemModel:t,affModel:n,defModel:a,cacheModel:o,serverside:i,syncDebugMode:s,markDirty:l})=>{const c=0,u=26,d={hasStoredSnapshot:!1,sourceKey:e?.key||"nexSys4Settings"},sanitizeSystemSettings=(e={})=>{const{customPromptEnabled:t,prompt:n,...a}=e||{},o=normalizeCommandSeparator(a.commandSeparator);if(o?a.commandSeparator=o:delete a.commandSeparator,a.ss&&"object"==typeof a.ss){const{enabled:e,...t}=a.ss;a.ss=t}return a},normalizePersistedDefPriority=e=>{const t=Number(e);return Number.isInteger(t)?t<c?c:t>u?u:t:c},buildAffDefaultMap=()=>n.list().reduce((e,t)=>(e[t]=n.getDefaultPriority(t),e),{}),countablePriorityNameSet=()=>new Set(n.getCountablePriorityNames?.()||[]),buildDefDefaultMap=()=>Object.entries(a.getDefaultPriorities()).reduce((e,[t,n])=>(e[t]=normalizePersistedDefPriority(n),e),{}),buildDefStaticOverrideMap=()=>({...a.getStaticOverrides?.()||{}}),buildCacheDefaultSnapshot=()=>o.getDesiredPrecache(),isValidServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},normalizeStoredAffDefaults=(e={})=>{const t=countablePriorityNameSet();return Object.entries(e).reduce((e,[a,o])=>{const i="function"==typeof n.normalizePriorityName?n.normalizePriorityName(a):String(a||"").trim().toLowerCase();if(!i)return e;if(t.has(i))return e;const s=n.getDefaultPriority(i);return isValidServersideAffPriority(s)&&!isValidServersideAffPriority(o)?(e[i]=s,e):(e[i]=o,e)},{})},normalizeStoredDefPriorities=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=normalizePersistedDefPriority(n),e),{}),normalizeStoredDefStatics=(e={})=>Object.entries(e).reduce((e,[t,n])=>(!0!==n&&!1!==n||(e[t]=n),e),{}),buildPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:sanitizeSystemSettings(t.getSettings()),affSettings:{defaults:buildAffDefaultMap()},defSettings:{defaults:buildDefDefaultMap(),static:buildDefStaticOverrideMap()},cacheSettings:{precache:buildCacheDefaultSnapshot()}}),applyStoredSnapshot=(e={})=>{const l=sanitizeSystemSettings(e.systemSettings||{});t.setSettings(l,{setBaseline:!0}),t.setBaselineIntent({ss:l.ss||{}});const c=e.affSettings?.defaults;c&&Object.entries(normalizeStoredAffDefaults(c)).forEach(([e,t])=>{n.setDefaultPriority(e,t,"persistence")});const u=normalizeStoredDefStatics(e.defSettings?.static);Object.entries(u).forEach(([e,t])=>{a.setStatic(e,t,"persistence")});const d=normalizeStoredDefPriorities(e.defSettings?.defaults);Object.entries(d).forEach(([e,t])=>{a.setDefaultPriority(e,t,"persistence")}),e.cacheSettings?.precache&&o.setDesiredPrecache(e.cacheSettings.precache),i.setBaselineFromRuntime(),s()},loadStoredSnapshot=()=>"function"==typeof e.read?e.read():{key:e?.key||"nexSys4Settings",exists:!1,snapshot:e.load()};return{buildPersistenceSnapshot,loadPersistence(){const{key:t,exists:n,snapshot:a}=loadStoredSnapshot();return d.hasStoredSnapshot=Boolean(n),d.sourceKey=t||e?.key||"nexSys4Settings",applyStoredSnapshot(a),{key:d.sourceKey,exists:d.hasStoredSnapshot,snapshot:a}},seedBaselineFromObservedStartup({skipObservedAdoption:e=!1}={}){if(d.hasStoredSnapshot)return!1;if(e)return!1;const o=i.getObserved?.()||{},l=sanitizeSystemSettings({ss:o.settings||{}});Object.keys(l).length&&t.setSettings(l,{setBaseline:!0});const c=countablePriorityNameSet();return Object.entries(o.affPriorities||{}).forEach(([e,t])=>{c.has(String(e||"").toLowerCase())||isValidServersideAffPriority(t)&&n.setDefaultPriority(e,t,"startup-observed-baseline")}),Object.entries(o.defPriorities||{}).forEach(([e,t])=>{a.get(e)&&a.setDefaultPriority(e,normalizePersistedDefPriority(t),"startup-observed-baseline")}),i.setBaselineFromRuntime(),s(),!0},savePersistence(){const t=buildPersistenceSnapshot();return e.save(t),i.setBaselineFromRuntime(),l("persistence-save"),t}}},evaluateBlockCondition=(e,t)=>Array.isArray(e)?e.every(e=>t(e)):t(e),isBlocked=(e=[],t)=>e.some(e=>evaluateBlockCondition(e,t)),isActiveDefensePriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=25},createDefensePlanner=({defModel:e,balanceModel:t,affModel:n,systemModel:a})=>{const plan=({includeStaticIds:o=[]}={})=>{const i=a.getClass(),s=new Set(o),l=e.list().map(t=>e.get(t)).filter(Boolean).map(t=>({entry:t,priority:e.getPriority(t.id)})).sort((e,t)=>e.priority!==t.priority?e.priority-t.priority:e.entry.order-t.entry.order),c=new Set,u={serverside:[],client:[]};return l.forEach(({entry:a,priority:o})=>{if(!isActiveDefensePriority(o)||c.has(a.id)||a.have)return;if(!e.isAvailableForClass(a.id,i))return;if(a.static&&!s.has(a.id))return;if(isBlocked(a.blocks,e=>n.haveAff(e)))return;if(!a.bals_req.every(e=>t.have(e)))return;a.opps.forEach(e=>c.add(e));const l=a.serverside?u.serverside:u.client;a.command.forEach(e=>{l.push({source:"defense",defense:a.id,command:e,prio:o,serverside:a.serverside,preempt:a.preempt,static:a.static})})}),{serverside:u.serverside,client:u.client,all:[...u.serverside,...u.client]}};return{plan}},dedupeCommandIntents=(e=[])=>{const t=new Map,n=[];return e.forEach(e=>{const a=e?.command,o=t.get(a);if(o)return void(!0===e?.requiresCompletion&&(o.requiresCompletion=!0));const i={...e};t.set(a,i),n.push(i)}),n},createOutputPlanner=({systemModel:e,serverside:t,defensePlanner:n,precachePlanner:a})=>({plan({source:o="prompt",injectedCommands:i=[],suppressedServersideCommands:s=[]}={}){const l=e.getRuntime(),c=t.evaluate({emitCommands:!1,source:o}),u=s.length?c.commands.filter(e=>!s.includes(e)):c.commands,d=t.getStaticDefRequests(),p=[];n.plan({includeStaticIds:Object.keys(d)}).client.forEach(e=>p.push(e)),l.slowMode||l.aeonLocked||a.plan().forEach(e=>p.push(e)),u.forEach(e=>{p.push({source:"serverside",command:e,requiresCompletion:!0})}),i.forEach(e=>{p.push({source:"injected",command:e})});const m=dedupeCommandIntents(p);return{intents:m,commands:m.map(e=>e.command),serversideCommands:u}}}),createPrecachePlanner=({cacheModel:e})=>({plan:()=>e.getPrecacheCommands().map(e=>({source:"precache",command:e,requiresCompletion:!0}))}),createQueueState=()=>Object.entries(I).reduce((e,[t,n])=>(e[t]={...deepClone$1(n),id:t,items:[],prepend:[],pending:!1,lastSignature:"",deferred:!1},e),{}),splitCommandValue=(e,t="|")=>{const n=String(t||"|")||"|";return String(e).split(n).map(e=>e.trim()).filter(Boolean)},normalizeCommands=(e,t="|")=>e?Array.isArray(e)?e.flatMap(e=>null==e?[]:splitCommandValue(e,t)).filter(Boolean):splitCommandValue(e,t):[],hasQueuedItems=e=>e.items.length>0||e.prepend.length>0,buildLogicalCommands=e=>[`echo SystemEvent ${e.name}QueueFired`,...e.pre,...e.prepend,...e.items,...e.post].filter(Boolean),clearQueueState=e=>{e.items=[],e.prepend=[],e.pending=!1,e.lastSignature="",e.deferred=!1},resolveQueueId=(e,t)=>{if(e[t])return t;const n=String(t||"").replace(/QueueFired$/i,"").toLowerCase();return Object.keys(e).find(t=>{const a=e[t];return a.name.toLowerCase()===n||a.type.toLowerCase()===n})||null},hasLocalQueueState=(e={})=>(e.items||[]).length>0||(e.prepend||[]).length>0||e.pending||e.deferred||Boolean(e.lastSignature),clearLocalQueueState=e=>{if(!e)return!1;const t=hasLocalQueueState(e);return clearQueueState(e),t},markQueueDeferred=e=>{if(!e)return!1;const t=!e.deferred||!e.pending;return e.deferred=!0,e.pending=!0,t},markQueueAwaitingAck=(e,t)=>{if(!e)return!1;const n=e.lastSignature!==t||!0!==e.pending||!1!==e.deferred;return e.lastSignature=t,e.pending=!0,e.deferred=!1,n},createQueueMutationApi=({state:e,emit:t,flush:n,getSeparator:a,markStateChanged:o=()=>{}})=>{const resolveSeparator=()=>("function"==typeof a?a():"|")||"|",haveSameCommands=(e=[],t=[])=>e.length===t.length&&e.every((e,n)=>e===t[n]),clear=(n,a={})=>{const i=e[n];return!!i&&(!!clearLocalQueueState(i)&&(o(n),t("QueueCleared",{queueId:n,remote:Boolean(a.remote),command:a.command||null}),!0))};return{add(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;return c.forEach(e=>{l.items.includes(e)&&!s.allowDuplicate||(l.items.push(e),u=!0)}),!!u&&(o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},addClear(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());return!(!c.length||haveSameCommands(l.items,c))&&(l.items=c,o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},prepend(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;for(let e=c.length-1;e>=0;e-=1){const t=c[e];l.prepend.includes(t)&&!s.allowDuplicate||(l.prepend.unshift(t),u=!0)}return!!u&&(o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},clear,setPreCommands(n,a=[]){const i=e[n];if(!i)return!1;const s=normalizeCommands(a,resolveSeparator());return!haveSameCommands(i.pre,s)&&(i.pre=s,o(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(i)}),!0)},setPostCommands(n,a=[]){const i=e[n];if(!i)return!1;const s=normalizeCommands(a,resolveSeparator());return!haveSameCommands(i.post,s)&&(i.post=s,o(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(i)}),!0)}}},chunkCommands=(e=[],t=20)=>{const n=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],a=Math.max(1,Number(t||20)),o=[];for(let i=0;i<n.length;i+=a)o.push(n.slice(i,i+a));return o},chunkCommandsWithTrailing=(e=[],{maxEntries:t=20,trailing:n=[]}={})=>{const a=chunkCommands(e,t),o=chunkCommands(n,t).flat();if(!o.length)return a;if(!a.length)return chunkCommands(o,t);const i=a[a.length-1];return i.length+o.length<=Math.max(1,Number(t||20))?(i.push(...o),a):[...a,...chunkCommands(o,t)]},createQueueFlushApi=({state:e,emit:t,send:n,getRuntimeState:a,getSeparator:o,maxEntriesPerSubmission:i,onQueueFired:s,markStateChanged:l=()=>{}})=>{const buildRemoteClearCommand=e=>`clearqueue ${e.type}`,buildStackPlan=(e=[])=>({type:"stackPlan",commands:e.filter(Boolean).map(e=>String(e))}),markExcludedQueuesCleared=(t=[])=>{t.forEach(t=>{const n=e[t];n&&clearLocalQueueState(n)&&l(t)})},deferQueue=(e,n)=>(markQueueDeferred(n)&&l(e),t("QueueDeferred",{queueId:e,queue:deepClone$1(n)}),[]),flush=(s,c={})=>{const u=e[s];if(!u||!hasQueuedItems(u))return[];const d=a?a():{paused:!1,phase:ne.RUNNING,settings:{}};if(!isRuntimeReadyPhase(d.phase))return deferQueue(s,u);const p=Boolean(d.settings?.queueWhilePaused);if((d.paused||d.rulesSuspended)&&!p)return deferQueue(s,u);const m=buildLogicalCommands(u),g=m.join("");if(!c.force&&g===u.lastSignature)return[];const h=[],b=[];u.exclusions.forEach(t=>{const n=e[t];n&&hasQueuedItems(n)&&(h.push(buildRemoteClearCommand(n)),b.push(t))});const y="function"==typeof o?o():"|",v=chunkCommands(m,Math.max(1,i-h.length)).map((e,t)=>{const n=`queue ${0===t?"addclear":"add"} ${u.type} ${e.join(y)}`;return t>0||!h.length?buildStackPlan([n]):buildStackPlan([...h,n])});return markQueueAwaitingAck(u,g)&&l(s),markExcludedQueuesCleared(b),n(v,{source:"queue-controller",queueId:s,excludedIds:b}),t("QueueFlushed",{queueId:s,plans:v,signature:g}),v};return{flush,clearQueue:a=>{const o=e[a];if(!o)return!1;const i=buildRemoteClearCommand(o);clearLocalQueueState(o)&&l(a),t("QueueCleared",{queueId:a,remote:!0,command:i});const s=[buildStackPlan([i])];return n(s,{source:"queue-controller",queueId:a,remote:!0,action:"clear-queue"}),s},flushDeferred(){const t=[];return Object.keys(e).forEach(n=>{e[n].deferred&&flush(n,{force:!0}).length&&t.push(n)}),t},flushAll(){const t=[];return Object.keys(e).forEach(e=>{const n=flush(e);n.length&&t.push({queueId:e,plans:n})}),t},acknowledgeSent(n,a={}){const o=resolveQueueId(e,n);if(!o)return!1;const i=e[o];return t("QueueSentAcknowledged",{...a,queueId:o,queueType:i?.type||a.queueType||""}),!0},acknowledgeFired(n){const a=resolveQueueId(e,n);if(!a)return!1;const o=e[a],i=o?deepClone$1(o):null;return clearLocalQueueState(e[a])&&l(a),s?.({queueId:a,queue:i}),t("QueueFiredAcknowledged",{queueId:a}),!0}}},createQueueController=({send:e,getRuntimeState:t,getSeparator:n,maxEntriesPerSubmission:a=20,onQueueFired:o}={})=>{const i=new Set,s=createQueueState();let l=0;const c=new Map,markStateChanged=e=>{l+=1,e&&c.set(e,(c.get(e)??0)+1)},emit=(e,t)=>{i.forEach(n=>n(e,t))},buildQueueSnapshot=(e={})=>({id:e.id,name:e.name,type:e.type,pre:[...e.pre||[]],post:[...e.post||[]],exclusions:[...e.exclusions||[]],items:[...e.items||[]],prepend:[...e.prepend||[]],pending:Boolean(e.pending),lastSignature:e.lastSignature||"",deferred:Boolean(e.deferred)}),u=new Map,getQueueSnapshot=e=>s[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>c.get(e)??0,buildSnapshot:()=>buildQueueSnapshot(s[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>l,buildSnapshot:()=>Object.keys(s).reduce((e,t)=>(e[t]=getQueueSnapshot(t),e),{})}),p=createQueueFlushApi({state:s,emit,send:e,getRuntimeState:t,getSeparator:n,maxEntriesPerSubmission:a,onQueueFired:o,markStateChanged}),m=createQueueMutationApi({state:s,emit,flush:p.flush,getSeparator:n,markStateChanged});return{onChange:e=>(i.add(e),()=>i.delete(e)),listQueues:()=>Object.keys(s),getQueue:e=>getQueueSnapshot(e),snapshot:()=>d(),add:m.add,addClear:m.addClear,prepend:m.prepend,clear:m.clear,clearQueue:p.clearQueue,flush:p.flush,flushAll:p.flushAll,flushDeferred:p.flushDeferred,acknowledgeSent:p.acknowledgeSent,acknowledgeFired:p.acknowledgeFired,setPreCommands:m.setPreCommands,setPostCommands:m.setPostCommands}},normalizeRule=(e,t="runtime")=>{if(!e?.id)throw new Error("Rule must include an id");if("function"!=typeof e.evaluate)throw new Error(`Rule "${e.id}" must expose evaluate(context)`);const n=Array.isArray(e.tags)?e.tags.map(e=>String(e).trim().toLowerCase()).filter(Boolean):[];return{id:String(e.id),enabled:!1!==e.enabled,terminal:!0===e.terminal,pack:e.pack||t,tags:n,meta:deepClone$1(e.meta||{}),evaluate:e.evaluate}},stripMasterSwitchSetting=(e={})=>{const{enabled:t,...n}=e||{};return n},mergeOverlay=(e,t={})=>t?(["affPriorities","defPriorities","curePriorities","settings","predictions"].forEach(n=>{if(!t[n])return;const a="settings"===n?stripMasterSwitchSetting(t[n]):t[n];e[n]={...e[n]||{},...a}}),void 0!==t.prioAff&&(e.prioAff=t.prioAff),Array.isArray(t.manualQueue)&&(e.manualQueue=[...t.manualQueue]),t.commands?.length&&(e.commands=[...e.commands||[],...t.commands]),e):e,createEmptyOverlay=()=>({affPriorities:{},defPriorities:{},curePriorities:{},settings:{},predictions:{},commands:[],prioAff:void 0,manualQueue:void 0}),diffRuleActivity=(e,t)=>{const n=[];return e.forEach((e,a)=>{t.has(a)||n.push({...e,from:!0,to:!1})}),t.forEach((t,a)=>{e.has(a)||n.push({...t,from:!1,to:!0})}),n},diffRuleSuspension=(e,t)=>{const n=[];return e.forEach((e,a)=>{e.suspendsCuring&&!t.get(a)?.suspendsCuring&&n.push({...e,from:!0,to:!1})}),t.forEach((t,a)=>{t.suspendsCuring&&!e.get(a)?.suspendsCuring&&n.push({...t,from:!1,to:!0})}),n},createRuleRegistry=(e=[])=>{const t=[],n=new Set,a=new Map,emit=(e,t)=>{n.forEach(n=>{try{n(e,t)}catch(a){console.error("nexSys4 rule registry listener failed",{event:e,error:a})}})},findIndex=e=>t.findIndex(t=>t.id===e),synthesizeDeactivation=(e,t)=>{const n=String(e);if(!a.has(n))return!1;const o=a.get(n);return a.delete(n),emit("RuleDeactivated",{...o,source:t}),!0},addRule=(e,n={})=>{const a=normalizeRule(e,n.pack);return!(findIndex(a.id)>=0)&&(Number.isInteger(n.index)&&n.index>=0&&n.index<t.length?t.splice(n.index,0,a):t.push(a),emit("RuleAdded",{id:a.id,pack:a.pack}),!0)},removeRule=e=>{const n=findIndex(e);if(n<0)return!1;synthesizeDeactivation(e,"removed");const[a]=t.splice(n,1);return emit("RuleRemoved",{id:a.id,pack:a.pack}),!0},setEnabled=(e,n)=>{const a=findIndex(e);return!(a<0)&&(t[a].enabled!==n&&(t[a].enabled=n,n||synthesizeDeactivation(e,"disabled"),emit(n?"RuleEnabled":"RuleDisabled",{id:e}),!0))},setPackEnabled=(e,n)=>{let a=!1;return t.forEach(t=>{t.pack===e&&(a=setEnabled(t.id,n)||a)}),a},loadPack=(e,t=[])=>{let n=!1;return t.forEach(t=>{n=addRule({...t,pack:e},{pack:e})||n}),n&&emit("RulePackLoaded",{packId:e}),n},unloadPack=e=>{const n=t.filter(t=>t.pack===e).map(e=>e.id);return!!n.length&&(n.forEach(e=>removeRule(e)),emit("RulePackUnloaded",{packId:e,count:n.length}),!0)},reorder=(e=[])=>{if(!Array.isArray(e)||!e.length)return!1;const n=new Set(t.map(e=>e.id)),a=new Set(e);if(e.length!==t.length||a.size!==t.length)return!1;if([...n].some(e=>!a.has(e)))return!1;const o=t.reduce((e,t)=>(e[t.id]=t,e),{});return t.length=0,e.forEach(e=>t.push(o[e])),emit("RuleOrderChanged",{order:[...e]}),!0},evaluate=(e={})=>{const n=createEmptyOverlay(),o=[],i=new Map;for(const a of t){if(!a.enabled)continue;const t=a.evaluate(e);if(t&&(o.push(a.id),i.set(a.id,{id:a.id,pack:a.pack,meta:a.meta,suspendsCuring:!0===t.suspendCuring}),mergeOverlay(n,t),a.terminal))break}n.commands=Array.from(new Set(n.commands||[]));const s=diffRuleActivity(a,i),l=diffRuleSuspension(a,i);return a.clear(),i.forEach((e,t)=>a.set(t,e)),{overlay:n,applied:o,transitions:s,suspendTransitions:l,suspendingRules:[...i.values()].filter(e=>e.suspendsCuring).map(e=>e.id)}};return e.forEach(e=>addRule(e,{pack:e.pack||"general"})),{onChange:e=>(n.add(e),()=>n.delete(e)),addRule,removeRule,enableRule:e=>setEnabled(e,!0),disableRule:e=>setEnabled(e,!1),enablePack:e=>setPackEnabled(e,!0),disablePack:e=>setPackEnabled(e,!1),loadPack,unloadPack,reorder,evaluate,list:()=>t.map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:a.has(e.id),suspendsCuring:Boolean(a.get(e.id)?.suspendsCuring),pack:e.pack,tags:[...e.tags],meta:deepClone$1(e.meta)}))}},createSettingCommand=(e,t)=>Object.freeze({commandId:e,buildCommand:t}),Hn=Object.freeze({afflictions:createSettingCommand("curing-afflictions",e=>`curing afflictions ${boolWord(e)}`),defences:createSettingCommand("curing-defences",e=>`curing defences ${boolWord(e)}`),sipping:createSettingCommand("curing-sipping",e=>`curing sipping ${boolWord(e)}`),transmutation:createSettingCommand("curing-transmutation",e=>`curing transmutation ${boolWord(e)}`),sipHealthAt:createSettingCommand("curing-siphealth",e=>`curing siphealth ${e}`),sipManaAt:createSettingCommand("curing-sipmana",e=>`curing sipmana ${e}`),mossHealthAt:createSettingCommand("curing-mosshealth",e=>`curing mosshealth ${e}`),mossManaAt:createSettingCommand("curing-mossmana",e=>`curing mossmana ${e}`),sipPriority:createSettingCommand("curing-priority-mode",e=>`curing priority ${String(e||"health").toLowerCase()}`),focus:createSettingCommand("curing-focus-enabled",e=>`curing focus ${boolWord(e)}`),focusOverHerbs:createSettingCommand("curing-focus-priority-mode",e=>"curing focus "+(e?"first":"second")),tree:createSettingCommand("curing-tree",e=>{const t=String(e||"on").toLowerCase();return["on","off","custom"].includes(t)?`curing tree ${t}`:null}),useVault:createSettingCommand("curing-usevault",e=>`curing usevault ${boolWord(e)}`),clot:createSettingCommand("curing-useclot",e=>`curing useclot ${boolWord(e)}`),clotAt:createSettingCommand("curing-clotat",e=>`curing clotat ${e}`),fallback:createSettingCommand("curing-fallback",e=>`curing fallback ${boolWord(e)}`),kaidoTransmute:createSettingCommand("curing-kaidotransmute",e=>e?"curing kaidotransmute":null),batch:createSettingCommand("curing-batch",e=>`curing batch ${boolWord(e)}`),fracturesAbove:createSettingCommand("curing-healthaffsabove",e=>`curing healthaffsabove ${e}`),manaThreshold:createSettingCommand("curing-manathreshold",e=>`curing manathreshold ${e}`)}),sameArray=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},mapDiff=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].filter(n=>e[n]!==t[n]),normalizePredictionMap=(e={})=>Array.isArray(e)?e.reduce((e,t)=>(e[t]=!0,e),{}):{...e},toGamePriorityToken=e=>isServersideAffPriorityNumber(e)?String(Number(e)):String(26),createServersideDiffPlanner=({baseline:e={},getBaseline:t,getAffPriorityCommandName:n,getDefPriorityTokens:a}={})=>{const resolveBaseline=()=>"function"==typeof t?t()||{}:e,resolveAffPriorityCommandName=e=>{if("function"==typeof n){const t=n(e);if(t)return String(t)}return String(e)},resolveDefPriorityTokens=(e,t)=>{if(!isServersideAffPriorityNumber(t))return["reset"];if("function"==typeof a){const n=a(e,Number(t));if(Array.isArray(n)&&n.length)return n.map(e=>String(e));if(null!=n&&!1!==n)return[String(n)]}return[String(Number(t))]},normalizeDesiredDefPriority=e=>"RESET"===e||void 0===e?0:isServersideAffPriorityNumber(e)?Number(e):0,build=({desired:e={},observed:t={}}={})=>{const n=resolveBaseline(),a=n.settings||{},o=n.affPriorities||{},i=[],s=[],l=e.settings||{};mapDiff(l,t.settings||{}).sort().forEach(e=>{const t=Hn[e];if(!t)return;const n=t.buildCommand(l[e]);n&&(i.push(n),s.push(`settings:${e}`))});const c=e.affPriorities||{},u=t.affPriorities||{};!0===e.fullPriorityReset&&(i.push("curing priority reset"),s.push("aff-priority:reset-all"));const resolveDesiredAffPriority=e=>{const t=c[e];return"RESET"===t||void 0===t?o[e]??0:t},d=[...new Set([...Object.keys(c),...Object.keys(u)])].filter(e=>canonicalAffPriority(resolveDesiredAffPriority(e))!==canonicalAffPriority(u[e])).sort().map(e=>[e,toGamePriorityToken(resolveDesiredAffPriority(e))]);if(d.length){const e=d.flatMap(([e,t])=>[resolveAffPriorityCommandName(e),String(t)]);i.push(`curing priority ${e.join(" ")}`),d.forEach(([e])=>s.push(`aff-priority:${e}`))}const p=e.defPriorities||{},m=t.defPriorities||{},g=[...new Set([...Object.keys(p),...Object.keys(m)])].filter(e=>normalizeDesiredDefPriority(p[e])!==Number(m[e]??0)).sort().map(e=>{const t=p[e];return"RESET"===t||void 0===t?[e,["reset"],`def-priority-reset:${e}`]:isServersideAffPriorityNumber(t)?[e,resolveDefPriorityTokens(e,t),`def-priority:${e}`]:[e,["reset"],`def-priority-reset:${e}`]});if(g.length){const e=g.flatMap(([e,t])=>[e,...t]);i.push(`curing priority defence ${e.join(" ")}`),g.forEach(([,,e])=>s.push(e))}const h=e.prioAff;h!==t.prioAff&&(h?(i.push(`curing prioaff ${h}`),s.push(`prioaff:${h}`)):(i.push("curing prioaff none"),s.push("prioaff:clear")));const b=e.manualQueue||[];sameArray(b,t.manualQueue||[])||(i.push("curing queue reset"),b.forEach((e,t)=>{i.push(`curing queue insert ${t+1} ${e}`)}),s.push("manual-queue:reconcile"));const y=normalizePredictionMap(e.predictions),v=normalizePredictionMap(t.predictions);return[...new Set([...Object.keys(y),...Object.keys(v)])].sort().forEach(e=>{const t=Boolean(y[e]);t!==Boolean(v[e])&&(i.push(`${t?"curing predict":"curing unpredict"} ${e}`),s.push(`prediction:${e}`))}),{commands:Array.from(new Set(i)),reasonCodes:s,baseSettings:a}};return{build,getBaseSettings:()=>resolveBaseline().settings||{},getBaseAff:()=>resolveBaseline().affPriorities||{},getBaseDef:()=>resolveBaseline().defPriorities||{}}},Wn=Object.freeze({BALANCE:"balance",EQUILIBRIUM:"equilibrium",ENTITY:"entity",FOCUS:"focus",FREE:"free",WRITHE:"writhe"}),hasAny=(e,t)=>e.haveAnAff(t),hasAll=(e,t)=>e.haveAffs(t),emergencyClassRules=e=>{const t={},n=!e.haveBal(Wn.FOCUS)||e.haveAff("impatience");return t.fitness=e.isClass(["Runewarden","Monk","Blademaster","Infernal","Paladin","Sentinel","Druid"])&&e.haveAff("asthma")&&(hasAny(e,["slickness","hellsight"])&&hasAny(e,["paralysis","clumsiness","sensitivity"])||hasAny(e,["damagedhead","mangledhead","damagedleftleg","damagedrightleg"])&&hasAny(e,["paralysis","clumsiness","sensitivity","slickness","hellsight","disloyalty"]))?100:"RESET",t.dragonheal=e.isClass("Dragon")&&hasAll(e,["asthma","slickness","anorexia"])&&n?100:"RESET",t.dragonflex="RESET",e.isClass("Dragon")&&(hasAll(e,["entangled","webbed"])||hasAny(e,["entangled","webbed"])&&(e.haveBal(Wn.BALANCE)&&!e.haveBal(Wn.WRITHE)||e.haveAff("transfixation")))&&(t.dragonflex=100),t.bloodboil=e.isClass("Magi")&&hasAll(e,["asthma","slickness"])&&(hasAny(e,["hypochondria","paralysis"])||e.haveAff("anorexia")&&n)?100:"RESET",t.dwinnu=e.isClass("Bard")&&(hasAll(e,["webbed","entangled"])||hasAny(e,["webbed","entangled"])&&e.haveAff("transfixation"))?100:"RESET",t.salt=e.isClass("Alchemist")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.shrugging=e.isClass("Serpent")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.fool=e.isClass("Occultist")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t.alleviate=e.isClass("Blademaster")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t},createDefaultServersideRulePack=()=>[{id:"aeon-threshold-and-priority",pack:"general",evaluate:e=>e.haveAff("aeon")?{settings:{sipHealthAt:30,sipManaAt:10,mossHealthAt:0,mossManaAt:0,batch:!1,clotAt:5e3},affPriorities:{asthma:3,weariness:4,anorexia:5,impatience:7,paralysis:8}}:null},{id:"focus-balance-priority-shift",pack:"general",evaluate:e=>e.haveBal(Wn.FOCUS)?null:{affPriorities:{stupidity:9,recklessness:12,dizziness:14,shyness:14}}},{id:"scytherus-paralysis",pack:"general",evaluate:e=>hasAll(e,["scytherus","paralysis"])?{affPriorities:{scytherus:2}}:null},{id:"confusion-disrupted",pack:"general",evaluate:e=>hasAll(e,["confusion","disrupted"])&&(e.haveBal(Wn.FOCUS)||e.haveAff("impatience"))&&!e.haveAff("whisperingmadness")?{affPriorities:{confusion:2}}:null},{id:"impatience-snaptrack",pack:"general",evaluate:e=>e.haveAff("impatience")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{impatience:2}}:null},{id:"hypochondria-impatience",pack:"general",evaluate:e=>hasAll(e,["impatience","hypochondria"])?{affPriorities:{hypochondria:1}}:e.haveAff("hypochondria")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{hypochondria:2}}:null},{id:"slickness-asthma-sensitivity-group",pack:"general",evaluate:e=>{const t=hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t&&!e.haveAff("anorexia")?{affPriorities:{slickness:2}}:null}},{id:"asthma-hellsight-slickness",pack:"general",evaluate:e=>{const t=!hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t||hasAll(e,["hellsight","asthma"])?{affPriorities:{asthma:2}}:null}},{id:"darkshade-lightwall",pack:"general",evaluate:e=>e.haveAff("darkshade")&&e.affElapsed("darkshade")>1e4&&e.roomHasItem("a lightwall")?{affPriorities:{darkshade:2}}:null},{id:"prone-sensitivity-legdamage",pack:"general",evaluate:e=>hasAll(e,["prone","sensitivity"])&&hasAny(e,["damagedleftleg","damagedrightleg"])?{affPriorities:{sensitivity:2}}:null},{id:"conflagration-burning",pack:"general",evaluate:e=>{if(!e.haveAff("conflagration")||!hasAny(e,["brokenleftleg","brokenrightleg","damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]))return null;const t=hasAny(e,["damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]);return e.haveAff("prone")&&!t?{affPriorities:{burning:7}}:{affPriorities:{burning:4}}}},{id:"cadmus-focus-toggle",pack:"general",evaluate:e=>({settings:{focus:!e.haveAff("cadmuscurse")}})},{id:"scalded-blindness-defence",pack:"general",evaluate:e=>e.haveAff("scalded")?{defPriorities:{blindness:0}}:null},{id:"class-emergency-cures",pack:"general",evaluate:e=>({curePriorities:emergencyClassRules(e)})}],Gn=Object.freeze(["status","affPriorities","defPriorities"]),Yn=Object.freeze({reportingcommands:"reporting",afflictions:"afflictions",defences:"defences",sipping:"sipping",transmutation:"transmutation",siphealth:"sipHealthAt",siphealthat:"sipHealthAt",sipmana:"sipManaAt",sipmanaat:"sipManaAt",mosshealth:"mossHealthAt",mosshealthat:"mossHealthAt",mossmana:"mossManaAt",mossmanaat:"mossManaAt",priority:"sipPriority",sippriority:"sipPriority",focus:"focus",focusoverherbs:"focusOverHerbs",tree:"tree",usevault:"useVault",useclot:"clot",clot:"clot",clotat:"clotAt",clotabove:"clotAbove",fallback:"fallback",kaidotransmute:"kaidoTransmute",customcuringpriority:"customAffPriority",customdefencepriority:"customDefPriority",batch:"batch",healthaffsabove:"fracturesAbove",fracturesabove:"fracturesAbove",manathreshold:"manaThreshold",insomnia:"insomnia"}),Kn=Object.freeze(new Set(["status","enabled"])),createServersideObservationApi=({state:e,affModel:t,defModel:n,systemModel:a,emit:o,markDirty:i,replaceBucket:s,maybeResolveFullPriorityReset:l,normalizeAffPriorityName:c=e=>String(e||"").toLowerCase()})=>{const getMissingStartupFlags=(t=Object.keys(e.startup.flags))=>t.filter(t=>t in e.startup.flags&&!e.startup.flags[t]),u=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>({...e.startup.flags})}),d=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>{const e=u(),t=getMissingStartupFlags(Gn);return{ready:Object.values(e).every(Boolean),requiredReady:0===t.length,missingRequired:t,flags:e}}}),markStartupCaptured=t=>t in e.startup.flags&&!e.startup.flags[t]&&(s("startup",{...e.startup,flags:{...e.startup.flags,[t]:!0}}),o("ServersideStartupSnapshotCaptured",{topic:t,flags:u()}),!0),updateObservedSetting=(t,n)=>{if(e.observed.settings[t]!==n){if(s("observed",{...e.observed,settings:{...e.observed.settings,[t]:n}}),e.startup.flags.status){const a=e.derived?.settings?.[t];void 0!==a&&"RESET"!==a||s("sessionBaseline",{...e.sessionBaseline,settings:{...e.sessionBaseline.settings,[t]:n}})}i(`observed-setting:${t}`)}},normalizeCaptureSetName=e=>String(e||"").trim().toLowerCase(),isCaptureSetOwned=e=>{const t=e||"";return""===t||"nexsys4-default"===t},completeObservedAffPrioritySnapshot=()=>{const t=e.capture.affPriorities,n=e.capture.prioritySet||"";if(e.capture.affPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(n))return!1;s("observed",{...e.observed,affPriorities:t,prioritySet:n}),l(),i("observed-aff-priority-snapshot")}return markStartupCaptured("affPriorities"),!0},completeObservedDefPrioritySnapshot=()=>{const t=e.capture.defPriorities,n=e.capture.prioritySet||"";if(e.capture.defPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(n))return!1;s("observed",{...e.observed,defPriorities:t,prioritySet:n}),i("observed-def-priority-snapshot")}return markStartupCaptured("defPriorities"),!0},updateObservedQueue=(t=[])=>{const n=t||[],a=e.observed.manualQueue,o=n.length===a.length&&n.every((e,t)=>e===a[t]);markStartupCaptured("queue"),o||(s("observed",{...e.observed,manualQueue:[...n]}),i("observed-manual-queue"))},updateObservedPredictions=(t={})=>{const n=t||{},a=e.observed.predictions,o=Object.keys(n),l=o.length===Object.keys(a).length&&o.every(e=>n[e]===a[e]);markStartupCaptured("predictions"),l||(s("observed",{...e.observed,predictions:{...n}}),i("observed-predictions"))},parseStatusLine=({key:e,value:t})=>{const n=String(e||"").trim();if(Kn.has(n.toLowerCase()))return;const a=Yn[n.toLowerCase()]||n;updateObservedSetting(a,normalizeStatusValue(a,t))};return{markStartupCaptured,resetStartupStatus:()=>{const t=Object.keys(e.startup.flags).reduce((e,t)=>(e[t]=!1,e),{});return e.capture.affPriorities=null,e.capture.defPriorities=null,s("startup",{...e.startup,flags:t}),o("ServersideStartupReset",{flags:u()}),!0},isStartupReady:()=>Object.values(e.startup.flags).every(Boolean),getStartupStatus:()=>d(),getMissingStartupFlags,beginObservedAffPrioritySnapshot:(n="")=>(e.capture.affPriorities=buildObservedAffPriorities(t),e.capture.prioritySet=normalizeCaptureSetName(n),!0),completeObservedAffPrioritySnapshot,updateObservedSetting,updateObservedAffPriority:(t,n)=>{const a=e.capture.affPriorities||e.observed.affPriorities,o=String(t||"").toLowerCase(),u=c(t);if(!u)return!1;if(!Object.prototype.hasOwnProperty.call(a,u))return!1;const d=normalizeServersideAffPriority(n);if(e.capture.affPriorities)return o&&o!==u&&delete a[o],a[u]=d,!0;const p={...e.observed.affPriorities};if(o&&o!==u&&delete p[o],p[u]=d,s("observed",{...e.observed,affPriorities:p}),l(),e.startup.flags.affPriorities){const t=e.derived?.affPriorities?.[u];void 0!==t&&"RESET"!==t||s("sessionBaseline",{...e.sessionBaseline,affPriorities:{...e.sessionBaseline.affPriorities,[u]:d}})}return i(`observed-aff-priority:${u}`),!0},beginObservedDefPrioritySnapshot:(t="")=>(e.capture.defPriorities=buildObservedDefPriorities(n,a.getClass()),e.capture.prioritySet=normalizeCaptureSetName(t),!0),completeObservedDefPrioritySnapshot,updateObservedDefPriority:(t,o)=>{const l=e.capture.defPriorities||e.observed.defPriorities,c=String(t||"").toLowerCase(),u=n.get(c);if(!u?.serverside)return!1;if(!n.isAvailableForClass(c,a.getClass()))return!1;const d="RESET"===String(o).toUpperCase()?0:Number(o);if(!Number.isFinite(d))return!1;if(e.capture.defPriorities)return l[c]=d,!0;if(s("observed",{...e.observed,defPriorities:{...e.observed.defPriorities,[c]:d}}),e.startup.flags.defPriorities){const t=e.derived?.defPriorities?.[c];if(void 0===t||"RESET"===t){const t={...e.sessionBaseline.defPriorities};u.static?delete t[c]:t[c]=d,s("sessionBaseline",{...e.sessionBaseline,defPriorities:t})}}return i(`observed-def-priority:${c}`),!0},updateObservedQueue,updateObservedPredictions,parseStatusLine}},createServersideTransientApi=({state:e,trackables:t,now:n,markDirty:a,emit:o,replaceBucket:i,normalizeAffName:s=e=>String(e||"").toLowerCase()})=>({setTrackable(e,i,s={}){const l=String(e||"").trim();if(!l)return!1;t[l]||(t[l]={have:!1,since:0});const c=Boolean(i);if(t[l].have===c)return!1;const u=n();return t[l].have=c,t[l].since=c?u:0,o(c?"TrackableGot":"TrackableLost",{name:l,label:String(s.label||l),have:c,at:u,since:t[l].since,source:String(s.source||"manual")}),a(`trackable:${l}`),!0},setPrioAff(t){const n=t?s(t):null;return e.transient.prioAff!==n&&(i("transient",{...e.transient,prioAff:n}),a("prioaff"),!0)},clearPrioAff:()=>!!e.transient.prioAff&&(i("transient",{...e.transient,prioAff:null}),a("prioaff-clear"),!0),requestPriorityReset:()=>!e.transient.fullPriorityReset&&(i("transient",{...e.transient,fullPriorityReset:!0}),a("priority-reset-request"),!0),requestStaticDefPriorities(t={}){let n=!1;const o={...e.transient.staticDefRequests};return Object.entries(t||{}).forEach(([e,t])=>{const a=String(e||"").trim().toLowerCase(),i=Number(t);!a||!Number.isInteger(i)||i<1||i>25||o[a]!==i&&(o[a]=i,n=!0)}),n&&(i("transient",{...e.transient,staticDefRequests:o}),a("static-def-request")),n},clearStaticDefPriorities(t){const n=Array.isArray(t)?t.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean):Object.keys(e.transient.staticDefRequests);let o=e.transient.staticDefRequests;n.forEach(t=>{Object.prototype.hasOwnProperty.call(o,t)&&(o===e.transient.staticDefRequests&&(o={...e.transient.staticDefRequests}),delete o[t])});const s=i("transient",{...e.transient,staticDefRequests:o});return s&&a("static-def-clear"),s},addPrediction(t){const n=String(t||"").toLowerCase();return!(!n||e.transient.predictions[n])&&(i("transient",{...e.transient,predictions:{...e.transient.predictions,[n]:!0}}),a(`prediction-add:${n}`),!0)},removePrediction(t){const n=String(t||"").toLowerCase();if(!n||!e.transient.predictions[n])return!1;const o={...e.transient.predictions};return delete o[n],i("transient",{...e.transient,predictions:o}),a(`prediction-remove:${n}`),!0},manualQueueAdd(t){const n=String(t||"").toLowerCase();return!(!n||e.transient.manualQueue.includes(n))&&(i("transient",{...e.transient,manualQueue:[...e.transient.manualQueue,n]}),a("manual-queue-add"),!0)},manualQueueInsert(t,n){const o=String(n||"").toLowerCase(),s=Math.max(1,Math.min(20,Number(t||1)));if(!o||e.transient.manualQueue.includes(o))return!1;const l=[...e.transient.manualQueue];return l.splice(s-1,0,o),i("transient",{...e.transient,manualQueue:l}),a("manual-queue-insert"),!0},manualQueueRemove(t){const n=String(t||"").toLowerCase(),o=e.transient.manualQueue.indexOf(n);if(o<0)return!1;const s=[...e.transient.manualQueue];return s.splice(o,1),i("transient",{...e.transient,manualQueue:s}),a("manual-queue-remove"),!0},manualQueueReset:()=>!!e.transient.manualQueue.length&&(i("transient",{...e.transient,manualQueue:[]}),a("manual-queue-reset"),!0)}),shallowCopyDesired=e=>({settings:{...e.settings},affPriorities:{...e.affPriorities},defPriorities:{...e.defPriorities},curePriorities:{...e.curePriorities},manualQueue:[...e.manualQueue||[]],predictions:{...e.predictions},prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:[...e.injectedCommands||[]],appliedRules:[...e.appliedRules||[]],suspendingRules:[...e.suspendingRules||[]]}),copyRuleTransitionPayload=(e,t)=>({id:e.id,pack:e.pack,meta:e.meta,source:t,suspendsCuring:!0===e.suspendsCuring}),areCommandSequencesEqual=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},createServersideEvaluationApi=({state:e,affModel:t,defModel:n,balanceModel:a,systemModel:o,cureTable:i,ruleRegistry:s,diffPlanner:l,sendCommands:c,emit:u,markDirty:d,replaceBucket:p,refreshRulesBucket:m,now:g,trackables:h,options:b})=>{const clearResolvedPending=()=>{const t=b.pendingTimeoutMs||12e3,n=g();let a=e.pending;for(const[o,i]of e.pending.entries())n-i>t&&(a===e.pending&&(a=new Map(e.pending)),a.delete(o));return p("pending",a)},markPendingCommands=(t=[],n={})=>{const a=t.map(e=>normalizeCommand(e)).filter(e=>e&&isServersideCommand(e));if(a.length){const t=g(),n=new Map(e.pending);a.forEach(e=>n.set(e,t)),p("pending",n)}return a.length&&u("ServersidePendingUpdated",{commands:[...a],context:{...n}}),a},filterServersideDefPriorities=(e={})=>{const t=o.getClass();return Object.entries(e||{}).reduce((e,[a,o])=>{const i=n.get(a);return!i?.serverside||i.static?e:n.isAvailableForClass(a,t)?(e[a]=o,e):e},{})},buildRequestedStaticDefPriorities=()=>{const t=o.getClass(),a=e.transient.staticDefRequests||{};let i=a;const removeRequest=e=>{i===a&&(i={...a}),delete i[e]},s=Object.entries(a).reduce((e,[a,o])=>{const i=n.get(a);if(!i?.static)return removeRequest(a),e;if(n.haveDef(a)||!n.isAvailableForClass(a,t))return removeRequest(a),e;if(!i.serverside)return e;const s=n.getPriority(a),l=isServersideAffPriorityNumber(s)?s:o;return!isServersideAffPriorityNumber(l)||Number(l)>=26?(removeRequest(a),e):(e[a]=Number(l),e)},{});return i!==a&&p("transient",{...e.transient,staticDefRequests:i}),s},emitRuleTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleActivated",{...copyRuleTransitionPayload(e,t)})})},emitRuleSuspendTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleSuspendDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleSuspendActivated",{...copyRuleTransitionPayload(e,t)})})},resolveDesired=()=>{const i=createServersideContext({affModel:t,defModel:n,balanceModel:a,systemModel:o,trackables:h,now:g}),l=s.evaluate(i);return m?.(),p("derived",l.overlay),p("desired",{settings:{...e.sessionBaseline.settings,...l.overlay.settings},affPriorities:mergeWithResets(e.sessionBaseline.affPriorities,l.overlay.affPriorities),defPriorities:{...mergeWithResets(e.sessionBaseline.defPriorities,filterServersideDefPriorities(l.overlay.defPriorities)),...buildRequestedStaticDefPriorities()},curePriorities:mergeWithResets(e.sessionBaseline.curePriorities,l.overlay.curePriorities),manualQueue:Array.isArray(l.overlay.manualQueue)?[...l.overlay.manualQueue]:[...e.transient.manualQueue],predictions:{...e.transient.predictions,...l.overlay.predictions},prioAff:null!==e.transient.prioAff&&void 0!==e.transient.prioAff?e.transient.prioAff:l.overlay.prioAff||null,fullPriorityReset:e.transient.fullPriorityReset,injectedCommands:l.overlay.commands||[],appliedRules:l.applied,suspendingRules:l.suspendingRules||[]}),{desired:e.desired,evaluation:l}};return{markPendingCommands,maybeResolveFullPriorityReset:()=>!!e.transient.fullPriorityReset&&(!!Object.keys(e.sessionBaseline.affPriorities).every(t=>(e.observed.affPriorities[t]??e.sessionBaseline.affPriorities[t])===e.sessionBaseline.affPriorities[t])&&(p("transient",{...e.transient,fullPriorityReset:!1}),u("ServersideFullPriorityResetResolved",{fullPriorityReset:!1}),!0)),evaluate({emitCommands:t=!0,source:n="prompt"}={}){clearResolvedPending();const{desired:a,evaluation:o}=resolveDesired(),i=l.build({desired:a,observed:e.observed});let s=[...a.injectedCommands,...i.commands].filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));const d=Math.max(1,Number(b.maxCommandsPerCycle||40));let m=e.diagnostics.recoveryCounter;s.length>d&&(s=s.slice(0,d),m+=1);const g=(i.commands||[]).filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));let h=g.length&&areCommandSequencesEqual(e.lastDiffCommands||[],g)?e.diagnostics.commandRepeatCounter+1:0,y=e.diagnostics.desyncCounter;return h>=(b.desyncCommandRepeats||3)&&(y+=1,m+=1,s.push("curing status","curing priority list","curing priority defence list","curing queue list","curing predictions"),h=0),t&&s.length&&(c(s,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:n}),markPendingCommands(s,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:n})),e.lastDiffCommands=[...g],p("diagnostics",{...e.diagnostics,lastCommands:[...s],lastReasons:[...i.reasonCodes],desyncCounter:y,recoveryCounter:m,commandRepeatCounter:h}),e.dirty=!1,u("ServersideEvaluated",{source:n,desired:shallowCopyDesired(a),commands:[...s],reasons:[...i.reasonCodes],suspendingRules:[...o.suspendingRules||[]]}),emitRuleSuspendTransitions(o.suspendTransitions,n),emitRuleTransitions(o.transitions,n),{desired:shallowCopyDesired(a),commands:s,reasons:i.reasonCodes}},setBaselineFromRuntime(){const{enabled:a,...s}=o.getBaselineIntent().ss||{},l=o.getClass(),c={...e.baseline,settings:{...e.baseline.settings,...s},affPriorities:buildBaselineAffPriorities(t),defPriorities:buildBaselineDefPriorities(n,l),curePriorities:buildBaselineCurePriorities(i)};p("baseline",c);const u=buildObservedDefPriorities(n,l),m=Object.keys(u).reduce((t,n)=>(t[n]=e.observed.defPriorities[n]??u[n],t),{});p("observed",{...e.observed,defPriorities:m}),p("sessionBaseline",{settings:{...c.settings},affPriorities:{...c.affPriorities},defPriorities:{...c.defPriorities},curePriorities:{...c.curePriorities}}),d("baseline-refresh")},getCurePriority(t){const n=String(t||"").toLowerCase();return e.desired.curePriorities?.[n]??e.baseline.curePriorities[n]??0},observeOutbound:(e=[])=>markPendingCommands(e,{source:"observe-outbound"})}},createServersideCuringSetApi=({state:e,sendCommands:t,markPendingCommands:n,markDirty:a,markStartupCaptured:o,replaceBucket:i})=>{const issueCuringSetCommand=(e,a)=>{const o=normalizeCommand(e);return!!o&&(t([o],{source:"serverside-curingset",reason:a}),n([o],{source:"serverside-curingset",reason:a}),!0)};return{switchCuringSet(t){const n=normalizeSetName(t);if(!n)return!1;const o=issueCuringSetCommand(`curingset switch ${n}`,"switch");return o&&(i("curingsets",{...e.curingsets,activeSet:n}),a("curingset-switch")),o},deleteCuringSet(e){const t=normalizeSetName(e);return!!t&&issueCuringSetCommand(`curingset delete ${t}`,"delete")},observeActiveCuringSet(t){const n=normalizeSetName(t);if(!n||n===normalizeSetName(e.curingsets.activeSet))return!1;const o=i("curingsets",{...e.curingsets,activeSet:n});return o&&a("curingset-active"),o},observeCuringSets({sets:t=[],activeSet:n="",used:s,limit:l}={}){const c=[...new Set((t||[]).map(e=>normalizeSetName(e)).filter(Boolean))],u=normalizeSetName(n),d=Number(s),p=Number(l),m=Number.isFinite(d)?d:e.curingsets.used,g=Number.isFinite(p)?p:e.curingsets.limit,h=e.curingsets.priorSet||(u&&"nexsys4-default"!==u?u:"");i("curingsets",{...e.curingsets,sets:c,activeSet:u,priorSet:h,used:m,limit:g}),o("curingsets"),a("curingset-observed")}}},Qn=new Set(["RuleActivated","RuleDeactivated","RuleAdded","RuleRemoved","RuleEnabled","RuleDisabled","RulePackLoaded","RulePackUnloaded","RuleOrderChanged"]),Zn=Object.freeze(["baseline","sessionBaseline","derived","desired","observed","transient","pending","diagnostics","curingsets","startup","rules"]),areBucketValuesEqual=(e,t)=>{if(Object.is(e,t))return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;if(e instanceof Date||t instanceof Date)return e instanceof Date&&t instanceof Date&&e.getTime()===t.getTime();if(Array.isArray(e)||Array.isArray(t))return!(!Array.isArray(e)||!Array.isArray(t))&&(e.length===t.length&&e.every((e,n)=>areBucketValuesEqual(e,t[n])));if(e instanceof Map||t instanceof Map){if(!(e instanceof Map&&t instanceof Map))return!1;if(e.size!==t.size)return!1;const n=[...e.entries()],a=[...t.entries()];for(let e=0;e<n.length;e+=1){const[t,o]=n[e],[i,s]=a[e];if(!Object.is(t,i)||!areBucketValuesEqual(o,s))return!1}return!0}const n=Object.keys(e),a=Object.keys(t);return n.length===a.length&&n.every(n=>Object.prototype.hasOwnProperty.call(t,n)&&areBucketValuesEqual(e[n],t[n]))},createServersideController=({adapter:e,dispatchCommands:t,affModel:n,defModel:a,balanceModel:o,systemModel:i,cureTable:s={},options:l={}}={})=>{if("function"!=typeof t)throw new Error("createServersideController requires a dispatchCommands function.");const now=()=>e.now(),c=t,u={snapTrack:{have:!1,since:0}},{enabled:d,...p}=i.getBaselineIntent().ss||{},m=createInitialServersideState({baselineSettings:{afflictions:!0,defences:!0,sipping:!0,transmutation:!0,fallback:!0,kaidoTransmute:!1,...p},affModel:n,defModel:a,systemModel:i,cureTable:s}),g=new Set,emit=(e,t)=>{g.forEach(n=>n(e,t))},markDirty=(e="state-change")=>{m.dirty=!0,emit("ServersideDirty",{reason:e})},replaceBucket=(e,t)=>!areBucketValuesEqual(m[e],t)&&(m[e]=t,!0),h=createRuleRegistry(createDefaultServersideRulePack()),refreshRulesBucket=()=>replaceBucket("rules",h.list());refreshRulesBucket();const b=createServersideDiffPlanner({getBaseline:()=>m.baseline,getAffPriorityCommandName:"function"==typeof n?.formatPriorityCommandName?e=>n.formatPriorityCommandName(e):void 0,getDefPriorityTokens:(e,t)=>{const n=[String(Number(t))];return!0===a.get(e)?.preempt&&n.push("preempt"),n}}),y="function"==typeof n?.normalizeName?e=>n.normalizeName(e):e=>String(e||"").toLowerCase(),v="function"==typeof n?.normalizePriorityName?e=>n.normalizePriorityName(e):e=>String(e||"").toLowerCase(),S=createServersideEvaluationApi({state:m,affModel:n,defModel:a,balanceModel:o,systemModel:i,cureTable:s,ruleRegistry:h,diffPlanner:b,sendCommands:c,emit,markDirty,replaceBucket,refreshRulesBucket,now,trackables:u,options:l}),x=createServersideObservationApi({state:m,affModel:n,defModel:a,systemModel:i,emit,markDirty,replaceBucket,maybeResolveFullPriorityReset:S.maybeResolveFullPriorityReset,normalizeAffPriorityName:v}),C=createServersideTransientApi({state:m,trackables:u,now,markDirty,emit,replaceBucket,normalizeAffName:y}),w=createServersideCuringSetApi({state:m,sendCommands:c,markPendingCommands:S.markPendingCommands,markDirty,markStartupCaptured:x.markStartupCaptured,replaceBucket}),requestSnapshotSync=()=>c(["curing status","curing priority list","curing queue list","curing predictions","curingset list","curing priority defence list"],{source:"serverside-snapshot-sync"}),applyLifecycleChange=e=>(e&&markDirty("rule-lifecycle"),e);h.onChange((e,t)=>{refreshRulesBucket(),Qn.has(e)?emit(e,t):markDirty("rule-engine-change")});const copyRecord=(e={})=>({...e||{}}),copyArray=(e=[])=>[...e||[]],copyRuleOverlay=(e={})=>({affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),settings:copyRecord(e.settings),predictions:copyRecord(e.predictions),commands:copyArray(e.commands),prioAff:e.prioAff,manualQueue:Array.isArray(e.manualQueue)?[...e.manualQueue]:void 0}),copyDesiredSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:copyArray(e.injectedCommands),appliedRules:copyArray(e.appliedRules),suspendingRules:copyArray(e.suspendingRules)}),copyObservedSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioritySet:e.prioritySet||""}),copyTransientSnapshot=(e={})=>({prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),staticDefRequests:copyRecord(e.staticDefRequests),fullPriorityReset:Boolean(e.fullPriorityReset)}),copyDiagnosticsSnapshot=(e={})=>({lastCommands:copyArray(e.lastCommands),lastReasons:copyArray(e.lastReasons),desyncCounter:Number(e.desyncCounter||0),recoveryCounter:Number(e.recoveryCounter||0),commandRepeatCounter:Number(e.commandRepeatCounter||0)}),copyCuringSetSnapshot=(e={})=>({sets:copyArray(e.sets),activeSet:e.activeSet||"",priorSet:e.priorSet||"",used:Number(e.used||0),limit:Number(e.limit||0)}),copyRulesSnapshot=(e=[])=>(e||[]).map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:e.isActive,suspendsCuring:Boolean(e.suspendsCuring),pack:e.pack,tags:Array.isArray(e.tags)?[...e.tags]:[],meta:deepClone$1(e.meta||{})})),k=createSnapshotCache({getVersion:()=>m.baseline,buildSnapshot:()=>({settings:copyRecord(m.baseline.settings),affPriorities:copyRecord(m.baseline.affPriorities),defPriorities:copyRecord(m.baseline.defPriorities),curePriorities:copyRecord(m.baseline.curePriorities)})}),E=createSnapshotCache({getVersion:()=>m.sessionBaseline,buildSnapshot:()=>({settings:copyRecord(m.sessionBaseline.settings),affPriorities:copyRecord(m.sessionBaseline.affPriorities),defPriorities:copyRecord(m.sessionBaseline.defPriorities),curePriorities:copyRecord(m.sessionBaseline.curePriorities)})}),P=createSnapshotCache({getVersion:()=>m.derived,buildSnapshot:()=>copyRuleOverlay(m.derived)}),T=createSnapshotCache({getVersion:()=>m.desired,buildSnapshot:()=>copyDesiredSnapshot(m.desired)}),R=createSnapshotCache({getVersion:()=>m.observed,buildSnapshot:()=>copyObservedSnapshot(m.observed)}),M=createSnapshotCache({getVersion:()=>m.transient,buildSnapshot:()=>copyTransientSnapshot(m.transient)}),D=createSnapshotCache({getVersion:()=>m.pending,buildSnapshot:()=>[...m.pending.entries()]}),O=createSnapshotCache({getVersion:()=>m.diagnostics,buildSnapshot:()=>copyDiagnosticsSnapshot(m.diagnostics)}),$=createSnapshotCache({getVersion:()=>m.curingsets,buildSnapshot:()=>copyCuringSetSnapshot(m.curingsets)}),I={baseline:k,sessionBaseline:E,derived:P,desired:T,observed:R,transient:M,pending:D,diagnostics:O,curingsets:$,startup:createSnapshotCache({getVersion:()=>m.startup,buildSnapshot:()=>({flags:copyRecord(m.startup.flags)})}),rules:createSnapshotCache({getVersion:()=>m.rules,buildSnapshot:()=>copyRulesSnapshot(m.rules)})};let N=null;const getSnapshot=()=>{const e=Zn.reduce((e,t)=>(e[t]=I[t](),e),{});return N&&Zn.every(t=>N[t]===e[t])||(N=deepFreeze(e)),N},acknowledgeCommand=e=>acknowledgeCommands([e]),acknowledgeCommands=(e=[])=>{let t=m.pending;return e.forEach(e=>{const n=normalizeCommand(e);n&&t.has(n)&&(t===m.pending&&(t=new Map(m.pending)),t.delete(n))}),replaceBucket("pending",t)};return{onChange:e=>(g.add(e),()=>g.delete(e)),markDirty,evaluate:S.evaluate,isDirty:()=>m.dirty,getTransientPrioAff:()=>m.transient.prioAff,getStaticDefRequests:()=>M().staticDefRequests,getObserved:()=>R(),getCuringSets:()=>$(),snapshot:()=>getSnapshot(),isStartupReady:x.isStartupReady,getStartupStatus:x.getStartupStatus,getMissingStartupFlags:x.getMissingStartupFlags,markStartupCaptured:x.markStartupCaptured,resetStartupStatus:x.resetStartupStatus,setBaselineFromRuntime:S.setBaselineFromRuntime,getCurePriority:S.getCurePriority,requestSnapshotSync,beginObservedAffPrioritySnapshot:x.beginObservedAffPrioritySnapshot,completeObservedAffPrioritySnapshot:x.completeObservedAffPrioritySnapshot,updateObservedSetting:x.updateObservedSetting,updateObservedAffPriority:x.updateObservedAffPriority,beginObservedDefPrioritySnapshot:x.beginObservedDefPrioritySnapshot,completeObservedDefPrioritySnapshot:x.completeObservedDefPrioritySnapshot,updateObservedDefPriority:x.updateObservedDefPriority,updateObservedQueue:x.updateObservedQueue,updateObservedPredictions:x.updateObservedPredictions,parseStatusLine:x.parseStatusLine,setTrackable:C.setTrackable,setPrioAff:C.setPrioAff,clearPrioAff:C.clearPrioAff,requestPriorityReset:C.requestPriorityReset,requestStaticDefPriorities:C.requestStaticDefPriorities,clearStaticDefPriorities:C.clearStaticDefPriorities,addPrediction:C.addPrediction,removePrediction:C.removePrediction,manualQueueAdd:C.manualQueueAdd,manualQueueInsert:C.manualQueueInsert,manualQueueRemove:C.manualQueueRemove,manualQueueReset:C.manualQueueReset,switchCuringSet:w.switchCuringSet,deleteCuringSet:w.deleteCuringSet,observeCuringSets:w.observeCuringSets,observeActiveCuringSet:w.observeActiveCuringSet,acknowledgeCommand,acknowledgeCommands,markPendingCommands:S.markPendingCommands,observeOutbound:S.observeOutbound,lifecycle:{add:(e,t)=>applyLifecycleChange(h.addRule(e,t)),remove:e=>applyLifecycleChange(h.removeRule(e)),enable:e=>applyLifecycleChange(h.enableRule(e)),disable:e=>applyLifecycleChange(h.disableRule(e)),enablePack:e=>applyLifecycleChange(h.enablePack(e)),disablePack:e=>applyLifecycleChange(h.disablePack(e)),load:(e,t)=>applyLifecycleChange(h.loadPack(e,t)),unload:e=>applyLifecycleChange(h.unloadPack(e)),reorder:e=>applyLifecycleChange(h.reorder(e)),list:()=>h.list()}}},createCommandDispatcher=({adapter:e}={})=>{const t=[],n=200,isDebugEnabled=()=>"function"==typeof e?.isDebugEnabled&&e.isDebugEnabled(),normalizeCommands=(e=[])=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],resolveSeparator=()=>("function"==typeof e?.getCommandSeparator?e.getCommandSeparator():"|")||"|",normalizeStackPlan=e=>{if(e&&"object"==typeof e&&!Array.isArray(e)){if("stackPlan"!==e.type)return null;const t=normalizeCommands(e.commands);return t.length?{type:"stackPlan",commands:t}:null}const t=normalizeCommands(e);return t.length?{type:"stackPlan",commands:t}:null},normalizeStackPlans=(e=[])=>{if(Array.isArray(e))return e.map(normalizeStackPlan).filter(Boolean);const t=normalizeStackPlan(e);return t?[t]:[]},serializeStackPlan=e=>e.commands.join(resolveSeparator()),recordDispatch=({mode:a,commands:o=[],context:i={},stackIndex:s=1,stackCount:l=1,stackPlan:c=null}={})=>{const u=normalizeCommands(o);if(!u.length)return[];const d={mode:a,commands:[...u],context:{...i},at:e.now(),stackIndex:s,stackCount:l,stackPlan:c?{type:c.type,commands:[...c.commands]}:null};return t.push(d),!isDebugEnabled()&&t.length>n&&t.splice(0,t.length-n),u},sendCommands=(t=[],n={})=>{const a=recordDispatch({mode:"commands",commands:t,context:n});return a.length?(e.send(a,n),a):[]};return{send:sendCommands,sendCommands,sendStackPlan:(t=[],n={})=>{const a=normalizeStackPlans(t);return a.length?(a.forEach((t,o)=>{const i={...n,stackIndex:o+1,stackCount:a.length};recordDispatch({mode:"stack-plan",commands:t.commands,context:i,stackIndex:o+1,stackCount:a.length,stackPlan:t}),e.send(serializeStackPlan(t),i)}),a.map(e=>({type:e.type,commands:[...e.commands]}))):[]},normalizeCommands,history:()=>t.map(e=>({mode:e.mode,commands:[...e.commands],context:{...e.context},at:e.at,stackIndex:e.stackIndex,stackCount:e.stackCount,stackPlan:e.stackPlan?{type:e.stackPlan.type,commands:[...e.stackPlan.commands]}:null}))}},Xn=Object.freeze({freeQueue:[{balanceId:Wn.BALANCE,minDurationMs:250},{balanceId:Wn.EQUILIBRIUM,minDurationMs:250}],fullQueue:[{balanceId:Wn.BALANCE,minDurationMs:250},{balanceId:Wn.EQUILIBRIUM,minDurationMs:250}],classQueue:[{balanceId:Wn.ENTITY,minDurationMs:500}]}),createQueueFiredSideEffects=({balanceModel:e,now:t})=>({queueId:n})=>{const a=Xn[n]||[];if(!a.length)return[];const o=t();return a.filter(({balanceId:t,minDurationMs:n})=>!1===e.have(t)&&e.computeDurationMs(t)>Number(n||0)).map(({balanceId:t})=>(e.restartLossTimer(t,`queue-fired-resync:${n}`,o),t))},createDomainControllers=({adapter:e,seedData:t,options:n={},now:a,models:o})=>{const{systemModel:i,affModel:s,balanceModel:l,defModel:c,cacheModel:u}=o,d=createCommandDispatcher({adapter:e}),p=createQueueFiredSideEffects({balanceModel:l,now:a}),m=createQueueController({send:d.sendStackPlan,getRuntimeState:()=>{const e=i.getRuntime();return{paused:e.paused,phase:e.phase,settings:i.getSettings()}},getSeparator:()=>i.getSettings().commandSeparator,maxEntriesPerSubmission:Number(n.maxEntriesPerSubmission||20),onQueueFired:p}),g=createServersideController({adapter:e,dispatchCommands:d.sendCommands,affModel:s,defModel:c,balanceModel:l,systemModel:i,cureTable:t.cureTable,options:{maxCommandsPerCycle:Number(n.maxSsCommandsPerCycle||40)}}),h=createDefensePlanner({defModel:c,balanceModel:l,affModel:s,systemModel:i}),b=createPrecachePlanner({cacheModel:u});return{commandDispatcher:d,queueController:m,serverside:g,defensePlanner:h,precachePlanner:b,outputPlanner:createOutputPlanner({systemModel:i,serverside:g,defensePlanner:h,precachePlanner:b})}},secondsToMs$1=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds$1=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createBalanceState=(e={})=>{const t={};return Object.entries(e||{}).forEach(([e,n])=>{t[e]={id:e,have:!0,baseDurationMs:secondsToMs$1(n.length),config:deepFreeze(deepClone$1(n||{})),lastLostAtMs:0,lastGotAtMs:0,activeDurationMs:0,expectedReadyAtMs:0,lastRecoveredDurationMs:0,lastServerDurationMs:0,callbacks:{},timer:null}}),t},createBalancePayload=(e,t={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastServerDurationMs:e.lastServerDurationMs,...t}),createBalanceMutationApi=({state:e,emit:t,now:n,setTimeoutFn:a,clearTimeoutFn:o,computeDurationMs:i})=>{const clearTimer=e=>{e.timer&&(o?.(e.timer),e.timer=null)},normalizeDurationMs=(e={},t=0)=>Number.isFinite(Number(e.durationMs))?Math.max(0,Math.round(Number(e.durationMs))):Number.isFinite(Number(e.durationSeconds))?secondsToMs$1(e.durationSeconds):Math.max(0,Math.round(Number(t)||0)),s=1e3,scheduleRecovery=(e,t)=>{clearTimer(e),!a||e.have||e.expectedReadyAtMs<=0||(e.timer=a(()=>{gain(e.id,"timer",n())},Math.max(0,e.expectedReadyAtMs+s-t)))},applyServerDuration=(e,t)=>{e.lastServerDurationMs=t},emitDurationObserved=(e,n,a,o)=>{t("BalanceDurationObserved",createBalancePayload(e,{source:o,atMs:a,durationMs:n,durationSeconds:msToSeconds$1(n)}))},createTimingPayload=(e,t,n,a)=>createBalancePayload(e,{reason:t,atMs:n,durationMs:a,durationSeconds:msToSeconds$1(a)});function gain(a,o="manual",i=n()){const s=e[a];if(!s||s.have)return!1;const l=s.activeDurationMs;return s.have=!0,s.lastGotAtMs=i,s.lastRecoveredDurationMs=Math.max(0,i-s.lastLostAtMs),s.activeDurationMs=0,s.expectedReadyAtMs=0,clearTimer(s),s.callbacks.onStop?.(s),t("BalanceGot",createTimingPayload(s,o,i,s.lastRecoveredDurationMs||l)),!0}const lose=(a,o="manual",s=n(),l={})=>{const c=e[a];if(!c||!c.have)return!1;const u=normalizeDurationMs(l,i(a));return c.have=!1,c.lastLostAtMs=s,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?s+u:0,!0===l.serverDuration&&applyServerDuration(c,u),c.callbacks.onStart?.(c),!1!==l.autoRegain?scheduleRecovery(c,s):clearTimer(c),t("BalanceLost",createTimingPayload(c,o,s,u)),!0},observeServerUse=(t,a,o={})=>{const i=e[t],s=secondsToMs$1(a);if(!i||s<=0)return!1;const l=o.atMs??o.at??n(),c=String(o.source||"serverside-duration");if(i.have){const e=lose(t,c,l,{durationMs:s,serverDuration:!0,autoRegain:o.autoRegain});return e&&emitDurationObserved(i,s,l,c),e}return applyServerDuration(i,s),i.activeDurationMs=s,i.expectedReadyAtMs=i.lastLostAtMs+s,!1!==o.autoRegain?scheduleRecovery(i,l):clearTimer(i),emitDurationObserved(i,s,l,c),!0};return{gain,lose,restartLossTimer:(a,o="manual",s=n(),l={})=>{const c=e[a];if(!c||c.have)return!1;const u=normalizeDurationMs(l,i(a));return c.lastLostAtMs=s,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?s+u:0,!0===l.serverDuration&&applyServerDuration(c,u),!1!==l.autoRegain?scheduleRecovery(c,s):clearTimer(c),t("BalanceLossTimerRestarted",createTimingPayload(c,o,s,u)),!0},observeServerUse,reset(a,o="reset"){const i=e[a];return!!i&&(clearTimer(i),i.have=!0,i.lastGotAtMs=n(),i.activeDurationMs=0,i.expectedReadyAtMs=0,i.callbacks.onReset?.(i),t("BalanceReset",createBalancePayload(i,{reason:o})),!0)},setCallback(t,n={}){const a=e[t];return!!a&&(a.callbacks={...a.callbacks,...n},!0)},applyVitals(t={}){const a=toParsedGmcpVitals(t);a.balancePatches.forEach(({id:e,have:t})=>{if(!e||void 0===t)return;const a=n();t?gain(e,"gmcp-vitals",a):lose(e,"gmcp-vitals",a)}),a.resourceStats.forEach(({key:t,balanceState:a})=>{e[t]&&void 0!==a&&(a?gain(t,"gmcp-charstat",n()):lose(t,"gmcp-charstat",n()))})},dispose(){Object.values(e).forEach(clearTimer)}}},createBalanceQueryApi=({state:e,now:t,haveAff:n,getVersion:a=()=>0,getEntryVersion:o=()=>a()})=>{const buildEntrySnapshot=(e={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,baseDurationSeconds:msToSeconds$1(e.baseDurationMs),config:e.config,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,activeDurationSeconds:msToSeconds$1(e.activeDurationMs),expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(e.lastRecoveredDurationMs),lastServerDurationMs:e.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(e.lastServerDurationMs)}),i=new Map,getEntrySnapshot=t=>e[t]?(i.has(t)||i.set(t,createSnapshotCache({getVersion:()=>o(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),i.get(t)()):null,s=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),computeDurationMs=t=>{const a=e[t];if(!a)return 0;let o=Number(a.baseDurationMs||0);const i=a.config.aff_modifiers||{};return Object.entries(i).forEach(([e,t])=>{if(!n(e))return;const a=Number(t.multiplier??1),i=secondsToMs$1(t.offset??0);o=Math.round(o*a+i)}),Math.max(0,o)},elapsedMs=(n,a=t())=>{const o=e[n];return o?o.have?Math.max(0,a-o.lastGotAtMs):Math.max(0,a-o.lastLostAtMs):0},remainingMs=(n,a=t())=>{const o=e[n];return!o||o.have?0:o.expectedReadyAtMs>0?Math.max(0,o.expectedReadyAtMs-a):Math.max(0,o.activeDurationMs-elapsedMs(n,a))},timing=(n,a=t())=>{const o=e[n];if(!o)return null;const i=elapsedMs(n,a),s=remainingMs(n,a),l=computeDurationMs(n);return{id:o.id,have:o.have,atMs:a,elapsedMs:i,elapsedSeconds:msToSeconds$1(i),remainingMs:s,remainingSeconds:msToSeconds$1(s),baseDurationMs:o.baseDurationMs,baseDurationSeconds:msToSeconds$1(o.baseDurationMs),computedDurationMs:l,computedDurationSeconds:msToSeconds$1(l),activeDurationMs:o.activeDurationMs,activeDurationSeconds:msToSeconds$1(o.activeDurationMs),expectedReadyAtMs:o.expectedReadyAtMs,lastLostAtMs:o.lastLostAtMs,lastGotAtMs:o.lastGotAtMs,lastRecoveredDurationMs:o.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(o.lastRecoveredDurationMs),lastServerDurationMs:o.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(o.lastServerDurationMs)}};return{list:()=>Object.keys(e),snapshot:()=>s(),get:e=>getEntrySnapshot(e),have:t=>Boolean(e[t]?.have),elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,n=t())=>msToSeconds$1(elapsedMs(e,n)),remaining:remainingMs,remainingMs,remainingSeconds:(e,n=t())=>msToSeconds$1(remainingMs(e,n)),timing,computeDuration:computeDurationMs,computeDurationMs,computeDurationSeconds:e=>msToSeconds$1(computeDurationMs(e))}},createBalanceModel=({balanceTable:e,now:t,setTimeoutFn:n,clearTimeoutFn:a,haveAff:o=()=>!1}={})=>{const i=createBalanceState(e),s=new Set;let l=0;const c=new Map,emit=(e,t)=>{l+=1,t?.id&&c.set(t.id,(c.get(t.id)??0)+1),s.forEach(n=>n(e,t))},u=createBalanceQueryApi({state:i,now:t,haveAff:o,getVersion:()=>l,getEntryVersion:e=>c.get(e)??0}),d=createBalanceMutationApi({state:i,emit,now:t,setTimeoutFn:n,clearTimeoutFn:a,computeDurationMs:u.computeDurationMs});return{onChange:e=>(s.add(e),()=>s.delete(e)),list:u.list,snapshot:u.snapshot,get:u.get,have:u.have,elapsed:u.elapsed,elapsedMs:u.elapsedMs,elapsedSeconds:u.elapsedSeconds,remaining:u.remaining,remainingMs:u.remainingMs,remainingSeconds:u.remainingSeconds,timing:u.timing,computeDuration:u.computeDuration,computeDurationMs:u.computeDurationMs,computeDurationSeconds:u.computeDurationSeconds,gain:d.gain,lose:d.lose,restartLossTimer:d.restartLossTimer,observeServerUse:d.observeServerUse,reset:d.reset,setCallback:d.setCallback,applyVitals:d.applyVitals,dispose:d.dispose}},asSet=(e={})=>Array.isArray(e)?new Set(e.map(e=>String(e).toLowerCase())):new Set(Object.keys(e).map(e=>String(e).toLowerCase())),Jn=0,ea=1,createAfflictionReference=(e,t={})=>{const n=String(e||"").trim().toLowerCase();if(!n)return{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!1};if(t[n])return{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!0};const a=n.match(/^(.*?)(?:\s*\((\d+)\)|(\d+))$/),o=Number(a?.[2]??a?.[3]),i=a?.[1]?.trim();return a&&t[i]?{raw:n,name:i,count:o,hasExplicitCount:!0,isCountable:!0}:{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!1}},normalizeAfflictionName=(e,t={})=>createAfflictionReference(e,t).name,normalizeAfflictionPriorityName=(e,t={})=>{const n=createAfflictionReference(e,t);return n.isCountable&&n.hasExplicitCount&&Number(n.count)>1?`${n.name}${n.count}`:n.name},formatAfflictionPriorityCommandName=(e,t={})=>{const n=createAfflictionReference(e,t);return n.isCountable?n.hasExplicitCount?`${n.name}${n.count}`:`${n.name}1`:n.name},createAffEntry=(e,t,n,a=null)=>({name:e,have:!1,count:0,min:Number(a?.min??Jn),max:Number(a?.max??ea),since:0,lastChangeAt:0,order:t,defaultPriority:n,priorityOverride:null,timer:null}),createInitialAfflictionState=(e={})=>{const t=e.types?.countable||{},n=[...e.list||[]].reduce((e,n)=>{const a=normalizeAfflictionName(n,t);return a&&!e.includes(a)&&e.push(a),e},[]),a=Object.entries(e.prios||{}).reduce((e,[n,a])=>{const o=normalizeAfflictionName(n,t);return o&&(e[o]=a),e},{}),o={};return n.forEach((e,n)=>{o[e]=createAffEntry(e,n,a[e]??100,t[e]||null)}),{list:n,defaultPrios:a,state:o,timedConfig:e.types?.timed||{},countableConfig:t,uncurableSet:asSet(e.types?.uncurable||{})}},ensureAffEntry=(e,t,n={},a)=>{const o=normalizeAfflictionName(a,n);return e[o]||(e[o]=createAffEntry(o,Object.keys(e).length,t[o]??100,n[o]||null)),e[o]},toPriorityNumber=e=>{const t=Number(e);return Number.isFinite(t)?t:null},getPriorityValue=e=>e?e.priorityOverride??e.defaultPriority:null,getDefaultPriorityValue=e=>e?.defaultPriority??null,setPriorityValue=(e,t)=>e.priorityOverride===t?{changed:!1,priority:t}:(e.priorityOverride=t,{changed:!0,priority:t}),resetPriorityValue=e=>{const t=e.defaultPriority;return null===e.priorityOverride||void 0===e.priorityOverride?{changed:!1,priority:t}:(e.priorityOverride=null,{changed:!0,priority:t})},setDefaultPriorityValue=(e,t,{shouldSyncCurrentPriorityToDefault:n=e=>null===e.priorityOverride||void 0===e.priorityOverride,syncCurrentPriorityToDefault:a=()=>{}}={})=>{const o=e.defaultPriority;if(o===t)return{changed:!1,currentChanged:!1,priority:t,previousDefaultPriority:o};const i=n(e);return e.defaultPriority=t,i&&a(e,t),{changed:!0,currentChanged:i,priority:t,previousDefaultPriority:o}},createAfflictionPriorityApi=({state:e,defaultPrios:t,countableConfig:n,emit:a})=>{const getEntry=(a,{ensure:o=!1}={})=>o?ensureAffEntry(e,t,n,a):e[normalizeAfflictionName(a,n)]||null;return{ensureAff:e=>getEntry(e,{ensure:!0}),getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):100},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):100},setPriority(e,t,n="manual"){const o=toPriorityNumber(t);if(null===o)return!1;const i=getEntry(e,{ensure:!0}),s=setPriorityValue(i,o);return!!s.changed&&(a("AffPriorityChanged",{name:i.name,source:n,priority:s.priority,defaultPriority:i.defaultPriority}),!0)},resetPriority(e,t="manual"){const n=getEntry(e,{ensure:!0}),o=resetPriorityValue(n);return!!o.changed&&(a("AffPriorityChanged",{name:n.name,source:t,priority:o.priority,defaultPriority:n.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,t,n="manual"){const o=toPriorityNumber(t);if(null===o)return!1;const i=getEntry(e,{ensure:!0}),s=setDefaultPriorityValue(i,o);return!!s.changed&&(a("AffDefaultPriorityChanged",{name:i.name,source:n,priority:s.priority,previousDefaultPriority:s.previousDefaultPriority,currentPriority:getPriorityValue(i)}),s.currentChanged&&a("AffPriorityChanged",{name:i.name,source:n,priority:s.priority,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createAfflictionLifecycleApi=({state:e,defaultPrios:t,timedConfig:n,countableConfig:a,emit:o,now:i,setTimeoutFn:s,clearTimeoutFn:l})=>{const clearTimer=e=>{e.timer&&(l?.(e.timer),e.timer=null)},emitAffGot=(e,t,n)=>{o("AffGot",{name:e.name,at:t,source:n,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitAffLost=(e,t,n)=>{o("AffLost",{name:e.name,at:t,source:n,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitStackChanged=(e,t)=>{o("AffStackChanged",{name:e.name,count:e.count,min:e.min,max:e.max,have:e.have,at:t})},clampCount=(e,t)=>{const n=Number(t);return Number.isFinite(n)?Math.max(e.min,Math.min(e.max,n)):e.count},scheduleTimedExpiry=e=>{const t=n[e.name];if(!t)return;clearTimer(e);const a=Math.round(1e3*Number(t.length||0));a<=0||!s||(e.timer=s(()=>{lose(e.name,{source:"timed-expiry",at:i()})},a))},applyCountableState=(e,t,n={})=>{const a=n.at??i(),o=n.source||"manual",s=e.have;return e.count=clampCount(e,t),e.have=e.count>0,e.have&&!s&&(e.since=a),e.lastChangeAt=a,emitStackChanged(e,a),!s&&e.have?emitAffGot(e,a,o):s&&!e.have&&emitAffLost(e,a,o),s},got=(n,o={})=>{const s=createAfflictionReference(n,a),l=ensureAffEntry(e,t,a,s.name),c=o.at??i(),u=o.source||"manual",d=l.have;if(a[l.name]){const e=Number(o.count);return applyCountableState(l,Number.isFinite(e)?e:s.hasExplicitCount?s.count:l.count+Number(o.countDelta??1),{at:c,source:u}),l.have?scheduleTimedExpiry(l):clearTimer(l),!0}return!d&&(l.have=!0,l.count=1,l.since=c,l.lastChangeAt=c,scheduleTimedExpiry(l),emitAffGot(l,c,u),!0)},lose=(n,o={})=>{const s=ensureAffEntry(e,t,a,createAfflictionReference(n,a).name),l=o.at??i(),c=o.source||"manual",u=s.have;if(a[s.name]){const e=Number(o.count);return applyCountableState(s,Number.isFinite(e)?e:Number.isFinite(Number(o.countDelta))?s.count-Math.abs(Number(o.countDelta)):0,{at:l,source:c}),clearTimer(s),!0}return!!u&&(s.have=!1,s.count=0,s.lastChangeAt=l,clearTimer(s),emitAffLost(s,l,c),!0)};return{got,lose,applyList(t=[]){const n=new Set,o=new Map,i=new Set;(t||[]).forEach(e=>{const t=createAfflictionReference("string"==typeof e?e:String(e?.name||e?.affliction||e||""),a);if(t.name){if(a[t.name])return t.hasExplicitCount?(i.add(t.name),void o.set(t.name,Math.max(o.get(t.name)??0,t.count))):void(i.has(t.name)||o.set(t.name,(o.get(t.name)??0)+1));n.add(t.name)}}),Object.keys(e).forEach(t=>{a[t]?o.has(t)?got(t,{source:"gmcp-list",count:o.get(t)}):(e[t].have||e[t].count>0)&&lose(t,{source:"gmcp-list"}):n.has(t)?got(t,{source:"gmcp-list"}):e[t].have&&lose(t,{source:"gmcp-list"})})},dispose(){Object.values(e).forEach(clearTimer)}}},secondsToMs=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createAfflictionQueryApi=({state:e,list:t,timedConfig:n,countableConfig:a,uncurableSet:o,getPriority:i,now:s,getVersion:l=()=>0,getEntryVersion:c=()=>l()})=>{const buildEntrySnapshot=(e={})=>({name:e.name,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride}),u=new Map,getEntrySnapshot=t=>e[t]?(u.has(t)||u.set(t,createSnapshotCache({getVersion:()=>c(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),u.get(t)()):null,d=createSnapshotCache({getVersion:l,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),elapsedMs=(t,n=s())=>{const o=e[normalizeAfflictionName(t,a)];return o?.have?Math.max(0,n-o.since):0},durationMs=e=>{const t=n[normalizeAfflictionName(e,a)];return t?secondsToMs(t.length):0},remainingMs=(t,n=s())=>{const o=normalizeAfflictionName(t,a),i=e[o],l=durationMs(o);return!i?.have||l<=0?0:Math.max(0,l-elapsedMs(o,n))},timing=(t,n=s())=>{const o=normalizeAfflictionName(t,a),i=e[o];if(!i)return null;const l=elapsedMs(o,n),c=durationMs(o),u=remainingMs(o,n);return{name:o,have:i.have,atMs:n,sinceMs:i.since,lastChangeAtMs:i.lastChangeAt,elapsedMs:l,elapsedSeconds:msToSeconds(l),timedDurationMs:c,timedDurationSeconds:msToSeconds(c),remainingMs:u,remainingSeconds:msToSeconds(u)}};return{snapshot:()=>d(),get:e=>getEntrySnapshot(normalizeAfflictionName(e,a)),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],getCountablePriorityNames:()=>Object.entries(a).flatMap(([e,t])=>{const n=Math.max(0,Number(t?.max??0)),a=[];for(let o=2;o<=n;o+=1)a.push(`${e}${o}`);return a}),normalizeName:e=>normalizeAfflictionName(e,a),normalizePriorityName:e=>normalizeAfflictionPriorityName(e,a),formatPriorityCommandName:e=>formatAfflictionPriorityCommandName(e,a),haveAff(t){const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)},haveAffs:(t=[])=>t.every(t=>{const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)}),haveAnAff:(t=[])=>t.some(t=>{const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)}),currentSorted:()=>Object.values(e).filter(e=>e.have).sort((e,t)=>{const n=i(e.name),a=i(t.name);return n!==a?n-a:e.order-t.order}).map(e=>e.name),isCountable(e){const t=normalizeAfflictionName(e,a);return Boolean(a[t])},isTimed(e){const t=normalizeAfflictionName(e,a);return Boolean(n[t])},isUncurable(e){const t=normalizeAfflictionName(e,a);return o.has(t)},elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,t=s())=>msToSeconds(elapsedMs(e,t)),remaining:remainingMs,remainingMs,remainingSeconds:(e,t=s())=>msToSeconds(remainingMs(e,t)),timing}},createAfflictionModel=({affTable:e,now:t,setTimeoutFn:n,clearTimeoutFn:a}={})=>{const{list:o,defaultPrios:i,state:s,timedConfig:l,countableConfig:c,uncurableSet:u}=createInitialAfflictionState(e),d=new Set;let p=0;const m=new Map,emit=(e,t)=>{p+=1,t?.name&&m.set(t.name,(m.get(t.name)??0)+1),d.forEach(n=>n(e,t))},getEntryVersion=e=>m.get(e)??0,g=createAfflictionPriorityApi({state:s,defaultPrios:i,countableConfig:c,emit}),h=createAfflictionLifecycleApi({state:s,defaultPrios:i,timedConfig:l,countableConfig:c,emit,now:t,setTimeoutFn:n,clearTimeoutFn:a}),b=createAfflictionQueryApi({state:s,list:o,timedConfig:l,countableConfig:c,uncurableSet:u,getPriority:g.getPriority,now:t,getVersion:()=>p,getEntryVersion});return{onChange:e=>(d.add(e),()=>d.delete(e)),snapshot:b.snapshot,get:b.get,list:b.list,getCountablePriorityNames:b.getCountablePriorityNames,normalizeName:b.normalizeName,normalizePriorityName:b.normalizePriorityName,formatPriorityCommandName:b.formatPriorityCommandName,got:h.got,lose:h.lose,applyList:h.applyList,setPriority:g.setPriority,resetPriority:g.resetPriority,getPriority:g.getPriority,getDefaultPriority:g.getDefaultPriority,setDefaultPriority:g.setDefaultPriority,haveAff:b.haveAff,haveAffs:b.haveAffs,haveAnAff:b.haveAnAff,currentSorted:b.currentSorted,isCountable:b.isCountable,isTimed:b.isTimed,isUncurable:b.isUncurable,elapsed:b.elapsed,elapsedMs:b.elapsedMs,elapsedSeconds:b.elapsedSeconds,remaining:b.remaining,remainingMs:b.remainingMs,remainingSeconds:b.remainingSeconds,timing:b.timing,dispose:h.dispose}},createDefenseLifecycleApi=({state:e,emit:t})=>{const consumeStaticPriority=(n,a="manual",o={})=>{const i=e[n];return!(!i?.static||!isActiveStaticPriority(resolveDefensePriority(i)))&&(i.priorityOverride=0,t("DefPriorityChanged",{id:n,value:0,source:a,consumed:!0,static:!0,defaultPriority:i.defaultPriority,...o}),!0)},setHave=(n,a,o="manual",i=Date.now())=>{const s=e[n];if(!s||s.have===a)return!1;s.have=a,s.lastChangeAt=i;const l={id:n,source:o,at:i,have:s.have,lastChangeAt:s.lastChangeAt,static:s.static,serverside:s.serverside,preempt:s.preempt};return t(a?"DefGot":"DefLost",l),a&&consumeStaticPriority(n,o,{triggeredByGain:!0}),!0};return{consumeStaticPriority,setHave,setStatic:(n,a,o="manual")=>{const i=e[n];if(!i)return!1;const s=Boolean(a);if(i.static===s)return!1;const l=i.static,c=resolveDefensePriority(i);let u=!1,d=!1;return i.static=s,s&&i.have&&isActiveStaticPriority(c)?(i.priorityOverride=0,d=!0,u=resolveDefensePriority(i)!==c):s||0!==i.priorityOverride||(i.priorityOverride=null,u=resolveDefensePriority(i)!==c),t("DefStaticChanged",{id:n,value:s,previousValue:l,source:o,have:i.have,static:i.static,seedStatic:i.seedStatic,defaultPriority:i.defaultPriority,currentPriority:resolveDefensePriority(i),serverside:i.serverside,preempt:i.preempt}),u&&t("DefPriorityChanged",{id:n,value:resolveDefensePriority(i),source:o,static:i.static,defaultPriority:i.defaultPriority,staticChanged:!0,consumed:d}),!0},setCommand:(n,a,o="manual")=>{const i=e[n];if(!i)return!1;const s=normalizeCommandList(a);return i.command=s,t("DefCommandChanged",{id:n,value:s,source:o}),!0},applyList(t=[],n="gmcp-list"){const a=new Set;(t||[]).forEach(e=>{const t=normalizeObservedDefenseId(e);t&&a.add(t)}),Object.keys(e).forEach(t=>{a.has(t)?(setHave(t,!0,n),e[t].static&&consumeStaticPriority(t,n,{observedActive:!0})):e[t].have&&!e[t].clientOnly&&setHave(t,!1,n)})}}},toDefensePriorityNumber=e=>{const t=toPriorityNumber(e);return null===t?null:t<0?0:t>26?26:t},createDefensePriorityApi=({state:e,emit:t,consumeStaticPriority:n})=>{const getEntry=t=>e[t]||null;return{getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):-1},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):-1},setPriority(e,a,o="manual"){const i=toDefensePriorityNumber(a);if(null===i)return!1;const s=getEntry(e);if(!s)return!1;if(s.static&&!0===s.have&&isActiveStaticPriority(i))return n(e,o,{ignoredWhileActive:!0});const l=setPriorityValue(s,i);return!!l.changed&&(t("DefPriorityChanged",{id:s.id,value:l.priority,source:o,static:s.static,defaultPriority:s.defaultPriority}),!0)},resetPriority(e,a="manual"){const o=getEntry(e);if(!o)return!1;if(o.static&&!0===o.have)return n(e,a,{reset:!0,ignoredWhileActive:!0});const i=resetPriorityValue(o);return!!i.changed&&(t("DefPriorityChanged",{id:o.id,value:i.priority,source:a,static:o.static,defaultPriority:o.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,n,a="manual"){const o=toDefensePriorityNumber(n);if(null===o)return!1;const i=getEntry(e);if(!i)return!1;const s=setDefaultPriorityValue(i,o);return!!s.changed&&(t("DefDefaultPriorityChanged",{id:i.id,value:s.priority,source:a,static:i.static,previousDefaultPriority:s.previousDefaultPriority,currentPriority:getPriorityValue(i)}),s.currentChanged&&t("DefPriorityChanged",{id:i.id,value:s.priority,source:a,static:i.static,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createDefenseQueryApi=({state:e,list:t,getVersion:n=()=>0,getEntryVersion:a=()=>n()})=>{const buildDefEntrySnapshot=(e={})=>({id:e.id,have:e.have,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride,priority:resolveDefensePriority(e),command:e.command,bals_req:e.bals_req,bals_used:e.bals_used,blocks:e.blocks,skills:e.skills,opps:e.opps,serverside:e.serverside,preempt:e.preempt,static:e.static,clientOnly:e.clientOnly}),o=new Map,getDefSnapshot=t=>e[t]?(o.has(t)||o.set(t,createSnapshotCache({getVersion:()=>a(t),buildSnapshot:()=>buildDefEntrySnapshot(e[t])})),o.get(t)()):null,i=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=resolveDefensePriority(e[n]),t),{})}),s=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=Number(e[n].defaultPriority??-1),t),{})}),l=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=Boolean(e[n]?.static),t),{})}),c=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(Boolean(e[n]?.static)!==Boolean(e[n]?.seedStatic)&&(t[n]=Boolean(e[n]?.static)),t),{})}),u=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getDefSnapshot(t),e),{})});return{snapshot:()=>u(),get:e=>getDefSnapshot(e),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],isAvailableForClass:(t,n="")=>matchesClass(e[t]?.skills,n),haveDef:t=>Boolean(e[t]?.have),getPriority(t){const n=e[t];return n?resolveDefensePriority(n):-1},getDefaultPriority:t=>Number(e[t]?.defaultPriority??-1),getPriorities:()=>i(),getDefaultPriorities:()=>s(),getStatics:()=>l(),getStaticOverrides:()=>c(),isStatic:t=>Boolean(e[t]?.static)}},createDefenseModel=({defTable:e={},defPrios:t={}}={})=>{const{state:n,list:a}=createInitialDefenseState({defTable:e,defPrios:t}),o=new Set;let i=0;const s=new Map,emit=(e,t)=>{i+=1,t?.id&&s.set(t.id,(s.get(t.id)??0)+1),o.forEach(n=>n(e,t))},getEntryVersion=e=>s.get(e)??0,l=createDefenseLifecycleApi({state:n,emit}),c=createDefensePriorityApi({state:n,emit,consumeStaticPriority:l.consumeStaticPriority}),u=createDefenseQueryApi({state:n,list:a,getVersion:()=>i,getEntryVersion});return{onChange:e=>(o.add(e),()=>o.delete(e)),snapshot:u.snapshot,get:u.get,list:u.list,isAvailableForClass:u.isAvailableForClass,haveDef:u.haveDef,isStatic:u.isStatic,setStatic:l.setStatic,setCommand:l.setCommand,setHave:l.setHave,applyList:l.applyList,setPriority:c.setPriority,setDefaultPriority:c.setDefaultPriority,resetPriority:c.resetPriority,getPriority:c.getPriority,getDefaultPriority:c.getDefaultPriority,getDefaultPriorities:u.getDefaultPriorities,getPriorities:u.getPriorities,getStatics:u.getStatics,getStaticOverrides:u.getStaticOverrides}},ta=1e4,ra=["brokenleftarm","damagedleftarm","mangledleftarm"],na=["brokenrightarm","damagedrightarm","mangledrightarm"],createCachePrecacheSupport=({state:e,haveAff:t=()=>!1}={})=>{const isPrecacheBlocked=()=>{const e=ra.some(e=>t(e)),n=na.some(e=>t(e));return!(!e||!n)},buildPrecacheCommands=()=>isPrecacheBlocked()?[]:e.hydration.inventoryKnown&&e.hydration.riftKnown?Object.entries(e.desiredPrecache).flatMap(([t,n])=>{const a=toNumber(e.inventory[t],0),o=toNumber(e.rift[t],0),i=Math.max(0,toNumber(e.riftCapacity,ta)),s=Math.max(0,toNumber(n,0)),l=Math.max(0,s-a),c=Math.max(0,a-s),u=Math.min(l,o),d=Math.max(0,i-o);return u>0?[`outr ${u} ${t}`]:c>0&&d>0?[`inr ${Math.min(c,d)} ${t}`]:[]}):[];return{getPrecacheCommands:()=>buildPrecacheCommands(),isPrecacheBlocked,isHydrated:()=>e.hydration.inventoryKnown&&e.hydration.riftKnown,getTotal:t=>toNumber(e.inventory[t],0)+toNumber(e.rift[t],0)}},findCaseInsensitiveKey=(e={},t="")=>{if(!e||"object"!=typeof e)return null;const n=String(t).toLowerCase();return Object.keys(e).find(e=>String(e).toLowerCase()===n)||null},createCacheNameNormalizer=({cacheTable:e={},cacheNames:t={}}={})=>{const n=t.herb_name_to_herb||{},a=new Set(Object.keys(e)),toCount=(e,t=1)=>Math.max(0,toNumber(e,t)),resolveName=e=>{if(!e)return"";const t=String(e).trim().toLowerCase();return n[t]||t},resolveCountedName=e=>{const t=resolveName(e);if(a.has(t)||!t.endsWith("s"))return t;const n=resolveName(t.slice(0,-1));return a.has(n)?n:t},parseNameAndAmount=(e,t)=>{const n=String(e||"").trim().toLowerCase();if(!n)return{name:"",amount:Math.max(0,toNumber(t,1))};const o=n.match(/^a group of\s+(\d+)\s+(.+)$/);if(o){const[,e,n]=o,i=resolveCountedName(n);if(a.has(i))return{name:i,amount:toCount(t,toNumber(e,1))}}const i=n.match(/^(\d+)\s+(.+)$/);if(i){const[,e,n]=i,o=resolveCountedName(n);if(a.has(o))return{name:o,amount:toCount(t,toNumber(e,1))}}return{name:resolveCountedName(n),amount:toCount(t,1)}};return{resolveName,parseNameAndAmount,normalizeName:e=>parseNameAndAmount(e).name}},readGmcpPath=(e={},t=[])=>{const n=findCaseInsensitiveKey(e,t.join("."));if(n)return e[n];let a=e;for(const o of t){if(!a||"object"!=typeof a)return;const e=findCaseInsensitiveKey(a,o);if(!e)return;a=a[e]}return a},createCacheStateSupport=({state:e,emit:t=()=>{},cacheTable:n={},cacheNames:a={}}={})=>{const{parseNameAndAmount:o,normalizeName:i}=createCacheNameNormalizer({cacheTable:n,cacheNames:a}),s={invAddsById:new Map,roomRemovesById:new Map,appliedIds:new Set},normalizeItemId=e=>null==e||""===e?"":String(e),adjustInventoryAmount=(n,a,o="inventory-delta")=>!(!n||!(n in e.inventory))&&(e.inventory[n]=Math.max(0,e.inventory[n]+toNumber(a,0)),t("CacheAmountChanged",{bucket:"inventory",name:n,amount:e.inventory[n],source:o}),!0),parseInventoryEntry=(e={})=>{const t=e?.item||e,n=o(t?.name||t?.item||t,t?.amount??t?.count??t?.qty??e?.amount??e?.count??e?.qty);return{id:normalizeItemId(t?.id??e?.id),location:String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),name:n.name,amount:n.amount,icon:t?.icon??e?.icon,attrib:t?.attrib??e?.attrib}},storeInventoryCurative=(t={})=>{if(!t.id||!t.name||!(t.name in e.inventory))return!1;const n={name:t.name,amount:t.amount,location:t.location||"inv"};return void 0!==t.icon&&null!==t.icon&&(n.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(n.attrib=t.attrib),e.inventoryCurativesById[t.id]=n,!0},deleteInventoryCurative=t=>{const n=normalizeItemId(t);return!(!n||!(n in e.inventoryCurativesById))&&(delete e.inventoryCurativesById[n],!0)},deleteInventoryCurativesByName=t=>{let n=!1;return Object.entries(e.inventoryCurativesById).forEach(([a,o])=>{o?.name===t&&(delete e.inventoryCurativesById[a],n=!0)}),n},emitInventoryIdentityChanged=()=>{t("CacheInventoryIdentityChanged",{...e.inventoryCurativesById})},buildResult=({changed:e=!1,identityChanged:t=!1,name:n="",amount:a=0,delta:o=0,source:i=""}={})=>({changed:e,identityChanged:t,name:n,amount:a,delta:o,source:i}),readInventorySnapshot=(e={})=>{const t=readGmcpPath(e,["Char","Items","List"]);if(void 0!==t)return t;const n=readGmcpPath(e,["Items","Inv"]);return void 0!==n?{location:"inv",items:n}:void 0},setAmount=(n,a,o,s="manual")=>{const l=i(a);if(!l||!(l in e[n]))return!1;const c=Math.max(0,toNumber(o,e[n][l]));return e[n][l]=c,t("CacheAmountChanged",{bucket:n,name:l,amount:c,source:s}),!0},setRiftCapacity=(n,a="manual")=>{const o=toNumber(e.riftCapacity,ta),i=Math.max(0,toNumber(n,o));return i!==e.riftCapacity&&(e.riftCapacity=i,t("CacheRiftCapacityChanged",{amount:i,source:a}),!0)},observeInventorySnapshot=(n=[])=>{const a={...e.inventory},o={};Object.keys(a).forEach(e=>{a[e]=0}),(n||[]).forEach(e=>{const t=parseInventoryEntry(e);if("inv"===t.location&&t.name&&t.name in a&&(a[t.name]+=t.amount,t.id)){const e={name:t.name,amount:t.amount,location:t.location};void 0!==t.icon&&null!==t.icon&&(e.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(e.attrib=t.attrib),o[t.id]=e}}),e.inventory=a,e.inventoryCurativesById=o,e.hydration.inventoryKnown=!0,t("CacheInventoryListApplied",{...e.inventory})},applyRoomPickupTransfer=t=>{if(!t||s.appliedIds.has(t))return null;const n=s.invAddsById.get(t),a=s.roomRemovesById.get(t);if(!n||!a)return null;const o=n.name&&n.name in e.inventory,i=Math.max(0,toNumber(n.amount,0)),l=a.name&&a.name in e.inventory,c=Math.max(0,toNumber(a.amount,0)),u=o&&i>0?n:l&&c>0?a:null;if(s.invAddsById.delete(t),s.roomRemovesById.delete(t),s.appliedIds.add(t),!u)return null;const d=Math.max(0,toNumber(u.amount,0));return!u.name||!(u.name in e.inventory)||d<=0?null:adjustInventoryAmount(u.name,d,"gmcp:room-pickup")?buildResult({changed:!0,name:u.name,amount:d,delta:d,source:"gmcp:room-pickup"}):null},observeRoomPickupCandidate=(e,t)=>{if(!e.id||s.appliedIds.has(e.id))return null;if("inv"===e.location&&"add"===t)s.invAddsById.set(e.id,e);else{if("room"!==e.location||"remove"!==t)return null;s.roomRemovesById.set(e.id,e)}return applyRoomPickupTransfer(e.id)},observeRiftSnapshot=(n={})=>{const a=n.items||n,i=Array.isArray(a)?a:Object.entries(a).map(([e,t])=>({name:e,amount:t})),s={...e.rift};Object.keys(s).forEach(e=>{s[e]=0}),i.forEach(e=>{const t=o(e.name||e.item||e,e.amount??e.count??e.qty??0);t.name&&t.name in s&&(s[t.name]=t.amount)}),e.rift=s,e.hydration.riftKnown=!0,t("CacheRiftListApplied",{...e.rift})},hydrateFromGmcp=(e={})=>{let t=!1;const n=readInventorySnapshot(e);void 0!==n&&(Array.isArray(n)?(observeInventorySnapshot(n),t=!0):"inv"===String(n?.location??n?.Location??"inv").toLowerCase()&&(observeInventorySnapshot(n?.items||[]),t=!0));const a=readGmcpPath(e,["IRE","Rift","List"]);return void 0!==a&&(observeRiftSnapshot(a||{}),t=!0),t};return{observeInventorySnapshot,observeItemDelta:(t={})=>{const n=parseInventoryEntry(t),a=String(t.action||"").toLowerCase(),o=String(t.direction||"").toLowerCase(),i=a||o;let s=!1;if("inv"===n.location){const t=n.id&&e.inventoryCurativesById[n.id]||null;"add"===i?n.name&&n.name in e.inventory&&(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged()):"remove"===i?(s=!!t&&deleteInventoryCurative(n.id),s&&emitInventoryIdentityChanged()):"update"===i?n.name&&n.name in e.inventory?(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged()):t&&(s=deleteInventoryCurative(n.id),s&&emitInventoryIdentityChanged()):n.name&&n.name in e.inventory&&(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged())}const l=observeRoomPickupCandidate(n,i);return l?{...l,identityChanged:s}:buildResult({identityChanged:s})},observeRiftSnapshot,observeRiftChange:(t={})=>{const n=t.amount??t.count??t.qty;if(null==n||""===n)return!1;const a=o(t.name||t.item||t.desc||t,n);return!(!a.name||!(a.name in e.rift))&&(setAmount("rift",a.name,a.amount,"gmcp:rift-change"),{name:a.name,riftAmount:e.rift[a.name]})},observeRiftOutText:({item:t,name:n,amount:a=1,riftAmount:i}={})=>{const s=o(t||n,a);if(!s.name||!(s.name in e.inventory)||!(s.name in e.rift))return!1;const l=Math.max(0,toNumber(a,s.amount));return!(l<=0)&&(adjustInventoryAmount(s.name,l,"text:rift-out"),setAmount("rift",s.name,i,"text:rift-out"),{name:s.name,amount:l,riftAmount:e.rift[s.name]})},observeRiftInText:({item:t,name:n,amount:a=1,riftAmount:i,atCapacity:s=!1}={})=>{const l=o(t||n,a);if(!l.name||!(l.name in e.inventory)||!(l.name in e.rift))return!1;const c=Math.max(0,toNumber(a,l.amount));return!(c<=0)&&(adjustInventoryAmount(l.name,-c,"text:rift-in"),setAmount("rift",l.name,i,"text:rift-in"),s&&setRiftCapacity(i,"text:rift-in-max"),{name:l.name,amount:c,riftAmount:e.rift[l.name],riftCapacity:e.riftCapacity})},invalidateRiftSnapshot:({source:n="rift-resync"}={})=>!!e.hydration.riftKnown&&(e.hydration.riftKnown=!1,t("CacheRiftSnapshotInvalidated",{source:n}),!0),observeInventoryDeltaText:({item:t,name:n,amount:a,delta:i,source:s="text:inventory"}={})=>{const l=o(t||n,a);if(!l.name||!(l.name in e.inventory))return!1;const c=Math.max(0,toNumber(a,l.amount)),u=toNumber(i,0);if(c<=0||0===u)return!1;const d=u>0?c:-c;return adjustInventoryAmount(l.name,d,s),{name:l.name,amount:c,delta:d,inventoryAmount:e.inventory[l.name]}},observeInventoryEmptyText:({item:t,name:n,source:a="text:inventory-empty"}={})=>{const i=o(t||n,0);if(!i.name||!(i.name in e.inventory))return!1;const s=e.inventory[i.name],l=deleteInventoryCurativesByName(i.name);return l&&emitInventoryIdentityChanged(),setAmount("inventory",i.name,0,a),{changed:0!==s||l,identityChanged:l,name:i.name,amount:0,delta:-s,inventoryAmount:e.inventory[i.name],source:a}},observeCurativeConsumedText:({item:t,name:n,amount:a=1}={})=>{const i=o(t||n,a);if(!i.name||!(i.name in e.inventory))return!1;const s=Math.max(0,toNumber(a,i.amount));return!(s<=0)&&(adjustInventoryAmount(i.name,-s,"text:consume"),{name:i.name,amount:s,inventoryAmount:e.inventory[i.name]})},completeObservationBlock:()=>{s.invAddsById.clear(),s.roomRemovesById.clear(),s.appliedIds.clear()},hydrateFromGmcp,setDesiredPrecache:(n={})=>{Object.entries(n).forEach(([t,n])=>{t in e.desiredPrecache&&(e.desiredPrecache[t]=Math.max(0,toNumber(n,0)))}),t("CacheDesiredPrecacheChanged",{...e.desiredPrecache})}}},createCacheModel=({cacheTable:e={},cacheNames:t={},haveAff:n=()=>!1,haveDef:a=()=>!1}={})=>{const o=new Set;let i=0;const s={inventory:{...e},rift:{...e},riftCapacity:ta,inventoryCurativesById:{},desiredPrecache:Object.keys(e).reduce((e,t)=>(e[t]=0,e),{}),hydration:{inventoryKnown:!1,riftKnown:!1}},emit=(e,t)=>{i+=1,o.forEach(n=>n(e,t))},l=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>({inventory:{...s.inventory},rift:{...s.rift},riftCapacity:s.riftCapacity,inventoryCurativesById:Object.entries(s.inventoryCurativesById).reduce((e,[t,n])=>(e[t]={...n},e),{}),desiredPrecache:{...s.desiredPrecache},hydration:{...s.hydration}})});return{onChange:e=>(o.add(e),()=>o.delete(e)),snapshot:()=>l(),...createCacheStateSupport({state:s,emit,cacheTable:e,cacheNames:t}),...createCachePrecacheSupport({state:s,haveAff:n,haveDef:a}),getDesiredPrecache:()=>({...s.desiredPrecache})}},aa={loadOnLogin:!1,flushSafetyMs:250,maxSendPerChunk:20,queueWhilePaused:!1,overrideTab:!1,customPrompt:!0,debug:!1,notices:{affGot:!0,affLost:!0,defGot:!0,defLost:!0,balanceLost:!1,balanceRecovered:!1,trackableGot:!1,trackableLost:!1,priority:!0,output:!1},ss:{transmutation:!0,sipPriority:"health",sipHealthAt:80,sipManaAt:70,mossHealthAt:90,mossManaAt:80,focus:!0,focusOverHerbs:!0,tree:"on",clot:!0,clotAt:19,fracturesAbove:35,manaThreshold:10,batch:!0}},oa={paused:!0,rulesSuspended:!1,slowMode:!1,aeonLocked:!1,phase:ne.IDLE,startupFailureMessage:""},ia={name:"",class:"",race:"",color:"",hp:0,maxhp:0,mp:0,maxmp:0,ep:0,maxep:0,wp:0,maxwp:0,bleed:0,rage:0,dead:!1,mount:null,wielded:{left:null,right:null}},sa={id:"",text:"",isPlayer:null,hp:""},la={id:null,name:"",exits:{},items:{}},getChangedPatchKeys=(e={},t,n)=>Object.keys(e||{}).filter(e=>JSON.stringify(n[e])!==JSON.stringify(t[e])),createSystemConfigApi=({state:e,emit:t})=>({getRuntime:()=>e.runtime,getSettings:()=>e.settings,getBaselineIntent:()=>e.baselineIntent,setRuntime(n={}){const a=e.runtime,o=deepMerge(e.runtime,n),i=Object.keys(o).filter(e=>o[e]!==a[e]);if(!i.length)return!1;const s=a.paused;return e.runtime=o,e.runtime.paused!==s&&t("PauseStateChanged",{paused:e.runtime.paused}),t("RuntimeStateChanged",{current:e.runtime,changedKeys:i}),!0},setSettings(n={},a={}){const o=e.settings,i=deepMerge(e.settings,n),s=getChangedPatchKeys(n,o,i);return!!s.length&&(e.settings=i,a.setBaseline&&(e.baselineIntent=deepMerge(e.baselineIntent,n)),t("SettingsChanged",{current:e.settings,patch:n,changedKeys:s}),!0)},setBaselineIntent(n={}){const a=e.baselineIntent,o=deepMerge(e.baselineIntent,n),i=getChangedPatchKeys(n,a,o);return!!i.length&&(e.baselineIntent=o,t("BaselineIntentChanged",{current:e.baselineIntent,patch:n,changedKeys:i}),!0)}}),shallowEqualRecord=(e={},t={})=>{const n=Object.keys(e||{}),a=Object.keys(t||{});return n.length===a.length&&n.every(n=>e[n]===t[n])},collectChangedFields=(e={})=>{const t={};return Object.entries(e).forEach(([e,[n,a]])=>{n!==a&&(t[e]={previous:n,current:a})}),t},ca=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],hasOwn$3=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isDragonClass=(e="")=>/\bdragon\b/i.test(String(e||"")),getDragonColor=(e="")=>{const t=String(e||"").trim().split(/\s+/).filter(Boolean),n=t.findIndex(e=>"dragon"===e.toLowerCase()),a=n>0?t[n-1]:"";return a?a[0].toUpperCase()+a.slice(1).toLowerCase():""},normalizeStatusClass=({className:e="",race:t="",classProvided:n=!1,raceProvided:a=!1}={})=>{const o=String(e||"").trim(),i=String(t||"").trim(),s=isDragonClass(o),l=isDragonClass(i);return s||!n&&a&&l?{className:"Dragon",color:getDragonColor(o)||getDragonColor(i)}:{className:normalizeClassName(o),color:""}},createSystemCharacterApi=({state:e,emit:t})=>({updateVitals(n={}){const a=toParsedGmcpVitals(n),o=a.resourceStats.filter(({balanceState:e})=>void 0===e),i={dead:e.char.dead};ca.forEach(t=>{i[t]=e.char[t]}),o.forEach(({key:t})=>{t in i||(i[t]=e.char[t])}),ca.forEach(t=>{void 0!==a.vitals[t]&&(e.char[t]=a.vitals[t])}),o.forEach(({key:t,value:n})=>{e.char[t]=n}),e.char.dead=e.char.hp<=0;const s={dead:[i.dead,e.char.dead]};ca.forEach(t=>{s[t]=[i[t],e.char[t]]}),o.forEach(({key:t})=>{s[t]=[i[t],e.char[t]]});const l=collectChangedFields(s);return!!Object.keys(l).length&&(t("VitalsUpdated",{current:e.char,hpDiff:e.char.hp-i.hp,mpDiff:e.char.mp-i.mp,changedFields:l}),e.char.dead&&!i.dead&&t("DeathDetected",{hp:e.char.hp,previousHp:i.hp}),!0)},updateStatus(n={}){const a={name:e.char.name,class:e.char.class,race:e.char.race,color:e.char.color};hasOwn$3(n,"name")&&(e.char.name=n.name??""),hasOwn$3(n,"race")&&(e.char.race=n.race??"");const o=hasOwn$3(n,"class"),i=hasOwn$3(n,"race");if(o||i){const t=normalizeStatusClass({className:o?n.class:e.char.class,race:e.char.race,classProvided:o,raceProvided:i});e.char.class=t.className,e.char.color=t.color}const s=collectChangedFields({name:[a.name,e.char.name],class:[a.class,e.char.class],race:[a.race,e.char.race],color:[a.color,e.char.color]});return!!Object.keys(s).length&&(a.class!==e.char.class&&t("ClassChanged",{class:e.char.class,previousClass:a.class}),t("StatusUpdated",{current:e.char,changedFields:s}),!0)},updateWielded(n,a){if("left"!==n&&"right"!==n)return!1;const o=e.char.wielded[n],i=a?{id:a.id??null,name:String(a.name||""),icon:a.icon||null}:null;return(null!==o||null!==i)&&((!o||!i||o.id!==i.id||o.name!==i.name)&&(e.char.wielded[n]=i,t("WieldedUpdated",{side:n,current:i,previous:o}),!0))},updateMount(n){const a=e.char.mount,o=n?{name:String(n.name||""),id:n.id??null}:null;return a!==o&&((!a||!o||a.name!==o.name||a.id!==o.id)&&(e.char.mount=o,t("MountUpdated",{current:o,previous:a}),!0))},getChar:()=>e.char,getClass:()=>e.char.class,checkClass:t=>classesMatch(e.char.class,t),isClass:t=>void 0===t||!!t&&(Array.isArray(t)?t.some(t=>classesMatch(e.char.class,t)):classesMatch(e.char.class,t))}),ua=["Text","text","short_desc"],hasOwn$2=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),getProvidedValue=(e,t,n,a="")=>{for(const o of t)if(hasOwn$2(e,o))return e[o]??a;return n},deriveIsPlayer=e=>"-1"===String(e),createSystemTargetApi=({state:e,emit:t})=>({updateTarget(n={}){const a=e.target,o={id:getProvidedValue(n,["id","ID"],a.id),text:getProvidedValue(n,ua,a.text),hp:getProvidedValue(n,["HP","hp","hpperc"],a.hp)};if(o.isPlayer=deriveIsPlayer(o.id),o.id===a.id&&o.text===a.text&&o.hp===a.hp&&o.isPlayer===a.isPlayer)return!1;e.target=o;const i=ua.some(e=>hasOwn$2(n,e)),s=o.id!==a.id||o.text!==a.text;return!(!i||!s)&&(t("TargetUpdated",{current:e.target,changedFields:collectChangedFields({id:[a.id,o.id],text:[a.text,o.text],isPlayer:[a.isPlayer,o.isPlayer],hp:[a.hp,o.hp]})}),!0)},isTarget(t){if(null==t)return!1;const n=String(t).toLowerCase();return e.target.text.toLowerCase()===n||String(e.target.id).toLowerCase()===n}}),hasOwn$1=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),createSystemRoomApi=({state:e,emit:t})=>({getRoom:()=>e.room,updateRoom(n={}){const a=e.room,o={id:hasOwn$1(n,"num")?n.num:a.id,name:hasOwn$1(n,"name")?n.name??"":a.name,exits:hasOwn$1(n,"exits")?{...n.exits??{}}:a.exits,items:a.items},i=collectChangedFields({id:[a.id,o.id],name:[a.name,o.name]});return shallowEqualRecord(a.exits,o.exits)||(i.exits={previous:a.exits,current:o.exits}),!!Object.keys(i).length&&(e.room=o,t("RoomUpdated",{current:e.room,changedFields:i}),!0)},setRoomItems(n={}){const a={...n};return!shallowEqualRecord(e.room.items,a)&&(e.room.items=a,t("RoomItemsUpdated",{current:e.room.items}),!0)}}),createSystemModel=(e={})=>{const t={settings:deepMerge(aa,e.settings||{}),baselineIntent:deepMerge(aa,e.baselineIntent||{}),runtime:deepMerge(oa,e.runtime||{}),char:deepMerge(ia,e.char||{}),target:deepMerge(sa,e.target||{}),room:deepMerge(la,e.room||{})};t.runtime={...t.runtime};const n=new Set;let a=0;const emit=(e,t)=>{a+=1,n.forEach(n=>n(e,t))},o=createSystemConfigApi({state:t,emit}),i=createSystemCharacterApi({state:t,emit}),s=createSystemTargetApi({state:t,emit}),l=createSystemRoomApi({state:t,emit}),copySettingsBucket=(e={})=>({...e,notices:{...e.notices||{}},ss:{...e.ss||{}}}),copyCharSnapshot=(e={})=>({...e,mount:e.mount?{...e.mount}:null,wielded:{left:e.wielded?.left?{...e.wielded.left}:null,right:e.wielded?.right?{...e.wielded.right}:null}}),copyTargetSnapshot=(e={})=>({...e}),copyRoomSnapshot=(e={})=>({...e,exits:{...e.exits||{}},items:{...e.items||{}}}),c=createSnapshotCache({getVersion:()=>a,buildSnapshot:()=>({settings:copySettingsBucket(t.settings),baselineIntent:copySettingsBucket(t.baselineIntent),runtime:{...t.runtime},char:copyCharSnapshot(t.char),target:copyTargetSnapshot(t.target),room:copyRoomSnapshot(t.room)})});return{onChange:e=>(n.add(e),()=>n.delete(e)),snapshot:()=>c(),getRuntime:o.getRuntime,getSettings:o.getSettings,getBaselineIntent:o.getBaselineIntent,setRuntime:o.setRuntime,setSettings:o.setSettings,setBaselineIntent:o.setBaselineIntent,updateVitals:i.updateVitals,updateStatus:i.updateStatus,updateWielded:i.updateWielded,updateMount:i.updateMount,getChar:i.getChar,getClass:i.getClass,checkClass:i.checkClass,isClass:i.isClass,updateTarget:s.updateTarget,isTarget:s.isTarget,getRoom:l.getRoom,updateRoom:l.updateRoom,setRoomItems:l.setRoomItems}},createModels=({adapter:e,seedData:t,options:n={},now:a})=>{const o=Boolean(n.debug),i=createSystemModel({settings:{debug:o},baselineIntent:{debug:o}}),s=createAfflictionModel({affTable:t.affTable,now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),l=createBalanceModel({balanceTable:t.balanceTable,haveAff:e=>s.haveAff(e),now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),c=createDefenseModel({defTable:t.defTable,defPrios:t.defPrios});return{systemModel:i,affModel:s,balanceModel:l,defModel:c,cacheModel:createCacheModel({cacheTable:t.cacheTable,cacheNames:t.cacheNames,haveAff:e=>s.haveAff(e),haveDef:e=>c.haveDef(e)}),limbModel:createLimbModel({now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout})}},da="parry",pa=25,resetParryPriorities=e=>{Object.keys(Se.long).forEach(t=>{e.setDefaultPriority(`parrying ${t}`,0,da),e.get(`guarding ${t}`)&&e.setDefaultPriority(`guarding ${t}`,0,da)})},createCombatDomainService=({affModel:e,defModel:t,limbModel:n,systemModel:a,queueController:o,serverside:i})=>({observeLimbHit:({limb:t,amount:a,source:o="manual",at:s}={})=>applyObservedLimbHit({limbModel:n,affModel:e,serverside:i,limb:t,amount:a,source:o,at:s}),observeLimbReset:({limb:t,source:a="manual",at:o}={})=>applyObservedLimbReset({limbModel:n,affModel:e,serverside:i,limb:t,source:a,at:o}),observeLimbStage:({limb:t,stage:a,source:o="manual",at:s}={})=>applyObservedLimbStage({limbModel:n,affModel:e,serverside:i,limb:t,stage:a,source:o,at:s}),parry(e){resetParryPriorities(t);const n=Se.short[e]||e,i=t.get(`guarding ${n}`);let s;return i&&a.isClass(i.skills)?(t.setDefaultPriority(`guarding ${n}`,pa,da),s=`guard ${n}`):(t.setDefaultPriority(`parrying ${n}`,pa,da),a.isClass("Dragon")?(t.setCommand(`parrying ${n}`,`clawparry ${n}`,da),s=`clawparry ${n}`):(t.setCommand(`parrying ${n}`,`parry ${n}`,da),s=`parry ${n}`)),o.prepend("freeQueue",s),{limbName:n,command:s}}}),isRecordValue=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),hasSupportedSchemaVersion=e=>isRecordValue(e)&&isSupportedPersistenceSchemaVersion(e.schemaVersion),createPersistenceStore=({adapter:e,key:t="nexSys4Settings",noticeCenter:n}={})=>{let a=!1;const noticeSchemaResetIfNeeded=e=>{a||!isRecordValue(e)||null==e.schemaVersion||isSupportedPersistenceSchemaVersion(e.schemaVersion)||(a=!0,n?.publish?.("persistence","Saved nexSys4 settings were in an older format and have been reset to defaults.",{force:!0}))},read=()=>{const n=e.getVariable(t);return noticeSchemaResetIfNeeded(n),{key:t,exists:hasSupportedSchemaVersion(n),snapshot:deepClone$1(normalizePersistenceSnapshot(n))}},load=()=>read().snapshot,save=(n={})=>{const a=deepClone$1(normalizePersistenceSnapshot(n,{assumeCurrentVersion:!0}));return e.setVariable(t,a),deepClone$1(a)};return{key:t,read,load,save}},createNoticeCenter=({adapter:e,systemModel:t})=>({publish:(n,a,o={})=>{const i=t.getSettings().notices||{},{force:s=!1,...l}=o;(s||!1!==i[n])&&e.notice(String(a),{category:n,...l})}}),ma=Object.freeze({PLANNED:"planned",SENT:"sent",AWAITING_COMPLETION:"awaiting-completion",COMPLETED:"completed",EXPIRED:"expired",RECOVERING:"recovering"}),createOutputCycle=({adapter:e,dispatchCommands:t,systemModel:n,serverside:a,outputPlanner:o,noticeCenter:i,options:s={}}={})=>{const now=()=>e?.now?.()??Date.now();let l=[],c="",u=1,d=null,p=null,m=null,g=[];const h=`echo SystemEvent ${ae.OUTPUT_COMPLETE}`,b=Math.max(50,Number(s.outputCompletionTimeoutMs||1e3)),y=Math.max(0,Number(s.maxOutputRecoveryAttempts??2)),clearCompletionTimer=()=>{m&&(e?.clearTimeout?.(m),m=null)},recordBatchState=(e,t,n={})=>{if(!e)return null;const a=now();return e.state=t,e.stateHistory.push({state:t,at:a}),Object.assign(e,n),e},snapshotBatch=e=>e?{id:e.id,source:e.source,state:e.state,stateHistory:e.stateHistory.map(e=>({...e})),completionRequired:e.completionRequired,recoveryAttempts:e.recoveryAttempts,maxRecoveryAttempts:e.maxRecoveryAttempts,commands:[...e.commands],dispatchedCommands:[...e.dispatchedCommands],serversideCommands:[...e.serversideCommands],batchCount:e.batchCount,createdAt:e.createdAt,sentAt:e.sentAt??null,completedAt:e.completedAt??null,expiredAt:e.expiredAt??null,lastRecoveryAt:e.lastRecoveryAt??null}:null,storeLastBatch=e=>{p=snapshotBatch(e)},createBatch=({source:e,intents:t=[],commands:n,serversideCommands:a,maxCommands:o})=>{const i=t.some(e=>!0===e?.requiresCompletion),s=i?n.filter(e=>e!==h):[...n],l=i?chunkCommandsWithTrailing(s,{maxEntries:o,trailing:[h]}):chunkCommands(s,o);return{id:u++,source:e,state:ma.PLANNED,stateHistory:[{state:ma.PLANNED,at:now()}],completionRequired:i,recoveryAttempts:0,maxRecoveryAttempts:y,commands:[...s],dispatchedCommands:i?[...s,h]:[...s],serversideCommands:[...a],batches:l,batchCount:l.length,createdAt:now(),observedOutbound:!1}},dispatchBatchBatches=(e,n,a={})=>{n.forEach((o,i)=>{t(o,{source:a.source||"output-cycle",cycleSource:e.source,batch:i+1,batchCount:n.length,outputBatchId:e.id,outputBatchState:e.state,recoveryAttempt:a.recoveryAttempt||0})})},scheduleCompletionTimeout=t=>{clearCompletionTimer(),m=e?.setTimeout?.(()=>{if(d&&d.id===t.id&&d.completionRequired){if(recordBatchState(d,ma.EXPIRED,{expiredAt:now()}),c="",d.recoveryAttempts>=d.maxRecoveryAttempts)return i?.publish?.("output",`Output completion confirmation expired after ${d.maxRecoveryAttempts} recovery probe(s).`,{force:!0}),storeLastBatch(d),d=null,void clearCompletionTimer();d.recoveryAttempts+=1,recordBatchState(d,ma.RECOVERING,{lastRecoveryAt:now()}),dispatchBatchBatches(d,[[h]],{source:"output-cycle-recovery",recoveryAttempt:d.recoveryAttempts}),scheduleCompletionTimeout(d)}},b)};return{planAndSend:({source:e="prompt"}={})=>{const t=n.getRuntime(),i=n.getSettings();if(t.paused||t.rulesSuspended)return t.rulesSuspended&&a.evaluate({emitCommands:!1,source:`${e}:rule-suspend-check`}),[];const s=a.getCuringSets?.().activeSet||"";if(s&&"nexsys4-default"!==s)return[];if(d)return[];const u="output-complete"===e?[...g]:[];g=[];const p=o.plan({source:e,injectedCommands:l,suppressedServersideCommands:u});if(n.getRuntime().paused||n.getRuntime().rulesSuspended)return l=[],[];if(!p.commands.length)return l=[],[];const m=Math.max(1,Number(i.maxSendPerChunk||20)),h=createBatch({source:e,intents:p.intents,commands:p.commands,serversideCommands:p.serversideCommands,maxCommands:m}),b=h.dispatchedCommands.join("");return b===c?[]:(h.serversideCommands.length&&!h.observedOutbound&&(a.observeOutbound(h.serversideCommands),h.observedOutbound=!0),recordBatchState(h,ma.SENT,{sentAt:now()}),dispatchBatchBatches(h,h.batches),c=b,h.completionRequired?(d=h,recordBatchState(d,ma.AWAITING_COMPLETION),scheduleCompletionTimeout(d)):(recordBatchState(h,ma.COMPLETED,{completedAt:now()}),storeLastBatch(h)),l=[],p.commands)},markComplete:()=>!!d&&(clearCompletionTimer(),g=[...d.serversideCommands],d.serversideCommands.length&&a.acknowledgeCommands(d.serversideCommands),recordBatchState(d,ma.COMPLETED,{completedAt:now()}),storeLastBatch(d),d=null,!0),isWaitingForCompletion:()=>d?.state===ma.AWAITING_COMPLETION||d?.state===ma.RECOVERING,isBlockingOutput:()=>Boolean(d),getLifecycleState:()=>({activeBatch:snapshotBatch(d),lastBatch:snapshotBatch(p)}),invalidate(){c=""},injectCommands(e=[]){l=[...l,...e.filter(Boolean)]},dispose(){clearCompletionTimer(),d=null,g=[]}}},createRuntimeServices=({adapter:e,options:t={},models:n,controllers:a})=>{const{systemModel:o,affModel:i,defModel:s,limbModel:l}=n,{commandDispatcher:c,queueController:u,serverside:d,defensePlanner:p,precachePlanner:m,outputPlanner:g}=a,h=createNoticeCenter({adapter:e,systemModel:o});return{persistence:createPersistenceStore({adapter:e,key:t.persistenceKey||"nexSys4Settings",noticeCenter:h}),combatService:createCombatDomainService({affModel:i,defModel:s,limbModel:l,systemModel:o,queueController:u,serverside:d}),noticeCenter:h,defensePlanner:p,precachePlanner:m,outputCycle:createOutputCycle({adapter:e,dispatchCommands:c.sendCommands,systemModel:o,serverside:d,outputPlanner:g,noticeCenter:h,options:t})}},createRuntimeDependencies=({adapter:e,seedData:t,options:n={}})=>{const now=()=>e.now(),a=createModels({adapter:e,seedData:t,options:n,now}),o=createDomainControllers({adapter:e,seedData:t,options:n,now,models:a}),i=createRuntimeServices({adapter:e,options:n,models:a,controllers:o});return{now,...o,...a,...i}},createRuntimeFlushCoordinator=({adapter:e,systemModel:t,serverside:n,outputCycle:a,flushGmcpBuffer:o})=>{const now=()=>e?.now?.()??Date.now(),i={started:!1,safetyTimer:null,dirty:!1,flushing:!1,dirtyAt:null},clearSafetyTimer=()=>{i.safetyTimer&&(e.clearTimeout(i.safetyTimer),i.safetyTimer=null)},isRuntimeReady=()=>isRuntimeReadyPhase(t.getRuntime().phase),hasPendingSafetyWork=()=>{const e="function"!=typeof n.isDirty||n.isDirty();return i.dirty&&e},scheduleSafetyFlush=()=>{const n=t.getSettings(),a=Number(n.flushSafetyMs||120),o=Number(n.flushSafetyMaxWaitMs||500),s=now();i.dirtyAt||(i.dirtyAt=s),clearSafetyTimer();const l=s-i.dirtyAt,c=l>=o?0:Math.min(a,o-l);i.safetyTimer=e.setTimeout(()=>{i.safetyTimer=null,hasPendingSafetyWork()?(i.dirtyAt=null,flushCycle("safety-flush")):i.dirtyAt=null},c)},invalidateOutput=()=>{i.dirty=!0,a.invalidate?.()},markDirty=(e="dirty")=>{if(invalidateOutput(),n.markDirty(e),!isRuntimeReady())return clearSafetyTimer(),void(i.dirtyAt=null);i.flushing||a.isBlockingOutput?.()||scheduleSafetyFlush()},flushCycle=(e="prompt")=>{if(!i.started||i.flushing)return[];if(clearSafetyTimer(),!isRuntimeReady())return[];i.flushing=!0;try{if(o(),t.getRuntime().paused)return i.dirty=!1,[];const n=a.planAndSend({source:e});return i.dirty=a.isBlockingOutput()&&0===n.length,i.dirty||(i.dirtyAt=null),n}finally{i.flushing=!1}};return{start(){i.started=!0},stop(){i.started=!1,i.dirty=!1,i.flushing=!1,i.dirtyAt=null,clearSafetyTimer()},isStarted:()=>i.started,isFlushing:()=>i.flushing,invalidateOutput,markDirty,flushCycle}},cell=(e="",t="",n="")=>({text:e,fg:t,bg:n}),createDefaultCureColors=()=>({antimony:{fg:"olive",bg:""},argentum:{fg:"royalblue",bg:""},arsenic:{fg:"",bg:""},aurum:{fg:"ForestGreen",bg:""},azurite:{fg:"",bg:""},bisemutum:{fg:"",bg:""},calamine:{fg:"",bg:""},calcite:{fg:"slategray",bg:""},cinnabar:{fg:"greenyellow",bg:""},cuprum:{fg:"DeepSkyBlue",bg:""},ferrum:{fg:"DarkOrange",bg:""},gypsum:{fg:"",bg:""},magnesium:{fg:"Red",bg:""},plumbum:{fg:"Gold",bg:""},potash:{fg:"",bg:""},quartz:{fg:"",bg:""},quicksilver:{fg:"",bg:""},realgar:{fg:"firebrick",bg:""},stannum:{fg:"Tan",bg:""},caloric:{fg:"darkseagreen",bg:""},mending:{fg:"orchid",bg:""},epidermal:{fg:"sienna",bg:""},restoration:{fg:"darkviolet",bg:""},health:{fg:"lightpink",bg:""},writhe:{fg:"PaleGoldenRod",bg:"darkslategray"}}),createDefaultVars=()=>({blackout:!1,paused:cell("","red"),retard:cell("","blue"),aeon:cell("","red"),h:cell("0","green"),m:cell("0","green"),e:cell("0","green"),w:cell("0","green"),maxh:cell(""),maxm:cell(""),maxe:cell(""),maxw:cell(""),ph:cell("100%","green"),pm:cell("100%","green"),pe:cell("100%"),pw:cell("100%"),diffh:cell("","green"),diffm:cell("","green"),diffhp:cell("","green"),diffmp:cell("","green"),target:cell("","pink"),targetHP:cell("","green"),eq:cell(""),bal:cell(""),c:cell(""),k:cell(""),d:cell(""),b:cell(""),shield:cell("","cyan"),prismatic:cell("","magenta"),rage:cell("","red"),karma:cell("","green"),essence:cell("","purple"),kai:cell("","blue")}),createDefaultAffs=(e=createDefaultCureColors())=>({addiction:{text:"add",...e.ferrum},aeon:{text:"ae",...e.cinnabar},agoraphobia:{text:"agor",...e.argentum},amnesia:{text:"amn",fg:"",bg:""},anorexia:{text:"ANO",...e.epidermal},asthma:{text:"AST",...e.aurum},blackout:{text:"bo",fg:"",bg:""},blindness:{text:"unb",...e.arsenic},bound:{text:"bnd",...e.writhe},brokenleftarm:{text:"la1",...e.mending},brokenleftleg:{text:"ll1",...e.mending},brokenrightarm:{text:"ra1",...e.mending},brokenrightleg:{text:"rl1",...e.mending},bruisedribs:{text:"ribs",fg:"",bg:""},burning:{text:"burn",...e.mending},calcifiedskull:{text:"calh",...e.restoration},calcifiedtorso:{text:"calt",...e.restoration},claustrophobia:{text:"clau",...e.stannum},clumsiness:{text:"clu",...e.aurum},concussion:{text:"conc",...e.restoration},confusion:{text:"con",...e.stannum},corruption:{text:"corr",fg:"",bg:""},crackedribs:{text:"cr",...e.health},crushedthroat:{text:"cru",...e.mending},daeggerimpale:{text:"daeg",...e.writhe},damage:{text:"dmg",fg:"tomato",bg:""},damagedleftarm:{text:"la2",...e.restoration},damagedleftleg:{text:"ll2",...e.restoration},damagedrightarm:{text:"ra2",...e.restoration},damagedrightleg:{text:"rl2",...e.restoration},damagedhead:{text:"hd2",...e.restoration},darkshade:{text:"dark",...e.ferrum},dazed:{text:"dzd",...e.cinnabar},dazzled:{text:"dzl",...e.mending},deadening:{text:"dea",...e.cinnabar},deafness:{text:"und",...e.calamine},dehydrated:{text:"deh",fg:"",bg:""},dementia:{text:"dem",...e.stannum},depression:{text:"dep",...e.plumbum},deteriorate:{text:"det",fg:"",bg:""},disloyalty:{text:"disl",...e.realgar},disrupted:{text:"disr",fg:"",bg:""},dissonance:{text:"disso",...e.plumbum},dizziness:{text:"diz",...e.plumbum},enscorcelled:{text:"ensor",fg:"",bg:""},entangled:{text:"entgl",...e.writhe},epilepsy:{text:"epi",...e.plumbum},fear:{text:"fear",fg:"",bg:""},flushings:{text:"flush",...e.ferrum},fratricide:{text:"frat",...e.ferrum},frozen:{text:"frz",...e.caloric},generosity:{text:"gen",...e.cuprum},grievouswounds:{text:"grv",...e.health},guilt:{text:"gui",...e.argentum},haemophilia:{text:"haem",...e.ferrum},hallucinations:{text:"hall",...e.stannum},hamstrung:{text:"hms",fg:"",bg:""},healthleech:{text:"hthl",...e.aurum},heartseed:{text:"heart",...e.restoration},hellsight:{text:"hell",...e.realgar},horror:{text:"hor",...e.plumbum},hypersomnia:{text:"hypers",...e.stannum},hypochondria:{text:"hypoch",...e.lobelia},hypothermia:{text:"hypoth",...e.restoration},icefisted:{text:"ice",fg:"",bg:""},impaled:{text:"impl",...e.writhe},impatience:{text:"IMPAT",...e.plumbum},indifference:{text:"ind",...e.cuprum},insomnia:{text:"insomnia",fg:"",bg:""},itching:{text:"itch",...e.epidermal},justice:{text:"just",...e.cuprum},kkractlebrand:{text:"kkr",...e.health},laceratedthroat:{text:"lac2",...e.restoration},latched:{text:"latch",...e.health},lethargy:{text:"let",...e.ferrum},lightbind:{text:"light",fg:"",bg:""},loneliness:{text:"lon",...e.argentum},lovers:{text:"love",...e.cuprum},manaleech:{text:"man",...e.realgar},mangledleftarm:{text:"la3",...e.restoration},mangledleftleg:{text:"ll3",...e.restoration},mangledrightarm:{text:"ra3",...e.restoration},mangledrightleg:{text:"rl3",...e.restoration},mangledhead:{text:"hd3",...e.restoration},masochism:{text:"maso",...e.argentum},mildtrauma:{text:"tor1",...e.restoration},mycalium:{text:"myc",...e.plumbum},nausea:{text:"nau",...e.ferrum},numbedleftarm:{text:"nbla",fg:"",bg:""},numbedrightarm:{text:"nbra",fg:"",bg:""},pacified:{text:"pac",...e.cuprum},paralysis:{text:"PAR",...e.magnesium},paranoia:{text:"prn",...e.stannum},parasite:{text:"prs",...e.aurum},peace:{text:"pea",...e.cuprum},phlogisticated:{text:"phlog",fg:"",bg:""},pinshot:{text:"psh",fg:"",bg:""},pressure:{text:"pres",...e.calcite},prone:{text:"pr",fg:"",bg:""},pyramides:{text:"pyra",...e.magnesium},pyre:{text:"pyre",...e.cuprum},rebbies:{text:"reb",...e.aurum},recklessness:{text:"reck",...e.argentum},retardation:{text:"ret",fg:"",bg:""},retribution:{text:"retr",...e.cuprum},revealed:{text:"rev",fg:"",bg:""},sandfever:{text:"sand",...e.plumbum},scalded:{text:"scald",...e.epidermal},scytherus:{text:"scy",...e.ferrum},selarnia:{text:"sel",...e.mending},sensitivity:{text:"sen",...e.aurum},serioustrauma:{text:"tor2",...e.restoration},shadowmadness:{text:"shad",...e.plumbum},shivering:{text:"shiv",...e.caloric},shyness:{text:"shy",...e.plumbum},skullfractures:{text:"sf",...e.health},slashedthroat:{text:"lac1",...e.epidermal},sleeping:{text:"slp",fg:"",bg:""},slickness:{text:"SLI",...e.magnesium},slimeobscure:{text:"nkh",fg:"",bg:""},spiritburn:{text:"spirB",...e.argentum},spiritwrack:{text:"spirW",fg:"",bg:""},stupidity:{text:"st",...e.plumbum},stuttering:{text:"stut",...e.epidermal},homunculusmercury:{text:"merc",fg:"",bg:""},temperedcholeric:{text:"choH",...e.antimony},temperedmelancholic:{text:"melaH",...e.antimony},temperedphlegmatic:{text:"phleH",...e.antimony},temperedsanguine:{text:"sanH",...e.antimony},tenderskin:{text:"tend",...e.argentum},tension:{text:"tens",...e.cinnabar},timeflux:{text:"tmfx",fg:"",bg:""},timeloop:{text:"tmlp",...e.cuprum},tonguetied:{text:"tngt",...e.restoration},torntendons:{text:"tt",...e.health},transfixation:{text:"trfx",...e.writhe},unweavingbody:{text:"unwB",...e.ferrum},unweavingspirit:{text:"unwS",...e.cinnabar},unweavingmind:{text:"unwM",...e.plumbum},vertigo:{text:"vert",...e.argentum},vitrified:{text:"vitri",fg:"",bg:""},voidfisted:{text:"void",fg:"",bg:""},voyria:{text:"voy",fg:"",bg:""},weariness:{text:"wea",...e.aurum},webbed:{text:"web",...e.writhe},whisperingmadness:{text:"mad",...e.argentum},wristfractures:{text:"wf",...e.health}}),createDefaultPromptState=()=>{const e=createDefaultCureColors();return{vars:createDefaultVars(),affs:createDefaultAffs(e),cureColors:e}},fa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},escapeHtml=e=>String(e??"").replace(/[&<>"']/g,e=>fa[e]),renderChunk=(e,t="",n="")=>{if(""===e||null==e)return"";const a=[];return t&&a.push(`color:${t}`),n&&a.push(`background-color:${n}`),`<span${a.length?` style="${a.join(";")}"`:""}>${escapeHtml(e)}</span>`},createPromptBuilder=({vars:e,affs:t,cureColors:n,renderAffsHtml:a,renderDiffHtml:o,renderTargetHtml:i,renderVarHtml:s,renderChunkHtml:l=renderChunk})=>{const c=[],u={vars:e,affs:t,cureColors:n,add(t,n,a){if(""===t||null==t)return u;const o="string"==typeof t?e[t]:null;return o&&"object"==typeof o&&"text"in o?c.push("function"==typeof s?s(t):l(o.text,o.fg,o.bg)):c.push(l(t,n,a)),u},addHTML:e=>(e&&c.push(String(e)),u),addAffs:()=>(c.push(a()),u),addDiff:()=>(c.push(o()),u),addTarget:()=>(c.push(i()),u),toHTML:()=>`<span class="nexsys-prompt">${c.join("")}</span>`};return u},ga=new Set(["diffh","diffm","diffhp","diffmp"]),ha=new Set(["target","targetHP"]),getCellSignature=(e={})=>`${String(e.text??"")}\0${String(e.fg??"")}\0${String(e.bg??"")}`,createPromptRenderer=({state:e,getComposer:t,getSortedAffNames:n,getAffSnapshot:a,renderChunkHtml:o=renderChunk})=>{const i=new Map,s=new Map,l=new Map,c=new Map;let u="",d="",p="",m="",g=!0,h=!0,b=!0,y=!0,v=null,S=Boolean(e.vars.blackout),x=[];const markPromptDirty=()=>{y=!0},markVarsDirty=(t=[])=>{Array.isArray(t)&&t.length&&(t.forEach(t=>{const n=e.vars[t];n&&"object"==typeof n&&"text"in n&&s.delete(t),ga.has(t)&&(h=!0),ha.has(t)&&(b=!0)}),y=!0)},syncExternalVarMutations=()=>{let t=!1;const n=new Set;Object.keys(e.vars||{}).forEach(a=>{n.add(a);const o=e.vars[a];if(!o||"object"!=typeof o||!("text"in o))return void((s.has(a)||i.has(a))&&(s.delete(a),i.delete(a),t=!0));const l=getCellSignature(o);s.get(a)!==l&&(s.delete(a),i.delete(a),t=!0,ga.has(a)&&(h=!0),ha.has(a)&&(b=!0))}),[...s.keys()].forEach(e=>{n.has(e)||(s.delete(e),i.delete(e),t=!0,ga.has(e)&&(h=!0),ha.has(e)&&(b=!0))});const a=Boolean(e.vars.blackout);a!==S&&(S=a,t=!0),t&&(y=!0)},syncExternalAffMutations=()=>{if(g||!x.length)return;let t=!1;x.forEach(n=>{const a=getCellSignature(e.affs[n]||{});l.get(n)!==a&&(t=!0)}),t&&(g=!0,y=!0)},syncExternalCureColorMutations=()=>{let t=!1;const n=new Set;Object.keys(e.cureColors||{}).forEach(a=>{n.add(a);const o=getCellSignature(e.cureColors[a]||{});c.get(a)!==o&&(t=!0)}),[...c.keys()].forEach(e=>{n.has(e)||(t=!0)}),t&&(y=!0)},renderVarHtml=t=>{const n=e.vars[t];if(!n||"object"!=typeof n||!("text"in n))return"";const a=getCellSignature(n);return s.get(t)===a&&i.has(t)||(i.set(t,o(n.text,n.fg,n.bg)),s.set(t,a)),i.get(t)||""},buildAffsHtml=()=>{const t=n()||[],{affs:i}=e;if(x=[...t],l.clear(),!t.length)return'<span class="nexsys-prompt-affs mono"></span>';const s=[o("[","brown")];for(let e=0;e<t.length;e+=1){const n=t[e],c=i[n]||{text:n,fg:"",bg:""},u="function"==typeof a&&a(n)||{},d=Number(u.max)>1&&Number.isFinite(Number(u.count))?`(${Number(u.count)})`:"";l.set(n,getCellSignature(i[n]||{}));const p=e<t.length-1?" ":"";s.push(o(`${c.text}${d}${p}`,c.fg,c.bg))}return s.push(o("]","brown")),`<span class="nexsys-prompt-affs mono">${s.join("")}</span>`},renderAffsHtml=()=>(g&&(u=buildAffsHtml(),g=!1),u),renderDiffHtml=()=>{if(h){const t=e.vars.diffh||{},n=e.vars.diffhp||{},a=e.vars.diffm||{},i=e.vars.diffmp||{},s=[];t.text&&(s.push(o(`${t.text}h`,t.fg,t.bg)),n.text&&s.push(o(`(${n.text})`,n.fg,n.bg))),a.text&&(s.length&&s.push(o(", ")),s.push(o(`${a.text}m`,a.fg,a.bg)),i.text&&s.push(o(`(${i.text})`,i.fg,i.bg))),d=s.join(""),h=!1}return d},renderTargetHtml=()=>{if(b){const t=e.vars.target||{},n=e.vars.targetHP||{},a=[];(t.text||n.text)&&(a.push(o(" [")),t.text&&a.push(renderVarHtml("target")),t.text&&n.text&&a.push(o(": ")),n.text&&a.push(renderVarHtml("targetHP")),a.push(o("] "))),p=a.join(""),b=!1}return p},resetTransients=()=>{const{vars:t}=e,n=["diffh","diffm","diffhp","diffmp"].filter(e=>{const n=t[e];return!(!n||""===n.text)&&(n.text="",!0)});n.length&&markVarsDirty(n)};return{render(){const n=t();if("function"!=typeof n)return"";if(syncExternalVarMutations(),syncExternalAffMutations(),syncExternalCureColorMutations(),!y&&n===v)return m;const a=createPromptBuilder({vars:e.vars,affs:e.affs,cureColors:e.cureColors,renderAffsHtml,renderDiffHtml,renderTargetHtml,renderVarHtml,renderChunkHtml:o});try{n(a)}catch(i){return console.error("nexSys4 prompt compose error",i),""}return m=a.toHTML(),y=!1,v=n,Object.keys(e.cureColors||{}).forEach(t=>{c.set(t,getCellSignature(e.cureColors[t]||{}))}),[...c.keys()].forEach(t=>{t in(e.cureColors||{})||c.delete(t)}),resetTransients(),m},markAffsDirty(){g=!0,y=!0},isAffDirty:()=>g,markDiffDirty(){h=!0,y=!0},markTargetDirty(){b=!0,y=!0},markVarsDirty,markPromptDirty,isPromptDirty:()=>y}},defaultCompose=e=>{const{vars:t}=e;t.blackout?e.add("-","reset"):(e.add("paused"),e.add("aeon"),e.add("retard"),e.add("h"),e.add(`(${t.ph.text}), `,t.h.fg,t.h.bg),e.add("m"),e.add(`(${t.pm.text}) `,t.m.fg,t.m.bg),t.rage.text&&Number(t.rage.text)>0&&e.add(`${t.rage.text}R `,t.rage.fg,t.rage.bg),t.karma.text&&e.add(`${t.karma.text}K `,t.karma.fg,t.karma.bg),e.add("eq"),e.add("bal"),e.add("|"),e.add("c"),e.add("k"),e.add("d"),e.add("b"),e.add(" "),e.addAffs(),e.addDiff())},ba=new Set(["diffh","diffm","diffhp","diffmp"]),ya=new Set(["target","targetHP"]),va=Object.freeze(["deafness","blindness","insomnia"]),clampPct=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>100?100:t:0},colorGradation=e=>{const t=clampPct(e),n=t<75?50:Math.abs(t-100)/2+25;return`hsl(${(1.2*t).toFixed(0)}, 100%, ${n}%)`},colorPercentage=e=>{const t=Number(e)||0;return t>75?"green":t>=33?"yellow":"red"},createPromptPresenter=({publicEvents:e,affModel:t,defModel:n,balanceModel:a,systemModel:o,renderPrompt:i}={})=>{const s=createDefaultPromptState();let l=defaultCompose;const isPromptDefTracked=e=>"function"==typeof n?.get?Boolean(n.get(e)):"function"==typeof n?.haveDef,c=va.filter(isPromptDefTracked),u=new Set(c),haveDef=e=>Boolean(n?.haveDef?.(e)),d=createPromptRenderer({state:s,getComposer:()=>l,getSortedAffNames:()=>{const e=t?.currentSorted&&t.currentSorted()||[],n=new Set,a=[];return e.forEach(e=>{u.has(e)||n.has(e)||(n.add(e),a.push(e))}),c.forEach(e=>{haveDef(e)||n.has(e)||(n.add(e),a.push(e))}),a},getAffSnapshot:e=>t?.get?.(e)||null}),isRecord=e=>e&&"object"==typeof e&&!Array.isArray(e),isCellLike=e=>isRecord(e)&&("text"in e||"fg"in e||"bg"in e),normalizeCellField=e=>null==e?"":String(e),getVarRegion=e=>ba.has(e)?"diff":ya.has(e)?"target":"",ensureVarCell=e=>{const t=s.vars[e];if(t&&"object"==typeof t&&"text"in t)return t;if(e in s.vars)return null;const n={text:"",fg:"",bg:""};return s.vars[e]=n,d.markPromptDirty(),n},applyCell=(e,t={},n={})=>{const a=n.create?ensureVarCell(e):s.vars[e];if(!a||"object"!=typeof a||!("text"in a))return!1;let o=!1;if("text"in t){const e=normalizeCellField(t.text);a.text!==e&&(a.text=e,o=!0)}if("fg"in t){const e=normalizeCellField(t.fg);a.fg!==e&&(a.fg=e,o=!0)}if("bg"in t){const e=normalizeCellField(t.bg);a.bg!==e&&(a.bg=e,o=!0)}return!!o&&(d.markVarsDirty([e]),"diff"===n.region&&d.markDiffDirty(),"target"===n.region&&d.markTargetDirty(),!0)},applyFlag=(e,t)=>{const n=Boolean(t);return s.vars[e]!==n&&(s.vars[e]=n,d.markPromptDirty(),!0)},patchVars=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{const a=s.vars[e],o=getVarRegion(e);"boolean"!=typeof a?"boolean"!=typeof n||void 0!==a?t=applyCell(e,isCellLike(n)?n:{text:n},{create:!0,region:o})||t:s.vars[e]!==n&&(s.vars[e]=n,d.markPromptDirty(),t=!0):t=applyFlag(e,n)||t}),t},patchAffs=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{if(null===n)return void(e in s.affs&&(delete s.affs[e],t=!0));const a=isCellLike(n)?n:{text:n},o=s.affs[e],i=o&&"object"==typeof o?o:s.affs[e]={text:"",fg:"",bg:""};["text","fg","bg"].forEach(e=>{if(!(e in a))return;const n=normalizeCellField(a[e]);i[e]!==n&&(i[e]=n,t=!0)})}),t&&d.markAffsDirty(),t},patchCureColors=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{if(null===n)return void(e in s.cureColors&&(delete s.cureColors[e],t=!0));const a=isRecord(n)?n:{fg:n},o=s.cureColors[e],i=o&&"object"==typeof o?o:s.cureColors[e]={fg:"",bg:""};["fg","bg"].forEach(e=>{if(!(e in a))return;const n=normalizeCellField(a[e]);i[e]!==n&&(i[e]=n,t=!0)})}),t&&d.markPromptDirty(),t},updateBalanceGlyphs=()=>{applyCell("eq",{text:a?.have?.(Wn.EQUILIBRIUM)?"e":""}),applyCell("bal",{text:a?.have?.(Wn.BALANCE)?"x":""})},updateDefGlyphs=()=>{applyCell("c",{text:haveDef("cloak")?"c":""}),applyCell("k",{text:haveDef("kola")?"k":""}),applyCell("d",{text:haveDef("deafness")?"d":""}),applyCell("b",{text:haveDef("blindness")?"b":""}),applyCell("shield",{text:haveDef("shield")?"(":""}),applyCell("prismatic",{text:haveDef("prismatic")?"[":""})},pctOf=(e,t)=>{const n=Number(e)||0,a=Number(t)||0;return a>0?100*n/a:0},onVitals=(e={})=>{const t=e.current||o?.snapshot?.().char||{},n=pctOf(t.hp,t.maxhp),a=pctOf(t.mp,t.maxmp),i=pctOf(t.ep,t.maxep),s=pctOf(t.wp,t.maxwp);applyCell("h",{text:t.hp??"",fg:colorGradation(n)}),applyCell("m",{text:t.mp??"",fg:colorGradation(a)}),applyCell("e",{text:t.ep??"",fg:colorGradation(i)}),applyCell("w",{text:t.wp??"",fg:colorGradation(s)}),applyCell("maxh",{text:t.maxhp??""}),applyCell("maxm",{text:t.maxmp??""}),applyCell("maxe",{text:t.maxep??""}),applyCell("maxw",{text:t.maxwp??""}),applyCell("ph",{text:`${n.toFixed(1)}%`}),applyCell("pm",{text:`${a.toFixed(1)}%`}),applyCell("pe",{text:`${i.toFixed(1)}%`}),applyCell("pw",{text:`${s.toFixed(1)}%`});const l=Number(e.hpDiff||0),c=Number(e.mpDiff||0),u=Number(t.maxhp)||0,d=Number(t.maxmp)||0;if(l){const e=l<0?"red":"green";applyCell("diffh",{text:`${l>0?"+":""}${l}`,fg:e},{region:"diff"}),applyCell("diffhp",{text:u?`${(l/u*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}if(c){const e=c<0?"red":"green";applyCell("diffm",{text:`${c>0?"+":""}${c}`,fg:e},{region:"diff"}),applyCell("diffmp",{text:d?`${(c/d*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}"karma"in t&&applyCell("karma",{text:t.karma??""}),"rage"in t&&applyCell("rage",{text:t.rage??""}),"essence"in t&&applyCell("essence",{text:t.essence??""}),"kai"in t&&applyCell("kai",{text:t.kai??""}),applyFlag("blackout",t.dead)},onRuntimeChange=()=>{const e=o?.snapshot?.().runtime||{};applyCell("retard",{text:e.slowMode?"(r)":""}),applyCell("paused",{text:e.paused?"(p)":""}),applyCell("aeon",{text:e.aeonLocked?"(a)":""})},onTargetChange=()=>{const e=o?.snapshot?.().target||{};applyCell("target",{text:e.text||""},{region:"target"}),applyCell("targetHP",{text:e.hp||""},{region:"target"});const t=parseInt(e.hp,10);Number.isFinite(t)&&applyCell("targetHP",{fg:colorGradation(t)},{region:"target"})},onAffEvent=(e={})=>{"aeon"===e?.name&&applyCell("aeon",{text:t?.haveAff?.("aeon")?"(a)":""}),d.markAffsDirty()},onDefEvent=(e={})=>{updateDefGlyphs(),u.has(e?.id)&&d.markAffsDirty()},onBalanceEvent=()=>updateBalanceGlyphs(),p=[];let m=!1;const subscribe=(t,n)=>{if(!e||"function"!=typeof e.on)return;const a=e.on(t,n);"function"==typeof a&&p.push(a)};return{start:()=>{m||(m=!0,subscribe(re.SYSTEM_VITALS_CHANGED,onVitals),subscribe(re.SYSTEM_RUNTIME_CHANGED,onRuntimeChange),subscribe(re.SYSTEM_PAUSE_CHANGED,onRuntimeChange),subscribe(re.SYSTEM_TARGET_CHANGED,onTargetChange),subscribe(re.AFF_GOT,onAffEvent),subscribe(re.AFF_LOST,onAffEvent),subscribe(re.AFF_STACK_CHANGED,onAffEvent),subscribe(re.AFF_PRIORITY_CHANGED,()=>d.markAffsDirty()),subscribe(re.DEF_GOT,onDefEvent),subscribe(re.DEF_LOST,onDefEvent),subscribe(re.BALANCE_GOT,onBalanceEvent),subscribe(re.BALANCE_LOST,onBalanceEvent),subscribe(re.BALANCE_RESET,onBalanceEvent),subscribe(re.BALANCE_TIMER_RESTARTED,onBalanceEvent),updateDefGlyphs(),updateBalanceGlyphs(),onRuntimeChange())},stop:()=>{p.forEach(e=>{try{e()}catch(t){console.error("nexSys4 prompt presenter unsubscribe failed",t)}}),p.length=0,m=!1},render:(e={})=>{const t=d.render();return"function"==typeof i?i(t,e):t},markAffsDirty:()=>d.markAffsDirty(),markPromptDirty:()=>d.markPromptDirty(),patchVars,patchAffs,patchCureColors,colorGradation,colorPercentage,get vars(){return s.vars},get affs(){return s.affs},get cureColors(){return s.cureColors},get compose(){return l},set compose(e){l="function"==typeof e?e:defaultCompose,d.markPromptDirty()},_state:s,_onVitals:onVitals,_onAffEvent:onAffEvent,_onDefEvent:onDefEvent,_onBalanceEvent:onBalanceEvent,_onRuntimeChange:onRuntimeChange,_onTargetChange:onTargetChange}},Sa=Object.freeze({INTERNAL:"internal",JS:"js",EVENTSTREAM:"eventstream"}),xa=Object.freeze({STABLE:"stable",EXPERIMENTAL:"experimental",DEPRECATED:"deprecated"}),Ca=/^nexsys4(\.[a-z0-9_-]+)+$/,wa=Object.freeze(Object.values(Sa)),ka=Object.freeze(Object.values(xa)),Ea=Object.freeze({[Sa.INTERNAL]:Object.freeze([null,Sa.INTERNAL]),[Sa.JS]:Object.freeze([null,Sa.INTERNAL,Sa.JS]),[Sa.EVENTSTREAM]:Object.freeze([null,Sa.INTERNAL,Sa.JS,Sa.EVENTSTREAM])}),topicEntry=(e,t,n={})=>{const a=n.scopedAudience??null,o={audience:e,scopedAudience:a,stability:n.stability??xa.STABLE,description:t};return null!=a&&n.scopedPayloadKey&&(o.scopedPayloadKey=n.scopedPayloadKey),Object.freeze(o)},eventStreamTopic=(e,t={})=>topicEntry(Sa.EVENTSTREAM,e,t),jsTopic=(e,t={})=>topicEntry(Sa.JS,e,t),scopedEventStreamTopic=(e,t)=>eventStreamTopic(e,{scopedAudience:Sa.EVENTSTREAM,scopedPayloadKey:t}),isScopedAudienceAllowed=(e,t)=>{const n=Ea[e];return Array.isArray(n)&&n.includes(t)},validateRegistryEntry=(e,t)=>{if(!Ca.test(e))throw new Error(`Invalid topic registry key "${e}": expected lowercase dotted nexsys4.* form.`);if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(`Invalid registry entry for "${e}": expected an object.`);if(!wa.includes(t.audience))throw new Error(`Invalid audience for "${e}": received "${t.audience}".`);if(!("scopedAudience"in t))throw new Error(`Missing scopedAudience metadata for "${e}".`);if(null!=t.scopedAudience&&!wa.includes(t.scopedAudience))throw new Error(`Invalid scopedAudience for "${e}": received "${t.scopedAudience}".`);if(!isScopedAudienceAllowed(t.audience,t.scopedAudience??null))throw new Error(`Invalid scopedAudience for "${e}": "${t.scopedAudience}" exceeds base audience "${t.audience}".`);if(null!=t.scopedAudience&&("string"!=typeof t.scopedPayloadKey||!t.scopedPayloadKey.trim()))throw new Error(`Missing scopedPayloadKey for scoped topic "${e}".`);if(!ka.includes(t.stability))throw new Error(`Invalid stability for "${e}": received "${t.stability}".`);if("string"!=typeof t.description||!t.description.trim())throw new Error(`Invalid description for "${e}": expected a non-empty string.`)},validateTopicRegistry=(e,t=Object.values(re))=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Invalid topic registry: expected an object.");for(const n of t)if(!Object.prototype.hasOwnProperty.call(e,n))throw new Error(`Missing registry entry for "${n}".`);for(const n of Object.keys(e)){if(!t.includes(n))throw new Error(`Unexpected registry entry for "${n}".`);validateRegistryEntry(n,e[n])}return!0},_a=Object.freeze({[re.RUNTIME_STARTED]:eventStreamTopic("Runtime startup completed."),[re.RUNTIME_STOPPED]:eventStreamTopic("Runtime shutdown completed."),[re.RAW_GMCP]:eventStreamTopic("Raw GMCP payload observed at the adapter boundary."),[re.SYSTEM_VITALS_CHANGED]:eventStreamTopic("Character vitals changed."),[re.SYSTEM_HEALTH_CHANGED]:eventStreamTopic("Health changed."),[re.SYSTEM_MANA_CHANGED]:eventStreamTopic("Mana changed."),[re.SYSTEM_RAGE_CHANGED]:eventStreamTopic("Rage changed."),[re.SYSTEM_BLEED_CHANGED]:eventStreamTopic("Bleed changed."),[re.SYSTEM_STATUS_CHANGED]:eventStreamTopic("Character status snapshot changed."),[re.SYSTEM_CLASS_CHANGED]:eventStreamTopic("Character class changed."),[re.SYSTEM_TARGET_CHANGED]:eventStreamTopic("Current target changed."),[re.SYSTEM_ROOM_CHANGED]:eventStreamTopic("Current room changed."),[re.SYSTEM_ROOM_ITEMS_CHANGED]:eventStreamTopic("Visible room items changed."),[re.SYSTEM_RUNTIME_CHANGED]:jsTopic("Runtime implementation state changed."),[re.SYSTEM_PAUSE_CHANGED]:eventStreamTopic("Runtime pause state changed."),[re.SYSTEM_PAUSED]:eventStreamTopic("Runtime paused."),[re.SYSTEM_UNPAUSED]:eventStreamTopic("Runtime unpaused."),[re.SYSTEM_LOADED]:eventStreamTopic("Startup game-state initialization completed."),[re.SYSTEM_SETTINGS_CHANGED]:jsTopic("Runtime settings changed."),[re.SYSTEM_BASELINE_CHANGED]:jsTopic("Baseline intent changed."),[re.SYSTEM_DEATH_DETECTED]:eventStreamTopic("Death was detected from character state."),[re.SYSTEM_MOUNT_CHANGED]:eventStreamTopic("Mounted state changed."),[re.SYSTEM_WIELDED_CHANGED]:eventStreamTopic("Wielded equipment changed."),[re.UI_CONFIG_CHANGED]:jsTopic("Configuration dialog open state changed."),[re.AFF_GOT]:scopedEventStreamTopic("Affliction became active.","name"),[re.AFF_LOST]:scopedEventStreamTopic("Affliction was cured or removed.","name"),[re.AFF_STACK_CHANGED]:scopedEventStreamTopic("Affliction stack count changed.","name"),[re.AFF_PRIORITY_CHANGED]:jsTopic("Affliction priority changed."),[re.DEF_GOT]:scopedEventStreamTopic("Defence became active.","id"),[re.DEF_LOST]:scopedEventStreamTopic("Defence expired or was removed.","id"),[re.DEF_PRIORITY_CHANGED]:jsTopic("Defence priority changed."),[re.BALANCE_GOT]:scopedEventStreamTopic("Balance became available.","id"),[re.BALANCE_LOST]:scopedEventStreamTopic("Balance was consumed or lost.","id"),[re.BALANCE_RESET]:scopedEventStreamTopic("Balance timing was reset.","id"),[re.BALANCE_DURATION_OBSERVED]:scopedEventStreamTopic("Observed balance recovery duration changed.","id"),[re.BALANCE_TIMER_RESTARTED]:jsTopic("Balance loss timer was restarted without a state flip."),[re.EQBAL_GOT]:eventStreamTopic("Balance and equilibrium are both available."),[re.LIMB_HIT]:scopedEventStreamTopic("Limb damage was recorded.","limb"),[re.LIMB_RESET]:scopedEventStreamTopic("Limb tracking was reset.","limb"),[re.LIMB_STAGE_CHANGED]:scopedEventStreamTopic("Limb damage stage changed.","limb"),[re.LIMB_DECAY]:jsTopic("Limb damage counter reset after 3 minutes of no hits."),[re.CACHE_AMOUNT_CHANGED]:eventStreamTopic("Cached item counts changed."),[re.CACHE_INVENTORY_LIST]:eventStreamTopic("Inventory cache snapshot applied."),[re.CACHE_RIFT_LIST]:eventStreamTopic("Rift cache snapshot applied."),[re.CACHE_PRECACHE_CHANGED]:jsTopic("Desired precache state changed."),[re.ITEM_ROOM_ADDED]:eventStreamTopic("An item appeared in the current room."),[re.ITEM_ROOM_REMOVED]:eventStreamTopic("An item left the current room."),[re.ITEM_ROOM_UPDATED]:eventStreamTopic("A current-room item changed."),[re.ITEM_ROOM_LIST]:eventStreamTopic("Current-room item list snapshot received."),[re.ITEM_INV_ADDED]:eventStreamTopic("An item was added to inventory."),[re.ITEM_INV_REMOVED]:eventStreamTopic("An item was removed from inventory."),[re.ITEM_INV_UPDATED]:eventStreamTopic("An inventory item changed."),[re.ITEM_INV_LIST]:eventStreamTopic("Inventory item list snapshot received."),[re.QUEUE_UPDATED]:jsTopic("Queue contents changed."),[re.QUEUE_FLUSHED]:jsTopic("Queue flush decision completed."),[re.QUEUE_DEFERRED]:jsTopic("Queue execution was deferred."),[re.QUEUE_CLEARED]:jsTopic("Queue contents were cleared."),[re.QUEUE_SENT]:scopedEventStreamTopic("A queue submission was accepted by the server.","queueName"),[re.QUEUE_FIRED]:scopedEventStreamTopic("A queue fire was acknowledged for a named queue.","queueName"),[re.QUEUE_FIRED_ACK]:eventStreamTopic("Queue fire acknowledgement was recorded."),[re.SERVERSIDE_AFF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside affliction priority confirmation was observed.","id"),[re.SERVERSIDE_DEF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside defence priority confirmation was observed.","id"),[re.SERVERSIDE_DIRTY]:jsTopic("Serverside reconciliation dirty flag changed."),[re.SERVERSIDE_EVALUATED]:jsTopic("Serverside evaluation completed."),[re.SERVERSIDE_RULE_CHANGED]:jsTopic("Legacy generic serverside rule-change signal reserved for compatibility."),[re.RULE_ADDED]:jsTopic("Serverside rule was added to the registry."),[re.RULE_REMOVED]:jsTopic("Serverside rule was removed from the registry."),[re.RULE_ENABLED]:jsTopic("Serverside rule was enabled."),[re.RULE_DISABLED]:jsTopic("Serverside rule was disabled."),[re.RULE_PACK_LOADED]:jsTopic("Serverside rule pack was loaded."),[re.RULE_PACK_UNLOADED]:jsTopic("Serverside rule pack was unloaded."),[re.RULE_ORDER_CHANGED]:jsTopic("Serverside rule evaluation order changed."),[re.RULE_ACTIVATED]:scopedEventStreamTopic("Serverside rule became active.","id"),[re.RULE_DEACTIVATED]:scopedEventStreamTopic("Serverside rule stopped being active.","id")});validateTopicRegistry(_a);var buildExactTopicSet=e=>new Set(Object.keys(e||{})),buildScopedBaseMap=e=>{const t=new Map;return Object.entries(e||{}).forEach(([e,n])=>{null!=n?.scopedAudience&&t.set(e,n.scopedAudience)}),t},createEventStreamPublisher=({adapter:e,registry:t,globallyEnabled:n,rawGmcpEnabled:a})=>{const o=buildExactTopicSet(t),i=buildScopedBaseMap(t),resolveAudience=e=>{const n=String(e||"").trim();if(!n)return null;if(o.has(n))return t[n].audience;const a=n.lastIndexOf(".");if(a<0)return null;const s=n.slice(0,a);return i.get(s)??null},isAllowed=(e,t)=>!!n&&(t===Sa.EVENTSTREAM&&!(e===re.RAW_GMCP&&!a)),evaluate=(t,n)=>{const a=String(t||"").trim();return!!isAllowed(a,resolveAudience(a))&&("function"==typeof e?.raiseToEventStream&&e.raiseToEventStream(a,n))};return{attach:e=>e&&"function"==typeof e.onAny?e.onAny((e,t)=>{evaluate(t,e)}):()=>{},evaluate,resolveAudience,debugInfo:()=>({globallyEnabled:Boolean(n),rawGmcpEnabled:Boolean(a),exactTopicCount:o.size,scopedBaseCount:i.size})}},normalizeScopedTopicSegment=e=>{const t=String(e||"").trim().toLowerCase();return t?t.replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""):""},normalizePublishedPayload=(e={})=>e&&"object"==typeof e&&!Array.isArray(e)?e:{value:e},normalizeMessage=(e,t={},n)=>{const a=normalizePublishedPayload(t);return{...a,topic:e,at:a.at??n()}},createRuntimeEventPorts=({adapter:e,internalEvents:t,publicEvents:n,now:a})=>{const publishPublic=(e,t={})=>{const o=normalizeMessage(e,t,a);return n.emit(e,o),o},publishPublicScoped=(e,t={},n)=>{const a=publishPublic(e,t),o=normalizeScopedTopicSegment(n);return o?(publishPublic(`${e}.${o}`,a),a):a};return{publishPublic,publishPublicScoped,publishInternal:(e,n={})=>{const o=normalizeMessage(e,n,a);return t.emit(e,o),o},publishAdapterLocal:(t,n={})=>("function"==typeof e?.emitLocal&&e.emitLocal(t,n),n)}},createRuntimeEngine=({adapter:e,seedData:t,options:n={}})=>{const a=resolveAdapterCapabilities(e),{now:o,commandDispatcher:i,systemModel:s,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:p,persistence:m,queueController:g,serverside:h,combatService:b,noticeCenter:y,defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C}=createRuntimeDependencies({adapter:e,seedData:t,options:n}),w=createGmcpBlockBuffer({coalesce:!1!==n.coalesceGmcp}),k=createEventBus({label:"nexSys4.internal"}),E=createEventBus({label:"nexSys4.public"}),P=createPromptPresenter({publicEvents:E,affModel:l,defModel:u,balanceModel:c,systemModel:s,renderPrompt:(t,n={})=>a.promptRender?e.renderPrompt(t,n):t}),T=createEventStreamPublisher({adapter:e,registry:_a,globallyEnabled:!1!==n.publishToEventStream,rawGmcpEnabled:!0===n.publishRawGmcp}),R=createRuntimeEventPorts({adapter:e,internalEvents:k,publicEvents:E,now:o});T.attach(E);const setRuntimePhase=(e,t={})=>s.setRuntime({phase:e,...t}),syncDebugMode=()=>{const t=Boolean(s.getSettings().debug);return a.debugToggle&&e.setDebugEnabled(t),k.setDebugEnabled?.(t),E.setDebugEnabled?.(t),t},M=R.publishPublic,D=R.publishPublicScoped,O=R.publishAdapterLocal,publishStartupPhase=e=>O("StartupPhaseEvent",{phase:e});let $;const I=createCuringSetProvisioner({adapter:e,serverside:h,dispatchCommands:i.sendCommands,setRuntimePhase,publishStartupPhase,options:n}),N=createStartupCoordinator({adapter:e,systemModel:s,serverside:h,persistence:m,seedBaselineFromObservedStartup:()=>U.seedBaselineFromObservedStartup({skipObservedAdoption:I.wasCreatedThisRun()}),noticeCenter:y,buildPersistenceSnapshot:()=>U.buildPersistenceSnapshot(),startupTimeoutMs:n.startupTimeoutMs,maxStartupRetries:n.maxStartupRetries,startupFinalizeTimeoutMs:n.startupFinalizeTimeoutMs,maxStartupFinalizeRecoveryAttempts:n.maxStartupFinalizeRecoveryAttempts,publishStartupPhase,publishLoaded:e=>M(re.SYSTEM_LOADED,e),releaseStartupPause:e=>$.setPaused(!1,e),setRuntimePhase}),L=createGmcpApplier({emit:(e,t)=>k.emit(e,t)}),j=createItemTopicNotifier({publishPublic:M}),queueTranslatedGmcp=e=>{L.translate(e).forEach(e=>{j.notify(e),w.enqueue(e)})},hydrateCacheFromAdapterGmcp=()=>{if(!a.gmcpSnapshot)return!1;const t=e.getGMCP();return!(!t||"object"!=typeof t)&&(d.hydrateFromGmcp?.(t)??!1)},B=createRuntimeFlushCoordinator({adapter:e,systemModel:s,serverside:h,outputCycle:C,flushGmcpBuffer:()=>{w.flush().forEach(({topic:e,payload:t})=>{k.emit(e,t)}),d.completeObservationBlock?.({source:"runtime-flush"})}}),F=createCuringMasterSwitch({setPaused:(e,t)=>$.setPaused(e,t),noticeCenter:y,now:o,options:n});$=createRuntimeControlApi({systemModel:s,serverside:h,queueController:g,noticeCenter:y,curingMasterSwitch:F,dispatchCommands:i.sendCommands,markDirty:B.markDirty,onResume:e=>{B.isFlushing()||B.flushCycle(e)}});const q=createCuringSetGuard({serverside:h,systemModel:s,runtimeControl:$,noticeCenter:y}),U=createRuntimePersistenceApi({persistence:m,systemModel:s,affModel:l,defModel:u,cacheModel:d,serverside:h,syncDebugMode,markDirty:B.markDirty}),V=createRuntimeEventWiring({adapter:e,internalEvents:k}),H=createRuntimeStartupOrchestrator({adapter:e,systemModel:s,persistenceApi:U,startup:N,curingSetProvisioner:I,noticeCenter:y,syncDebugMode,isStarted:B.isStarted,markStarted:B.start,setRuntimePhase,publishStartupPhase,attachEventWiring:()=>{V.attach({options:n,queueTranslatedGmcp,publishPublic:M,publishPublicScoped:D,noticeCenter:y,syncDebugMode,systemModel:s,affModel:l,defModel:u,balanceModel:c,cacheModel:d,limbModel:p,queueController:g,serverside:h,markDirty:B.markDirty,invalidateOutput:B.invalidateOutput,flushCycle:B.flushCycle,outputCycle:C,startup:N,curingSetProvisioner:I,curingSetGuard:q,curingMasterSwitch:F,runtimeControl:$,savePersistence:U.savePersistence})},promptPresenter:P,publishRuntimeStarted:()=>M(re.RUNTIME_STARTED,{source:"runtime-start"}),hydrateCacheFromAdapterGmcp,runtimeControl:$,commandDispatcher:i,debugOverride:n.bootstrapDebugOverride}),stop=()=>{H.dispose(),B.isStarted()&&(M(re.RUNTIME_STOPPED,{source:"runtime-stop"}),B.stop(),N.dispose?.(),C.dispose?.(),V.dispose(),setRuntimePhase(ne.IDLE,{paused:!0,startupFailureMessage:""}),P.stop(),l.dispose?.(),c.dispose?.(),p.dispose(),k.clear(),E.clear(),T.attach(E),a.destroy&&e.destroy())};let W=null;const snapshot=()=>{const e=s.snapshot(),t=l.snapshot(),n=c.snapshot(),a=u.snapshot(),o=d.snapshot(),i=p.snapshot(),m=g.snapshot(),b=h.snapshot();return W&&W.system===e&&W.affs===t&&W.balances===n&&W.defs===a&&W.cache===o&&W.limbs===i&&W.queues===m&&W.serverside===b||(W={system:e,affs:t,balances:n,defs:a,cache:o,limbs:i,queues:m,serverside:b}),W};return{start:H.start,stop,flushCycle:B.flushCycle,savePersistence:U.savePersistence,setPaused:$.setPaused,setSlowMode:$.setSlowMode,setConfigOpen:(e,t="runtime-ui")=>M(re.UI_CONFIG_CHANGED,{open:Boolean(e),source:t}),get paused(){return s.getRuntime().paused},snapshot,adapter:e,models:{systemModel:s,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:p},services:{combat:b},planners:{defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C},queueController:g,serverside:h,curingSetGuard:q,noticeCenter:y,persistence:m,commandDispatcher:i,promptPresenter:P,topics:re,onEvent:(e,t)=>E.on(e,t),offEvent:(e,t)=>E.off(e,t),markDirty:B.markDirty,ingestGmcp(e,t){queueTranslatedGmcp({tag:e,payload:t}),!0===n.publishRawGmcp&&M(re.RAW_GMCP,{source:"manual-gmcp",tag:String(e||"").trim().toLowerCase(),payload:t}),B.markDirty(`manual-gmcp:${e}`)},evaluateNow:(e="manual")=>B.flushCycle(e),addOutputCommands(e=[]){C.injectCommands(Array.isArray(e)?e:[e]),B.markDirty("manual-output-inject")},dispatchCommands:i.sendCommands,debugInfo:()=>({adapter:e.debugInfo?.()??null,internalEvents:k.debugInfo?.()??null,publicEvents:E.debugInfo?.()??null,eventStreamPublisher:T.debugInfo?.()??null})}},toArray=e=>Array.isArray(e)?e:[e],normalizeQueueKey=e=>String(e||"").trim(),createPublicCommandApi=({runtime:e})=>{const t=e.queueController,n=t.listQueues().map(e=>({queueId:e,meta:t.getQueue(e)||{}})),a=new Map,o=new Map,resolveQueueId=e=>{const t=normalizeQueueKey(e);return o.get(t)||t},getQueueHandle=e=>{const t=resolveQueueId(e);return a.get(t)||null},inspectQueue=e=>t.getQueue(resolveQueueId(e)),addQueue=(e,n,a)=>t.add(resolveQueueId(e),n,a),addClearQueue=(e,n,a)=>t.addClear(resolveQueueId(e),n,a),prependQueue=(e,n,a)=>t.prepend(resolveQueueId(e),n,a),clearLocalQueue=e=>t.clear(resolveQueueId(e)),clearGameQueue=e=>t.clearQueue(resolveQueueId(e)),flushQueue=(e,n)=>t.flush(resolveQueueId(e),n),isQueued=(e,t)=>{if(!t)return!1;const n=inspectQueue(e);return!!n&&(n.items.includes(t)||n.prepend.includes(t))};n.forEach(({queueId:e,meta:t})=>{a.set(e,{get id(){return e},get queueId(){return e},get name(){return inspectQueue(e)?.name||t.name||""},get type(){return inspectQueue(e)?.type||t.type||""},get exclusions(){return inspectQueue(e)?.exclusions||t.exclusions||[]},inspect:()=>inspectQueue(e),state:()=>inspectQueue(e),add:(t,n)=>addQueue(e,t,n),addClear:(t,n)=>addClearQueue(e,t,n),prepend:(t,n)=>prependQueue(e,t,n),clear:()=>clearLocalQueue(e),clearQueue:()=>clearGameQueue(e),flush:t=>flushQueue(e,t),isQueued:t=>isQueued(e,t)}),o.set(e,e),t.name&&o.set(t.name,e)});const i={controller:t,listQueues:()=>t.listQueues(),inspect:e=>inspectQueue(e),get:e=>getQueueHandle(e),add:(e,t,n)=>addQueue(e,t,n),addClear:(e,t,n)=>addClearQueue(e,t,n),prepend:(e,t,n)=>prependQueue(e,t,n),clear:e=>clearLocalQueue(e),clearQueue:e=>clearGameQueue(e),flush:(e,t)=>flushQueue(e,t),flushAll:()=>t.flushAll(),isQueued:(e,t)=>isQueued(e,t)},s={listQueues:()=>i.listQueues(),inspect:e=>i.inspect(e),get:e=>i.get(e)},l={};return n.forEach(({queueId:e,meta:t})=>{const n=a.get(e);n&&(l[e]=n,s[e]=n,t.name&&(s[t.name]=n))}),{queue:i,queues:s,...l,sendCmd:(t,n={})=>e.dispatchCommands([t],{source:"public-api",...n}),setTarget(t){const n=String(t??"").trim();if(!n)return{target:"",dispatched:!1,dispatchResult:null};const a=e.dispatchCommands(["settarget "+n],{source:"set-target"});return{target:n,dispatched:Boolean(a),dispatchResult:a}},sendInline:(t=[],n={})=>e.dispatchCommands(toArray(t),{source:"public-api-inline",...n}),addOutput(t=[]){e.addOutputCommands(toArray(t))},evaluateNow:(t="public-api")=>e.evaluateNow(t)}},Pa="nexSys4",Ta="https://unpkg.com/nexsys4/dist/nexSys4.nxs",Aa="khaseem",Ra=Object.freeze(["nexSys4.userSettings"]),Ma=1e4,Da=Object.freeze({fg:"red"}),toLowerName=e=>String(e??"").trim().toLowerCase(),safeCall=e=>{try{return e()}catch{return null}},clonePackageItem=e=>{if(!e||"object"!=typeof e)return null;if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return e}},getReflexes=e=>safeCall(()=>e?.reflexes?.())??null,getPackageRegistry=e=>{const t=safeCall(()=>e?.packages?.());if("function"==typeof t?.get)return t;const n=safeCall(()=>getReflexes(e)?.packages?.());return"function"==typeof n?.get?n:null},getInstalledPackage=(e,t)=>safeCall(()=>getPackageRegistry(e)?.get(t))??null,findGroupByName=(e,t)=>{if(!Array.isArray(e))return null;const n=toLowerName(t);return e.find(e=>toLowerName(e?.name)===n)??null},capturePreservedGroups=(e,t)=>t.map(t=>{const n=findGroupByName(e?.items,t);return n?{name:t,data:clonePackageItem(n)}:null}).filter(Boolean),applyPreservedGroup=(e,t,n)=>{const a=findGroupByName(e?.items,t.name);a&&t.data&&("function"!=typeof a.apply?"object"==typeof a&&Object.assign(a,clonePackageItem(t.data)):a.apply(t.data,n))},enableShippedGroups=(e,t)=>{if(!Array.isArray(e?.items))return;const n=new Set(t.map(toLowerName));e.items.filter(e=>"group"===e?.type&&!n.has(toLowerName(e.name))).forEach(e=>{e.enabled=!0})},reportUpdateError=({adapter:e,consoleObj:t,message:n,nexusClient:a})=>{t.error(n),"function"!=typeof e?.notice?a?.display?.(n):e.notice(n,Da)},createAbortSignal=({AbortControllerCtor:e,setTimeoutFn:t,timeoutMs:n})=>{if(!e||n<=0)return{signal:void 0,timeout:null};const a=new e,o=t(()=>a.abort(),n);return{signal:a.signal,timeout:o}},updateNxs=async({adapter:e=null,clearTimeoutFn:t=clearTimeout,consoleObj:n=console,fetchFn:a=globalThis.fetch,nexusClient:o=globalThis.nexusclient,packageName:i=Pa,preservedGroupNames:s=Ra,setTimeoutFn:l=setTimeout,skipCharacterName:c=Aa,timeoutMs:u=Ma,url:d=Ta}={})=>{if(c&&toLowerName(o?.charname)===toLowerName(c))return null;let p=null;try{if("function"!=typeof a)throw new Error("fetch is not available.");const e=getInstalledPackage(o,i);if(!e||"function"!=typeof e.apply)throw new Error(`${i} package is not installed in Nexus.`);const t=capturePreservedGroups(e,s),{signal:n,timeout:c}=createAbortSignal({AbortControllerCtor:globalThis.AbortController,setTimeoutFn:l,timeoutMs:u});p=c;const m=await a(d,{cache:"no-store",...n?{signal:n}:{}});if(!m?.ok)throw new Error(`${i} update failed: ${m?.status??"unknown"} ${m?.statusText??""}`.trim());const g=await m.json(),h=getReflexes(o);e.apply(g,h);const b=getInstalledPackage(o,i)??e;return t.forEach(e=>applyPreservedGroup(b,e,h)),enableShippedGroups(b,s),g}catch(m){return reportUpdateError({adapter:e,consoleObj:n,message:"AbortError"===m?.name?`${i} update timed out. Check your connection.`:`${i} update error: ${m?.message??String(m)}`,nexusClient:o}),null}finally{null!==p&&t(p)}},createPublicControlApi=({runtime:e,getModels:t})=>{const applySettings=(n={})=>(t().systemModel.setSettings(n,{setBaseline:!0}),e.savePersistence());return{pause:()=>e.setPaused(!0),unpause:()=>e.setPaused(!1),pauseToggle:()=>e.setPaused(!e.paused),setSlowMode:t=>e.setSlowMode(t),slowOn:()=>e.setSlowMode(!0),slowOff:()=>e.setSlowMode(!1),applySettings,setDebug:e=>applySettings({debug:Boolean(e)}),debugOn:()=>applySettings({debug:!0}),debugOff:()=>applySettings({debug:!1}),debug:()=>({runtime:e.snapshot(),internals:e.debugInfo?.()??null}),start:e.start,stop:e.stop,updateNxs:(t={})=>updateNxs({adapter:e.adapter,...t})}},resolveAudienceFor=(e,t)=>{const n=String(e||"").trim();if(!n)return null;if(Object.prototype.hasOwnProperty.call(t,n))return t[n].audience;const a=n.lastIndexOf(".");return a<0?null:t[n.slice(0,a)]?.scopedAudience??null},isPublicAudience=e=>e===Sa.JS||e===Sa.EVENTSTREAM,defaultIsDevMode=()=>{try{const e=globalThis.process?.env?.NODE_ENV;return!!e&&"production"!==e}catch{return!1}},defaultWarn=e=>{console.warn(e)},createPublicEventApi=({runtime:e,registry:t=_a,isDevMode:n=defaultIsDevMode,warn:a=defaultWarn})=>{const o={on(o,i){const s=String(o||"").trim();return s&&"function"==typeof i?isPublicAudience(resolveAudienceFor(s,t))?e.onEvent(s,i):(n()&&a(`[nexSys4] topic "${s}" is not a public topic`),()=>{}):()=>{}},off(t,n){const a=String(t||"").trim();return!!a&&e.offEvent(a,n)}};return{events:o,on:o.on,off:o.off}},createPublicMutationApi=({runtime:e,getModels:t})=>{const n=e.services.combat,normalizeServersidePriority=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},samePriorityMaps=(e={},t={})=>{const n=new Set([...Object.keys(e||{}),...Object.keys(t||{})]);for(const a of n)if(normalizeServersidePriority(e?.[a])!==normalizeServersidePriority(t?.[a]))return!1;return!0},resetPriorities=(e=[],t,n="public-api")=>{let a=!1;return e.forEach(e=>{t(e,n)&&(a=!0)}),a},buildAffPriorityTarget=e=>{const t=e.list().reduce((t,n)=>(t[n]=normalizeServersidePriority(e.getPriority?.(n)),t),{});return e.getCountablePriorityNames?.().forEach(e=>{t[e]=0}),t},buildDefPriorityTarget=(e,t)=>{const n=t.snapshot?.().char?.class||"";return e.list().reduce((t,a)=>{const o=e.get(a);return!o?.serverside||o.static?t:"function"!=typeof e.isAvailableForClass||e.isAvailableForClass(a,n)?(t[a]=normalizeServersidePriority(e.getPriority?.(a)),t):t},{})},restorePersistedPriorities=({restoreAffs:n=!1,restoreDefs:a=!1,reason:o})=>{const{affModel:i,defModel:s,systemModel:l}=t();let c=!1;n&&(c=resetPriorities(i.list(),(e,t)=>i.resetPriority(e,t))||c),a&&(c=resetPriorities(s.list(),(e,t)=>s.resetPriority(e,t))||c);const u=e.serverside.snapshot?.(),d=n?buildAffPriorityTarget(i):null,p=a?buildDefPriorityTarget(s,l):null,m=Boolean(u&&(n&&!samePriorityMaps(u.sessionBaseline?.affPriorities,d)||a&&!samePriorityMaps(u.sessionBaseline?.defPriorities,p)));return!(!c&&!m)&&(refreshServersideBaseline(),e.markDirty(o),!0)},refreshServersideBaseline=()=>{e.serverside.setBaselineFromRuntime?.()},applyMutation=(t,n)=>!!t&&(refreshServersideBaseline(),e.markDirty(n),!0),applyDirtyOnly=(t,n)=>!!t&&(e.markDirty(n),!0);return{updateAffPriority:(e,n)=>applyMutation(t().affModel.setPriority(e,n,"public-api"),"api-aff-priority"),updateAffDefault:(e,n)=>applyMutation(t().affModel.setDefaultPriority(e,n,"public-api"),"api-aff-default"),resetAffPriority:e=>applyMutation(t().affModel.resetPriority(e,"public-api"),"api-aff-priority-reset"),resetAllAffPriorities:()=>restorePersistedPriorities({restoreAffs:!0,reason:"api-aff-priority-reset-all"}),updateDefPriority:(e,n)=>applyMutation(t().defModel.setPriority(e,n,"public-api"),"api-def-priority"),updateDefDefault:(e,n)=>applyMutation(t().defModel.setDefaultPriority(e,n,"public-api"),"api-def-default"),updateDefStatic:(e,n)=>applyMutation(t().defModel.setStatic(e,n,"public-api"),"api-def-static"),updateDefCommand:(e,n)=>applyMutation(t().defModel.setCommand(e,n,"public-api"),"api-def-command"),resetDefPriority:e=>applyMutation(t().defModel.resetPriority(e,"public-api"),"api-def-priority-reset"),resetAllDefPriorities:()=>restorePersistedPriorities({restoreDefs:!0,reason:"api-def-priority-reset-all"}),resetAllPriorities:()=>restorePersistedPriorities({restoreAffs:!0,restoreDefs:!0,reason:"api-priority-reset-all"}),defup(){const n=t().defModel,a={};let o=!1;for(const e of n.list()){const t=n.get(e);if(!t||t.have)continue;n.resetPriority(e,"defup")&&(o=!0);const i=n.get(e),s=normalizeServersidePriority(n.getPriority(e));i?.static&&s>=1&&s<=25&&(a[e]=s)}const i=e.serverside.requestStaticDefPriorities?.(a)??!1;return(o||i)&&(refreshServersideBaseline(),e.markDirty("api-defup")),o||i},defoff(){const n=t().defModel;let a=!1;for(const e of n.list()){const t=n.get(e);t&&!t.have&&(n.setPriority(e,0,"defoff")&&(a=!0))}const o=e.serverside.clearStaticDefPriorities?.()??!1;return(a||o)&&(refreshServersideBaseline(),e.markDirty("api-defoff")),a||o},setPrecache:(n={})=>(t().cacheModel.setDesiredPrecache(n),e.markDirty("api-precache"),e.savePersistence()),prioAff:t=>applyDirtyOnly(e.serverside.setPrioAff(t),"api-prioaff"),clearPrioAff:()=>applyDirtyOnly(e.serverside.clearPrioAff(),"api-prioaff-clear"),parry(t){n.parry(t),refreshServersideBaseline(),e.markDirty("api-parry")}}},Oa="public-observe",freezeHandles=(e=[],t)=>Object.freeze(e.reduce((e,n)=>(e[n]=Object.freeze(t(n)),e),{})),getObserveSource=(e={})=>String(e?.source||Oa),getObserveAt=(e={})=>e?.atMs??e?.at,getAffSnapshotState=(e,t)=>({have:e.haveAff(t),count:e.get(t)?.count??0}),didAffStateChange=(e,t)=>e.have!==t.have||e.count!==t.count,createPublicObserveApi=({runtime:e,getModels:t})=>{const n=t(),a=n.affModel,o=n.defModel,i=n.balanceModel,s=n.limbModel,l=n.systemModel,c=e.services.combat,u=freezeHandles(a.list?.()||[],t=>({got(n={}){const o=getAffSnapshotState(a,t);return a.got(t,{...n,source:getObserveSource(n)}),!!didAffStateChange(o,getAffSnapshotState(a,t))&&("function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"affliction"):s?.applyAfflictionTransition?.(t,!0),e.markDirty(`api-observe-aff-got:${t}`),!0)},lost(n={}){const o=getAffSnapshotState(a,t);return a.lose(t,{...n,source:getObserveSource(n)}),!!didAffStateChange(o,getAffSnapshotState(a,t))&&("function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"affliction"):s?.applyAfflictionTransition?.(t,!1),e.markDirty(`api-observe-aff-lost:${t}`),!0)}})),d=freezeHandles(o.list?.()||[],t=>({got:(n={})=>!!o.setHave(t,!0,getObserveSource(n),getObserveAt(n))&&(e.markDirty(`api-observe-def-got:${t}`),!0),lost:(n={})=>!!o.setHave(t,!1,getObserveSource(n),getObserveAt(n))&&(e.markDirty(`api-observe-def-lost:${t}`),!0)})),p=freezeHandles(i.list?.()||[],t=>{const observeServerUse=(n,a={})=>{const o=i.observeServerUse(t,n,{...a,source:getObserveSource({...a,source:a.source||"server-duration-observe"})});return o&&e.markDirty(`api-observe-balance-used:${t}`),o};return{got(n={}){const a=i.gain(t,getObserveSource(n),getObserveAt(n));return a&&e.markDirty(`api-observe-balance-got:${t}`),a},lost(n={}){const a=i.lose(t,getObserveSource(n),getObserveAt(n));return a&&e.markDirty(`api-observe-balance-lost:${t}`),a},used:observeServerUse,serverUsed:observeServerUse,observeServerUse}}),createObservedLimbHit=(e,t={},n)=>c.observeLimbHit({limb:e,amount:n,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbReset=(e,t={})=>c.observeLimbReset({limb:e,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbStage=(e,t,n={})=>c.observeLimbStage({limb:e,stage:t,source:getObserveSource(n),at:getObserveAt(n)}),m=freezeHandles(s?.list?.()||[],t=>({hit(n,a={}){const o=createObservedLimbHit(t,a,n);return o.changed&&"torso"===o.limb&&o.stageChanged&&e.markDirty(`api-observe-limb-torso:${o.after?.stage||"unknown"}`),o.changed},reset(n={}){const a=createObservedLimbReset(t,n);return a.changed&&"torso"===a.limb&&e.markDirty("api-observe-limb-torso:healthy"),a.changed},setStage(n,a={}){const o=createObservedLimbStage(t,n,a);return o.changed&&"torso"===o.limb&&o.stageChanged&&e.markDirty(`api-observe-limb-torso:${o.after?.stage||"unknown"}`),o.changed}})),markObservedLimbResult=t=>(t.changed&&"torso"===t.limb&&t.stageChanged?e.markDirty(`api-observe-limb-torso:${t.after?.stage||"unknown"}`):t.changed&&"torso"===t.limb&&"healthy"===t.after?.stage?e.markDirty("api-observe-limb-torso:healthy"):t.changed&&e.markDirty(`api-observe-limb:${t.limb}`),t.changed),g=Object.freeze({...m,get(e){if(!e)return null;const t=s?.get?.(e);return t?.id&&m[t.id]||null},list:()=>Object.keys(m),hit:(e,t,n={})=>markObservedLimbResult(createObservedLimbHit(e,n,t)),reset:(e,t={})=>markObservedLimbResult(createObservedLimbReset(e,t)),setStage:(e,t,n={})=>markObservedLimbResult(createObservedLimbStage(e,t,n))}),h=Object.freeze({set(t={}){const n=l.updateMount({name:String(t.name||""),id:t.id??null});return n&&e.markDirty("api-observe-mount-set"),n},clear(){const t=l.updateMount(null);return t&&e.markDirty("api-observe-mount-clear"),t}});return{observe:Object.freeze({affs:u,defs:d,balances:p,limbs:g,mount:h})}},createPublicPromptApi=({runtime:e,control:t})=>{const n=e?.promptPresenter;if(!n)return{prompt:null};const getSystemModel=()=>e?.models?.systemModel;let a=null;return a={colorGradation:n.colorGradation,colorPercentage:n.colorPercentage,render:e=>n.render(e),getCustomPrompt:()=>n.render({source:"legacy-getCustomPrompt"}),markAffsDirty:()=>n.markAffsDirty(),markPromptDirty:()=>n.markPromptDirty?.(),patchVars:(e={})=>(n.patchVars?.(e),a),patchAffs:(e={})=>(n.patchAffs?.(e),a),patchCureColors:(e={})=>(n.patchCureColors?.(e),a),applyPreset:e=>"function"==typeof e?(e(a),n.markPromptDirty?.(),a):(!e||"object"!=typeof e||Array.isArray(e)||("cureColors"in e&&a.patchCureColors(e.cureColors),"affs"in e&&a.patchAffs(e.affs),"vars"in e&&a.patchVars(e.vars),"compose"in e&&(a.compose=e.compose),"enabled"in e&&(a.enabled=e.enabled)),a),get vars(){return n.vars},get affs(){return n.affs},get cureColors(){return n.cureColors},get compose(){return n.compose},set compose(e){n.compose=e},get enabled(){const e=getSystemModel()?.snapshot?.().settings||{};return Boolean(e.customPrompt)},set enabled(e){t?.applySettings?.({customPrompt:Boolean(e)})}},{prompt:a}},createPublicLineApi=({lineUtils:e={}})=>({replace:e.replace,replaceHTML:e.replaceHTML,replaceWord:e.replaceWord,replaceWordHTML:e.replaceWordHTML,nextLine:e.nextLine,checkLine:e.checkLine,prevLine:e.prevLine,prependNotice:e.prependNotice,say:e.say}),normalizeScopedSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),createPublicRulesApi=({runtime:e})=>({add:(t,n)=>e.serverside.lifecycle.add(t,n),remove:t=>e.serverside.lifecycle.remove(t),enable:t=>e.serverside.lifecycle.enable(t),disable:t=>e.serverside.lifecycle.disable(t),enablePack:t=>e.serverside.lifecycle.enablePack(t),disablePack:t=>e.serverside.lifecycle.disablePack(t),load:(t,n)=>e.serverside.lifecycle.load(t,n),unload:t=>e.serverside.lifecycle.unload(t),reorder:t=>e.serverside.lifecycle.reorder(t),list:()=>e.serverside.lifecycle.list(),bindTransition(t,n={}){const a=normalizeScopedSegment(t);if(!a)return()=>{};const o=e.topics||{},i=[];return"function"==typeof n.onActivate&&i.push(e.onEvent(`${o.RULE_ACTIVATED||"nexsys4.rule.activated"}.${a}`,n.onActivate)),"function"==typeof n.onDeactivate&&i.push(e.onEvent(`${o.RULE_DEACTIVATED||"nexsys4.rule.deactivated"}.${a}`,n.onDeactivate)),()=>{i.forEach(e=>e?.())}}}),createPublicServersideApi=({runtime:e})=>({predictions:{add:t=>e.serverside.addPrediction(t),remove:t=>e.serverside.removePrediction(t)},ssQueue:{add:t=>e.serverside.manualQueueAdd(t),insert:(t,n)=>e.serverside.manualQueueInsert(t,n),remove:t=>e.serverside.manualQueueRemove(t),reset:()=>e.serverside.manualQueueReset()},ss:{syncSnapshots:()=>e.serverside.requestSnapshotSync(),startupStatus:()=>e.serverside.getStartupStatus(),unload:(t={})=>e.curingSetGuard.unload(t)}}),createPublicStateApi=({runtime:e,getModels:t})=>{const{systemModel:n,affModel:a,defModel:o,balanceModel:i,limbModel:s}=t();return{snapshot:e.snapshot,getTarget:()=>n.snapshot().target,topics:e.topics,haveAff:e=>a.haveAff(e),affElapsedMs:e=>a.elapsedMs(e),affElapsedSeconds:e=>a.elapsedSeconds(e),affRemainingMs:e=>a.remainingMs(e),affRemainingSeconds:e=>a.remainingSeconds(e),affTiming:e=>a.timing(e),haveAffs:e=>a.haveAffs(toArray(e)),haveAnAff:e=>a.haveAnAff(toArray(e)),haveDef:e=>o.haveDef(e),haveDefs:e=>toArray(e).every(e=>o.haveDef(e)),haveAnyDef:e=>toArray(e).some(e=>o.haveDef(e)),haveBal:e=>i.have(e),haveBals:e=>toArray(e).every(e=>i.have(e)),haveAnyBal:e=>toArray(e).some(e=>i.have(e)),balElapsedMs:e=>i.elapsedMs(e),balElapsedSeconds:e=>i.elapsedSeconds(e),balRemainingMs:e=>i.remainingMs(e),balRemainingSeconds:e=>i.remainingSeconds(e),balTiming:e=>i.timing(e),getLimb:e=>s?.get?.(e)||null,listLimbs:()=>s?.list?.()||[],getClass:()=>n.getClass(),checkClass:e=>n.checkClass(e),isClass:e=>n.isClass(e),isTarget:e=>n.isTarget(e)}},isRecord=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),cloneAndFreezeCells=(e={})=>{const t={};for(const[n,a]of Object.entries(e))t[n]=isRecord(a)?Object.freeze({...a}):a;return Object.freeze(t)},buildPromptSnapshot=e=>e?Object.freeze({vars:cloneAndFreezeCells(e.vars),affs:cloneAndFreezeCells(e.affs),cureColors:cloneAndFreezeCells(e.cureColors)}):null,createPublicApi=({runtime:e,lineUtils:t={}})=>{const getModels=()=>e.models,n=createPublicStateApi({runtime:e,getModels}),a=createPublicEventApi({runtime:e}),o=createPublicControlApi({runtime:e,getModels}),i=createPublicCommandApi({runtime:e}),s=createPublicMutationApi({runtime:e,getModels}),l=createPublicObserveApi({runtime:e,getModels}),c=createPublicRulesApi({runtime:e}),u=createPublicServersideApi({runtime:e}),d=createPublicPromptApi({runtime:e,control:o}),p=createPublicLineApi({lineUtils:t}),{systemModel:m,affModel:g,defModel:h,balanceModel:b,limbModel:y,cacheModel:v}=getModels(),S=Object.freeze(Object.create(null,{system:{enumerable:!0,get:()=>m.snapshot()},target:{enumerable:!0,get:()=>m.snapshot().target},class:{enumerable:!0,get:()=>m.snapshot().char.class},affs:{enumerable:!0,get:()=>g.snapshot()},defs:{enumerable:!0,get:()=>h.snapshot()},balances:{enumerable:!0,get:()=>b.snapshot()},limbs:{enumerable:!0,get:()=>y.snapshot()},queue:{enumerable:!0,get:()=>e.queueController.snapshot()},cache:{enumerable:!0,get:()=>v.snapshot()},prompt:{enumerable:!0,get:()=>buildPromptSnapshot(e.promptPresenter)},serverside:{enumerable:!0,get:()=>e.serverside.snapshot()}})),x=Object.freeze({on:a.events.on,off:a.events.off,topics:e.topics}),C=Object.freeze({affs:l.observe.affs,defs:l.observe.defs,balances:l.observe.balances,limbs:l.observe.limbs,mount:Object.freeze({set:l.observe.mount.set,reset:l.observe.mount.clear})}),w=Object.freeze({openConfig:(t="api.ui.openConfig")=>e.setConfigOpen(!0,t),closeConfig:(t="api.ui.closeConfig")=>e.setConfigOpen(!1,t),setConfigOpen:(t,n="api.ui.setConfigOpen")=>e.setConfigOpen(Boolean(t),n)}),k={...i.queue,...i.queues,list:i.queue.listQueues};return{state:S,api:{affs:{have:n.haveAff,haveAll:n.haveAffs,haveAny:n.haveAnAff,elapsedMs:n.affElapsedMs,elapsedSeconds:n.affElapsedSeconds,remainingMs:n.affRemainingMs,remainingSeconds:n.affRemainingSeconds,timing:n.affTiming,setPriority:s.updateAffPriority,setDefaultPriority:s.updateAffDefault,resetPriority:s.resetAffPriority,resetAllPriorities:s.resetAllAffPriorities},defs:{have:n.haveDef,haveAll:n.haveDefs,haveAny:n.haveAnyDef,setPriority:s.updateDefPriority,setDefaultPriority:s.updateDefDefault,setStatic:s.updateDefStatic,setCommand:s.updateDefCommand,resetPriority:s.resetDefPriority,resetAllPriorities:s.resetAllDefPriorities,defup:s.defup,defoff:s.defoff,parry:s.parry},balances:{have:n.haveBal,haveAll:n.haveBals,haveAny:n.haveAnyBal,elapsedMs:n.balElapsedMs,elapsedSeconds:n.balElapsedSeconds,remainingMs:n.balRemainingMs,remainingSeconds:n.balRemainingSeconds,timing:n.balTiming},limbs:{get:n.getLimb,list:n.listLimbs},target:{get:n.getTarget,set:i.setTarget,is:n.isTarget},class:{get:n.getClass,is:n.isClass,check:n.checkClass},command:{send:i.sendCmd,sendInline:i.sendInline,addOutput:i.addOutput,evaluateNow:i.evaluateNow},queue:k,rules:c,prompt:d.prompt,observe:C,ui:w,line:p,control:{...o},ss:{predictions:u.predictions,queue:{add:u.ssQueue.add,insert:u.ssQueue.insert,remove:u.ssQueue.remove,clear:u.ssQueue.reset},syncSnapshots:u.ss.syncSnapshots,startupStatus:u.ss.startupStatus,unload:u.ss.unload,precache:{set:s.setPrecache},prioAff:{set:s.prioAff,reset:s.clearPrioAff}}},events:x}},generateChunk=(e,t,n)=>{const a=document.createElement("span");return a.style.color=t,a.style.backgroundColor=n,a.textContent=e,a},cloneTrustedHtmlNodes=e=>{const t=document.createElement("template");return t.innerHTML=String(e??""),[...t.content.childNodes].map(e=>e.cloneNode(!0))},replaceWordNodes=(e,t,n)=>{const a=String(t??"");if(!a)return!1;const o=document.createTreeWalker(e,globalThis.NodeFilter?.SHOW_TEXT??4),i=[];for(;o.nextNode();)i.push(o.currentNode);let s=!1;return i.forEach(e=>{const t=e?.textContent||"";if(!e?.parentNode||!t.includes(a))return;const o=document.createDocumentFragment();let i=0;for(;i<t.length;){const e=t.indexOf(a,i);if(-1===e){o.append(t.slice(i));break}e>i&&o.append(t.slice(i,e)),n().forEach(e=>o.appendChild(e)),i=e+a.length,s=!0}e.replaceWith(o)}),s},updateCurrentFormattedLine=e=>{const t=document.createElement("span");t.innerHTML=globalThis.nexusclient.current_line.parsed_line.formatted();const n=e(t);return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.innerHTML,n},replace$1=(...e)=>{const t=document.createElement("span");for(let n=0;n<e.length;n+=3)t.appendChild(generateChunk(e[n],e[n+1],e[n+2]));return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.outerHTML,!0},replaceHTML=e=>(globalThis.nexusclient.current_line.parsed_line.formatted=()=>e,!0),replaceWord=(e,t,n,a)=>updateCurrentFormattedLine(o=>replaceWordNodes(o,e,()=>[generateChunk(t,n,a)])),replaceWordHTML=(e,t)=>updateCurrentFormattedLine(n=>replaceWordNodes(n,e,()=>cloneTrustedHtmlNodes(t))),matchPattern=(e,t)=>"string"==typeof t?e.includes(t):t instanceof RegExp&&t.test(e),prevLine=e=>{const{current_block:t,current_line:n}=globalThis.nexusclient,a=t.indexOf(n);return!(a<=0)&&matchPattern(t[a-1].parsed_line.text(),e)},nextLine=e=>{const{current_block:t,current_line:n}=globalThis.nexusclient,a=t.indexOf(n);return!(a>=t.length-1)&&matchPattern(t[a+1].parsed_line.text(),e)},checkLine=(e,t)=>{const{current_block:n,current_line:a}=globalThis.nexusclient,o=n.indexOf(a)+t;return!(o<0||o>n.length-1)&&matchPattern(n[o].parsed_line.text(),e)},prependNotice=(...e)=>{const t=document.createElement("span");for(let n=0;n<e.length;n+=3)t.appendChild(generateChunk(e[n],e[n+1],e[n+2]));return globalThis.nexSys.prepend_line={timestamp:globalThis.nexusclient.current_block[1].timestamp,timestamp_ms:globalThis.nexusclient.current_block[1].timestamp_ms,parsed_line:{text:()=>t.outerHTML,formatted:()=>t.outerHTML}},t.outerHTML},say=e=>{const t=new SpeechSynthesisUtterance;t.voice=globalThis.speechSynthesis.getVoices().find(e=>"Google UK English Female"===e.voiceURI)||globalThis.speechSynthesis.getVoices().find(e=>"en-US"===e.lang),t.rate=1.1,t.pitch=1.3,t.text=e,globalThis.speechSynthesis.speaking&&globalThis.speechSynthesis.cancel(),setTimeout(()=>globalThis.speechSynthesis.speak(t),10)},$a={affTable:V,balanceTable:H,cacheTable:T,cacheNames:{herb_name_to_herb:k,mineral_to_herb:E,herb_to_mineral:P,herb_names:C,herb_names_group:w,mineral_names:S,mineral_names_group:x},cureTable:Y,defTable:Z,defPrios:X},Ia=Object.freeze({affCount:Array.isArray(V?.list)?V.list.length:0,cureCount:Object.keys(Y||{}).length,defCount:Object.keys(Z||{}).length,balanceCount:Object.keys(H||{}).length,cacheCount:Object.keys(T||{}).length}),createNexSys=({adapter:e,adapterType:t="nexus",options:n={}}={})=>{installStringPrototypeHelpers();const a={...n.adapterOptions||{}};void 0===a.debug&&(a.debug=n.debug??!1),void 0===a.startupGag&&(a.startupGag=n.startupGag??!0);const o=assertAdapterContract(e||("mock"===t?createMockAdapter(a):createNexusAdapter(a))),i=createRuntimeEngine({adapter:o,seedData:$a,options:n}),{state:s,api:l,events:c}=createPublicApi({runtime:i,lineUtils:{replace:replace$1,replaceHTML,replaceWord,replaceWordHTML,nextLine,checkLine,prependNotice,prevLine,say}});return{version:"1.0.9",seedMeta:Ia,tables:{limbs:Se,dirs:xe,dirMap:Ce,oppdirs:we,shortDirs:ke,classList:Ee},adapter:o,runtime:i,state:s,api:l,events:c}},clearGlobalNexSys=()=>{if("undefined"==typeof globalThis)return;const e=globalThis.nexSys,t=e?.api?.control?.stop;if(e&&"function"==typeof t)try{t()}catch(n){console.error("nexSys4 failed to stop the existing global runtime during reinstall",n)}try{delete globalThis.nexSys}catch{globalThis.nexSys=void 0}},installGlobalNexSys=(e={})=>{clearGlobalNexSys();const t=createNexSys(e);return globalThis.nexSys=t,t.api.control.start(),t},Na=Object.freeze({coalesceGmcp:!0,publishToEventStream:!0,publishRawGmcp:!1,debug:!1,startupTimeoutMs:2500,maxStartupRetries:3,maxEntriesPerSubmission:20,pendingTimeoutMs:12e3,desyncCommandRepeats:3,maxSsCommandsPerCycle:40}),bootstrapNexus$1=(e={})=>{const{forceNew:t,...n}=e,a=Object.prototype.hasOwnProperty.call(n,"debug");return uninstallNexusClientOverrides(),installNexusClientOverrides(),installGlobalNexSys({adapterType:"nexus",options:{...Na,...n,bootstrapDebugOverride:a?Boolean(n.debug):void 0}})},za=Symbol.for("nexsys4.startup.installed"),La="font_stacks_original",getNexusclient=()=>globalThis.nexusclient&&"object"==typeof globalThis.nexusclient?globalThis.nexusclient:null,mountGui=e=>{if(!globalThis.ReactDOM||!globalThis.React)return!1;document.getElementById("modal-root")||document.body.appendChild(Object.assign(document.createElement("div"),{id:"modal-root"})),document.getElementById("nexsys-modal")?.remove();const t=Object.assign(document.createElement("div"),{id:"nexsys-modal"});return document.getElementById("modal-root").appendChild(t),globalThis.ReactDOM.createRoot(t).render(globalThis.React.createElement(e.component,{nexSys:e})),!0},injectFonts=()=>{const e=document.getElementsByTagName("head")[0],t=document.createElement("link");t.rel="stylesheet",t.href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap",e.appendChild(t);const n=document.createElement("link");n.rel="stylesheet",n.href="https://fonts.googleapis.com/css?family=Roboto%20Mono:300,400,500,700&display=swap",e.appendChild(n)},patchFontStacks=e=>{const t=e.settings();if(void 0!==t[La])return;const n=document.getElementsByTagName("head")[0],a=document.getElementById("nexSysCSS")||document.createElement("style");a.id="nexSysCSS",a.parentNode||n.appendChild(a),t[La]=t.font_stacks,t.font_stacks=function(){return a.textContent=`.timestamp {font-family: ${t.font_stack}}`,[{name:"RobotoMono",stack:"Roboto Mono,Consolas,monospace"},{name:"Consolas",stack:"Consolas,RobotoMono,monospace"},{name:"Verdana",stack:"Verdana, Geneva, sans-serif"},{name:"Lucida",stack:"'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Geneva, Verdana, sans-serif"},{name:"Arial",stack:"Arial, 'Helvetica Neue', Helvetica, sans-serif"},{name:"Futura",stack:"Futura, 'Trebuchet MS', Arial, sans-serif"},{name:"Book Antiqua",stack:"'Book Antiqua', Palatino, 'Palatino Linotype', 'Palatino LT STD', Georgia, serif"},...t[La]()]}},initializeSettings=e=>{void 0===e.variables().vars.nexSys4Settings&&(e.variables().vars.nexSys4Settings={})},startupNexus=()=>{const e=getNexusclient();return!!e&&(e[za]||(injectFonts(),patchFontStacks(e),initializeSettings(e),e[za]=!0),mountGui(globalThis.nexSys),!0)},ja=(0,u.createContext)(null);function useNexSys(){return(0,u.useContext)(ja)}var Ba=__commonJSMin(e=>{var t=Symbol.for("react.transitional.element");Symbol.for("react.fragment");function jsxProd(e,n,a){var o=null;if(void 0!==a&&(o=""+a),void 0!==n.key&&(o=""+n.key),"key"in n)for(var i in a={},n)"key"!==i&&(a[i]=n[i]);else a=n;return n=a.ref,{$$typeof:t,type:e,key:o,ref:void 0!==n?n:null,props:a}}e.jsx=jsxProd,e.jsxs=jsxProd}),Fa=__commonJSMin((e,t)=>{t.exports=Ba()})();function NexSysProvider({nexSys:e,children:t}){return(0,Fa.jsx)(ja.Provider,{value:e,children:t})}var qa={black:"#000",white:"#fff"},Ua={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},Va={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},Ha={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Wa={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},Ga={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},Ya={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},Ka={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"};function formatMuiErrorMessage(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${n} for the full message.`}var Qa="$$material";function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends.apply(null,arguments)}var Za=!1;function sheetForTag(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function createStyleElement(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}var Xa=function(){function StyleSheet(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy?!Za:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var e=StyleSheet.prototype;return e.hydrate=function hydrate(e){e.forEach(this._insertTag)},e.insert=function insert(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(createStyleElement(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=sheetForTag(t);try{n.insertRule(e,n.cssRules.length)}catch(a){}}else t.appendChild(document.createTextNode(e));this.ctr++},e.flush=function flush(){this.tags.forEach(function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)}),this.tags=[],this.ctr=0},StyleSheet}(),Ja="-ms-",eo="-moz-",to="-webkit-",ro="comm",no="rule",ao="decl",oo="@import",io="@keyframes",so="@layer",lo=Math.abs,co=String.fromCharCode,uo=Object.assign;function hash$2(e,t){return 45^charat(e,0)?(((t<<2^charat(e,0))<<2^charat(e,1))<<2^charat(e,2))<<2^charat(e,3):0}function trim(e){return e.trim()}function match(e,t){return(e=t.exec(e))?e[0]:e}function replace(e,t,n){return e.replace(t,n)}function indexof(e,t){return e.indexOf(t)}function charat(e,t){return 0|e.charCodeAt(t)}function substr(e,t,n){return e.slice(t,n)}function strlen(e){return e.length}function sizeof(e){return e.length}function append(e,t){return t.push(e),e}function combine(e,t){return e.map(t).join("")}var po=1,mo=1,fo=0,go=0,ho=0,bo="";function node(e,t,n,a,o,i,s){return{value:e,root:t,parent:n,type:a,props:o,children:i,line:po,column:mo,length:s,return:""}}function copy(e,t){return uo(node("",null,null,"",null,null,0),e,{length:-e.length},t)}function char(){return ho}function prev(){return ho=go>0?charat(bo,--go):0,mo--,10===ho&&(mo=1,po--),ho}function next(){return ho=go<fo?charat(bo,go++):0,mo++,10===ho&&(mo=1,po++),ho}function peek$1(){return charat(bo,go)}function caret(){return go}function slice(e,t){return substr(bo,e,t)}function token(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(e){return po=mo=1,fo=strlen(bo=e),go=0,[]}function dealloc(e){return bo="",e}function delimit(e){return trim(slice(go-1,delimiter(91===e?e+2:40===e?e+1:e)))}function whitespace(e){for(;(ho=peek$1())&&ho<33;)next();return token(e)>2||token(ho)>3?"":" "}function escaping(e,t){for(;--t&&next()&&!(ho<48||ho>102||ho>57&&ho<65||ho>70&&ho<97););return slice(e,caret()+(t<6&&32==peek$1()&&32==next()))}function delimiter(e){for(;next();)switch(ho){case e:return go;case 34:case 39:34!==e&&39!==e&&delimiter(ho);break;case 40:41===e&&delimiter(e);break;case 92:next()}return go}function commenter(e,t){for(;next()&&e+ho!==57&&(e+ho!==84||47!==peek$1()););return"/*"+slice(t,go-1)+"*"+co(47===e?e:next())}function identifier(e){for(;!token(peek$1());)next();return slice(e,go)}function compile(e){return dealloc(parse("",null,null,null,[""],e=alloc(e),0,[0],e))}function parse(e,t,n,a,o,i,s,l,c){for(var u=0,d=0,p=s,m=0,g=0,h=0,b=1,y=1,v=1,S=0,x="",C=o,w=i,k=a,E=x;y;)switch(h=S,S=next()){case 40:if(108!=h&&58==charat(E,p-1)){-1!=indexof(E+=replace(delimit(S),"&","&\f"),"&\f")&&(v=-1);break}case 34:case 39:case 91:E+=delimit(S);break;case 9:case 10:case 13:case 32:E+=whitespace(h);break;case 92:E+=escaping(caret()-1,7);continue;case 47:switch(peek$1()){case 42:case 47:append(comment(commenter(next(),caret()),t,n),c);break;default:E+="/"}break;case 123*b:l[u++]=strlen(E)*v;case 125*b:case 59:case 0:switch(S){case 0:case 125:y=0;case 59+d:-1==v&&(E=replace(E,/\f/g,"")),g>0&&strlen(E)-p&&append(g>32?declaration(E+";",a,n,p-1):declaration(replace(E," ","")+";",a,n,p-2),c);break;case 59:E+=";";default:if(append(k=ruleset(E,t,n,u,d,o,l,x,C=[],w=[],p),i),123===S)if(0===d)parse(E,t,k,k,C,i,p,l,w);else switch(99===m&&110===charat(E,3)?100:m){case 100:case 108:case 109:case 115:parse(e,k,k,a&&append(ruleset(e,k,k,0,0,o,l,x,o,C=[],p),w),o,w,p,l,a?C:w);break;default:parse(E,k,k,k,[""],w,0,l,w)}}u=d=g=0,b=v=1,x=E="",p=s;break;case 58:p=1+strlen(E),g=h;default:if(b<1)if(123==S)--b;else if(125==S&&0==b++&&125==prev())continue;switch(E+=co(S),S*b){case 38:v=d>0?1:(E+="\f",-1);break;case 44:l[u++]=(strlen(E)-1)*v,v=1;break;case 64:45===peek$1()&&(E+=delimit(next())),m=peek$1(),d=p=strlen(x=E+=identifier(caret())),S++;break;case 45:45===h&&2==strlen(E)&&(b=0)}}return i}function ruleset(e,t,n,a,o,i,s,l,c,u,d){for(var p=o-1,m=0===o?i:[""],g=sizeof(m),h=0,b=0,y=0;h<a;++h)for(var v=0,S=substr(e,p+1,p=lo(b=s[h])),x=e;v<g;++v)(x=trim(b>0?m[v]+" "+S:replace(S,/&\f/g,m[v])))&&(c[y++]=x);return node(e,t,n,0===o?no:l,c,u,d)}function comment(e,t,n){return node(e,t,n,ro,co(char()),substr(e,2,-2),0)}function declaration(e,t,n,a){return node(e,t,n,ao,substr(e,0,a),substr(e,a+1,-1),a)}function serialize(e,t){for(var n="",a=sizeof(e),o=0;o<a;o++)n+=t(e[o],o,e,t)||"";return n}function stringify(e,t,n,a){switch(e.type){case so:if(e.children.length)break;case oo:case ao:return e.return=e.return||e.value;case ro:return"";case io:return e.return=e.value+"{"+serialize(e.children,a)+"}";case no:e.value=e.props.join(",")}return strlen(n=serialize(e.children,a))?e.return=e.value+"{"+n+"}":""}function middleware(e){var t=sizeof(e);return function(n,a,o,i){for(var s="",l=0;l<t;l++)s+=e[l](n,a,o,i)||"";return s}}function rulesheet(e){return function(t){t.root||(t=t.return)&&e(t)}}function memoize(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var yo=function identifierWithPointTracking(e,t,n){for(var a=0,o=0;a=o,o=peek$1(),38===a&&12===o&&(t[n]=1),!token(o);)next();return slice(e,go)},vo=function toRules(e,t){var n=-1,a=44;do{switch(token(a)){case 0:38===a&&12===peek$1()&&(t[n]=1),e[n]+=yo(go-1,t,n);break;case 2:e[n]+=delimit(a);break;case 4:if(44===a){e[++n]=58===peek$1()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=co(a)}}while(a=next());return e},So=function getRules(e,t){return dealloc(vo(alloc(e),t))},xo=new WeakMap,Co=function compat(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,a=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||xo.get(n))&&!a){xo.set(e,!0);for(var o=[],i=So(t,o),s=n.props,l=0,c=0;l<i.length;l++)for(var u=0;u<s.length;u++,c++)e.props[c]=o[l]?i[l].replace(/&\f/g,s[u]):s[u]+" "+i[l]}}},wo=function removeLabel(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function prefix(e,t){switch(hash$2(e,t)){case 5103:return to+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return to+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return to+e+eo+e+Ja+e+e;case 6828:case 4268:return to+e+Ja+e+e;case 6165:return to+e+Ja+"flex-"+e+e;case 5187:return to+e+replace(e,/(\w+).+(:[^]+)/,to+"box-$1$2"+Ja+"flex-$1$2")+e;case 5443:return to+e+Ja+"flex-item-"+replace(e,/flex-|-self/,"")+e;case 4675:return to+e+Ja+"flex-line-pack"+replace(e,/align-content|flex-|-self/,"")+e;case 5548:return to+e+Ja+replace(e,"shrink","negative")+e;case 5292:return to+e+Ja+replace(e,"basis","preferred-size")+e;case 6060:return to+"box-"+replace(e,"-grow","")+to+e+Ja+replace(e,"grow","positive")+e;case 4554:return to+replace(e,/([^-])(transform)/g,"$1"+to+"$2")+e;case 6187:return replace(replace(replace(e,/(zoom-|grab)/,to+"$1"),/(image-set)/,to+"$1"),e,"")+e;case 5495:case 3959:return replace(e,/(image-set\([^]*)/,to+"$1$`$1");case 4968:return replace(replace(e,/(.+:)(flex-)?(.*)/,to+"box-pack:$3"+Ja+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+to+e+e;case 4095:case 3583:case 4068:case 2532:return replace(e,/(.+)-inline(.+)/,to+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(e)-1-t>6)switch(charat(e,t+1)){case 109:if(45!==charat(e,t+4))break;case 102:return replace(e,/(.+:)(.+)-([^]+)/,"$1"+to+"$2-$3$1"+eo+(108==charat(e,t+3)?"$3":"$2-$3"))+e;case 115:return~indexof(e,"stretch")?prefix(replace(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==charat(e,t+1))break;case 6444:switch(charat(e,strlen(e)-3-(~indexof(e,"!important")&&10))){case 107:return replace(e,":",":"+to)+e;case 101:return replace(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+to+(45===charat(e,14)?"inline-":"")+"box$3$1"+to+"$2$3$1"+Ja+"$2box$3")+e}break;case 5936:switch(charat(e,t+11)){case 114:return to+e+Ja+replace(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return to+e+Ja+replace(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return to+e+Ja+replace(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return to+e+Ja+e+e}return e}var ko=[function prefixer(e,t,n,a){if(e.length>-1&&!e.return)switch(e.type){case ao:e.return=prefix(e.value,e.length);break;case io:return serialize([copy(e,{value:replace(e.value,"@","@"+to)})],a);case no:if(e.length)return combine(e.props,function(t){switch(match(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(e,{props:[replace(t,/:(read-\w+)/,":"+eo+"$1")]})],a);case"::placeholder":return serialize([copy(e,{props:[replace(t,/:(plac\w+)/,":"+to+"input-$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,":"+eo+"$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,Ja+"input-$1")]})],a)}return""})}}],Eo=function createCache(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var a,o,i=e.stylisPlugins||ko,s={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)s[t[n]]=!0;l.push(e)});var c,u=[Co,wo],d=[stringify,rulesheet(function(e){c.insert(e)})],p=middleware(u.concat(i,d)),m=function stylis(e){return serialize(compile(e),p)};o=function insert(e,t,n,a){c=n,m(e?e+"{"+t.styles+"}":t.styles),a&&(g.inserted[t.name]=!0)};var g={key:t,sheet:new Xa({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:s,registered:{},insert:o};return g.sheet.hydrate(l),g},_o=__commonJSMin(e=>{var t="function"==typeof Symbol&&Symbol.for,n=t?Symbol.for("react.element"):60103,a=t?Symbol.for("react.portal"):60106,o=t?Symbol.for("react.fragment"):60107,i=t?Symbol.for("react.strict_mode"):60108,s=t?Symbol.for("react.profiler"):60114,l=t?Symbol.for("react.provider"):60109,c=t?Symbol.for("react.context"):60110,u=t?Symbol.for("react.async_mode"):60111,d=t?Symbol.for("react.concurrent_mode"):60111,p=t?Symbol.for("react.forward_ref"):60112,m=t?Symbol.for("react.suspense"):60113,g=t?Symbol.for("react.suspense_list"):60120,h=t?Symbol.for("react.memo"):60115,b=t?Symbol.for("react.lazy"):60116,y=t?Symbol.for("react.block"):60121,v=t?Symbol.for("react.fundamental"):60117,S=t?Symbol.for("react.responder"):60118,x=t?Symbol.for("react.scope"):60119;function z(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case u:case d:case o:case s:case i:case m:return e;default:switch(e=e&&e.$$typeof){case c:case p:case b:case h:case l:return e;default:return t}}case a:return t}}}function A(e){return z(e)===d}e.AsyncMode=u,e.ConcurrentMode=d,e.ContextConsumer=c,e.ContextProvider=l,e.Element=n,e.ForwardRef=p,e.Fragment=o,e.Lazy=b,e.Memo=h,e.Portal=a,e.Profiler=s,e.StrictMode=i,e.Suspense=m,e.isAsyncMode=function(e){return A(e)||z(e)===u},e.isConcurrentMode=A,e.isContextConsumer=function(e){return z(e)===c},e.isContextProvider=function(e){return z(e)===l},e.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},e.isForwardRef=function(e){return z(e)===p},e.isFragment=function(e){return z(e)===o},e.isLazy=function(e){return z(e)===b},e.isMemo=function(e){return z(e)===h},e.isPortal=function(e){return z(e)===a},e.isProfiler=function(e){return z(e)===s},e.isStrictMode=function(e){return z(e)===i},e.isSuspense=function(e){return z(e)===m},e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===s||e===i||e===m||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===h||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===S||e.$$typeof===x||e.$$typeof===y)},e.typeOf=z}),Po=__commonJSMin((e,t)=>{t.exports=_o()}),To=__commonJSMin((e,t)=>{var n=Po(),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function getStatics(e){return n.isMemo(e)?s:l[e.$$typeof]||a}l[n.ForwardRef]=i,l[n.Memo]=s;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,g=Object.prototype;function hoistNonReactStatics(e,t,n){if("string"!=typeof t){if(g){var a=m(t);a&&a!==g&&hoistNonReactStatics(e,a,n)}var i=u(t);d&&(i=i.concat(d(t)));for(var s=getStatics(e),l=getStatics(t),h=0;h<i.length;++h){var b=i[h];if(!(o[b]||n&&n[b]||l&&l[b]||s&&s[b])){var y=p(t,b);try{c(e,b,y)}catch(v){}}}}return e}t.exports=hoistNonReactStatics}),Ao=!0;function getRegisteredStyles(e,t,n){var a="";return n.split(" ").forEach(function(n){void 0!==e[n]?t.push(e[n]+";"):n&&(a+=n+" ")}),a}var Ro=function registerStyles(e,t,n){var a=e.key+"-"+t.name;!1!==n&&!1!==Ao||void 0!==e.registered[a]||(e.registered[a]=t.styles)},Mo=function insertStyles(e,t,n){Ro(e,t,n);var a=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+a:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}};function murmur2(e){for(var t,n=0,a=0,o=e.length;o>=4;++a,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(a)|(255&e.charCodeAt(++a))<<8|(255&e.charCodeAt(++a))<<16|(255&e.charCodeAt(++a))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(a+2))<<16;case 2:n^=(255&e.charCodeAt(a+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(a)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}var Do={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},Oo=!1,$o=/[A-Z]|^ms/g,Io=/_EMO_([^_]+?)_([^]*?)_EMO_/g,No=function isCustomProperty(e){return 45===e.charCodeAt(1)},zo=function isProcessableValue(e){return null!=e&&"boolean"!=typeof e},Lo=memoize(function(e){return No(e)?e:e.replace($o,"-$&").toLowerCase()}),jo=function processStyleValue(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(Io,function(e,t,n){return Fo={name:t,styles:n,next:Fo},t})}return 1===Do[e]||No(e)||"number"!=typeof t||0===t?t:t+"px"},Bo="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function handleInterpolation(e,t,n){if(null==n)return"";var a=n;if(void 0!==a.__emotion_styles)return a;switch(typeof n){case"boolean":return"";case"object":var o=n;if(1===o.anim)return Fo={name:o.name,styles:o.styles,next:Fo},o.name;var i=n;if(void 0!==i.styles){var s=i.next;if(void 0!==s)for(;void 0!==s;)Fo={name:s.name,styles:s.styles,next:Fo},s=s.next;return i.styles+";"}return createStringFromObject(e,t,n);case"function":if(void 0!==e){var l=Fo,c=n(e);return Fo=l,handleInterpolation(e,t,c)}}var u=n;if(null==t)return u;var d=t[u];return void 0!==d?d:u}function createStringFromObject(e,t,n){var a="";if(Array.isArray(n))for(var o=0;o<n.length;o++)a+=handleInterpolation(e,t,n[o])+";";else for(var i in n){var s=n[i];if("object"!=typeof s){var l=s;null!=t&&void 0!==t[l]?a+=i+"{"+t[l]+"}":zo(l)&&(a+=Lo(i)+":"+jo(i,l)+";")}else{if("NO_COMPONENT_SELECTOR"===i&&Oo)throw new Error(Bo);if(!Array.isArray(s)||"string"!=typeof s[0]||null!=t&&void 0!==t[s[0]]){var c=handleInterpolation(e,t,s);switch(i){case"animation":case"animationName":a+=Lo(i)+":"+c+";";break;default:a+=i+"{"+c+"}"}}else for(var u=0;u<s.length;u++)zo(s[u])&&(a+=Lo(i)+":"+jo(i,s[u])+";")}}return a}var Fo,qo=/label:\s*([^\s;{]+)\s*(;|$)/g;function serializeStyles(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var a=!0,o="";Fo=void 0;var i=e[0];null==i||void 0===i.raw?(a=!1,o+=handleInterpolation(n,t,i)):o+=i[0];for(var s=1;s<e.length;s++)o+=handleInterpolation(n,t,e[s]),a&&(o+=i[s]);qo.lastIndex=0;for(var l,c="";null!==(l=qo.exec(o));)c+="-"+l[1];return{name:murmur2(o)+c,styles:o,next:Fo}}var Uo=function syncFallback(e){return e()},Vo=!!t.useInsertionEffect&&t.useInsertionEffect,Ho=Vo||Uo,Wo=Vo||t.useLayoutEffect,Go=t.createContext("undefined"!=typeof HTMLElement?Eo({key:"css"}):null),Yo=(Go.Provider,function withEmotionCache(e){return(0,t.forwardRef)(function(n,a){return e(n,(0,t.useContext)(Go),a)})}),Ko=t.createContext({}),Qo={}.hasOwnProperty,Zo="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",Xo=function createEmotionProps(e,t){var n={};for(var a in t)Qo.call(t,a)&&(n[a]=t[a]);return n[Zo]=e,n},Jo=function Insertion(e){var t=e.cache,n=e.serialized,a=e.isStringTag;return Ro(t,n,a),Ho(function(){return Mo(t,n,a)}),null},ei=Yo(function(e,n,a){var o=e.css;"string"==typeof o&&void 0!==n.registered[o]&&(o=n.registered[o]);var i=e[Zo],s=[o],l="";"string"==typeof e.className?l=getRegisteredStyles(n.registered,s,e.className):null!=e.className&&(l=e.className+" ");var c=serializeStyles(s,void 0,t.useContext(Ko));l+=n.key+"-"+c.name;var u={};for(var d in e)Qo.call(e,d)&&"css"!==d&&d!==Zo&&(u[d]=e[d]);return u.className=l,a&&(u.ref=a),t.createElement(t.Fragment,null,t.createElement(Jo,{cache:n,serialized:c,isStringTag:"string"==typeof i}),t.createElement(i,u))}),ti=(To(),function jsx(e,n){var a=arguments;if(null==n||!Qo.call(n,"css"))return t.createElement.apply(void 0,a);var o=a.length,i=new Array(o);i[0]=ei,i[1]=Xo(e,n);for(var s=2;s<o;s++)i[s]=a[s];return t.createElement.apply(null,i)});!function(e){var t;t||(t=e.JSX||(e.JSX={}))}(ti||(ti={}));var ri=Yo(function(e,n){var a=serializeStyles([e.styles],void 0,t.useContext(Ko)),o=t.useRef();return Wo(function(){var e=n.key+"-global",t=new n.sheet.constructor({key:e,nonce:n.sheet.nonce,container:n.sheet.container,speedy:n.sheet.isSpeedy}),i=!1,s=document.querySelector('style[data-emotion="'+e+" "+a.name+'"]');return n.sheet.tags.length&&(t.before=n.sheet.tags[0]),null!==s&&(i=!0,s.setAttribute("data-emotion",e),t.hydrate([s])),o.current=[t,i],function(){t.flush()}},[n]),Wo(function(){var e=o.current,t=e[0];e[1]?e[1]=!1:(void 0!==a.next&&Mo(n,a.next,!0),t.tags.length&&(t.before=t.tags[t.tags.length-1].nextElementSibling,t.flush()),n.insert("",a,t,!1))},[n,a.name]),null});function css(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return serializeStyles(t)}function keyframes(){var e=css.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function toString(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}var ni=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ai=!1,oi=memoize(function(e){return ni.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),ii=function testOmitPropsOnComponent(e){return"theme"!==e},si=function getDefaultShouldForwardProp(e){return"string"==typeof e&&e.charCodeAt(0)>96?oi:ii},li=function composeShouldForwardProps(e,t,n){var a;if(t){var o=t.shouldForwardProp;a=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof a&&n&&(a=e.__emotion_forwardProp),a},ci=function Insertion(e){var t=e.cache,n=e.serialized,a=e.isStringTag;return Ro(t,n,a),Ho(function(){return Mo(t,n,a)}),null},ui=function createStyled(e,n){var a,o,i=e.__emotion_real===e,s=i&&e.__emotion_base||e;void 0!==n&&(a=n.label,o=n.target);var l=li(e,n,i),c=l||si(s),u=!c("as");return function(){var d=arguments,p=i&&void 0!==e.__emotion_styles?e.__emotion_styles.slice(0):[];if(void 0!==a&&p.push("label:"+a+";"),null==d[0]||void 0===d[0].raw)p.push.apply(p,d);else{var m=d[0];p.push(m[0]);for(var g=d.length,h=1;h<g;h++)p.push(d[h],m[h])}var b=Yo(function(e,n,a){var i=u&&e.as||s,d="",m=[],g=e;if(null==e.theme){for(var h in g={},e)g[h]=e[h];g.theme=t.useContext(Ko)}"string"==typeof e.className?d=getRegisteredStyles(n.registered,m,e.className):null!=e.className&&(d=e.className+" ");var b=serializeStyles(p.concat(m),n.registered,g);d+=n.key+"-"+b.name,void 0!==o&&(d+=" "+o);var y=u&&void 0===l?si(i):c,v={};for(var S in e)u&&"as"===S||y(S)&&(v[S]=e[S]);return v.className=d,a&&(v.ref=a),t.createElement(t.Fragment,null,t.createElement(ci,{cache:n,serialized:b,isStringTag:"string"==typeof i}),t.createElement(i,v))});return b.displayName=void 0!==a?a:"Styled("+("string"==typeof s?s:s.displayName||s.name||"Component")+")",b.defaultProps=e.defaultProps,b.__emotion_real=b,b.__emotion_base=s,b.__emotion_styles=p,b.__emotion_forwardProp=l,Object.defineProperty(b,"toString",{value:function value(){return void 0===o&&ai?"NO_COMPONENT_SELECTOR":"."+o}}),b.withComponent=function(e,t){return createStyled(e,_extends({},n,t,{shouldForwardProp:li(b,t,!0)})).apply(void 0,p)},b}},di=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],pi=ui.bind(null);function isEmpty$2(e){return null==e||0===Object.keys(e).length}function GlobalStyles$2(e){const{styles:t,defaultTheme:n={}}=e;return(0,Fa.jsx)(ri,{styles:"function"==typeof t?e=>t(isEmpty$2(e)?n:e):t})}function styled$1(e,t){return pi(e,t)}function internal_mutateStyles(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}di.forEach(function(e){pi[e]=pi(e)});var mi=[];function internal_serializeStyles(e){return mi[0]=e,serializeStyles(mi)}var fi=__commonJSMin(e=>{Symbol.for("react.transitional.element"),Symbol.for("react.portal");var t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),i=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.suspense_list"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=(Symbol.for("react.view_transition"),Symbol.for("react.client.reference"));e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===t||e===a||e===n||e===l||e===c||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===u||e.$$typeof===i||e.$$typeof===o||e.$$typeof===s||e.$$typeof===p||void 0!==e.getModuleId)}}),gi=__commonJSMin((e,t)=>{t.exports=fi()})();function isPlainObject$1(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function deepClone(e){if(u.isValidElement(e)||(0,gi.isValidElementType)(e)||!isPlainObject$1(e))return e;const t={};return Object.keys(e).forEach(n=>{t[n]=deepClone(e[n])}),t}function deepmerge(e,t,n={clone:!0}){const a=n.clone?{...e}:e;return isPlainObject$1(e)&&isPlainObject$1(t)&&Object.keys(t).forEach(o=>{u.isValidElement(t[o])||(0,gi.isValidElementType)(t[o])?a[o]=t[o]:isPlainObject$1(t[o])&&Object.prototype.hasOwnProperty.call(e,o)&&isPlainObject$1(e[o])?a[o]=deepmerge(e[o],t[o],n):n.clone?a[o]=isPlainObject$1(t[o])?deepClone(t[o]):t[o]:a[o]=t[o]}),a}var sortBreakpointsValues=e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function createBreakpoints(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:a=5,...o}=e,i=sortBreakpointsValues(t),s=Object.keys(i);function up(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function down(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-a/100}${n})`}function between(e,o){const i=s.indexOf(o);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==i&&"number"==typeof t[s[i]]?t[s[i]]:o)-a/100}${n})`}function only(e){return s.indexOf(e)+1<s.length?between(e,s[s.indexOf(e)+1]):up(e)}function not(e){const t=s.indexOf(e);return 0===t?up(s[1]):t===s.length-1?down(s[t]):between(e,s[s.indexOf(e)+1]).replace("@media","@media not all and")}const l=[];for(let c=0;c<s.length;c+=1)l.push(up(s[c]));return{keys:s,values:i,up,down,between,only,not,unit:n,internal_mediaKeys:l,...o}}var hi=/min-width:\s*([0-9.]+)/;function sortContainerQueries(e,t){if(!e.containerQueries||!hasContainerQuery(t))return t;const n=[];for(const o in t)o.startsWith("@container")&&n.push(o);n.sort((e,t)=>+(e.match(hi)?.[1]||0)-+(t.match(hi)?.[1]||0));const a=t;for(let o=0;o<n.length;o+=1){const e=n[o],t=a[e];delete a[e],a[e]=t}return a}function hasContainerQuery(e){for(const t in e)if(t.startsWith("@container"))return!0;return!1}function isCqShorthand(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function getContainerQuery(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,a,o]=n,i=Number.isNaN(+a)?a||0:+a;return e.containerQueries(o).up(i)}function cssContainerQueries(e){const toContainerQuery=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function attachCq(t,n){t.up=(...t)=>toContainerQuery(e.breakpoints.up(...t),n),t.down=(...t)=>toContainerQuery(e.breakpoints.down(...t),n),t.between=(...t)=>toContainerQuery(e.breakpoints.between(...t),n),t.only=(...t)=>toContainerQuery(e.breakpoints.only(...t),n),t.not=(...t)=>{const a=toContainerQuery(e.breakpoints.not(...t),n);return a.includes("not all and")?a.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):a}}const t={},containerQueries=e=>(attachCq(t,e),t);return attachCq(containerQueries),{...e,containerQueries}}var bi={borderRadius:4};function isObjectEmpty$2(e){if(null==e)return!0;for(const t in e)return!1;return!0}function fastDeepAssign(e,t){const n=Array.isArray(t),a=Array.isArray(e);return isPrimitive(t)?t:isPrimitiveOrBuiltIn(e)?clone(t):n&&a?mergeArray(e,t):n!==a?clone(t):mergeObject(e,t)}function cloneArray(e){let t=0;const n=e.length,a=new Array(n);for(t=0;t<n;t+=1)a[t]=clone(e[t]);return a}function cloneObject(e){const t={};for(const n in e)t[n]=clone(e[n]);return t}function mergeArray(e,t){const n=e.length;for(let a=0;a<t.length;a+=1)e[n+a]=clone(t[a]);return e}function isMergeableObject(e){return!("object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date)}function isPrimitive(e){return"object"!=typeof e||null===e}function isPrimitiveOrBuiltIn(e){return"object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date}function clone(e){return isMergeableObject(e)?Array.isArray(e)?cloneArray(e):cloneObject(e):e}function mergeObject(e,t){for(const n in t)e[n]=n in e?fastDeepAssign(e[n],t[n]):clone(t[n]);return e}var yi={},vi={xs:0,sm:600,md:900,lg:1200,xl:1536},Si=createBreakpoints({values:vi}),xi={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:vi[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function handleBreakpoints(e,t,n){const a={};return iterateBreakpoints(a,e.theme,t,(e,t,o)=>{const i=n(t,o);e?a[e]=i:fastDeepAssign(a,i)})}function iterateBreakpoints(e,t,n,a){if(t??=yi,Array.isArray(n)){const o=t.breakpoints??Si;for(let t=0;t<n.length;t+=1)buildBreakpoint(e,o.up(o.keys[t]),n[t],void 0,a);return e}if("object"==typeof n){const o=t.breakpoints??Si,i=o.values??vi;for(const s in n)if(isCqShorthand(o.keys,s)){const o=getContainerQuery(t.containerQueries?t:xi,s);o&&buildBreakpoint(e,o,n[s],s,a)}else if(s in i)buildBreakpoint(e,o.up(s),n[s],s,a);else{const t=s;e[t]=n[t]}return e}return a(void 0,n),e}function buildBreakpoint(e,t,n,a,o){e[t]??={},o(t,n,a)}function createEmptyBreakpointObject(e=Si){const{internal_mediaKeys:t}=e,n={};for(let a=0;a<t.length;a+=1)n[t[a]]={};return n}function removeUnusedBreakpoints(e,t){const n=e.internal_mediaKeys;for(let a=0;a<n.length;a+=1){const e=n[a];isObjectEmpty$2(t[e])&&delete t[e]}return t}function hasBreakpoint(e,t){if(Array.isArray(t))return!0;if("object"==typeof t&&null!==t){for(let a=0;a<e.keys.length;a+=1)if(e.keys[a]in t)return!0;const n=Object.keys(t);for(let t=0;t<n.length;t+=1)if(isCqShorthand(e.keys,n[t]))return!0}return!1}function capitalize$1(e){if("string"!=typeof e)throw new Error(formatMuiErrorMessage(7));return e.charAt(0).toUpperCase()+e.slice(1)}function getStyleValue2(e,t,n,a){let o;return o="function"==typeof e?e(n):Array.isArray(e)?e[n]||n:"string"==typeof n&&getPath(e,n,!0,a)||n,t&&(o=t(o,n,e)),o}function getPath(e,t,n=!0,a=void 0){if(!e||!t)return null;const o=t.split(".");if(e.vars&&n){const t=getPathImpl(e.vars,o,a);if(null!=t)return t}return getPathImpl(e,o,a)}function getPathImpl(e,t,n=void 0){let a,o=e,i=0;for(;i<t.length;){if(null==o)return o;a=o,o=o[t[i]],i+=1}if(n&&void 0===o){const e=t[t.length-1],o=`${n}${"default"===e?"":capitalize$1(e)}`;return a?.[o]}return o}function style$1(e){const{prop:t,cssProperty:n=e.prop,themeKey:a,transform:o}=e,fn=e=>{if(null==e[t])return null;const i=e[t],s=getPath(e.theme,a)||{};return handleBreakpoints(e,i,e=>{const a=getStyleValue2(s,o,e,t);return!1===n?a:{[n]:a}})};return fn.propTypes={},fn.filterProps=[t],fn}var Ci={internal_cache:{}},wi={m:"margin",p:"padding"},ki={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},Ei={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},_i={};for(const Lg in wi)_i[Lg]=[wi[Lg]];for(const Lg in wi)for(const e in ki){const t=wi[Lg],n=ki[e],a=Array.isArray(n)?n.map(e=>t+e):[t+n];_i[Lg+e]=a}for(const Lg in Ei)_i[Lg]=_i[Ei[Lg]];var Pi=new Set(["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"]),Ti=new Set(["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"]),Ai=new Set([...Pi,...Ti]);function createUnaryUnit(e,t,n,a){const o=getPath(e,t,!0)??n;return"number"==typeof o||"string"==typeof o?e=>"string"==typeof e?e:"string"==typeof o?o.startsWith("var(")&&0===e?0:o.startsWith("var(")&&1===e?o:`calc(${e} * ${o})`:o*e:Array.isArray(o)?e=>{if("string"==typeof e)return e;const t=o[Math.abs(e)];return e>=0?t:"number"==typeof t?-t:"string"==typeof t&&t.startsWith("var(")?`calc(-1 * ${t})`:`-${t}`}:"function"==typeof o?o:()=>{}}function createUnarySpacing(e){return createUnaryUnit(e,"spacing",8,"spacing")}function getValue(e,t){return"string"==typeof t||null==t?t:e(t)}var Ri=[""];function style(e,t){const n=e.theme??Ci,a=n?.internal_cache?.unarySpacing??createUnarySpacing(n),o={};for(const i in e){if(!t.has(i))continue;const n=_i[i]??(Ri[0]=i,Ri),s=e[i];iterateBreakpoints(o,e.theme,s,(e,t)=>{const i=e?o[e]:o;for(let o=0;o<n.length;o+=1)i[n[o]]=getValue(a,t)})}return o}function margin(e){return style(e,Pi)}function padding(e){return style(e,Ti)}function spacing(e){return style(e,Ai)}function createSpacing(e=8,t=createUnarySpacing({spacing:e})){if(e.mui)return e;const spacing=(...e)=>(0===e.length?[1]:e).map(e=>{const n=t(e);return"number"==typeof n?`${n}px`:n}).join(" ");return spacing.mui=!0,spacing}function compose(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),fn=e=>{const n={};for(const a in e)t[a]&&fastDeepAssign(n,t[a](e));return n};return fn.propTypes={},fn.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),fn}function borderTransform(e){return"number"!=typeof e?e:`${e}px solid`}function createBorderStyle(e,t){return style$1({prop:e,themeKey:"borders",transform:t})}margin.propTypes={},margin.filterProps=Pi,padding.propTypes={},padding.filterProps=Ti,spacing.propTypes={},spacing.filterProps=Ai;var Mi=createBorderStyle("border",borderTransform),Di=createBorderStyle("borderTop",borderTransform),Oi=createBorderStyle("borderRight",borderTransform),$i=createBorderStyle("borderBottom",borderTransform),Ii=createBorderStyle("borderLeft",borderTransform),Ni=createBorderStyle("borderColor"),zi=createBorderStyle("borderTopColor"),Li=createBorderStyle("borderRightColor"),ji=createBorderStyle("borderBottomColor"),Bi=createBorderStyle("borderLeftColor"),Fi=createBorderStyle("outline",borderTransform),qi=createBorderStyle("outlineColor"),borderRadius=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=createUnaryUnit(e.theme,"shape.borderRadius",4,"borderRadius"),styleFromPropValue=e=>({borderRadius:getValue(t,e)});return handleBreakpoints(e,e.borderRadius,styleFromPropValue)}return null};borderRadius.propTypes={},borderRadius.filterProps=["borderRadius"];compose(Mi,Di,Oi,$i,Ii,Ni,zi,Li,ji,Bi,borderRadius,Fi,qi);var gap=e=>{if(void 0!==e.gap&&null!==e.gap){const t=createUnaryUnit(e.theme,"spacing",8,"gap"),styleFromPropValue=e=>({gap:getValue(t,e)});return handleBreakpoints(e,e.gap,styleFromPropValue)}return null};gap.propTypes={},gap.filterProps=["gap"];var columnGap=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=createUnaryUnit(e.theme,"spacing",8,"columnGap"),styleFromPropValue=e=>({columnGap:getValue(t,e)});return handleBreakpoints(e,e.columnGap,styleFromPropValue)}return null};columnGap.propTypes={},columnGap.filterProps=["columnGap"];var rowGap=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=createUnaryUnit(e.theme,"spacing",8,"rowGap"),styleFromPropValue=e=>({rowGap:getValue(t,e)});return handleBreakpoints(e,e.rowGap,styleFromPropValue)}return null};rowGap.propTypes={},rowGap.filterProps=["rowGap"];compose(gap,columnGap,rowGap,style$1({prop:"gridColumn"}),style$1({prop:"gridRow"}),style$1({prop:"gridAutoFlow"}),style$1({prop:"gridAutoColumns"}),style$1({prop:"gridAutoRows"}),style$1({prop:"gridTemplateColumns"}),style$1({prop:"gridTemplateRows"}),style$1({prop:"gridTemplateAreas"}),style$1({prop:"gridArea"}));function paletteTransform(e,t){return"grey"===t?t:e}compose(style$1({prop:"color",themeKey:"palette",transform:paletteTransform}),style$1({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:paletteTransform}),style$1({prop:"backgroundColor",themeKey:"palette",transform:paletteTransform}));function sizingTransform(e){return e<=1&&0!==e?100*e+"%":e}var Ui=style$1({prop:"width",transform:sizingTransform}),maxWidth=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const styleFromPropValue=t=>{const n=e.theme?.breakpoints?.values?.[t]||vi[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:sizingTransform(t)}};return handleBreakpoints(e,e.maxWidth,styleFromPropValue)}return null};maxWidth.filterProps=["maxWidth"];var Vi=style$1({prop:"minWidth",transform:sizingTransform}),Hi=style$1({prop:"height",transform:sizingTransform}),Wi=style$1({prop:"maxHeight",transform:sizingTransform}),Gi=style$1({prop:"minHeight",transform:sizingTransform}),Yi=(style$1({prop:"size",cssProperty:"width",transform:sizingTransform}),style$1({prop:"size",cssProperty:"height",transform:sizingTransform}),compose(Ui,maxWidth,Vi,Hi,Wi,Gi,style$1({prop:"boxSizing"})),{border:{themeKey:"borders",transform:borderTransform},borderTop:{themeKey:"borders",transform:borderTransform},borderRight:{themeKey:"borders",transform:borderTransform},borderBottom:{themeKey:"borders",transform:borderTransform},borderLeft:{themeKey:"borders",transform:borderTransform},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:borderTransform},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:borderRadius},color:{themeKey:"palette",transform:paletteTransform},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:paletteTransform},backgroundColor:{themeKey:"palette",transform:paletteTransform},p:{style:padding},pt:{style:padding},pr:{style:padding},pb:{style:padding},pl:{style:padding},px:{style:padding},py:{style:padding},padding:{style:padding},paddingTop:{style:padding},paddingRight:{style:padding},paddingBottom:{style:padding},paddingLeft:{style:padding},paddingX:{style:padding},paddingY:{style:padding},paddingInline:{style:padding},paddingInlineStart:{style:padding},paddingInlineEnd:{style:padding},paddingBlock:{style:padding},paddingBlockStart:{style:padding},paddingBlockEnd:{style:padding},m:{style:margin},mt:{style:margin},mr:{style:margin},mb:{style:margin},ml:{style:margin},mx:{style:margin},my:{style:margin},margin:{style:margin},marginTop:{style:margin},marginRight:{style:margin},marginBottom:{style:margin},marginLeft:{style:margin},marginX:{style:margin},marginY:{style:margin},marginInline:{style:margin},marginInlineStart:{style:margin},marginInlineEnd:{style:margin},marginBlock:{style:margin},marginBlockStart:{style:margin},marginBlockEnd:{style:margin},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:gap},rowGap:{style:rowGap},columnGap:{style:columnGap},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:sizingTransform},maxWidth:{style:maxWidth},minWidth:{transform:sizingTransform},height:{transform:sizingTransform},maxHeight:{transform:sizingTransform},minHeight:{transform:sizingTransform},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),Ki={};function unstable_createStyleFunctionSx(){function styleFunctionSx(e){if(!e.sx)return null;const{sx:t,theme:n=Ki,nested:a}=e,o=n.unstable_sxConfig??Yi,i={sx:null,theme:n,nested:!0};function process(t){let s=t;if("function"==typeof t)s=t(n);else if("object"!=typeof t)return t;if(!s)return null;const l=n.breakpoints??Si,c=createEmptyBreakpointObject(l);for(const a in s){const t=callIfFn(s[a],n);null!=t&&("object"==typeof t?o[a]?setThemeValue(c,a,t,n,o):hasBreakpoint(l,t)?iterateBreakpoints(c,e.theme,t,(e,t)=>{c[e][a]=t}):(i.sx=t,c[a]=styleFunctionSx(i)):setThemeValue(c,a,t,n,o))}return!a&&n.modularCssLayers?{"@layer sx":sortContainerQueries(n,removeUnusedBreakpoints(l,c))}:sortContainerQueries(n,removeUnusedBreakpoints(l,c))}return Array.isArray(t)?t.map(process):process(t)}return styleFunctionSx.filterProps=["sx"],styleFunctionSx}var Qi=unstable_createStyleFunctionSx();function setThemeValue(e,t,n,a,o){const i=o[t];if(!i)return void(e[t]=n);if(null==n)return;const{themeKey:s}=i;if("typography"===s&&"inherit"===n)return void(e[t]=n);const{style:l}=i;if(l)return void fastDeepAssign(e,l({[t]:n,theme:a}));const{cssProperty:c=t,transform:u}=i,d=getPath(a,s);iterateBreakpoints(e,a,n,(n,a)=>{const o=getStyleValue2(d,u,a,t);!1===c?fastDeepAssign(n?e[n]:e,o):n?e[n][c]=o:e[c]=o})}function callIfFn(e,t){return"function"==typeof e?e(t):e}function applyStyles$1(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let a=n.getColorSchemeSelector(e);return"&"===a?t:((a.includes("data-")||a.includes("."))&&(a=`*:where(${a.replace(/\s*&$/,"")}) &`),{[a]:t})}return n.palette.mode===e?t:{}}function createTheme$1(e={},...t){const{breakpoints:n={},palette:a={},spacing:o,shape:i={},...s}=e;let l=deepmerge({breakpoints:createBreakpoints(n),direction:"ltr",components:{},palette:{mode:"light",...a},spacing:createSpacing(o),shape:{...bi,...i}},s);return l=cssContainerQueries(l),l.applyStyles=applyStyles$1,l=t.reduce((e,t)=>deepmerge(e,t),l),l.unstable_sxConfig={...Yi,...s?.unstable_sxConfig},l.unstable_sx=function sx(e){return Qi({sx:e,theme:this})},l.internal_cache={},l}function isObjectEmpty$1(e){return 0===Object.keys(e).length}function useTheme$3(e=null){const t=u.useContext(Ko);return!t||isObjectEmpty$1(t)?e:t}var Zi=createTheme$1();function useTheme$2(e=Zi){return useTheme$3(e)}function wrapGlobalLayer(e){const t=internal_serializeStyles(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function GlobalStyles$1({styles:e,themeId:t,defaultTheme:n={}}){const a=useTheme$2(n),o=t&&a[t]||a;let i="function"==typeof e?e(o):e;return o.modularCssLayers&&(i=Array.isArray(i)?i.map(e=>wrapGlobalLayer("function"==typeof e?e(o):e)):wrapGlobalLayer(i)),(0,Fa.jsx)(GlobalStyles$2,{styles:i})}var defaultGenerator=e=>e,Xi=(()=>{let e=defaultGenerator;return{configure(t){e=t},generate:t=>e(t),reset(){e=defaultGenerator}}})();function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function clsx(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}function createBox(e={}){const{themeId:t,defaultTheme:n,defaultClassName:a="MuiBox-root",generateClassName:o}=e,i=styled$1("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(Qi);return u.forwardRef(function Box(e,s){const l=useTheme$2(n),{className:c,component:u="div",...d}=e;return(0,Fa.jsx)(i,{as:u,ref:s,className:clsx(c,o?o(a):a),theme:t&&l[t]||l,...d})})}var Ji={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function generateUtilityClass(e,t,n="Mui"){const a=Ji[t];return a?`${n}-${a}`:`${Xi.generate(e)}-${t}`}function generateUtilityClasses(e,t,n="Mui"){const a={};return t.forEach(t=>{a[t]=generateUtilityClass(e,t,n)}),a}function preprocessStyles(e){const{variants:t,...n}=e,a={variants:t,style:internal_serializeStyles(n),isProcessed:!0};return a.style===n||t&&t.forEach(e=>{"function"!=typeof e.style&&(e.style=internal_serializeStyles(e.style))}),a}var es=createTheme$1();function shouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function shallowLayer(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function defaultOverridesResolver(e){return e?(t,n)=>n[e]:null}function attachTheme(e,t,n){e.theme=isObjectEmpty$2(e.theme)?n:e.theme[t]||e.theme}function processStyle(e,t,n){const a="function"==typeof t?t(e):t;if(Array.isArray(a))return a.flatMap(t=>processStyle(e,t,n));if(Array.isArray(a?.variants)){let t;if(a.isProcessed)t=n?shallowLayer(a.style,n):a.style;else{const{variants:e,...o}=a;t=n?shallowLayer(internal_serializeStyles(o),n):o}return processStyleVariants(e,a.variants,[t],n)}return a?.isProcessed?n?shallowLayer(internal_serializeStyles(a.style),n):a.style:n?shallowLayer(internal_serializeStyles(a),n):a}function processStyleVariants(e,t,n=[],a=void 0){let o;e:for(let i=0;i<t.length;i+=1){const s=t[i];if("function"==typeof s.props){if(o??={...e,...e.ownerState,ownerState:e.ownerState},!s.props(o))continue}else for(const t in s.props)if(e[t]!==s.props[t]&&e.ownerState?.[t]!==s.props[t])continue e;"function"==typeof s.style?(o??={...e,...e.ownerState,ownerState:e.ownerState},n.push(a?shallowLayer(internal_serializeStyles(s.style(o)),a):s.style(o))):n.push(a?shallowLayer(internal_serializeStyles(s.style),a):s.style)}return n}function createStyled(e={}){const{themeId:t,defaultTheme:n=es,rootShouldForwardProp:a=shouldForwardProp,slotShouldForwardProp:o=shouldForwardProp}=e;function styleAttachTheme(e){attachTheme(e,t,n)}const styled=(e,t={})=>{internal_mutateStyles(e,e=>e.filter(e=>e!==Qi));const{name:n,slot:i,skipVariantsResolver:s,skipSx:l,overridesResolver:c=defaultOverridesResolver(lowercaseFirstLetter(i)),...u}=t,d=n&&n.startsWith("Mui")||i?"components":"custom",p=void 0!==s?s:i&&"Root"!==i&&"root"!==i||!1,m=l||!1;let g=shouldForwardProp;"Root"===i||"root"===i?g=a:i?g=o:isStringTag(e)&&(g=void 0);const h=styled$1(e,{shouldForwardProp:g,label:generateStyledLabel(n,i),...u}),transformStyle=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function styleFunctionProcessor(t){return processStyle(t,e,t.theme.modularCssLayers?d:void 0)};if(isPlainObject$1(e)){const t=preprocessStyles(e);return function styleObjectProcessor(e){return t.variants?processStyle(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?shallowLayer(t.style,d):t.style}}return e},muiStyledResolver=(...t)=>{const a=[],o=t.map(transformStyle),i=[];if(a.push(styleAttachTheme),n&&c&&i.push(function styleThemeOverrides(e){const t=e.theme.components?.[n]?.styleOverrides;if(!t)return null;const a={};for(const n in t)a[n]=processStyle(e,t[n],e.theme.modularCssLayers?"theme":void 0);return c(e,a)}),n&&!p&&i.push(function styleThemeVariants(e){const t=e.theme?.components?.[n]?.variants;return t?processStyleVariants(e,t,[],e.theme.modularCssLayers?"theme":void 0):null}),m||i.push(Qi),Array.isArray(o[0])){const e=o.shift(),t=new Array(a.length).fill(""),n=new Array(i.length).fill("");let s;s=[...t,...e,...n],s.raw=[...t,...e.raw,...n],a.unshift(s)}const s=h(...a,...o,...i);return e.muiName&&(s.muiName=e.muiName),s};return h.withConfig&&(muiStyledResolver.withConfig=h.withConfig),muiStyledResolver};return styled}function generateStyledLabel(e,t){let n;return n}function isStringTag(e){return"string"==typeof e&&e.charCodeAt(0)>96}function lowercaseFirstLetter(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function resolveProps(e,t,n=!1){const a={...t};for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const i=o;if("components"===i||"slots"===i)a[i]={...e[i],...a[i]};else if("componentsProps"===i||"slotProps"===i){const o=e[i],s=t[i];if(s)if(o){a[i]={...s};for(const e in o)if(Object.prototype.hasOwnProperty.call(o,e)){const t=e;a[i][t]=resolveProps(o[t],s[t],n)}}else a[i]=s;else a[i]=o||{}}else"className"===i&&n&&void 0!==t.className?a.className=clsx(e?.className,t?.className):"style"===i&&n&&t.style?a.style={...e?.style,...t?.style}:void 0===a[i]&&(a[i]=e[i])}return a}var ts="undefined"!=typeof window?u.useLayoutEffect:u.useEffect;function clamp(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}function clampWrapper(e,t=0,n=1){return clamp(e,t,n)}function hexToRgb(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?`rgb${4===n.length?"a":""}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}function decomposeColor(e){if(e.type)return e;if("#"===e.charAt(0))return decomposeColor(hexToRgb(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(formatMuiErrorMessage(9,e));let a,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),a=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(a))throw new Error(formatMuiErrorMessage(10,a))}else o=o.split(",");return o=o.map(e=>parseFloat(e)),{type:n,values:o,colorSpace:a}}var colorChannel=e=>{const t=decomposeColor(e);return t.values.slice(0,3).map((e,n)=>t.type.includes("hsl")&&0!==n?`${e}%`:e).join(" ")},private_safeColorChannel=(e,t)=>{try{return colorChannel(e)}catch(n){return e}};function recomposeColor(e){const{type:t,colorSpace:n}=e;let{values:a}=e;return t.includes("rgb")?a=a.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(a[1]=`${a[1]}%`,a[2]=`${a[2]}%`),a=t.includes("color")?`${n} ${a.join(" ")}`:`${a.join(", ")}`,`${t}(${a})`}function hslToRgb(e){e=decomposeColor(e);const{values:t}=e,n=t[0],a=t[1]/100,o=t[2]/100,i=a*Math.min(o,1-o),f=(e,t=(e+n/30)%12)=>o-i*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const l=[Math.round(255*f(0)),Math.round(255*f(8)),Math.round(255*f(4))];return"hsla"===e.type&&(s+="a",l.push(t[3])),recomposeColor({type:s,values:l})}function getLuminance(e){let t="hsl"===(e=decomposeColor(e)).type||"hsla"===e.type?decomposeColor(hslToRgb(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function getContrastRatio(e,t){const n=getLuminance(e),a=getLuminance(t);return(Math.max(n,a)+.05)/(Math.min(n,a)+.05)}function alpha(e,t){return e=decomposeColor(e),t=clampWrapper(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,recomposeColor(e)}function private_safeAlpha(e,t,n){try{return alpha(e,t)}catch(a){return e}}function darken(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return recomposeColor(e)}function private_safeDarken(e,t,n){try{return darken(e,t)}catch(a){return e}}function lighten(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return recomposeColor(e)}function private_safeLighten(e,t,n){try{return lighten(e,t)}catch(a){return e}}function emphasize(e,t=.15){return getLuminance(e)>.5?darken(e,t):lighten(e,t)}function private_safeEmphasize(e,t,n){try{return emphasize(e,t)}catch(a){return e}}var rs=u.createContext(null);function useTheme$1(){return u.useContext(rs)}var ns="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";function mergeOuterLocalTheme(e,t){return"function"==typeof t?t(e):{...e,...t}}function ThemeProvider$2(e){const{children:t,theme:n}=e,a=useTheme$1(),o=u.useMemo(()=>{const e=null===a?{...n}:mergeOuterLocalTheme(a,n);return null!=e&&(e[ns]=null!==a),e},[n,a]);return(0,Fa.jsx)(rs.Provider,{value:o,children:t})}var as=u.createContext();function RtlProvider({value:e,...t}){return(0,Fa.jsx)(as.Provider,{value:e??!0,...t})}var useRtl=()=>u.useContext(as)??!1,os=u.createContext(void 0);function DefaultPropsProvider({value:e,children:t}){return(0,Fa.jsx)(os.Provider,{value:e,children:t})}function getThemeProps(e){const{theme:t,name:n,props:a}=e;if(!t||!t.components||!t.components[n])return a;const o=t.components[n];return o.defaultProps?resolveProps(o.defaultProps,a,t.components.mergeClassNameAndStyle):o.styleOverrides||o.variants?a:resolveProps(o,a,t.components.mergeClassNameAndStyle)}function useDefaultProps$1({props:e,name:t}){return getThemeProps({props:e,name:t,theme:{components:u.useContext(os)}})}var ss=0;function useGlobalId(e){const[t,n]=u.useState(e),a=e||t;return u.useEffect(()=>{null==t&&n(`mui-${ss+=1}`)},[t]),a}var ls={...u}.useId;function useId(e){if(void 0!==ls){const t=ls();return e??t}return useGlobalId(e)}function useLayerOrder(e){const t=useTheme$3(),n=useId()||"",{modularCssLayers:a}=e;let o="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return o=a&&null===t?"string"==typeof a?a.replace(/mui(?!\.)/g,o):`@layer ${o};`:"",ts(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(o){if(t&&t.hasAttribute?.("data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const a=document.createElement("style");a.setAttribute("data-mui-layer-order",n),a.textContent=o,e.prepend(a)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[o,n]),o?(0,Fa.jsx)(GlobalStyles$1,{styles:o}):null}var cs={};function useThemeScoping(e,t,n,a=!1){return u.useMemo(()=>{const o=e&&t[e]||t;if("function"==typeof n){const i=n(o),s=e?{...t,[e]:i}:i;return a?()=>s:s}return e?{...t,[e]:n}:{...t,...n}},[e,t,n,a])}function ThemeProvider$1(e){const{children:t,theme:n,themeId:a}=e,o=useTheme$3(cs),i=useTheme$1()||cs,s=useThemeScoping(a,o,n),l=useThemeScoping(a,i,n,!0),c="rtl"===(a?s[a]:s).direction,u=useLayerOrder(s);return(0,Fa.jsx)(ThemeProvider$2,{theme:l,children:(0,Fa.jsx)(Ko.Provider,{value:s,children:(0,Fa.jsx)(RtlProvider,{value:c,children:(0,Fa.jsxs)(DefaultPropsProvider,{value:a?s[a].components:s.components,children:[u,t]})})})})}var us={theme:void 0};function unstable_memoTheme(e){let t,n;return function styleMemoized(a){let o=t;return void 0!==o&&a.theme===n||(us.theme=a.theme,o=preprocessStyles(e(us)),t=o,n=a.theme),o}}var ds="mode",ps="color-scheme",ms="data-color-scheme";function InitColorSchemeScript(e){const{defaultMode:t="system",defaultLightColorScheme:n="light",defaultDarkColorScheme:a="dark",modeStorageKey:o=ds,colorSchemeStorageKey:i=ps,attribute:s=ms,colorSchemeNode:l="document.documentElement",nonce:c}=e||{};let u="",d=s;if("class"===s&&(d=".%s"),"data"===s&&(d="[data-%s]"),d.startsWith(".")){const e=d.substring(1);u+=`${l}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));\n ${l}.classList.add('${e}'.replace('%s', colorScheme));`}const p=d.match(/\[([^[\]]+)\]/);if(p){const[e,t]=p[1].split("=");t||(u+=`${l}.removeAttribute('${e}'.replace('%s', light));\n ${l}.removeAttribute('${e}'.replace('%s', dark));`),u+=`\n ${l}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:'""'});`}else".%s"!==d&&(u+=`${l}.setAttribute('${d}', colorScheme);`);return(0,Fa.jsx)("script",{suppressHydrationWarning:!0,nonce:"undefined"==typeof window?c:"",dangerouslySetInnerHTML:{__html:`(function() {\ntry {\n let colorScheme = '';\n const mode = localStorage.getItem('${o}') || '${t}';\n const dark = localStorage.getItem('${i}-dark') || '${a}';\n const light = localStorage.getItem('${i}-light') || '${n}';\n if (mode === 'system') {\n // handle system mode\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n colorScheme = dark\n } else {\n colorScheme = light\n }\n }\n if (mode === 'light') {\n colorScheme = light;\n }\n if (mode === 'dark') {\n colorScheme = dark;\n }\n if (colorScheme) {\n ${u}\n }\n} catch(e){}})();`}},"mui-color-scheme-init")}function noop$4(){}var localStorageManager=({key:e,storageWindow:t})=>(t||"undefined"==typeof window||(t=window),{get(n){if("undefined"==typeof window)return;if(!t)return n;let a;try{a=t.localStorage.getItem(e)}catch{}return a||n},set:n=>{if(t)try{t.localStorage.setItem(e,n)}catch{}},subscribe:n=>{if(!t)return noop$4;const listener=t=>{const a=t.newValue;t.key===e&&n(a)};return t.addEventListener("storage",listener),()=>{t.removeEventListener("storage",listener)}}});function noop$3(){}function getSystemMode(e){if("undefined"!=typeof window&&"function"==typeof window.matchMedia&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function processState(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}function getColorScheme(e){return processState(e,t=>"light"===t?e.lightColorScheme:"dark"===t?e.darkColorScheme:void 0)}function useCurrentColorScheme(e){const{defaultMode:t="light",defaultLightColorScheme:n,defaultDarkColorScheme:a,supportedColorSchemes:o=[],modeStorageKey:i=ds,colorSchemeStorageKey:s=ps,storageWindow:l=("undefined"==typeof window?void 0:window),storageManager:c=localStorageManager,noSsr:d=!1}=e,p=o.join(","),m=o.length>1,g=u.useMemo(()=>c?.({key:i,storageWindow:l}),[c,i,l]),h=u.useMemo(()=>c?.({key:`${s}-light`,storageWindow:l}),[c,s,l]),b=u.useMemo(()=>c?.({key:`${s}-dark`,storageWindow:l}),[c,s,l]),[y,v]=u.useState(()=>{const e=g?.get(t)||t,o=h?.get(n)||n,i=b?.get(a)||a;return{mode:e,systemMode:getSystemMode(e),lightColorScheme:o,darkColorScheme:i}}),[S,x]=u.useState(d||!m);u.useEffect(()=>{x(!0)},[]);const C=getColorScheme(y),w=u.useCallback(e=>{v(n=>{if(e===n.mode)return n;const a=e??t;return g?.set(a),{...n,mode:a,systemMode:getSystemMode(a)}})},[g,t]),k=u.useCallback(e=>{e?"string"==typeof e?e&&!p.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):v(t=>{const n={...t};return processState(t,t=>{"light"===t&&(h?.set(e),n.lightColorScheme=e),"dark"===t&&(b?.set(e),n.darkColorScheme=e)}),n}):v(t=>{const o={...t},i=null===e.light?n:e.light,s=null===e.dark?a:e.dark;return i&&(p.includes(i)?(o.lightColorScheme=i,h?.set(i)):console.error(`\`${i}\` does not exist in \`theme.colorSchemes\`.`)),s&&(p.includes(s)?(o.darkColorScheme=s,b?.set(s)):console.error(`\`${s}\` does not exist in \`theme.colorSchemes\`.`)),o}):v(e=>(h?.set(n),b?.set(a),{...e,lightColorScheme:n,darkColorScheme:a}))},[p,h,b,n,a]),E=u.useCallback(e=>{"system"===y.mode&&v(t=>{const n=e?.matches?"dark":"light";return t.systemMode===n?t:{...t,systemMode:n}})},[y.mode]),P=u.useRef(E);return P.current=E,u.useEffect(()=>{if("function"!=typeof window.matchMedia||!m)return;const handler=(...e)=>P.current(...e),e=window.matchMedia("(prefers-color-scheme: dark)");return e.addListener(handler),handler(e),()=>{e.removeListener(handler)}},[m]),u.useEffect(()=>{if(m){const e=g?.subscribe(e=>{e&&!["light","dark","system"].includes(e)||w(e||t)})||noop$3,n=h?.subscribe(e=>{e&&!p.match(e)||k({light:e})})||noop$3,a=b?.subscribe(e=>{e&&!p.match(e)||k({dark:e})})||noop$3;return()=>{e(),n(),a()}}},[k,w,p,t,l,m,g,h,b]),{...y,mode:S?y.mode:void 0,systemMode:S?y.systemMode:void 0,colorScheme:S?C:void 0,setMode:w,setColorScheme:k}}var fs="*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function createCssVarsProvider(e){const{themeId:t,theme:n={},modeStorageKey:a=ds,colorSchemeStorageKey:o=ps,disableTransitionOnChange:i=!1,defaultColorScheme:s,resolveTheme:l}=e,c={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},d=u.createContext(void 0),useColorScheme=()=>u.useContext(d)||c,p={},m={};function CssVarsProvider(e){const{children:c,theme:g,modeStorageKey:h=a,colorSchemeStorageKey:b=o,disableTransitionOnChange:y=i,storageManager:v,storageWindow:S=("undefined"==typeof window?void 0:window),documentNode:x=("undefined"==typeof document?void 0:document),colorSchemeNode:C=("undefined"==typeof document?void 0:document.documentElement),disableNestedContext:w=!1,disableStyleSheetGeneration:k=!1,defaultMode:E="system",forceThemeRerender:P=!1,noSsr:T}=e,R=u.useRef(!1),M=useTheme$1(),D=u.useContext(d),O=!!D&&!w,$=u.useMemo(()=>g||("function"==typeof n?n():n),[g]),I=$[t],N=I||$,{colorSchemes:L=p,components:j=m,cssVarPrefix:B}=N,F=Object.keys(L).filter(e=>!!L[e]).join(","),q=u.useMemo(()=>F.split(","),[F]),U="string"==typeof s?s:s.light,V="string"==typeof s?s:s.dark,{mode:H,setMode:W,systemMode:G,lightColorScheme:Y,darkColorScheme:K,colorScheme:Q,setColorScheme:Z}=useCurrentColorScheme({supportedColorSchemes:q,defaultLightColorScheme:U,defaultDarkColorScheme:V,modeStorageKey:h,colorSchemeStorageKey:b,defaultMode:L[U]&&L[V]?E:L[N.defaultColorScheme]?.palette?.mode||N.palette?.mode,storageManager:v,storageWindow:S,noSsr:T});let X=H,J=Q;O&&(X=D.mode,J=D.colorScheme);let ee=J||N.defaultColorScheme;N.vars&&!P&&(ee=N.defaultColorScheme);const te=u.useMemo(()=>{const e=N.generateThemeVars?.()||N.vars,t={...N,components:j,colorSchemes:L,cssVarPrefix:B,vars:e};if("function"==typeof t.generateSpacing&&(t.spacing=t.generateSpacing()),ee){const e=L[ee];e&&"object"==typeof e&&Object.keys(e).forEach(n=>{e[n]&&"object"==typeof e[n]?t[n]={...t[n],...e[n]}:t[n]=e[n]})}return l?l(t):t},[N,ee,j,L,B]),re=N.colorSchemeSelector;ts(()=>{if(J&&C&&re&&"media"!==re){const e=re;let t=re;if("class"===e&&(t=".%s"),"data"===e&&(t="[data-%s]"),e?.startsWith("data-")&&!e.includes("%s")&&(t=`[${e}="%s"]`),t.startsWith("."))C.classList.remove(...q.map(e=>t.substring(1).replace("%s",e))),C.classList.add(t.substring(1).replace("%s",J));else{const e=t.replace("%s",J).match(/\[([^\]]+)\]/);if(e){const[t,n]=e[1].split("=");n||q.forEach(e=>{C.removeAttribute(t.replace(J,e))}),C.setAttribute(t,n?n.replace(/"|'/g,""):"")}else C.setAttribute(t,J)}}},[J,re,C,q]),u.useEffect(()=>{let e;if(y&&R.current&&x){const t=x.createElement("style");t.appendChild(x.createTextNode(fs)),x.head.appendChild(t),window.getComputedStyle(x.body),e=setTimeout(()=>{x.head.removeChild(t)},1)}return()=>{clearTimeout(e)}},[J,y,x]),u.useEffect(()=>(R.current=!0,()=>{R.current=!1}),[]);const ne=u.useMemo(()=>({allColorSchemes:q,colorScheme:J,darkColorScheme:K,lightColorScheme:Y,mode:X,setColorScheme:Z,setMode:W,systemMode:G}),[q,J,K,Y,X,Z,W,G,te.colorSchemeSelector]);let ae=!0;(k||!1===N.cssVariables||O&&M?.cssVarPrefix===B)&&(ae=!1);const oe=(0,Fa.jsxs)(u.Fragment,{children:[(0,Fa.jsx)(ThemeProvider$1,{themeId:I?t:void 0,theme:te,children:c}),ae&&(0,Fa.jsx)(GlobalStyles$2,{styles:te.generateStyleSheets?.()||[]})]});return O?oe:(0,Fa.jsx)(d.Provider,{value:ne,children:oe})}const g="string"==typeof s?s:s.light,h="string"==typeof s?s:s.dark;return{CssVarsProvider,useColorScheme,getInitColorSchemeScript:e=>InitColorSchemeScript({colorSchemeStorageKey:o,defaultLightColorScheme:g,defaultDarkColorScheme:h,modeStorageKey:a,...e})}}function createGetCssVar$1(e=""){function appendVar(...t){if(!t.length)return"";const n=t[0];return"string"!=typeof n||n.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${n}`:`, var(--${e?`${e}-`:""}${n}${appendVar(...t.slice(1))})`}return(t,...n)=>`var(--${e?`${e}-`:""}${t}${appendVar(...n)})`}var assignNestedKeys=(e,t,n,a=[])=>{let o=e;t.forEach((e,i)=>{i===t.length-1?Array.isArray(o)?o[Number(e)]=n:o&&"object"==typeof o&&(o[e]=n):o&&"object"==typeof o&&(o[e]||(o[e]=a.includes(e)?[]:{}),o=o[e])})},walkObjectDeep=(e,t,n)=>{function recurse(e,a=[],o=[]){Object.entries(e).forEach(([e,i])=>{(!n||n&&!n([...a,e]))&&null!=i&&("object"==typeof i&&Object.keys(i).length>0?recurse(i,[...a,e],Array.isArray(i)?[...o,e]:o):t([...a,e],i,o))})}recurse(e)},getCssValue=(e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t;function cssVarsParser(e,t){const{prefix:n,shouldSkipGeneratingVar:a}=t||{},o={},i={},s={};return walkObjectDeep(e,(e,t,l)=>{if(!("string"!=typeof t&&"number"!=typeof t||a&&a(e,t))){const a=`--${n?`${n}-`:""}${e.join("-")}`,c=getCssValue(e,t);Object.assign(o,{[a]:c}),assignNestedKeys(i,e,`var(${a})`,l),assignNestedKeys(s,e,`var(${a}, ${c})`,l)}},e=>"vars"===e[0]),{css:o,vars:i,varsWithDefaults:s}}function prepareCssVars(e,t={}){const{getSelector:n=defaultGetSelector,disableCssColorScheme:a,colorSchemeSelector:o,enableContrastVars:i}=t,{colorSchemes:s={},components:l,defaultColorScheme:c="light",...u}=e,{vars:d,css:p,varsWithDefaults:m}=cssVarsParser(u,t);let g=m;const h={},{[c]:b,...y}=s;if(Object.entries(y||{}).forEach(([e,n])=>{const{vars:a,css:o,varsWithDefaults:i}=cssVarsParser(n,t);g=deepmerge(g,i),h[e]={css:o,vars:a}}),b){const{css:e,vars:n,varsWithDefaults:a}=cssVarsParser(b,t);g=deepmerge(g,a),h[c]={css:e,vars:n}}function defaultGetSelector(t,n){let a=o;if("class"===o&&(a=".%s"),"data"===o&&(a="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(a=`[${o}="%s"]`),t){if("media"===a)return e.defaultColorScheme===t?":root":{[`@media (prefers-color-scheme: ${s[t]?.palette?.mode||t})`]:{":root":n}};if(a)return e.defaultColorScheme===t?`:root, ${a.replace("%s",String(t))}`:a.replace("%s",String(t))}return":root"}const generateStyleSheets=()=>{const t=[],o=e.defaultColorScheme||"light";function insertStyleSheet(e,n){Object.keys(n).length&&t.push("string"==typeof e?{[e]:{...n}}:e)}insertStyleSheet(n(void 0,{...p}),p);const{[o]:l,...c}=h;if(l){const{css:e}=l,t=s[o]?.palette?.mode,i=!a&&t?{colorScheme:t,...e}:{...e};insertStyleSheet(n(o,{...i}),i)}return Object.entries(c).forEach(([e,{css:t}])=>{const o=s[e]?.palette?.mode,i=!a&&o?{colorScheme:o,...t}:{...t};insertStyleSheet(n(e,{...i}),i)}),i&&t.push({":root":{"--__l-threshold":"0.7","--__l":"clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)","--__a":"clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)"}}),t};return{vars:g,generateThemeVars:()=>{let e={...d};return Object.entries(h).forEach(([,{vars:t}])=>{e=deepmerge(e,t)}),e},generateStyleSheets}}function createGetColorSchemeSelector(e){return function getColorSchemeSelector(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}function composeClasses(e,t,n=void 0){const a={};for(const o in e){const i=e[o];let s="",l=!0;for(let e=0;e<i.length;e+=1){const a=i[e];a&&(s+=(!0===l?"":" ")+t(a),l=!1,n&&n[a]&&(s+=" "+n[a]))}a[o]=s}return a}function isMuiElement(e,t){return u.isValidElement(e)&&-1!==t.indexOf(e.type.muiName??e.type?._payload?.value?.muiName)}function getLight(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:qa.white,default:qa.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}var gs=getLight();function getDark(){return{text:{primary:qa.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:qa.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}var hs=getDark();function addLightOrDark(e,t,n,a){const o=a.light||a,i=a.dark||1.5*a;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=lighten(e.main,o):"dark"===t&&(e.dark=darken(e.main,i)))}function mixLightOrDark(e,t,n,a,o){const i=o.light||o,s=o.dark||1.5*o;t[n]||(t.hasOwnProperty(a)?t[n]=t[a]:"light"===n?t.light=`color-mix(in ${e}, ${t.main}, #fff ${(100*i).toFixed(0)}%)`:"dark"===n&&(t.dark=`color-mix(in ${e}, ${t.main}, #000 ${(100*s).toFixed(0)}%)`))}function getDefaultPrimary(e="light"){return"dark"===e?{main:Ha[200],light:Ha[50],dark:Ha[400]}:{main:Ha[700],light:Ha[400],dark:Ha[800]}}function getDefaultSecondary(e="light"){return"dark"===e?{main:Va[200],light:Va[50],dark:Va[400]}:{main:Va[500],light:Va[300],dark:Va[700]}}function getDefaultError(e="light"){return"dark"===e?{main:Ua[500],light:Ua[300],dark:Ua[700]}:{main:Ua[700],light:Ua[400],dark:Ua[800]}}function getDefaultInfo(e="light"){return"dark"===e?{main:Wa[400],light:Wa[300],dark:Wa[700]}:{main:Wa[700],light:Wa[500],dark:Wa[900]}}function getDefaultSuccess(e="light"){return"dark"===e?{main:Ga[400],light:Ga[300],dark:Ga[700]}:{main:Ga[800],light:Ga[500],dark:Ga[900]}}function getDefaultWarning(e="light"){return"dark"===e?{main:Ya[400],light:Ya[300],dark:Ya[700]}:{main:"#ed6c02",light:Ya[500],dark:Ya[900]}}function contrastColor(e){return`oklch(from ${e} var(--__l) 0 h / var(--__a))`}function createPalette(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:a=.2,colorSpace:o,...i}=e,s=e.primary||getDefaultPrimary(t),l=e.secondary||getDefaultSecondary(t),c=e.error||getDefaultError(t),u=e.info||getDefaultInfo(t),d=e.success||getDefaultSuccess(t),p=e.warning||getDefaultWarning(t);function getContrastText(e){return o?contrastColor(e):getContrastRatio(e,hs.text.primary)>=n?hs.text.primary:gs.text.primary}const augmentColor=({color:e,name:t,mainShade:n=500,lightShade:i=300,darkShade:s=700})=>{if(!(e={...e}).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error(formatMuiErrorMessage(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error(formatMuiErrorMessage(12,t?` (${t})`:"",JSON.stringify(e.main)));return o?(mixLightOrDark(o,e,"light",i,a),mixLightOrDark(o,e,"dark",s,a)):(addLightOrDark(e,"light",i,a),addLightOrDark(e,"dark",s,a)),e.contrastText||(e.contrastText=getContrastText(e.main)),e};let m;return"light"===t?m=getLight():"dark"===t&&(m=getDark()),deepmerge({common:{...qa},mode:t,primary:augmentColor({color:s,name:"primary"}),secondary:augmentColor({color:l,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:augmentColor({color:c,name:"error"}),warning:augmentColor({color:p,name:"warning"}),info:augmentColor({color:u,name:"info"}),success:augmentColor({color:d,name:"success"}),grey:Ka,contrastThreshold:n,getContrastText,augmentColor,tonalOffset:a,...m},i)}function prepareTypographyVars(e){const t={};return Object.entries(e).forEach(e=>{const[n,a]=e;"object"==typeof a&&(t[n]=`${a.fontStyle?`${a.fontStyle} `:""}${a.fontVariant?`${a.fontVariant} `:""}${a.fontWeight?`${a.fontWeight} `:""}${a.fontStretch?`${a.fontStretch} `:""}${a.fontSize||""}${a.lineHeight?`/${a.lineHeight} `:""}${a.fontFamily||""}`)}),t}function createMixins(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}function round$2(e){return Math.round(1e5*e)/1e5}var bs={textTransform:"uppercase"},ys='"Roboto", "Helvetica", "Arial", sans-serif';function createTypography(e,t){const{fontFamily:n=ys,fontSize:a=14,fontWeightLight:o=300,fontWeightRegular:i=400,fontWeightMedium:s=500,fontWeightBold:l=700,htmlFontSize:c=16,allVariants:u,pxToRem:d,...p}="function"==typeof t?t(e):t,m=a/14,g=d||(e=>e/c*m+"rem"),buildVariant=(e,t,a,o,i)=>({fontFamily:n,fontWeight:e,fontSize:g(t),lineHeight:a,...n===ys?{letterSpacing:`${round$2(o/t)}em`}:{},...i,...u});return deepmerge({htmlFontSize:c,pxToRem:g,fontFamily:n,fontSize:a,fontWeightLight:o,fontWeightRegular:i,fontWeightMedium:s,fontWeightBold:l,h1:buildVariant(o,96,1.167,-1.5),h2:buildVariant(o,60,1.2,-.5),h3:buildVariant(i,48,1.167,0),h4:buildVariant(i,34,1.235,.25),h5:buildVariant(i,24,1.334,0),h6:buildVariant(s,20,1.6,.15),subtitle1:buildVariant(i,16,1.75,.15),subtitle2:buildVariant(s,14,1.57,.1),body1:buildVariant(i,16,1.5,.15),body2:buildVariant(i,14,1.43,.15),button:buildVariant(s,14,1.75,.4,bs),caption:buildVariant(i,12,1.66,.4),overline:buildVariant(i,12,2.66,1,bs),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},p,{clone:!1})}var vs=.2,Ss=.14,xs=.12;function createShadow(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${vs})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${Ss})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${xs})`].join(",")}var Cs=["none",createShadow(0,2,1,-1,0,1,1,0,0,1,3,0),createShadow(0,3,1,-2,0,2,2,0,0,1,5,0),createShadow(0,3,3,-2,0,3,4,0,0,1,8,0),createShadow(0,2,4,-1,0,4,5,0,0,1,10,0),createShadow(0,3,5,-1,0,5,8,0,0,1,14,0),createShadow(0,3,5,-1,0,6,10,0,0,1,18,0),createShadow(0,4,5,-2,0,7,10,1,0,2,16,1),createShadow(0,5,5,-3,0,8,10,1,0,3,14,2),createShadow(0,5,6,-3,0,9,12,1,0,3,16,2),createShadow(0,6,6,-3,0,10,14,1,0,4,18,3),createShadow(0,6,7,-4,0,11,15,1,0,4,20,3),createShadow(0,7,8,-4,0,12,17,2,0,5,22,4),createShadow(0,7,8,-4,0,13,19,2,0,5,24,4),createShadow(0,7,9,-4,0,14,21,2,0,5,26,4),createShadow(0,8,9,-5,0,15,22,2,0,6,28,5),createShadow(0,8,10,-5,0,16,24,2,0,6,30,5),createShadow(0,8,11,-5,0,17,26,2,0,6,32,5),createShadow(0,9,11,-5,0,18,28,2,0,7,34,6),createShadow(0,9,12,-6,0,19,29,2,0,7,36,6),createShadow(0,10,13,-6,0,20,31,3,0,8,38,7),createShadow(0,10,13,-6,0,21,33,3,0,8,40,7),createShadow(0,10,14,-6,0,22,35,3,0,8,42,7),createShadow(0,11,14,-7,0,23,36,3,0,9,44,8),createShadow(0,11,15,-7,0,24,38,3,0,9,46,8)],ws={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},ks={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function formatMs(e){return`${Math.round(e)}ms`}function getAutoHeightDuration(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function createTransitions(e){const t={...ws,...e.easing},n={...ks,...e.duration};return{getAutoHeightDuration,create:(e=["all"],a={})=>{const{duration:o=n.standard,easing:i=t.easeInOut,delay:s=0,...l}=a;return(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof o?o:formatMs(o)} ${i} ${"string"==typeof s?s:formatMs(s)}`).join(",")},...e,easing:t,duration:n}}var Es={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function isSerializable(e){return isPlainObject$1(e)||void 0===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||Array.isArray(e)}function stringifyTheme(e={}){const t={...e};function serializeTheme(e){const t=Object.entries(e);for(let n=0;n<t.length;n++){const[a,o]=t[n];!isSerializable(o)||a.startsWith("unstable_")||a.startsWith("internal_")?delete e[a]:isPlainObject$1(o)&&(e[a]={...o},serializeTheme(e[a]))}}return serializeTheme(t),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(t,null,2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`}function coefficientToPercentage(e){return"number"==typeof e?`${(100*e).toFixed(0)}%`:`calc((${e}) * 100%)`}var parseAddition=e=>{if(!Number.isNaN(+e))return+e;const t=e.match(/\d*\.?\d+/g);if(!t)return 0;let n=0;for(let a=0;a<t.length;a+=1)n+=+t[a];return n};function attachColorManipulators(e){Object.assign(e,{alpha(t,n){const a=this||e;return a.colorSpace?`oklch(from ${t} l c h / ${"string"==typeof n?`calc(${n})`:n})`:a.vars?`rgba(${t.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,"var(--$1Channel)")} / ${"string"==typeof n?`calc(${n})`:n})`:alpha(t,parseAddition(n))},lighten(t,n){const a=this||e;return a.colorSpace?`color-mix(in ${a.colorSpace}, ${t}, #fff ${coefficientToPercentage(n)})`:lighten(t,n)},darken(t,n){const a=this||e;return a.colorSpace?`color-mix(in ${a.colorSpace}, ${t}, #000 ${coefficientToPercentage(n)})`:darken(t,n)}})}function createThemeNoVars(e={},...t){const{breakpoints:n,mixins:a={},spacing:o,palette:i={},transitions:s={},typography:l={},shape:c,colorSpace:u,...d}=e;if(e.vars&&void 0===e.generateThemeVars)throw new Error(formatMuiErrorMessage(22));const p=createPalette({...i,colorSpace:u}),m=createTheme$1(e);let g=deepmerge(m,{mixins:createMixins(m.breakpoints,a),palette:p,shadows:Cs.slice(),typography:createTypography(p,l),transitions:createTransitions(s),zIndex:{...Es}});return g=deepmerge(g,d),g=t.reduce((e,t)=>deepmerge(e,t),g),g.unstable_sxConfig={...Yi,...d?.unstable_sxConfig},g.unstable_sx=function sx(e){return Qi({sx:e,theme:this})},g.toRuntimeSource=stringifyTheme,attachColorManipulators(g),g}function getOverlayAlpha(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}var _s=[...Array(25)].map((e,t)=>{if(0===t)return"none";const n=getOverlayAlpha(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function getOpacity(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function getOverlays(e){return"dark"===e?_s:[]}function createColorScheme(e){const{palette:t={mode:"light"},opacity:n,overlays:a,colorSpace:o,...i}=e,s=createPalette({...t,colorSpace:o});return{palette:s,opacity:{...getOpacity(s.mode),...n},overlays:a||getOverlays(s.mode),...i}}function shouldSkipGeneratingVar(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}var excludeVariablesFromRoot=e=>[...[...Array(25)].map((t,n)=>`--${e?`${e}-`:""}overlays-${n}`),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`],createGetSelector_default=e=>(t,n)=>{const a=e.rootSelector||":root",o=e.colorSchemeSelector;let i=o;if("class"===o&&(i=".%s"),"data"===o&&(i="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(i=`[${o}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const o={};return excludeVariablesFromRoot(e.cssVarPrefix).forEach(e=>{o[e]=n[e],delete n[e]}),"media"===i?{[a]:n,"@media (prefers-color-scheme: dark)":{[a]:o}}:i?{[i.replace("%s",t)]:o,[`${a}, ${i.replace("%s",t)}`]:n}:{[a]:{...n,...o}}}if(i&&"media"!==i)return`${a}, ${i.replace("%s",String(t))}`}else if(t){if("media"===i)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[a]:n}};if(i)return i.replace("%s",String(t))}return a};function assignNode(e,t){t.forEach(t=>{e[t]||(e[t]={})})}function setColor(e,t,n){!e[t]&&n&&(e[t]=n)}function toRgb(e){return"string"==typeof e&&e.startsWith("hsl")?hslToRgb(e):e}function setColorChannel(e,t){`${t}Channel`in e||(e[`${t}Channel`]=private_safeColorChannel(toRgb(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().\nTo suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function getSpacingVal(e){return"number"==typeof e?`${e}px`:"string"==typeof e||"function"==typeof e||Array.isArray(e)?e:"8px"}var silent=e=>{try{return e()}catch(t){}},createGetCssVar=(e="mui")=>createGetCssVar$1(e);function attachColorScheme$1(e,t,n,a,o){if(!n)return;n=!0===n?{}:n;const i="dark"===o?"dark":"light";if(!a)return void(t[o]=createColorScheme({...n,palette:{mode:i,...n?.palette},colorSpace:e}));const{palette:s,...l}=createThemeNoVars({...a,palette:{mode:i,...n?.palette},colorSpace:e});return t[o]={...n,palette:s,opacity:{...getOpacity(i),...n?.opacity},overlays:n?.overlays||getOverlays(i)},l}function createThemeWithVars(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:a,disableCssColorScheme:o=!1,cssVarPrefix:i="mui",nativeColor:s=!1,shouldSkipGeneratingVar:l=shouldSkipGeneratingVar,colorSchemeSelector:c=(n.light&&n.dark?"media":void 0),rootSelector:u=":root",...d}=e,p=Object.keys(n)[0],m=a||(n.light&&"light"!==p?"light":p),g=createGetCssVar(i),{[m]:h,light:b,dark:y,...v}=n,S={...v};let x,C=h;if(("dark"===m&&!("dark"in n)||"light"===m&&!("light"in n))&&(C=!0),!C)throw new Error(formatMuiErrorMessage(21,m));s&&(x="oklch");const w=attachColorScheme$1(x,S,C,d,m);b&&!S.light&&attachColorScheme$1(x,S,b,void 0,"light"),y&&!S.dark&&attachColorScheme$1(x,S,y,void 0,"dark");let k={defaultColorScheme:m,...w,cssVarPrefix:i,colorSchemeSelector:c,rootSelector:u,getCssVar:g,colorSchemes:S,font:{...prepareTypographyVars(w.typography),...w.font},spacing:getSpacingVal(d.spacing)};Object.keys(k.colorSchemes).forEach(e=>{const t=k.colorSchemes[e].palette,setCssVarColor=e=>{const n=e.split("-"),a=n[1],o=n[2];return g(e,t[a][o])};function colorMix(e,t,n){if(x){let a;return e===private_safeAlpha&&(a=`transparent ${(100*(1-n)).toFixed(0)}%`),e===private_safeDarken&&(a=`#000 ${(100*n).toFixed(0)}%`),e===private_safeLighten&&(a=`#fff ${(100*n).toFixed(0)}%`),`color-mix(in ${x}, ${t}, ${a})`}return e(t,n)}if("light"===t.mode&&(setColor(t.common,"background","#fff"),setColor(t.common,"onBackground","#000")),"dark"===t.mode&&(setColor(t.common,"background","#000"),setColor(t.common,"onBackground","#fff")),assignNode(t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),"light"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeDarken,s?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeDarken,s?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeDarken,s?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-main")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-main")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.main))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.main))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.main))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.main))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeLighten,s?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeLighten,s?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeLighten,s?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-100")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-400")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-300")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-A100")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-400")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-700")),setColor(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),setColor(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),setColor(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.LinearProgress,"successBg",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.main,.62)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,s?g("palette-text-primary"):t.text.primary,.11):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.11)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Slider,"errorTrack",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.Slider,"infoTrack",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.Slider,"successTrack",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.Slider,"warningTrack",colorMix(private_safeLighten,s?g("palette-warning-main"):t.warning.main,.62));const e=x?colorMix(private_safeDarken,s?g("palette-background-default"):t.background.default,.6825):private_safeEmphasize(t.background.default,.8);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?hs.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-400")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-400")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-common-white")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-100")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeLighten,s?g("palette-warning-main"):t.warning.main,.62)),setColor(t.TableCell,"border",colorMix(private_safeLighten,private_safeAlpha(s?g("palette-divider"):t.divider,1),.88)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,s?g("palette-grey-700"):t.grey[700],.92))}if("dark"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeLighten,s?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeLighten,s?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeLighten,s?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-dark")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-dark")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-dark")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-dark")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.dark))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.dark))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.dark))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.dark))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeDarken,s?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeDarken,s?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeDarken,s?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-900")),setColor(t.AppBar,"darkBg",setCssVarColor("palette-background-paper")),setColor(t.AppBar,"darkColor",setCssVarColor("palette-text-primary")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-600")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-800")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-300")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-300")),setColor(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),setColor(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),setColor(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.5)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.5)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.5)),setColor(t.LinearProgress,"successBg",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.5)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeDarken,s?g("palette-warning-main"):t.warning.main,.5)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,s?g("palette-text-primary"):t.text.primary,.13):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.13)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.5)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.Slider,"errorTrack",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.5)),setColor(t.Slider,"infoTrack",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.5)),setColor(t.Slider,"successTrack",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.5)),setColor(t.Slider,"warningTrack",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.main,.5));const e=x?colorMix(private_safeLighten,s?g("palette-background-default"):t.background.default,.985):private_safeEmphasize(t.background.default,.98);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?gs.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-600")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-600")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-grey-300")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-600")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.55)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.55)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.55)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.55)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.55)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.main,.55)),setColor(t.TableCell,"border",colorMix(private_safeDarken,private_safeAlpha(s?g("palette-divider"):t.divider,1),.68)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,s?g("palette-grey-700"):t.grey[700],.92))}s||(setColorChannel(t.background,"default"),setColorChannel(t.background,"paper"),setColorChannel(t.common,"background"),setColorChannel(t.common,"onBackground"),setColorChannel(t,"divider")),Object.keys(t).forEach(e=>{const n=t[e];"tonalOffset"!==e&&!s&&n&&"object"==typeof n&&(n.main&&setColor(t[e],"mainChannel",private_safeColorChannel(toRgb(n.main))),n.light&&setColor(t[e],"lightChannel",private_safeColorChannel(toRgb(n.light))),n.dark&&setColor(t[e],"darkChannel",private_safeColorChannel(toRgb(n.dark))),n.contrastText&&setColor(t[e],"contrastTextChannel",private_safeColorChannel(toRgb(n.contrastText))),"text"===e&&(setColorChannel(t[e],"primary"),setColorChannel(t[e],"secondary")),"action"===e&&(n.active&&setColorChannel(t[e],"active"),n.selected&&setColorChannel(t[e],"selected")))})}),k=t.reduce((e,t)=>deepmerge(e,t),k);const E={prefix:i,disableCssColorScheme:o,shouldSkipGeneratingVar:l,getSelector:createGetSelector_default(k),enableContrastVars:s},{vars:P,generateThemeVars:T,generateStyleSheets:R}=prepareCssVars(k,E);return k.vars=P,Object.entries(k.colorSchemes[k.defaultColorScheme]).forEach(([e,t])=>{k[e]=t}),k.generateThemeVars=T,k.generateStyleSheets=R,k.generateSpacing=function generateSpacing(){return createSpacing(d.spacing,createUnarySpacing(this))},k.getColorSchemeSelector=createGetColorSchemeSelector(c),k.spacing=k.generateSpacing(),k.shouldSkipGeneratingVar=l,k.unstable_sxConfig={...Yi,...d?.unstable_sxConfig},k.unstable_sx=function sx(e){return Qi({sx:e,theme:this})},k.internal_cache={},k.toRuntimeSource=stringifyTheme,k}function attachColorScheme(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...!0!==n&&n,palette:createPalette({...!0===n?{}:n.palette,mode:t})})}function createTheme(e={},...t){const{palette:n,cssVariables:a=!1,colorSchemes:o=(n?void 0:{light:!0}),defaultColorScheme:i=n?.mode,...s}=e,l=i||"light",c=o?.[l],u={...o,...n?{[l]:{..."boolean"!=typeof c&&c,palette:n}}:void 0};if(!1===a){if(!("colorSchemes"in e))return createThemeNoVars(e,...t);let a=n;"palette"in e||u[l]&&(!0!==u[l]?a=u[l].palette:"dark"===l&&(a={mode:"dark"}));const o=createThemeNoVars({...e,palette:a},...t);return o.defaultColorScheme=l,o.colorSchemes=u,"light"===o.palette.mode&&(o.colorSchemes.light={...!0!==u.light&&u.light,palette:o.palette},attachColorScheme(o,"dark",u.dark)),"dark"===o.palette.mode&&(o.colorSchemes.dark={...!0!==u.dark&&u.dark,palette:o.palette},attachColorScheme(o,"light",u.light)),o}return n||"light"in u||"light"!==l||(u.light=!0),createThemeWithVars({...s,colorSchemes:u,defaultColorScheme:l,..."boolean"!=typeof a&&a},...t)}var Ps=createTheme();function useTheme(){const e=useTheme$2(Ps);return e.$$material||e}function slotShouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}var rootShouldForwardProp=e=>slotShouldForwardProp(e)&&"classes"!==e,Ts=createStyled({themeId:Qa,defaultTheme:Ps,rootShouldForwardProp});function ThemeProviderNoVars({theme:e,...t}){const n="$$material"in e?e[Qa]:void 0;return(0,Fa.jsx)(ThemeProvider$1,{...t,themeId:n?Qa:void 0,theme:n||e})}var As={attribute:"data-mui-color-scheme",colorSchemeStorageKey:"mui-color-scheme",defaultLightColorScheme:"light",defaultDarkColorScheme:"dark",modeStorageKey:"mui-mode"},{CssVarsProvider:Rs,useColorScheme:Ms,getInitColorSchemeScript:Ds}=createCssVarsProvider({themeId:Qa,theme:()=>createTheme({cssVariables:!0}),colorSchemeStorageKey:As.colorSchemeStorageKey,modeStorageKey:As.modeStorageKey,defaultColorScheme:{light:As.defaultLightColorScheme,dark:As.defaultDarkColorScheme},resolveTheme:e=>{const t={...e,typography:createTypography(e.palette,e.typography)};return t.unstable_sx=function sx(e){return Qi({sx:e,theme:this})},t}}),Os=Rs;function ThemeProvider({theme:e,...t}){const n=u.useMemo(()=>{if("function"==typeof e)return e;const t="$$material"in e?e[Qa]:e;return"colorSchemes"in t?null:"vars"in t?e:{...e,vars:null}},[e]);return n?(0,Fa.jsx)(ThemeProviderNoVars,{theme:n,...t}):(0,Fa.jsx)(Os,{theme:e,...t})}var $s=capitalize$1;function createChainedFunction(...e){return e.reduce((e,t)=>null==t?e:function chainedFunction(...n){e.apply(this,n),t.apply(this,n)},()=>{})}function GlobalStyles(e){return(0,Fa.jsx)(GlobalStyles$1,{...e,defaultTheme:Ps,themeId:Qa})}function globalCss(e){return function GlobalStylesWrapper(t){return(0,Fa.jsx)(GlobalStyles,{styles:"function"==typeof e?n=>e({theme:n,...t}):e})}}var Is=unstable_memoTheme;function useDefaultProps(e){return useDefaultProps$1(e)}function getSvgIconUtilityClass(e){return generateUtilityClass("MuiSvgIcon",e)}generateUtilityClasses("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var useUtilityClasses$48=e=>{const{color:t,fontSize:n,classes:a}=e;return composeClasses({root:["root","inherit"!==t&&`color${$s(t)}`,`fontSize${$s(n)}`]},getSvgIconUtilityClass,a)},Ns=Ts("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${$s(n.color)}`],t[`fontSize${$s(n.fontSize)}`]]}})(Is(({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}))),zs=u.forwardRef(function SvgIcon(e,t){const n=useDefaultProps({props:e,name:"MuiSvgIcon"}),{children:a,className:o,color:i="inherit",component:s="svg",fontSize:l="medium",htmlColor:c,inheritViewBox:d=!1,titleAccess:p,viewBox:m="0 0 24 24",...g}=n,h=u.isValidElement(a)&&"svg"===a.type,b={...n,color:i,component:s,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:d,viewBox:m,hasSvgAsChild:h},y={};return d||(y.viewBox=m),(0,Fa.jsxs)(Ns,{as:s,className:clsx(useUtilityClasses$48(b).root,o),focusable:"false",color:c,"aria-hidden":!p||void 0,role:p?"img":void 0,ref:t,...y,...g,...h&&a.props,ownerState:b,children:[h?a.props.children:a,p?(0,Fa.jsx)("title",{children:p}):null]})});function createSvgIcon(e,t){function Component(t,n){return(0,Fa.jsx)(zs,{"data-testid":void 0,ref:n,...t,children:e})}return Component.muiName=zs.muiName,u.memo(u.forwardRef(Component))}function debounce$1(e,t=166){let n;function debounced(...a){const later=()=>{e.apply(this,a)};clearTimeout(n),n=setTimeout(later,t)}return debounced.clear=()=>{clearTimeout(n)},debounced}zs.muiName="SvgIcon";var Ls=debounce$1,js=isMuiElement;function activeElement(e){let t=e.activeElement;for(;null!=t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}var Bs=activeElement;function ownerDocument(e){return e&&e.ownerDocument||document}var Fs=ownerDocument;function ownerWindow(e){return ownerDocument(e).defaultView||window}var qs=ownerWindow;function setRef(e,t){"function"==typeof e?e(t):e&&(e.current=t)}var Us=ts,Vs=useId;function useControlled(e){const{controlled:t,default:n,name:a,state:o="value"}=e,{current:i}=u.useRef(void 0!==t),[s,l]=u.useState(n);return[i?t:s,u.useCallback(e=>{i||l(e)},[])]}var Hs=useControlled;function useEventCallback(e){const t=u.useRef(e);return ts(()=>{t.current=e}),u.useRef((...e)=>(0,t.current)(...e)).current}var Ws=useEventCallback;function useForkRef(...e){const t=u.useRef(void 0),n=u.useCallback(t=>{const n=e.map(e=>{if(null==e)return null;if("function"==typeof e){const n=e,a=n(t);return"function"==typeof a?a:()=>{n(null)}}return e.current=t,()=>{e.current=null}});return()=>{n.forEach(e=>e?.())}},e);return u.useMemo(()=>e.every(e=>null==e)?null:e=>{t.current&&(t.current(),t.current=void 0),null!=e&&(t.current=n(e))},e)}var Gs=useForkRef;function isEventHandler(e,t){const n=e.charCodeAt(2);return"o"===e[0]&&"n"===e[1]&&n>=65&&n<=90&&"function"==typeof t}function mergeSlotProps$1(e,t){if(!e)return t;function extractHandlers(e,t){const n={};return Object.keys(t).forEach(a=>{isEventHandler(a,t[a])&&"function"==typeof e[a]&&(n[a]=(...n)=>{e[a](...n),t[a](...n)})}),n}if("function"==typeof e||"function"==typeof t)return n=>{const a="function"==typeof t?t(n):t,o="function"==typeof e?e({...n,...a}):e,i=clsx(n?.className,a?.className,o?.className),s=extractHandlers(o,a);return{...a,...o,...s,...!!i&&{className:i},...a?.style&&o?.style&&{style:{...a.style,...o.style}},...a?.sx&&o?.sx&&{sx:[...Array.isArray(a.sx)?a.sx:[a.sx],...Array.isArray(o.sx)?o.sx:[o.sx]]}}};const n=t,a=extractHandlers(e,n),o=clsx(n?.className,e?.className);return{...t,...e,...a,...!!o&&{className:o},...n?.style&&e?.style&&{style:{...n.style,...e.style}},...n?.sx&&e?.sx&&{sx:[...Array.isArray(n.sx)?n.sx:[n.sx],...Array.isArray(e.sx)?e.sx:[e.sx]]}}}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(-1!==t.indexOf(a))continue;n[a]=e[a]}return n}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}var Ys={disabled:!1},Ks=t.default.createContext(null),Qs=function forceReflow(e){return e.scrollTop},Zs="unmounted",Xs="exited",Js="entering",el="entered",tl="exiting",rl=function(e){function Transition(t,n){var a,o=e.call(this,t,n)||this,i=n&&!n.isMounting?t.enter:t.appear;return o.appearStatus=null,t.in?i?(a=Xs,o.appearStatus=Js):a=el:a=t.unmountOnExit||t.mountOnEnter?Zs:Xs,o.state={status:a},o.nextCallback=null,o}_inheritsLoose(Transition,e),Transition.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){return e.in&&"unmounted"===t.status?{status:Xs}:null};var a=Transition.prototype;return a.componentDidMount=function componentDidMount(){this.updateStatus(!0,this.appearStatus)},a.componentDidUpdate=function componentDidUpdate(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?"entering"!==n&&"entered"!==n&&(t=Js):"entering"!==n&&"entered"!==n||(t=tl)}this.updateStatus(!1,t)},a.componentWillUnmount=function componentWillUnmount(){this.cancelNextCallback()},a.getTimeouts=function getTimeouts(){var e,t,n=this.props.timeout,a=e=t=n;return null!=n&&"number"!=typeof n&&(a=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:a,enter:e,appear:t}},a.updateStatus=function updateStatus(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),"entering"===t){if(this.props.unmountOnExit||this.props.mountOnEnter){var a=this.props.nodeRef?this.props.nodeRef.current:n.default.findDOMNode(this);a&&Qs(a)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&"exited"===this.state.status&&this.setState({status:Zs})},a.performEnter=function performEnter(e){var t=this,a=this.props.enter,o=this.context?this.context.isMounting:e,i=this.props.nodeRef?[o]:[n.default.findDOMNode(this),o],s=i[0],l=i[1],c=this.getTimeouts(),u=o?c.appear:c.enter;!e&&!a||Ys.disabled?this.safeSetState({status:el},function(){t.props.onEntered(s)}):(this.props.onEnter(s,l),this.safeSetState({status:Js},function(){t.props.onEntering(s,l),t.onTransitionEnd(u,function(){t.safeSetState({status:el},function(){t.props.onEntered(s,l)})})}))},a.performExit=function performExit(){var e=this,t=this.props.exit,a=this.getTimeouts(),o=this.props.nodeRef?void 0:n.default.findDOMNode(this);t&&!Ys.disabled?(this.props.onExit(o),this.safeSetState({status:tl},function(){e.props.onExiting(o),e.onTransitionEnd(a.exit,function(){e.safeSetState({status:Xs},function(){e.props.onExited(o)})})})):this.safeSetState({status:Xs},function(){e.props.onExited(o)})},a.cancelNextCallback=function cancelNextCallback(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},a.safeSetState=function safeSetState(e,t){t=this.setNextCallback(t),this.setState(e,t)},a.setNextCallback=function setNextCallback(e){var t=this,n=!0;return this.nextCallback=function(a){n&&(n=!1,t.nextCallback=null,e(a))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},a.onTransitionEnd=function onTransitionEnd(e,t){this.setNextCallback(t);var a=this.props.nodeRef?this.props.nodeRef.current:n.default.findDOMNode(this),o=null==e&&!this.props.addEndListener;if(a&&!o){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[a,this.nextCallback],s=i[0],l=i[1];this.props.addEndListener(s,l)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},a.render=function render(){var e=this.state.status;if("unmounted"===e)return null;var n=this.props,a=n.children;n.in,n.mountOnEnter,n.unmountOnExit,n.appear,n.enter,n.exit,n.timeout,n.addEndListener,n.onEnter,n.onEntering,n.onEntered,n.onExit,n.onExiting,n.onExited,n.nodeRef;var o=_objectWithoutPropertiesLoose(n,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return t.default.createElement(Ks.Provider,{value:null},"function"==typeof a?a(e,o):t.default.cloneElement(t.default.Children.only(a),o))},Transition}(t.default.Component);function noop$2(){}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function getChildMapping(e,n){var a=function mapper(e){return n&&(0,t.isValidElement)(e)?n(e):e},o=Object.create(null);return e&&t.Children.map(e,function(e){return e}).forEach(function(e){o[e.key]=a(e)}),o}function mergeChildMappings(e,t){function getValueForKey(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var n,a=Object.create(null),o=[];for(var i in e)i in t?o.length&&(a[i]=o,o=[]):o.push(i);var s={};for(var l in t){if(a[l])for(n=0;n<a[l].length;n++){var c=a[l][n];s[a[l][n]]=getValueForKey(c)}s[l]=getValueForKey(l)}for(n=0;n<o.length;n++)s[o[n]]=getValueForKey(o[n]);return s}function getProp(e,t,n){return null!=n[t]?n[t]:e.props[t]}function getInitialChildMapping(e,n){return getChildMapping(e.children,function(a){return(0,t.cloneElement)(a,{onExited:n.bind(null,a),in:!0,appear:getProp(a,"appear",e),enter:getProp(a,"enter",e),exit:getProp(a,"exit",e)})})}function getNextChildMapping(e,n,a){var o=getChildMapping(e.children),i=mergeChildMappings(n,o);return Object.keys(i).forEach(function(s){var l=i[s];if((0,t.isValidElement)(l)){var c=s in n,u=s in o,d=n[s],p=(0,t.isValidElement)(d)&&!d.props.in;!u||c&&!p?u||!c||p?u&&c&&(0,t.isValidElement)(d)&&(i[s]=(0,t.cloneElement)(l,{onExited:a.bind(null,l),in:d.props.in,exit:getProp(l,"exit",e),enter:getProp(l,"enter",e)})):i[s]=(0,t.cloneElement)(l,{in:!1}):i[s]=(0,t.cloneElement)(l,{onExited:a.bind(null,l),in:!0,exit:getProp(l,"exit",e),enter:getProp(l,"enter",e)})}}),i}rl.contextType=Ks,rl.propTypes={},rl.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:noop$2,onEntering:noop$2,onEntered:noop$2,onExit:noop$2,onExiting:noop$2,onExited:noop$2},rl.UNMOUNTED=Zs,rl.EXITED=Xs,rl.ENTERING=Js,rl.ENTERED=el,rl.EXITING=tl;var nl=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},al={component:"div",childFactory:function childFactory(e){return e}},ol=function(e){function TransitionGroup(t,n){var a=e.call(this,t,n)||this;return a.state={contextValue:{isMounting:!0},handleExited:a.handleExited.bind(_assertThisInitialized(a)),firstRender:!0},a}_inheritsLoose(TransitionGroup,e);var n=TransitionGroup.prototype;return n.componentDidMount=function componentDidMount(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},n.componentWillUnmount=function componentWillUnmount(){this.mounted=!1},TransitionGroup.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){var n=t.children,a=t.handleExited;return{children:t.firstRender?getInitialChildMapping(e,a):getNextChildMapping(e,n,a),firstRender:!1}},n.handleExited=function handleExited(e,t){var n=getChildMapping(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState(function(t){var n=_extends({},t.children);return delete n[e.key],{children:n}}))},n.render=function render(){var e=this.props,n=e.component,a=e.childFactory,o=_objectWithoutPropertiesLoose(e,["component","childFactory"]),i=this.state.contextValue,s=nl(this.state.children).map(a);return delete o.appear,delete o.enter,delete o.exit,null===n?t.default.createElement(Ks.Provider,{value:i},s):t.default.createElement(Ks.Provider,{value:i},t.default.createElement(n,o,s))},TransitionGroup}(t.default.Component);ol.propTypes={},ol.defaultProps=al;var il={};function useLazyRef(e,t){const n=u.useRef(il);return n.current===il&&(n.current=e(t)),n}var sl=[];function useOnMount(e){u.useEffect(e,sl)}var ll=class Timeout{static create(){return new Timeout}currentId=null;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)};disposeEffect=()=>this.clear};function useTimeout(){const e=useLazyRef(ll.create).current;return useOnMount(e.disposeEffect),e}var reflow=e=>e.scrollTop;function normalizedTransitionCallback(e,t){return n=>{if(t){const a=e.current;void 0===n?t(a):t(a,n)}}}function getTransitionChildStyle(e,t,n,a,o,i){const s="exited"!==e||t?n[e]||n.exited:a;return o||i?{...s,...o,...i}:s}function getTransitionProps(e,t){const{timeout:n,easing:a,style:o={}}=e;return{duration:o.transitionDuration??("number"==typeof n?n:n[t.mode]||0),easing:o.transitionTimingFunction??("object"==typeof a?a[t.mode]:a),delay:o.transitionDelay}}function isHostComponent(e){return"string"==typeof e}function appendOwnerState(e,t,n){return void 0===e||isHostComponent(e)?t:{...t,ownerState:{...t.ownerState,...n}}}function resolveComponentProps(e,t,n){return"function"==typeof e?e(t,n):e}function extractEventHandlers(e){if(void 0===e)return{};const t={};for(const n of Object.keys(e))isEventHandler(n,e[n])&&(t[n]=e[n]);return t}function omitEventHandlers(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t}function mergeSlotProps(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:a,externalForwardedProps:o,className:i}=e;if(!t){const e=clsx(n?.className,i,o?.className,a?.className),t={...n?.style,...o?.style,...a?.style},s={...n,...o,...a};return e.length>0&&(s.className=e),Object.keys(t).length>0&&(s.style=t),{props:s,internalRef:void 0}}const s=extractEventHandlers({...o,...a}),l=omitEventHandlers(a),c=omitEventHandlers(o),u=t(s),d=clsx(u?.className,n?.className,i,o?.className,a?.className),p={...u?.style,...n?.style,...o?.style,...a?.style},m={...u,...n,...c,...l};return d.length>0&&(m.className=d),Object.keys(p).length>0&&(m.style=p),{props:m,internalRef:u.ref}}function useSlot(e,t){const{className:n,elementType:a,ownerState:o,externalForwardedProps:i,internalForwardedProps:s,shouldForwardComponentProp:l=!1,...c}=t,{component:u,slots:d={[e]:void 0},slotProps:p={[e]:void 0},...m}=i,g=d[e]||a,h=resolveComponentProps(p[e],o),{props:{component:b,...y},internalRef:v}=mergeSlotProps({className:n,...c,externalForwardedProps:"root"===e?m:void 0,externalSlotProps:h}),S=useForkRef(v,h?.ref,t.ref),x="root"===e?b||u:b;return[g,appendOwnerState(g,{..."root"===e&&!u&&!d[e]&&s,..."root"!==e&&!d[e]&&s,...y,...x&&!l&&{as:x},...x&&l&&{component:x},ref:S},o)]}function getPaperUtilityClass(e){return generateUtilityClass("MuiPaper",e)}generateUtilityClasses("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var useUtilityClasses$47=e=>{const{square:t,elevation:n,variant:a,classes:o}=e;return composeClasses({root:["root",a,!t&&"rounded","elevation"===a&&`elevation${n}`]},getPaperUtilityClass,o)},cl=Ts("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t[`elevation${n.elevation}`]]}})(Is(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:e.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(e.vars||e).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),ul=u.forwardRef(function Paper(e,t){const n=useDefaultProps({props:e,name:"MuiPaper"}),a=useTheme(),{className:o,component:i="div",elevation:s=1,square:l=!1,variant:c="elevation",...u}=n,d={...n,component:i,elevation:s,square:l,variant:c};return(0,Fa.jsx)(cl,{as:i,ownerState:d,className:clsx(useUtilityClasses$47(d).root,o),ref:t,...u,style:{..."elevation"===c&&{"--Paper-shadow":(a.vars||a).shadows[s],...a.vars&&{"--Paper-overlay":a.vars.overlays?.[s]},...!a.vars&&"dark"===a.palette.mode&&{"--Paper-overlay":`linear-gradient(${alpha("#fff",getOverlayAlpha(s))}, ${alpha("#fff",getOverlayAlpha(s))})`}},...u.style}})});function isFocusVisible(e){try{return e.matches(":focus-visible")}catch(t){}return!1}function useFocusableWhenDisabled(e){const{focusableWhenDisabled:t,disabled:n,composite:a=!1,tabIndex:o=0,isNativeButton:i}=e,s=a&&!1!==t,l=a&&!1===t;return u.useMemo(()=>{const e={onKeyDown(e){n&&t&&"Tab"!==e.key&&e.preventDefault()}};return a||(e.tabIndex=o,!i&&n&&(e.tabIndex=t?o:-1)),(i&&(t||s)||!i&&n)&&(e["aria-disabled"]=n),!i||t&&!l||(e.disabled=n),e},[a,n,t,s,l,i,o])}var dl={};function useButtonBase(e){const{nativeButton:t,nativeButtonProp:n,internalNativeButton:a=t,allowInferredHostMismatch:o=!1,disabled:i,type:s,hasFormAction:l=!1,tabIndex:c=0,focusableWhenDisabled:d,stopEventPropagation:p=!1,onBeforeKeyDown:m,onBeforeKeyUp:g}=e,h=u.useRef(null),b=!0===d,y=useFocusableWhenDisabled({focusableWhenDisabled:b,disabled:i,isNativeButton:t,tabIndex:c}),v=u.useCallback(()=>{const e=h.current;return null==e?t:"BUTTON"===e.tagName||Boolean("A"===e.tagName&&e.href)},[t]),S=u.useMemo(()=>{const e=b?{}:{tabIndex:i?-1:c};return t?(e.type=void 0!==s||l?s:"button",b||(e.disabled=i)):(e.role="button",!b&&i&&(e["aria-disabled"]=i)),b?{...e,...y}:e},[i,b,y,l,t,c,s]);return{getButtonProps:u.useCallback((e=dl)=>{const{onClick:t,onKeyDown:n,onKeyUp:a,...o}=e,handleClick=e=>{p&&e.stopPropagation(),i?e.preventDefault():t?.(e)},handleKeyDown=e=>{b&&y.onKeyDown(e),i||(m?.(e),n?.(e),e.target!==e.currentTarget||v()||(" "!==e.key?"Enter"===e.key&&(e.preventDefault(),e.currentTarget.click()):e.preventDefault()))},handleKeyUp=e=>{i||(g?.(e),a?.(e),e.target!==e.currentTarget||v()||" "!==e.key||e.defaultPrevented||e.currentTarget.click())};return{...S,...o,onClick:handleClick,onKeyDown:handleKeyDown,onKeyUp:handleKeyUp}},[S,i,b,y,v,m,g,p]),rootRef:h}}var pl=class LazyRipple{static create(){return new LazyRipple}static use(){const e=useLazyRef(LazyRipple.create).current,[t,n]=u.useState(!1);return e.shouldMount=t,e.setShouldMount=n,u.useEffect(e.mountEffect,[t]),e}constructor(){this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}mount(){return this.mounted||(this.mounted=createControlledPromise(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}mountEffect=()=>{this.shouldMount&&!this.didMount&&null!==this.ref.current&&(this.didMount=!0,this.mounted.resolve())};start(...e){this.mount().then(()=>this.ref.current?.start(...e))}stop(...e){this.mount().then(()=>this.ref.current?.stop(...e))}pulsate(...e){this.mount().then(()=>this.ref.current?.pulsate(...e))}};function useLazyRipple(){return pl.use()}function createControlledPromise(){let e,t;const n=new Promise((n,a)=>{e=n,t=a});return n.resolve=e,n.reject=t,n}function Ripple(e){const{className:t,classes:n,pulsate:a=!1,rippleX:o,rippleY:i,rippleSize:s,in:l,onExited:c,timeout:d}=e,[p,m]=u.useState(!1),g=clsx(t,n.ripple,n.rippleVisible,a&&n.ripplePulsate),h={width:s,height:s,top:-s/2+i,left:-s/2+o},b=clsx(n.child,p&&n.childLeaving,a&&n.childPulsate);return l||p||m(!0),u.useEffect(()=>{if(!l&&null!=c){const e=setTimeout(c,d);return()=>{clearTimeout(e)}}},[c,l,d]),(0,Fa.jsx)("span",{className:g,style:h,children:(0,Fa.jsx)("span",{className:b})})}var ml=generateUtilityClasses("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),fl=550,gl=keyframes`
2
- 0% {
3
- transform: scale(0);
4
- opacity: 0.1;
5
- }
6
-
7
- 100% {
8
- transform: scale(1);
9
- opacity: 0.3;
10
- }
11
- `,hl=keyframes`
12
- 0% {
13
- opacity: 1;
14
- }
15
-
16
- 100% {
17
- opacity: 0;
18
- }
19
- `,bl=keyframes`
20
- 0% {
21
- transform: scale(1);
22
- }
23
-
24
- 50% {
25
- transform: scale(0.92);
26
- }
27
-
28
- 100% {
29
- transform: scale(1);
30
- }
31
- `,yl=Ts("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),vl=Ts(Ripple,{name:"MuiTouchRipple",slot:"Ripple"})`
32
- opacity: 0;
33
- position: absolute;
34
-
35
- &.${ml.rippleVisible} {
36
- opacity: 0.3;
37
- transform: scale(1);
38
- animation-name: ${gl};
39
- animation-duration: ${fl}ms;
40
- animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
41
- }
42
-
43
- &.${ml.ripplePulsate} {
44
- animation-duration: ${({theme:e})=>e.transitions.duration.shorter}ms;
45
- }
46
-
47
- & .${ml.child} {
48
- opacity: 1;
49
- display: block;
50
- width: 100%;
51
- height: 100%;
52
- border-radius: 50%;
53
- background-color: currentColor;
54
- }
55
-
56
- & .${ml.childLeaving} {
57
- opacity: 0;
58
- animation-name: ${hl};
59
- animation-duration: ${fl}ms;
60
- animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
61
- }
62
-
63
- & .${ml.childPulsate} {
64
- position: absolute;
65
- /* @noflip */
66
- left: 0px;
67
- top: 0;
68
- animation-name: ${bl};
69
- animation-duration: 2500ms;
70
- animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
71
- animation-iteration-count: infinite;
72
- animation-delay: 200ms;
73
- }
74
- `,Sl=u.forwardRef(function TouchRipple(e,t){const{center:n=!1,classes:a={},className:o,...i}=useDefaultProps({props:e,name:"MuiTouchRipple"}),[s,l]=u.useState([]),c=u.useRef(0),d=u.useRef(null);u.useEffect(()=>{d.current&&(d.current(),d.current=null)},[s]);const p=u.useRef(!1),m=useTimeout(),g=u.useRef(null),h=u.useRef(null),b=u.useCallback(e=>{const{pulsate:t,rippleX:n,rippleY:o,rippleSize:i,cb:s}=e;l(e=>[...e,(0,Fa.jsx)(vl,{classes:{ripple:clsx(a.ripple,ml.ripple),rippleVisible:clsx(a.rippleVisible,ml.rippleVisible),ripplePulsate:clsx(a.ripplePulsate,ml.ripplePulsate),child:clsx(a.child,ml.child),childLeaving:clsx(a.childLeaving,ml.childLeaving),childPulsate:clsx(a.childPulsate,ml.childPulsate)},timeout:fl,pulsate:t,rippleX:n,rippleY:o,rippleSize:i},c.current)]),c.current+=1,d.current=s},[a]),y=u.useCallback((e={},t={},a=()=>{})=>{const{pulsate:o=!1,center:i=n||t.pulsate,fakeElement:s=!1}=t;if("mousedown"===e?.type&&p.current)return void(p.current=!1);"touchstart"===e?.type&&(p.current=!0);const l=s?null:h.current,c=l?l.getBoundingClientRect():{width:0,height:0,left:0,top:0};let u,d,y;if(i||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)u=Math.round(c.width/2),d=Math.round(c.height/2);else{const{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;u=Math.round(t-c.left),d=Math.round(n-c.top)}if(i)y=Math.sqrt((2*c.width**2+c.height**2)/3),y%2==0&&(y+=1);else{const e=2*Math.max(Math.abs((l?l.clientWidth:0)-u),u)+2,t=2*Math.max(Math.abs((l?l.clientHeight:0)-d),d)+2;y=Math.sqrt(e**2+t**2)}e?.touches?null===g.current&&(g.current=()=>{b({pulsate:o,rippleX:u,rippleY:d,rippleSize:y,cb:a})},m.start(80,()=>{g.current&&(g.current(),g.current=null)})):b({pulsate:o,rippleX:u,rippleY:d,rippleSize:y,cb:a})},[n,b,m]),v=u.useCallback(()=>{y({},{pulsate:!0})},[y]),S=u.useCallback((e,t)=>{if(m.clear(),"touchend"===e?.type&&g.current)return g.current(),g.current=null,void m.start(0,()=>{S(e,t)});g.current=null,l(e=>e.length>0?e.slice(1):e),d.current=t},[m]);return u.useImperativeHandle(t,()=>({pulsate:v,start:y,stop:S}),[v,y,S]),(0,Fa.jsx)(yl,{className:clsx(ml.root,a.root,o),ref:h,...i,children:(0,Fa.jsx)(ol,{component:null,exit:!0,children:s})})});function getButtonBaseUtilityClass(e){return generateUtilityClass("MuiButtonBase",e)}var xl=generateUtilityClasses("MuiButtonBase",["root","disabled","focusVisible"]),useUtilityClasses$46=e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:a,suppressFocusVisible:o,classes:i}=e,s=composeClasses({root:["root",t&&"disabled",n&&!o&&"focusVisible"]},getButtonBaseUtilityClass,i);return n&&!o&&a&&(s.root+=` ${a}`),s},Cl=Ts("button",{name:"MuiButtonBase",slot:"Root"})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${xl.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),wl=u.forwardRef(function ButtonBase(e,t){const n=useDefaultProps({props:e,name:"MuiButtonBase"}),{action:a,centerRipple:o=!1,children:i,className:s,component:l="button",disabled:c=!1,disableRipple:d=!1,disableTouchRipple:p=!1,focusRipple:m=!1,focusVisibleClassName:g,focusableWhenDisabled:h,suppressFocusVisible:b=!1,internalNativeButton:y,LinkComponent:v="a",nativeButton:S,onBlur:x,onClick:C,onContextMenu:w,onDragLeave:k,onFocus:E,onFocusVisible:P,onKeyDown:T,onKeyUp:R,onMouseDown:M,onMouseLeave:D,onMouseUp:O,onTouchEnd:$,onTouchMove:I,onTouchStart:N,tabIndex:L=0,TouchRippleProps:j,touchRippleRef:B,type:F,...q}=n,U=Boolean(q.href||q.to),V=Boolean(q.formAction);let H=l;"button"===H&&U&&(H=v);const W="string"==typeof H?"button"===H:y??!1,G=S??W,Y=useLazyRipple(),K=Gs(Y.ref,B),[Q,Z]=u.useState(!1);(c||b)&&Q&&Z(!1);const X=Ws(e=>{m&&!e.repeat&&Q&&" "===e.key&&Y.stop(e,()=>{Y.start(e)})}),J=Ws(e=>{m&&" "===e.key&&Q&&!e.defaultPrevented&&Y.stop(e,()=>{Y.pulsate(e)})}),{getButtonProps:ee,rootRef:te}=useButtonBase({nativeButton:G,nativeButtonProp:S,internalNativeButton:W,allowInferredHostMismatch:U||"string"==typeof H,disabled:c,type:F,hasFormAction:V,tabIndex:L,onBeforeKeyDown:X,onBeforeKeyUp:J}),{onClick:re,onKeyDown:ne,onKeyUp:ae,...oe}=ee({onClick:C,onKeyDown:T,onKeyUp:R});u.useImperativeHandle(a,()=>({focusVisible:()=>{Z(!0),te.current.focus()}}),[te]);const ie=Y.shouldMount&&!d&&!c;u.useEffect(()=>{Q&&m&&!d&&Y.pulsate()},[d,m,Q,Y]);const se=useRippleHandler(Y,"start",M,p),le=useRippleHandler(Y,"stop",w,p),ce=useRippleHandler(Y,"stop",k,p),ue=useRippleHandler(Y,"stop",O,p),de=useRippleHandler(Y,"stop",e=>{Q&&e.preventDefault(),D&&D(e)},p),pe=useRippleHandler(Y,"start",N,p),me=useRippleHandler(Y,"stop",$,p),fe=useRippleHandler(Y,"stop",I,p),ge=useRippleHandler(Y,"stop",e=>{isFocusVisible(e.target)||Z(!1),x&&x(e)},!1),he=Ws(e=>{te.current||(te.current=e.currentTarget),!b&&isFocusVisible(e.target)&&(Z(!0),P&&P(e)),E&&E(e)}),be={};U&&(be.tabIndex=c?-1:L,c&&(be["aria-disabled"]=c),be.type=F);const ye=Gs(t,te),ve={...n,centerRipple:o,component:l,disabled:c,disableRipple:d,disableTouchRipple:p,focusRipple:m,suppressFocusVisible:b,tabIndex:L,focusVisible:Q},Se=useUtilityClasses$46(ve);return(0,Fa.jsxs)(Cl,{as:H,className:clsx(Se.root,s),ownerState:ve,onBlur:ge,onClick:re,onContextMenu:le,onFocus:he,onKeyDown:ne,onKeyUp:ae,onMouseDown:se,onMouseLeave:de,onMouseUp:ue,onDragLeave:ce,onTouchEnd:me,onTouchMove:fe,onTouchStart:pe,ref:ye,...U?be:oe,...q,children:[i,ie?(0,Fa.jsx)(Sl,{ref:K,center:o,...j}):null]})});function useRippleHandler(e,t,n,a=!1){return Ws(o=>(n&&n(o),a||e[t](o),!0))}function hasCorrectMainProperty(e){return"string"==typeof e.main}function checkSimplePaletteColorValues(e,t=[]){if(!hasCorrectMainProperty(e))return!1;for(const n of t)if(!e.hasOwnProperty(n)||"string"!=typeof e[n])return!1;return!0}function createSimplePaletteValueFilter(e=[]){return([,t])=>t&&checkSimplePaletteColorValues(t,e)}function getCircularProgressUtilityClass(e){return generateUtilityClass("MuiCircularProgress",e)}generateUtilityClasses("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","track","circle","circleDisableShrink"]);var kl=44,El=keyframes`
75
- 0% {
76
- transform: rotate(0deg);
77
- }
78
-
79
- 100% {
80
- transform: rotate(360deg);
81
- }
82
- `,_l=keyframes`
83
- 0% {
84
- stroke-dasharray: 1px, 200px;
85
- stroke-dashoffset: 0;
86
- }
87
-
88
- 50% {
89
- stroke-dasharray: 100px, 200px;
90
- stroke-dashoffset: -15px;
91
- }
92
-
93
- 100% {
94
- stroke-dasharray: 1px, 200px;
95
- stroke-dashoffset: -126px;
96
- }
97
- `,Pl="string"!=typeof El?css`
98
- animation: ${El} 1.4s linear infinite;
99
- `:null,Tl="string"!=typeof _l?css`
100
- animation: ${_l} 1.4s ease-in-out infinite;
101
- `:null,useUtilityClasses$45=e=>{const{classes:t,variant:n,color:a,disableShrink:o}=e;return composeClasses({root:["root",n,`color${$s(a)}`],svg:["svg"],track:["track"],circle:["circle",o&&"circleDisableShrink"]},getCircularProgressUtilityClass,t)},Al=Ts("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`color${$s(n.color)}`]]}})(Is(({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:Pl||{animation:`${El} 1.4s linear infinite`}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))]}))),Rl=Ts("svg",{name:"MuiCircularProgress",slot:"Svg"})({display:"block"}),Ml=Ts("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.circle,n.disableShrink&&t.circleDisableShrink]}})(Is(({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:Tl||{animation:`${_l} 1.4s ease-in-out infinite`}}]}))),Dl=Ts("circle",{name:"MuiCircularProgress",slot:"Track"})(Is(({theme:e})=>({stroke:"currentColor",opacity:(e.vars||e).palette.action.activatedOpacity}))),Ol=u.forwardRef(function CircularProgress(e,t){const n=useDefaultProps({props:e,name:"MuiCircularProgress"}),{className:a,color:o="primary",disableShrink:i=!1,enableTrackSlot:s=!1,min:l,max:c,size:u=40,style:d,thickness:p=3.6,value:m=n.min??0,variant:g="indeterminate",...h}=n,b=l??0,y=c??100,v={...n,color:o,disableShrink:i,size:u,thickness:p,value:m,variant:g,enableTrackSlot:s},S=useUtilityClasses$45(v),x={},C={},w={};if("determinate"===g){const e=2*Math.PI*((kl-p)/2),t=y-b;x.strokeDasharray=e.toFixed(3),x.strokeDashoffset=t>0?`${((y-m)/t*e).toFixed(3)}px`:`${e.toFixed(3)}px`,C.transform="rotate(-90deg)",w["aria-valuenow"]=m,w["aria-valuemin"]=b,w["aria-valuemax"]=y}return(0,Fa.jsx)(Al,{className:clsx(S.root,a),style:{width:u,height:u,...C,...d},ownerState:v,ref:t,role:"progressbar",...w,...h,children:(0,Fa.jsxs)(Rl,{className:S.svg,ownerState:v,viewBox:`${kl/2} ${kl/2} ${kl} ${kl}`,children:[s?(0,Fa.jsx)(Dl,{className:S.track,ownerState:v,cx:kl,cy:kl,r:(kl-p)/2,fill:"none",strokeWidth:p,"aria-hidden":"true"}):null,(0,Fa.jsx)(Ml,{className:S.circle,style:x,ownerState:v,cx:kl,cy:kl,r:(kl-p)/2,fill:"none",strokeWidth:p})]})})});function getTypographyUtilityClass(e){return generateUtilityClass("MuiTypography",e)}generateUtilityClasses("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom"]);var useUtilityClasses$44=e=>{const{align:t,gutterBottom:n,noWrap:a,variant:o,classes:i}=e;return composeClasses({root:["root",o,"inherit"!==e.align&&`align${$s(t)}`,n&&"gutterBottom",a&&"noWrap"]},getTypographyUtilityClass,i)},$l=Ts("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t[`align${$s(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom]}})(Is(({theme:e})=>({margin:0,variants:[{props:{variant:"inherit"},style:{font:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},...Object.entries(e.typography).filter(([e,t])=>"inherit"!==e&&t&&"object"==typeof t).map(([e,t])=>({props:{variant:e},style:t})),...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette?.text||{}).filter(([,e])=>"string"==typeof e).map(([t])=>({props:{color:`text${$s(t)}`},style:{color:(e.vars||e).palette.text[t]}})),{props:({ownerState:e})=>"inherit"!==e.align,style:{textAlign:"var(--Typography-textAlign)"}},{props:({ownerState:e})=>e.noWrap,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},{props:({ownerState:e})=>e.gutterBottom,style:{marginBottom:"0.35em"}}]}))),Il={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},Nl=u.forwardRef(function Typography(e,t){const n=useDefaultProps({props:e,name:"MuiTypography"}),{color:a,align:o="inherit",className:i,component:s,gutterBottom:l=!1,noWrap:c=!1,variant:u="body1",variantMapping:d=Il,...p}=n,m={...n,align:o,color:a,className:i,component:s,gutterBottom:l,noWrap:c,variant:u,variantMapping:d};return(0,Fa.jsx)($l,{as:s||d[u]||Il[u]||"span",ref:t,className:clsx(useUtilityClasses$44(m).root,i),...p,ownerState:m,style:{..."inherit"!==o&&{"--Typography-textAlign":o},...p.style}})});function contains$1(e,t){if(!e||!t)return!1;if(e.contains(t))return!0;const n=t.getRootNode?.();if(n&&n instanceof ShadowRoot){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode??n.host??null}}return!1}var zl="bottom",Ll="right",jl="left",Bl="auto",Fl=["top",zl,Ll,jl],ql="start",Ul="clippingParents",Vl="viewport",Hl="popper",Wl="reference",Gl=Fl.reduce(function(e,t){return e.concat([t+"-"+ql,t+"-end"])},[]),Yl=[].concat(Fl,[Bl]).reduce(function(e,t){return e.concat([t,t+"-"+ql,t+"-end"])},[]),Kl=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function getNodeName(e){return e?(e.nodeName||"").toLowerCase():null}function getWindow$1(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function isElement(e){return e instanceof getWindow$1(e).Element||e instanceof Element}function isHTMLElement$2(e){return e instanceof getWindow$1(e).HTMLElement||e instanceof HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof getWindow$1(e).ShadowRoot||e instanceof ShadowRoot)}function applyStyles(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},a=t.attributes[e]||{},o=t.elements[e];isHTMLElement$2(o)&&getNodeName(o)&&(Object.assign(o.style,n),Object.keys(a).forEach(function(e){var t=a[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})}function effect$2(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var a=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});isHTMLElement$2(a)&&getNodeName(a)&&(Object.assign(a.style,i),Object.keys(o).forEach(function(e){a.removeAttribute(e)}))})}}var Ql={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(e){return e.split("-")[0]}var Zl=Math.max,Xl=Math.min,Jl=Math.round;function getUAString(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var a=e.getBoundingClientRect(),o=1,i=1;t&&isHTMLElement$2(e)&&(o=e.offsetWidth>0&&Jl(a.width)/e.offsetWidth||1,i=e.offsetHeight>0&&Jl(a.height)/e.offsetHeight||1);var s=(isElement(e)?getWindow$1(e):window).visualViewport,l=!isLayoutViewport()&&n,c=(a.left+(l&&s?s.offsetLeft:0))/o,u=(a.top+(l&&s?s.offsetTop:0))/i,d=a.width/o,p=a.height/i;return{width:d,height:p,top:u,right:c+d,bottom:u+p,left:c,x:c,y:u}}function getLayoutRect(e){var t=getBoundingClientRect(e),n=e.offsetWidth,a=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-a)<=1&&(a=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:a}}function contains(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&isShadowRoot(n)){var a=t;do{if(a&&e.isSameNode(a))return!0;a=a.parentNode||a.host}while(a)}return!1}function getComputedStyle(e){return getWindow$1(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement$2(e)&&"fixed"!==getComputedStyle(e).position?e.offsetParent:null}function getContainingBlock(e){var t=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement$2(e)&&"fixed"===getComputedStyle(e).position)return null;var n=getParentNode(e);for(isShadowRoot(n)&&(n=n.host);isHTMLElement$2(n)&&["html","body"].indexOf(getNodeName(n))<0;){var a=getComputedStyle(n);if("none"!==a.transform||"none"!==a.perspective||"paint"===a.contain||-1!==["transform","perspective"].indexOf(a.willChange)||t&&"filter"===a.willChange||t&&a.filter&&"none"!==a.filter)return n;n=n.parentNode}return null}function getOffsetParent(e){for(var t=getWindow$1(e),n=getTrueOffsetParent(e);n&&isTableElement(n)&&"static"===getComputedStyle(n).position;)n=getTrueOffsetParent(n);return n&&("html"===getNodeName(n)||"body"===getNodeName(n)&&"static"===getComputedStyle(n).position)?t:n||getContainingBlock(e)||t}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,t,n){return Zl(e,Xl(t,n))}function withinMaxClamp(e,t,n){var a=within(e,t,n);return a>n?n:a}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var ec=function toPaddingObject(e,t){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:expandToHashMap(e,Fl))};function arrow(e){var t,n=e.state,a=e.name,o=e.options,i=n.elements.arrow,s=n.modifiersData.popperOffsets,l=getBasePlacement(n.placement),c=getMainAxisFromPlacement(l),u=["left","right"].indexOf(l)>=0?"height":"width";if(i&&s){var d=ec(o.padding,n),p=getLayoutRect(i),m="y"===c?"top":jl,g="y"===c?zl:Ll,h=n.rects.reference[u]+n.rects.reference[c]-s[c]-n.rects.popper[u],b=s[c]-n.rects.reference[c],y=getOffsetParent(i),v=y?"y"===c?y.clientHeight||0:y.clientWidth||0:0,S=h/2-b/2,x=d[m],C=v-p[u]-d[g],w=v/2-p[u]/2+S,k=within(x,w,C),E=c;n.modifiersData[a]=((t={})[E]=k,t.centerOffset=k-w,t)}}function effect$1(e){var t=e.state,n=e.options.element,a=void 0===n?"[data-popper-arrow]":n;null!=a&&("string"!=typeof a||(a=t.elements.popper.querySelector(a)))&&contains(t.elements.popper,a)&&(t.elements.arrow=a)}function getVariation(e){return e.split("-")[1]}var tc={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e,t){var n=e.x,a=e.y,o=t.devicePixelRatio||1;return{x:Jl(n*o)/o||0,y:Jl(a*o)/o||0}}function mapToStyles(e){var t,n=e.popper,a=e.popperRect,o=e.placement,i=e.variation,s=e.offsets,l=e.position,c=e.gpuAcceleration,u=e.adaptive,d=e.roundOffsets,p=e.isFixed,m=s.x,g=void 0===m?0:m,h=s.y,b=void 0===h?0:h,y="function"==typeof d?d({x:g,y:b}):{x:g,y:b};g=y.x,b=y.y;var v=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),x=jl,C="top",w=window;if(u){var k=getOffsetParent(n),E="clientHeight",P="clientWidth";if(k===getWindow$1(n)&&"static"!==getComputedStyle(k=getDocumentElement(n)).position&&"absolute"===l&&(E="scrollHeight",P="scrollWidth"),"top"===o||("left"===o||"right"===o)&&"end"===i)C=zl,b-=(p&&k===w&&w.visualViewport?w.visualViewport.height:k[E])-a.height,b*=c?1:-1;if("left"===o||("top"===o||"bottom"===o)&&"end"===i)x=Ll,g-=(p&&k===w&&w.visualViewport?w.visualViewport.width:k[P])-a.width,g*=c?1:-1}var T,R=Object.assign({position:l},u&&tc),M=!0===d?roundOffsetsByDPR({x:g,y:b},getWindow$1(n)):{x:g,y:b};return g=M.x,b=M.y,c?Object.assign({},R,((T={})[C]=S?"0":"",T[x]=v?"0":"",T.transform=(w.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",T)):Object.assign({},R,((t={})[C]=S?b+"px":"",t[x]=v?g+"px":"",t.transform="",t))}function computeStyles(e){var t=e.state,n=e.options,a=n.gpuAcceleration,o=void 0===a||a,i=n.adaptive,s=void 0===i||i,l=n.roundOffsets,c=void 0===l||l,u={placement:getBasePlacement(t.placement),variation:getVariation(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,mapToStyles(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:c})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,mapToStyles(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var rc={passive:!0};function effect(e){var t=e.state,n=e.instance,a=e.options,o=a.scroll,i=void 0===o||o,s=a.resize,l=void 0===s||s,c=getWindow$1(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&u.forEach(function(e){e.addEventListener("scroll",n.update,rc)}),l&&c.addEventListener("resize",n.update,rc),function(){i&&u.forEach(function(e){e.removeEventListener("scroll",n.update,rc)}),l&&c.removeEventListener("resize",n.update,rc)}}var nc={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,function(e){return nc[e]})}var ac={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,function(e){return ac[e]})}function getWindowScroll(e){var t=getWindow$1(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,t){var n=getWindow$1(e),a=getDocumentElement(e),o=n.visualViewport,i=a.clientWidth,s=a.clientHeight,l=0,c=0;if(o){i=o.width,s=o.height;var u=isLayoutViewport();(u||!u&&"fixed"===t)&&(l=o.offsetLeft,c=o.offsetTop)}return{width:i,height:s,x:l+getWindowScrollBarX(e),y:c}}function getDocumentRect(e){var t,n=getDocumentElement(e),a=getWindowScroll(e),o=null==(t=e.ownerDocument)?void 0:t.body,i=Zl(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Zl(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),l=-a.scrollLeft+getWindowScrollBarX(e),c=-a.scrollTop;return"rtl"===getComputedStyle(o||n).direction&&(l+=Zl(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:s,x:l,y:c}}function isScrollParent(e){var t=getComputedStyle(e),n=t.overflow,a=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+a)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement$2(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,t){var n;void 0===t&&(t=[]);var a=getScrollParent(e),o=a===(null==(n=e.ownerDocument)?void 0:n.body),i=getWindow$1(a),s=o?[i].concat(i.visualViewport||[],isScrollParent(a)?a:[]):a,l=t.concat(s);return o?l:l.concat(listScrollParents(getParentNode(s)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,t){var n=getBoundingClientRect(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function getClientRectFromMixedType(e,t,n){return"viewport"===t?rectToClientRect(getViewportRect(e,n)):isElement(t)?getInnerBoundingClientRect(t,n):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var t=listScrollParents(getParentNode(e)),n=["absolute","fixed"].indexOf(getComputedStyle(e).position)>=0&&isHTMLElement$2(e)?getOffsetParent(e):e;return isElement(n)?t.filter(function(e){return isElement(e)&&contains(e,n)&&"body"!==getNodeName(e)}):[]}function getClippingRect(e,t,n,a){var o="clippingParents"===t?getClippingParents(e):[].concat(t),i=[].concat(o,[n]),s=i[0],l=i.reduce(function(t,n){var o=getClientRectFromMixedType(e,n,a);return t.top=Zl(o.top,t.top),t.right=Xl(o.right,t.right),t.bottom=Xl(o.bottom,t.bottom),t.left=Zl(o.left,t.left),t},getClientRectFromMixedType(e,s,a));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function computeOffsets(e){var t,n=e.reference,a=e.element,o=e.placement,i=o?getBasePlacement(o):null,s=o?getVariation(o):null,l=n.x+n.width/2-a.width/2,c=n.y+n.height/2-a.height/2;switch(i){case"top":t={x:l,y:n.y-a.height};break;case zl:t={x:l,y:n.y+n.height};break;case Ll:t={x:n.x+n.width,y:c};break;case jl:t={x:n.x-a.width,y:c};break;default:t={x:n.x,y:n.y}}var u=i?getMainAxisFromPlacement(i):null;if(null!=u){var d="y"===u?"height":"width";switch(s){case ql:t[u]=t[u]-(n[d]/2-a[d]/2);break;case"end":t[u]=t[u]+(n[d]/2-a[d]/2)}}return t}function detectOverflow(e,t){void 0===t&&(t={});var n=t,a=n.placement,o=void 0===a?e.placement:a,i=n.strategy,s=void 0===i?e.strategy:i,l=n.boundary,c=void 0===l?Ul:l,u=n.rootBoundary,d=void 0===u?Vl:u,p=n.elementContext,m=void 0===p?Hl:p,g=n.altBoundary,h=void 0!==g&&g,b=n.padding,y=void 0===b?0:b,v=mergePaddingObject("number"!=typeof y?y:expandToHashMap(y,Fl)),S="popper"===m?Wl:Hl,x=e.rects.popper,C=e.elements[h?S:m],w=getClippingRect(isElement(C)?C:C.contextElement||getDocumentElement(e.elements.popper),c,d,s),k=getBoundingClientRect(e.elements.reference),E=computeOffsets({reference:k,element:x,strategy:"absolute",placement:o}),P=rectToClientRect(Object.assign({},x,E)),T="popper"===m?P:k,R={top:w.top-T.top+v.top,bottom:T.bottom-w.bottom+v.bottom,left:w.left-T.left+v.left,right:T.right-w.right+v.right},M=e.modifiersData.offset;if("popper"===m&&M){var D=M[o];Object.keys(R).forEach(function(e){var t=["right","bottom"].indexOf(e)>=0?1:-1,n=["top","bottom"].indexOf(e)>=0?"y":"x";R[e]+=D[n]*t})}return R}function computeAutoPlacement(e,t){void 0===t&&(t={});var n=t,a=n.placement,o=n.boundary,i=n.rootBoundary,s=n.padding,l=n.flipVariations,c=n.allowedAutoPlacements,u=void 0===c?Yl:c,d=getVariation(a),p=d?l?Gl:Gl.filter(function(e){return getVariation(e)===d}):Fl,m=p.filter(function(e){return u.indexOf(e)>=0});0===m.length&&(m=p);var g=m.reduce(function(t,n){return t[n]=detectOverflow(e,{placement:n,boundary:o,rootBoundary:i,padding:s})[getBasePlacement(n)],t},{});return Object.keys(g).sort(function(e,t){return g[e]-g[t]})}function getExpandedFallbackPlacements(e){if("auto"===getBasePlacement(e))return[];var t=getOppositePlacement(e);return[getOppositeVariationPlacement(e),t,getOppositeVariationPlacement(t)]}function flip(e){var t=e.state,n=e.options,a=e.name;if(!t.modifiersData[a]._skip){for(var o=n.mainAxis,i=void 0===o||o,s=n.altAxis,l=void 0===s||s,c=n.fallbackPlacements,u=n.padding,d=n.boundary,p=n.rootBoundary,m=n.altBoundary,g=n.flipVariations,h=void 0===g||g,b=n.allowedAutoPlacements,y=t.options.placement,v=getBasePlacement(y)===y,S=c||(v||!h?[getOppositePlacement(y)]:getExpandedFallbackPlacements(y)),x=[y].concat(S).reduce(function(e,n){return e.concat("auto"===getBasePlacement(n)?computeAutoPlacement(t,{placement:n,boundary:d,rootBoundary:p,padding:u,flipVariations:h,allowedAutoPlacements:b}):n)},[]),C=t.rects.reference,w=t.rects.popper,k=new Map,E=!0,P=x[0],T=0;T<x.length;T++){var R=x[T],M=getBasePlacement(R),D=getVariation(R)===ql,O=["top",zl].indexOf(M)>=0,$=O?"width":"height",I=detectOverflow(t,{placement:R,boundary:d,rootBoundary:p,altBoundary:m,padding:u}),N=O?D?Ll:jl:D?zl:"top";C[$]>w[$]&&(N=getOppositePlacement(N));var L=getOppositePlacement(N),j=[];if(i&&j.push(I[M]<=0),l&&j.push(I[N]<=0,I[L]<=0),j.every(function(e){return e})){P=R,E=!1;break}k.set(R,j)}if(E)for(var B=function _loop(e){var t=x.find(function(t){var n=k.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return P=t,"break"},F=h?3:1;F>0&&"break"!==B(F);F--);t.placement!==P&&(t.modifiersData[a]._skip=!0,t.placement=P,t.reset=!0)}}function getSideOffsets(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function isAnySideFullyClipped(e){return["top",Ll,zl,jl].some(function(t){return e[t]>=0})}function hide(e){var t=e.state,n=e.name,a=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,s=detectOverflow(t,{elementContext:"reference"}),l=detectOverflow(t,{altBoundary:!0}),c=getSideOffsets(s,a),u=getSideOffsets(l,o,i),d=isAnySideFullyClipped(c),p=isAnySideFullyClipped(u);t.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:u,isReferenceHidden:d,hasPopperEscaped:p},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":p})}function distanceAndSkiddingToXY(e,t,n){var a=getBasePlacement(e),o=["left","top"].indexOf(a)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=i[0],l=i[1];return s=s||0,l=(l||0)*o,["left","right"].indexOf(a)>=0?{x:l,y:s}:{x:s,y:l}}function offset(e){var t=e.state,n=e.options,a=e.name,o=n.offset,i=void 0===o?[0,0]:o,s=Yl.reduce(function(e,n){return e[n]=distanceAndSkiddingToXY(n,t.rects,i),e},{}),l=s[t.placement],c=l.x,u=l.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=u),t.modifiersData[a]=s}function popperOffsets(e){var t=e.state,n=e.name;t.modifiersData[n]=computeOffsets({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var t=e.state,n=e.options,a=e.name,o=n.mainAxis,i=void 0===o||o,s=n.altAxis,l=void 0!==s&&s,c=n.boundary,u=n.rootBoundary,d=n.altBoundary,p=n.padding,m=n.tether,g=void 0===m||m,h=n.tetherOffset,b=void 0===h?0:h,y=detectOverflow(t,{boundary:c,rootBoundary:u,padding:p,altBoundary:d}),v=getBasePlacement(t.placement),S=getVariation(t.placement),x=!S,C=getMainAxisFromPlacement(v),w=getAltAxis(C),k=t.modifiersData.popperOffsets,E=t.rects.reference,P=t.rects.popper,T="function"==typeof b?b(Object.assign({},t.rects,{placement:t.placement})):b,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),M=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,D={x:0,y:0};if(k){if(i){var O,$="y"===C?"top":jl,I="y"===C?zl:Ll,N="y"===C?"height":"width",L=k[C],j=L+y[$],B=L-y[I],F=g?-P[N]/2:0,q="start"===S?E[N]:P[N],U="start"===S?-P[N]:-E[N],V=t.elements.arrow,H=g&&V?getLayoutRect(V):{width:0,height:0},W=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:getFreshSideObject(),G=W[$],Y=W[I],K=within(0,E[N],H[N]),Q=x?E[N]/2-F-K-G-R.mainAxis:q-K-G-R.mainAxis,Z=x?-E[N]/2+F+K+Y+R.mainAxis:U+K+Y+R.mainAxis,X=t.elements.arrow&&getOffsetParent(t.elements.arrow),J=X?"y"===C?X.clientTop||0:X.clientLeft||0:0,ee=null!=(O=null==M?void 0:M[C])?O:0,te=L+Z-ee,re=within(g?Xl(j,L+Q-ee-J):j,L,g?Zl(B,te):B);k[C]=re,D[C]=re-L}if(l){var ne,ae="x"===C?"top":jl,oe="x"===C?zl:Ll,ie=k[w],se="y"===w?"height":"width",le=ie+y[ae],ce=ie-y[oe],ue=-1!==["top",jl].indexOf(v),de=null!=(ne=null==M?void 0:M[w])?ne:0,pe=ue?le:ie-E[se]-P[se]-de+R.altAxis,me=ue?ie+E[se]+P[se]-de-R.altAxis:ce,fe=g&&ue?withinMaxClamp(pe,ie,me):within(g?pe:le,ie,g?me:ce);k[w]=fe,D[w]=fe-ie}t.modifiersData[a]=D}}function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow$1(e)&&isHTMLElement$2(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var t=e.getBoundingClientRect(),n=Jl(t.width)/e.offsetWidth||1,a=Jl(t.height)/e.offsetHeight||1;return 1!==n||1!==a}function getCompositeRect(e,t,n){void 0===n&&(n=!1);var a=isHTMLElement$2(t),o=isHTMLElement$2(t)&&isElementScaled(t),i=getDocumentElement(t),s=getBoundingClientRect(e,o,n),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!n)&&(("body"!==getNodeName(t)||isScrollParent(i))&&(l=getNodeScroll(t)),isHTMLElement$2(t)?((c=getBoundingClientRect(t,!0)).x+=t.clientLeft,c.y+=t.clientTop):i&&(c.x=getWindowScrollBarX(i))),{x:s.left+l.scrollLeft-c.x,y:s.top+l.scrollTop-c.y,width:s.width,height:s.height}}function order(e){var t=new Map,n=new Set,a=[];function sort(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var a=t.get(e);a&&sort(a)}}),a.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||sort(e)}),a}function orderModifiers(e){var t=order(e);return Kl.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}function debounce(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function mergeByName(e){var t=e.reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{});return Object.keys(t).map(function(e){return t[e]})}var oc={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some(function(e){return!(e&&"function"==typeof e.getBoundingClientRect)})}function popperGenerator(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,a=void 0===n?[]:n,o=t.defaultOptions,i=void 0===o?oc:o;return function createPopper(e,t,n){void 0===n&&(n=i);var o={placement:"bottom",orderedModifiers:[],options:Object.assign({},oc,i),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},s=[],l=!1,c={state:o,setOptions:function setOptions(n){var s="function"==typeof n?n(o.options):n;cleanupModifierEffects(),o.options=Object.assign({},i,o.options,s),o.scrollParents={reference:isElement(e)?listScrollParents(e):e.contextElement?listScrollParents(e.contextElement):[],popper:listScrollParents(t)};var l=orderModifiers(mergeByName([].concat(a,o.options.modifiers)));return o.orderedModifiers=l.filter(function(e){return e.enabled}),runModifierEffects(),c.update()},forceUpdate:function forceUpdate(){if(!l){var e=o.elements,t=e.reference,n=e.popper;if(areValidElements(t,n)){o.rects={reference:getCompositeRect(t,getOffsetParent(n),"fixed"===o.options.strategy),popper:getLayoutRect(n)},o.reset=!1,o.placement=o.options.placement,o.orderedModifiers.forEach(function(e){return o.modifiersData[e.name]=Object.assign({},e.data)});for(var a=0;a<o.orderedModifiers.length;a++)if(!0!==o.reset){var i=o.orderedModifiers[a],s=i.fn,u=i.options,d=void 0===u?{}:u,p=i.name;"function"==typeof s&&(o=s({state:o,options:d,name:p,instance:c})||o)}else o.reset=!1,a=-1}}},update:debounce(function(){return new Promise(function(e){c.forceUpdate(),e(o)})}),destroy:function destroy(){cleanupModifierEffects(),l=!0}};if(!areValidElements(e,t))return c;function runModifierEffects(){o.orderedModifiers.forEach(function(e){var t=e.name,n=e.options,a=void 0===n?{}:n,i=e.effect;if("function"==typeof i){var l=i({state:o,name:t,instance:c,options:a});s.push(l||function noopFn(){})}})}function cleanupModifierEffects(){s.forEach(function(e){return e()}),s=[]}return c.setOptions(n).then(function(e){!l&&n.onFirstUpdate&&n.onFirstUpdate(e)}),c}}var ic=popperGenerator({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function fn(){},effect,data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},Ql,{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset},{name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide}]});function useSlotProps(e){const{elementType:t,externalSlotProps:n,ownerState:a,skipResolvingSlotProps:o=!1,...i}=e,s=o?{}:resolveComponentProps(n,a),{props:l,internalRef:c}=mergeSlotProps({...i,externalSlotProps:s});return appendOwnerState(t,{...l,ref:useForkRef(c,s?.ref,e.additionalProps?.ref)},a)}function getReactElementRef(e){return parseInt(u.version,10)>=19?e?.props?.ref||null:e?.ref||null}function getContainer$1(e){return"function"==typeof e?e():e}var sc=u.forwardRef(function Portal(e,t){const{children:n,container:a,disablePortal:o=!1}=e,[i,s]=u.useState(null),l=useForkRef(u.isValidElement(n)?getReactElementRef(n):null,t);if(ts(()=>{o||s(getContainer$1(a)||document.body)},[a,o]),ts(()=>{if(i&&!o)return setRef(t,i),()=>{setRef(t,null)}},[t,i,o]),o){if(u.isValidElement(n)){const e={ref:l};return u.cloneElement(n,e)}return n}return i?d.createPortal(n,i):i});function getPopperUtilityClass(e){return generateUtilityClass("MuiPopper",e)}generateUtilityClasses("MuiPopper",["root"]);function flipPlacement(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}function resolveAnchorEl$1(e){return"function"==typeof e?e():e}function isHTMLElement$1(e){return void 0!==e.nodeType}var useUtilityClasses$43=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getPopperUtilityClass,t)},lc={},cc=u.forwardRef(function PopperTooltip(e,t){const{anchorEl:n,children:a,direction:o,disablePortal:i,modifiers:s,open:l,placement:c,popperOptions:d,popperRef:p,slotProps:m={},slots:g={},TransitionProps:h,ownerState:b,...y}=e,v=u.useRef(null),S=useForkRef(v,t),x=u.useRef(null),C=useForkRef(x,p),w=u.useRef(C);ts(()=>{w.current=C},[C]),u.useImperativeHandle(p,()=>x.current,[]);const k=flipPlacement(c,o),[E,P]=u.useState(k),[T,R]=u.useState(resolveAnchorEl$1(n));u.useEffect(()=>{x.current&&x.current.forceUpdate()}),u.useEffect(()=>{n&&R(resolveAnchorEl$1(n))},[n]),ts(()=>{if(!T||!l)return;const handlePopperUpdate=e=>{P(e.placement)};let e=[{name:"preventOverflow",options:{altBoundary:i}},{name:"flip",options:{altBoundary:i}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:e})=>{handlePopperUpdate(e)}}];null!=s&&(e=e.concat(s)),d&&null!=d.modifiers&&(e=e.concat(d.modifiers));const t=ic(T,v.current,{placement:k,...d,modifiers:e});w.current(t);const n=v.current;return()=>{if(n){const{style:e}=n,a=e.position,o=e.top,i=e.left,s=e.transform;t.destroy(),e.position=a,e.top=o,e.left=i,e.transform=s}else t.destroy();w.current(null)}},[T,i,s,l,d,k]);const M={placement:E};null!==h&&(M.TransitionProps=h);const D=useUtilityClasses$43(e),O=g.root??"div";return(0,Fa.jsx)(O,{...useSlotProps({elementType:O,externalSlotProps:m.root,externalForwardedProps:y,additionalProps:{role:"tooltip",ref:S},ownerState:e,className:D.root}),children:"function"==typeof a?a(M):a})}),uc=u.forwardRef(function Popper(e,t){const{anchorEl:n,children:a,container:o,direction:i="ltr",disablePortal:s=!1,keepMounted:l=!1,modifiers:c,open:d,placement:p="bottom",popperOptions:m=lc,popperRef:g,style:h,transition:b=!1,slotProps:y={},slots:v={},...S}=e,[x,C]=u.useState(!0),handleEnter=()=>{C(!1)},handleExited=()=>{C(!0)};if(!l&&!d&&(!b||x))return null;let w;if(o)w=o;else if(n){const e=resolveAnchorEl$1(n);w=e&&isHTMLElement$1(e)?ownerDocument(e).body:ownerDocument(null).body}const k=d||!l||b&&!x?void 0:"none",E=b?{in:d,onEnter:handleEnter,onExited:handleExited}:void 0;return(0,Fa.jsx)(sc,{disablePortal:s,container:w,children:(0,Fa.jsx)(cc,{anchorEl:n,direction:i,disablePortal:s,modifiers:c,ref:t,open:b?!x:d,placement:p,popperOptions:m,popperRef:g,slotProps:y,slots:v,...S,style:{position:"fixed",top:0,left:0,display:k,...h},TransitionProps:E,children:a})})}),dc=Ts(uc,{name:"MuiPopper",slot:"Root"})({}),pc=u.forwardRef(function Popper(e,t){const n=useRtl(),{anchorEl:a,component:o,container:i,disablePortal:s,keepMounted:l,modifiers:c,open:u,placement:d,popperOptions:p,popperRef:m,transition:g,slots:h,slotProps:b,...y}=useDefaultProps({props:e,name:"MuiPopper"}),v={anchorEl:a,container:i,disablePortal:s,keepMounted:l,modifiers:c,open:u,placement:d,popperOptions:p,popperRef:m,transition:g,...y};return(0,Fa.jsx)(dc,{as:o,direction:n?"rtl":"ltr",slots:h,slotProps:b,...v,ref:t})}),mc=createSvgIcon((0,Fa.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");function getChipUtilityClass(e){return generateUtilityClass("MuiChip",e)}var fc=generateUtilityClasses("MuiChip",["root","sizeSmall","sizeMedium","colorDefault","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","deletable","outlined","filled","avatar","icon","label","deleteIcon","focusVisible"]),useUtilityClasses$42=e=>{const{classes:t,disabled:n,size:a,color:o,onDelete:i,clickable:s,variant:l}=e;return composeClasses({root:["root",l,n&&"disabled",`size${$s(a)}`,`color${$s(o)}`,s&&"clickable",i&&"deletable"],label:["label"],avatar:["avatar"],icon:["icon"],deleteIcon:["deleteIcon"]},getChipUtilityClass,t)},gc=Ts("div",{name:"MuiChip",slot:"Root",shouldForwardProp:e=>rootShouldForwardProp(e)&&"focusableWhenDisabled"!==e&&"skipFocusWhenDisabled"!==e,overridesResolver:(e,t)=>{const{ownerState:n}=e,{color:a,clickable:o,onDelete:i,size:s,variant:l}=n;return[{[`& .${fc.avatar}`]:t.avatar},{[`& .${fc.icon}`]:t.icon},{[`& .${fc.deleteIcon}`]:t.deleteIcon},t.root,t[`size${$s(s)}`],t[`color${$s(a)}`],o&&t.clickable,i&&t.deletable,t[l]]}})(Is(({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[700]:e.palette.grey[300];return{maxWidth:"100%",fontFamily:e.typography.fontFamily,fontSize:e.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,lineHeight:1.5,color:(e.vars||e).palette.text.primary,backgroundColor:(e.vars||e).palette.action.selected,borderRadius:16,whiteSpace:"nowrap",transition:e.transitions.create(["background-color","box-shadow"]),cursor:"unset",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",[`&.${fc.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity,pointerEvents:"none"},[`& .${fc.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:e.vars?e.vars.palette.Chip.defaultAvatarColor:t,fontSize:e.typography.pxToRem(12)},[`& .${fc.icon}`]:{marginLeft:5,marginRight:-6},[`& .${fc.deleteIcon}`]:{WebkitTapHighlightColor:"transparent",color:e.alpha((e.vars||e).palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:e.alpha((e.vars||e).palette.text.primary,.4)}},variants:[{props:{color:"primary"},style:{[`& .${fc.avatar}`]:{color:(e.vars||e).palette.primary.contrastText,backgroundColor:(e.vars||e).palette.primary.dark}}},{props:{color:"secondary"},style:{[`& .${fc.avatar}`]:{color:(e.vars||e).palette.secondary.contrastText,backgroundColor:(e.vars||e).palette.secondary.dark}}},{props:{size:"small"},style:{height:24,[`& .${fc.avatar}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:e.typography.pxToRem(10)},[`& .${fc.icon}`]:{fontSize:18,marginLeft:4,marginRight:-4},[`& .${fc.deleteIcon}`]:{fontSize:16,marginRight:4,marginLeft:-4}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter(["contrastText"])).map(([t])=>({props:{color:t},style:{backgroundColor:(e.vars||e).palette[t].main,color:(e.vars||e).palette[t].contrastText,[`& .${fc.deleteIcon}`]:{color:e.alpha((e.vars||e).palette[t].contrastText,.7),"&:hover, &:active":{color:(e.vars||e).palette[t].contrastText}}}})),{props:e=>e.iconColor===e.color,style:{[`& .${fc.icon}`]:{color:e.vars?e.vars.palette.Chip.defaultIconColor:t}}},{props:e=>e.iconColor===e.color&&"default"!==e.color,style:{[`& .${fc.icon}`]:{color:"inherit"}}},{props:{onDelete:!0},style:{[`&.${fc.focusVisible}`]:{backgroundColor:e.alpha((e.vars||e).palette.action.selected,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.focusOpacity}`)}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter(["dark"])).map(([t])=>({props:{color:t,onDelete:!0},style:{[`&.${fc.focusVisible}`]:{background:(e.vars||e).palette[t].dark}}})),{props:{clickable:!0},style:{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.selected,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.hoverOpacity}`)},[`&.${fc.focusVisible}`]:{backgroundColor:e.alpha((e.vars||e).palette.action.selected,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.focusOpacity}`)},"&:active":{boxShadow:(e.vars||e).shadows[1]}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter(["dark"])).map(([t])=>({props:{color:t,clickable:!0},style:{[`&:hover, &.${fc.focusVisible}`]:{backgroundColor:(e.vars||e).palette[t].dark}}})),{props:{variant:"outlined"},style:{backgroundColor:"transparent",border:e.vars?`1px solid ${e.vars.palette.Chip.defaultBorder}`:`1px solid ${"light"===e.palette.mode?e.palette.grey[400]:e.palette.grey[700]}`,[`&.${fc.clickable}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${fc.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`& .${fc.avatar}`]:{marginLeft:4},[`& .${fc.icon}`]:{marginLeft:4},[`& .${fc.deleteIcon}`]:{marginRight:5}}},{props:{size:"small",variant:"outlined"},style:{[`& .${fc.avatar}`]:{marginLeft:2},[`& .${fc.icon}`]:{marginLeft:2},[`& .${fc.deleteIcon}`]:{marginRight:3}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{variant:"outlined",color:t},style:{color:(e.vars||e).palette[t].main,border:`1px solid ${e.alpha((e.vars||e).palette[t].main,.7)}`,[`&.${fc.clickable}:hover`]:{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)},[`&.${fc.focusVisible}`]:{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.focusOpacity)},[`& .${fc.deleteIcon}`]:{color:e.alpha((e.vars||e).palette[t].main,.7),"&:hover, &:active":{color:(e.vars||e).palette[t].main}}}}))]}})),hc=Ts("span",{name:"MuiChip",slot:"Label"})({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap",variants:[{props:{variant:"outlined"},style:{paddingLeft:11,paddingRight:11}},{props:{size:"small"},style:{paddingLeft:8,paddingRight:8}},{props:{size:"small",variant:"outlined"},style:{paddingLeft:7,paddingRight:7}}]});function isDeleteKeyboardEvent(e){return"Backspace"===e.key||"Delete"===e.key}var bc=u.forwardRef(function Chip(e,t){const n=useDefaultProps({props:e,name:"MuiChip"}),{avatar:a,className:o,clickable:i,color:s="default",component:l,deleteIcon:c,disabled:d=!1,icon:p,label:m,onClick:g,onDelete:h,onKeyDown:b,onKeyUp:y,size:v="medium",variant:S="filled",tabIndex:x,skipFocusWhenDisabled:C=!1,slots:w={},slotProps:k={},...E}=n,{nativeButton:P,...T}=E,R=Gs(u.useRef(null),t),handleDeleteIconClick=e=>{e.stopPropagation(),h(e)},handleKeyDown=e=>{e.currentTarget===e.target&&isDeleteKeyboardEvent(e)&&e.preventDefault(),b&&b(e)},handleKeyUp=e=>{e.currentTarget===e.target&&h&&isDeleteKeyboardEvent(e)&&h(e),y&&y(e)},M=!(!1===i||!g)||i,D=M||h?wl:l||"div",O={...n,component:D,disabled:d,size:v,color:s,iconColor:u.isValidElement(p)&&p.props.color||s,onDelete:!!h,clickable:M,variant:S},$=useUtilityClasses$42(O),I=D===wl?{component:l||"div",internalNativeButton:!1,focusVisibleClassName:$.focusVisible,...h&&{disableRipple:!0},...void 0!==P&&{nativeButton:P}}:{};let N=null;h&&(N=c&&u.isValidElement(c)?u.cloneElement(c,{className:clsx(c.props.className,$.deleteIcon),onClick:handleDeleteIconClick}):(0,Fa.jsx)(mc,{className:$.deleteIcon,onClick:handleDeleteIconClick}));let L=null;a&&u.isValidElement(a)&&(L=u.cloneElement(a,{className:clsx($.avatar,a.props.className)}));let j=null;p&&u.isValidElement(p)&&(j=u.cloneElement(p,{className:clsx($.icon,p.props.className)}));const B={slots:w,slotProps:k},[F,q]=useSlot("root",{elementType:gc,externalForwardedProps:{...B,...T},ownerState:O,shouldForwardComponentProp:!0,ref:R,className:clsx($.root,o),additionalProps:{disabled:!(!M||!d)||void 0,tabIndex:C&&d?-1:x,...I},getSlotProps:e=>({...e,onClick:t=>{e.onClick?.(t),g?.(t)},onKeyDown:t=>{e.onKeyDown?.(t),handleKeyDown(t)},onKeyUp:t=>{e.onKeyUp?.(t),handleKeyUp(t)}})}),[U,V]=useSlot("label",{elementType:hc,externalForwardedProps:B,ownerState:O,className:$.label});return(0,Fa.jsxs)(F,{as:D,...q,children:[L||j,(0,Fa.jsx)(U,{...V,children:m}),N]})});function getStyleValue(e){return parseInt(e,10)||0}var yc={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}};function isObjectEmpty(e){for(const t in e)return!1;return!0}function isEmpty$1(e){return isObjectEmpty(e)||0===e.outerHeightStyle&&!e.overflowing}var vc=u.forwardRef(function TextareaAutosize(e,t){const{onChange:n,maxRows:a,minRows:o=1,style:i,value:s,...l}=e,{current:c}=u.useRef(null!=s),d=u.useRef(null),p=useForkRef(t,d),m=u.useRef(null),g=u.useRef(null),h=u.useCallback(()=>{const t=d.current,n=g.current;if(!t||!n)return;const i=ownerWindow(t).getComputedStyle(t);if("0px"===i.width)return{outerHeightStyle:0,overflowing:!1};n.style.width=i.width,n.value=t.value||e.placeholder||"x","\n"===n.value.slice(-1)&&(n.value+=" ");const s=i.boxSizing,l=getStyleValue(i.paddingBottom)+getStyleValue(i.paddingTop),c=getStyleValue(i.borderBottomWidth)+getStyleValue(i.borderTopWidth),u=n.scrollHeight;n.value="x";const p=n.scrollHeight;let m=u;return o&&(m=Math.max(Number(o)*p,m)),a&&(m=Math.min(Number(a)*p,m)),m=Math.max(m,p),{outerHeightStyle:m+("border-box"===s?l+c:0),overflowing:Math.abs(m-u)<=1}},[a,o,e.placeholder]),b=useEventCallback(()=>{const e=d.current,t=h();if(!e||!t||isEmpty$1(t))return!1;const n=t.outerHeightStyle;return null!=m.current&&m.current!==n}),y=u.useCallback(()=>{const e=d.current,t=h();if(!e||!t||isEmpty$1(t))return;const n=t.outerHeightStyle;m.current!==n&&(m.current=n,e.style.height=`${n}px`),e.style.overflow=t.overflowing?"hidden":""},[h]),v=u.useRef(-1);ts(()=>{const e=debounce$1(y),t=d?.current;if(!t)return;const n=ownerWindow(t);let a;return n.addEventListener("resize",e),"undefined"!=typeof ResizeObserver&&(a=new ResizeObserver(()=>{b()&&(a.unobserve(t),cancelAnimationFrame(v.current),y(),v.current=requestAnimationFrame(()=>{a.observe(t)}))}),a.observe(t)),()=>{e.clear(),cancelAnimationFrame(v.current),n.removeEventListener("resize",e),a&&a.disconnect()}},[h,y,b]),ts(()=>{y()});const handleChange=e=>{c||y();const t=e.target,a=t.value.length,o=t.value.endsWith("\n"),i=t.selectionStart===a;o&&i&&t.setSelectionRange(a,a),n&&n(e)};return(0,Fa.jsxs)(u.Fragment,{children:[(0,Fa.jsx)("textarea",{value:s,onChange:handleChange,ref:p,rows:o,style:i,...l}),(0,Fa.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:g,tabIndex:-1,style:{...yc.shadow,...i,paddingTop:0,paddingBottom:0}})]})}),Sc=u.createContext(void 0);function useFormControl(){return u.useContext(Sc)}function useFormControlState({props:e,states:t}){const n=u.useContext(Sc),a={};return t.forEach(t=>{const o=e[t];a[t]=void 0===o&&n?n[t]:o}),[a,n]}function hasValue(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function isFilled(e,t=!1){return e&&(hasValue(e.value)&&""!==e.value||t&&hasValue(e.defaultValue)&&""!==e.defaultValue)}function isAdornedStart(e){return e.startAdornment}function getInputBaseUtilityClass(e){return generateUtilityClass("MuiInputBase",e)}var xc,Cc=generateUtilityClasses("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputTypeSearch"]),wc="mui-auto-fill",kc="mui-auto-fill-cancel",rootOverridesResolver=(e,t)=>{const{ownerState:n}=e;return[t.root,n.formControl&&t.formControl,n.startAdornment&&t.adornedStart,n.endAdornment&&t.adornedEnd,n.error&&t.error,"small"===n.size&&t.sizeSmall,n.multiline&&t.multiline,n.color&&t[`color${$s(n.color)}`],n.fullWidth&&t.fullWidth,n.hiddenLabel&&t.hiddenLabel]},inputOverridesResolver=(e,t)=>{const{ownerState:n}=e;return[t.input,"search"===n.type&&t.inputTypeSearch]},useUtilityClasses$41=e=>{const{classes:t,color:n,disabled:a,error:o,endAdornment:i,focused:s,formControl:l,fullWidth:c,hiddenLabel:u,multiline:d,readOnly:p,size:m,startAdornment:g,type:h}=e;return composeClasses({root:["root",`color${$s(n)}`,a&&"disabled",o&&"error",c&&"fullWidth",s&&"focused",l&&"formControl",m&&"medium"!==m&&`size${$s(m)}`,d&&"multiline",g&&"adornedStart",i&&"adornedEnd",u&&"hiddenLabel",p&&"readOnly"],input:["input",a&&"disabled","search"===h&&"inputTypeSearch",p&&"readOnly"]},getInputBaseUtilityClass,t)},Ec=Ts("div",{name:"MuiInputBase",slot:"Root",overridesResolver:rootOverridesResolver})(Is(({theme:e})=>({...e.typography.body1,color:(e.vars||e).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${Cc.disabled}`]:{color:(e.vars||e).palette.text.disabled,cursor:"default"},variants:[{props:({ownerState:e})=>e.multiline,style:{padding:"4px 0 5px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{paddingTop:1}},{props:({ownerState:e})=>e.fullWidth,style:{width:"100%"}}]}))),_c=Ts("input",{name:"MuiInputBase",slot:"Input",overridesResolver:inputOverridesResolver})(Is(({theme:e})=>{const t="light"===e.palette.mode,n={color:"currentColor",...e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:t?.42:.5},transition:e.transitions.create("opacity",{duration:e.transitions.duration.shorter})},a={opacity:"0 !important"},o=e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:t?.42:.5};return{font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%","&::-webkit-input-placeholder":n,"&::-moz-placeholder":n,"&::-ms-input-placeholder":n,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${Cc.formControl} &`]:{"&::-webkit-input-placeholder":a,"&::-moz-placeholder":a,"&::-ms-input-placeholder":a,"&:focus::-webkit-input-placeholder":o,"&:focus::-moz-placeholder":o,"&:focus::-ms-input-placeholder":o},[`&.${Cc.disabled}`]:{opacity:1,WebkitTextFillColor:(e.vars||e).palette.text.disabled},variants:[{props:({ownerState:e})=>!e.disableInjectingGlobalStyles,style:{animationName:kc,animationDuration:"10ms","&:-webkit-autofill":{animationDuration:"5000s",animationName:wc}}},{props:{size:"small"},style:{paddingTop:1}},{props:({ownerState:e})=>e.multiline,style:{height:"auto",resize:"none",padding:0,paddingTop:0}},{props:{type:"search"},style:{MozAppearance:"textfield"}}]}})),Pc=globalCss({[`@keyframes ${wc}`]:{from:{animationName:wc}},[`@keyframes ${kc}`]:{from:{animationName:kc}}}),Tc=u.forwardRef(function InputBase(e,t){const n=useDefaultProps({props:e,name:"MuiInputBase"}),{"aria-describedby":a,"aria-label":o,autoComplete:i,autoFocus:s,className:l,color:c,defaultValue:d,disabled:p,disableInjectingGlobalStyles:m,endAdornment:g,error:h,fullWidth:b=!1,id:y,inputComponent:v="input",inputProps:S={},inputRef:x,margin:C,maxRows:w,minRows:k,multiline:E=!1,name:P,onBlur:T,onChange:R,onClick:M,onFocus:D,onKeyDown:O,onKeyUp:$,placeholder:I,readOnly:N,renderSuffix:L,rows:j,size:B,slotProps:F={},slots:q={},startAdornment:U,type:V="text",value:H,...W}=n,G=null!=S.value?S.value:H,{current:Y}=u.useRef(null!=G),K=u.useRef(),Q=u.useCallback(e=>{},[]),Z=Gs(K,x,S.ref,Q),[X,J]=u.useState(!1),[ee,te]=useFormControlState({props:n,states:["color","disabled","error","hiddenLabel","size","required","filled"]});ee.focused=te?te.focused:X,u.useEffect(()=>{!te&&p&&X&&(J(!1),T&&T())},[te,p,X,T]);const re=te&&te.onFilled,ne=te&&te.onEmpty,ae=u.useCallback(e=>{isFilled(e)?re&&re():ne&&ne()},[re,ne]);Us(()=>{Y&&ae({value:G})},[G,ae,Y]),Us(()=>{if(!s)return;const e=K.current;if(!e)return;const t=Fs(e),n=Bs(t),a=null==n||n===t.body||n===t.documentElement;e===n?te&&te.onFocus?te.onFocus():J(!0):a&&e.focus()},[s]);const handleFocus=e=>{D&&D(e),S.onFocus&&S.onFocus(e),te&&te.onFocus?te.onFocus(e):J(!0)},handleBlur=e=>{T&&T(e),S.onBlur&&S.onBlur(e),te&&te.onBlur?te.onBlur(e):J(!1)},handleChange=(e,...t)=>{if(!Y){const t=e.target||K.current;if(null==t)throw new Error(formatMuiErrorMessage(1));ae({value:t.value})}S.onChange&&S.onChange(e,...t),R&&R(e,...t)};u.useEffect(()=>{ae(K.current)},[]);const handleClick=e=>{K.current&&e.currentTarget===e.target&&K.current.focus(),M&&M(e)};let oe=v,ie=S;E&&"input"===oe&&(ie=j?{type:void 0,minRows:j,maxRows:j,...ie}:{type:void 0,maxRows:w,minRows:k,...ie},oe=vc);const handleAutoFill=e=>{ae(e.animationName===kc?K.current:{value:"x"})};u.useEffect(()=>{te&&te.setAdornedStart(Boolean(U))},[te,U]);const se={...n,color:ee.color||"primary",disabled:ee.disabled,endAdornment:g,error:ee.error,focused:ee.focused,formControl:te,fullWidth:b,hiddenLabel:ee.hiddenLabel,multiline:E,size:ee.size,startAdornment:U,type:V},le=useUtilityClasses$41(se),ce=q.root||Ec,ue=F.root||{},de=q.input||_c;return ie={...ie,...F.input},(0,Fa.jsxs)(u.Fragment,{children:[!m&&"function"==typeof Pc&&(xc||(xc=(0,Fa.jsx)(Pc,{}))),(0,Fa.jsxs)(ce,{...ue,ref:t,onClick:handleClick,...W,...!isHostComponent(ce)&&{ownerState:{...se,...ue.ownerState}},className:clsx(le.root,ue.className,l,N&&"MuiInputBase-readOnly"),children:[U,(0,Fa.jsx)(Sc.Provider,{value:null,children:(0,Fa.jsx)(de,{"aria-invalid":ee.error,"aria-describedby":a,"aria-label":o,autoComplete:i,autoFocus:s,defaultValue:d,disabled:ee.disabled,id:y,onAnimationStart:handleAutoFill,name:P,placeholder:I,readOnly:N,required:ee.required,rows:j,value:G,onKeyDown:O,onKeyUp:$,type:V,...ie,...!isHostComponent(de)&&{as:oe,ownerState:{...se,...ie.ownerState}},ref:Z,className:clsx(le.input,ie.className,N&&"MuiInputBase-readOnly"),onBlur:handleBlur,onChange:handleChange,onFocus:handleFocus})}),g,L?L({...ee,startAdornment:U}):null]})]})});function getInputUtilityClass(e){return generateUtilityClass("MuiInput",e)}var Ac={...Cc,...generateUtilityClasses("MuiInput",["root","underline","input"])};function getOutlinedInputUtilityClass(e){return generateUtilityClass("MuiOutlinedInput",e)}var Rc={...Cc,...generateUtilityClasses("MuiOutlinedInput",["root","notchedOutline","input"])};function getFilledInputUtilityClass(e){return generateUtilityClass("MuiFilledInput",e)}var Mc={...Cc,...generateUtilityClasses("MuiFilledInput",["root","underline","input","adornedStart","adornedEnd","sizeSmall","multiline","hiddenLabel"])},Dc=createSvgIcon((0,Fa.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),Oc={entering:{opacity:1},entered:{opacity:1},exiting:{opacity:0},exited:{opacity:0}},$c={opacity:0,visibility:"hidden"},Ic=u.forwardRef(function Fade(e,t){const n=useTheme(),a={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:o,appear:i=!0,children:s,easing:l,in:c,onEnter:d,onEntered:p,onEntering:m,onExit:g,onExited:h,onExiting:b,style:y,timeout:v=a,...S}=e,x=u.useRef(null),C=Gs(x,getReactElementRef(s),t),w=normalizedTransitionCallback(x,m),k=normalizedTransitionCallback(x,(e,t)=>{reflow(e);const a=getTransitionProps({style:y,timeout:v,easing:l},{mode:"enter"});e.style.transition=n.transitions.create("opacity",a),d&&d(e,t)}),E=normalizedTransitionCallback(x,p),P=normalizedTransitionCallback(x,b),T=normalizedTransitionCallback(x,e=>{const t=getTransitionProps({style:y,timeout:v,easing:l},{mode:"exit"});e.style.transition=n.transitions.create("opacity",t),g&&g(e)}),R=normalizedTransitionCallback(x,e=>{e.style.transition="",h&&h(e)}),handleAddEndListener=e=>{o&&o(x.current,e)};return(0,Fa.jsx)(rl,{appear:i,in:c,nodeRef:x,onEnter:k,onEntered:E,onEntering:w,onExit:T,onExited:R,onExiting:P,addEndListener:handleAddEndListener,timeout:v,...S,children:(e,{ownerState:t,...n})=>{const a=getTransitionChildStyle(e,c,Oc,$c,y,s.props.style);return u.cloneElement(s,{style:a,ref:C,...n})}})});function getBackdropUtilityClass(e){return generateUtilityClass("MuiBackdrop",e)}generateUtilityClasses("MuiBackdrop",["root","invisible"]);var useUtilityClasses$40=e=>{const{classes:t,invisible:n}=e;return composeClasses({root:["root",n&&"invisible"]},getBackdropUtilityClass,t)},Nc=Ts("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.invisible&&t.invisible]}})({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent",variants:[{props:{invisible:!0},style:{backgroundColor:"transparent"}}]}),zc=u.forwardRef(function Backdrop(e,t){const n=useDefaultProps({props:e,name:"MuiBackdrop"}),{children:a,className:o,component:i="div",invisible:s=!1,open:l,slotProps:c={},slots:u={},transitionDuration:d,...p}=n,m={...n,component:i,invisible:s},g=useUtilityClasses$40(m),h={component:i,slots:u,slotProps:c},[b,y]=useSlot("root",{elementType:Nc,externalForwardedProps:h,className:clsx(g.root,o),ownerState:m}),[v,S]=useSlot("transition",{elementType:Ic,externalForwardedProps:h,ownerState:m});return(0,Fa.jsx)(v,{in:l,timeout:d,...p,...S,children:(0,Fa.jsx)(b,{...y,ref:t,children:a})})}),Lc=generateUtilityClasses("MuiBox",["root"]),jc=createBox({themeId:Qa,defaultTheme:createTheme(),defaultClassName:Lc.root,generateClassName:Xi.generate});function getButtonUtilityClass(e){return generateUtilityClass("MuiButton",e)}var Bc=generateUtilityClasses("MuiButton",["root","text","outlined","contained","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","loading","loadingWrapper","loadingIconPlaceholder","loadingIndicator","loadingPositionCenter","loadingPositionStart","loadingPositionEnd"]),Fc=u.createContext({}),qc=u.createContext(void 0),useUtilityClasses$39=e=>{const{color:t,disableElevation:n,fullWidth:a,size:o,variant:i,loading:s,loadingPosition:l,classes:c}=e,u=composeClasses({root:["root",s&&"loading",i,`size${$s(o)}`,`color${$s(t)}`,n&&"disableElevation",a&&"fullWidth",s&&`loadingPosition${$s(l)}`],startIcon:["icon","startIcon"],endIcon:["icon","endIcon"],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},getButtonUtilityClass,c);return{...c,...u}},Uc=[{props:{size:"small"},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:"medium"},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:"large"},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],Vc=Ts(wl,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`size${$s(n.size)}`],"inherit"===n.color&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth,n.loading&&t.loading]}})(Is(({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],n="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return{...e.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${Bc.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:({ownerState:e})=>e.startIcon||e.loading&&"start"===e.loadingPosition,style:{"&::before":{content:'"\\200b"',width:0,overflow:"hidden"}}},{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(e.vars||e).shadows[2],"&:hover":{boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2]}},"&:active":{boxShadow:(e.vars||e).shadows[8]},[`&.${Bc.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},[`&.${Bc.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}},{props:{variant:"outlined"},style:{padding:"5px 15px",border:"1px solid currentColor",borderColor:"var(--variant-outlinedBorder, currentColor)",backgroundColor:"var(--variant-outlinedBg)",color:"var(--variant-outlinedColor)",[`&.${Bc.disabled}`]:{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{"--variant-textColor":(e.vars||e).palette[t].main,"--variant-outlinedColor":(e.vars||e).palette[t].main,"--variant-outlinedBorder":e.alpha((e.vars||e).palette[t].main,.5),"--variant-containedColor":(e.vars||e).palette[t].contrastText,"--variant-containedBg":(e.vars||e).palette[t].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(e.vars||e).palette[t].dark,"--variant-textBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBorder":(e.vars||e).palette[t].main,"--variant-outlinedBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}}})),{props:{color:"inherit"},style:{color:"inherit",borderColor:"currentColor","--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedBg:t,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedHoverBg:n,"--variant-textBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:e.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${Bc.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${Bc.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{loadingPosition:"center"},style:{transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),[`&.${Bc.loading}`]:{color:"transparent"}}}]}})),Hc=Ts("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.startIcon,n.loading&&t.startIconLoadingStart]}})(({theme:e})=>({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},{props:{loadingPosition:"start",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"start",loading:!0,fullWidth:!0},style:{marginRight:-8}},...Uc]})),Wc=Ts("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.endIcon,n.loading&&t.endIconLoadingEnd]}})(({theme:e})=>({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},{props:{loadingPosition:"end",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"end",loading:!0,fullWidth:!0},style:{marginLeft:-8}},...Uc]})),Gc=Ts("span",{name:"MuiButton",slot:"LoadingIndicator"})(({theme:e})=>({display:"none",position:"absolute",visibility:"visible",variants:[{props:{loading:!0},style:{display:"flex"}},{props:{loadingPosition:"start"},style:{left:14}},{props:{loadingPosition:"start",size:"small"},style:{left:10}},{props:{variant:"text",loadingPosition:"start"},style:{left:6}},{props:{loadingPosition:"center"},style:{left:"50%",transform:"translate(-50%)",color:(e.vars||e).palette.action.disabled}},{props:{loadingPosition:"end"},style:{right:14}},{props:{loadingPosition:"end",size:"small"},style:{right:10}},{props:{variant:"text",loadingPosition:"end"},style:{right:6}},{props:{loadingPosition:"start",fullWidth:!0},style:{position:"relative",left:-10}},{props:{loadingPosition:"end",fullWidth:!0},style:{position:"relative",right:-10}}]})),Yc=Ts("span",{name:"MuiButton",slot:"LoadingIconPlaceholder"})({display:"inline-block",width:"1em",height:"1em"}),Kc=u.forwardRef(function Button(e,t){const n=u.useContext(Fc),a=u.useContext(qc),o=useDefaultProps({props:resolveProps(n,e),name:"MuiButton"}),{children:i,color:s="primary",component:l="button",className:c,disabled:d=!1,disableElevation:p=!1,disableFocusRipple:m=!1,endIcon:g,focusVisibleClassName:h,fullWidth:b=!1,id:y,loading:v=null,loadingIndicator:S,loadingPosition:x="center",size:C="medium",startIcon:w,type:k,variant:E="text",...P}=o,T=Vs(y),R=S??(0,Fa.jsx)(Ol,{"aria-labelledby":T,color:"inherit",size:16}),M={...o,color:s,component:l,disabled:d,disableElevation:p,disableFocusRipple:m,fullWidth:b,loading:v,loadingIndicator:R,loadingPosition:x,size:C,type:k,variant:E},D=useUtilityClasses$39(M),O=(w||v&&"start"===x)&&(0,Fa.jsx)(Hc,{className:D.startIcon,ownerState:M,children:w||(0,Fa.jsx)(Yc,{className:D.loadingIconPlaceholder,ownerState:M})}),$=(g||v&&"end"===x)&&(0,Fa.jsx)(Wc,{className:D.endIcon,ownerState:M,children:g||(0,Fa.jsx)(Yc,{className:D.loadingIconPlaceholder,ownerState:M})}),I=a||"",N="boolean"==typeof v?(0,Fa.jsx)("span",{className:D.loadingWrapper,style:{display:"contents"},children:v&&(0,Fa.jsx)(Gc,{className:D.loadingIndicator,ownerState:M,children:R})}):null,{root:L,...j}=D;return(0,Fa.jsxs)(Vc,{ownerState:M,className:clsx(n.className,D.root,c,I),component:l,disabled:d||v,focusRipple:!m,focusVisibleClassName:clsx(D.focusVisible,h),ref:t,internalNativeButton:!0,type:k,id:v?T:y,...P,classes:j,children:[O,"end"!==x&&N,i,"end"===x&&N,$]})});function getValidReactChildren(e){return u.Children.toArray(e).filter(e=>u.isValidElement(e))}function getButtonGroupUtilityClass(e){return generateUtilityClass("MuiButtonGroup",e)}var Qc=generateUtilityClasses("MuiButtonGroup",["root","contained","outlined","text","disableElevation","disabled","firstButton","fullWidth","horizontal","vertical","colorPrimary","colorSecondary","grouped","lastButton","middleButton"]),overridesResolver$1=(e,t)=>{const{ownerState:n}=e;return[{[`& .${Qc.grouped}`]:t.grouped},{[`& .${Qc.firstButton}`]:t.firstButton},{[`& .${Qc.lastButton}`]:t.lastButton},{[`& .${Qc.middleButton}`]:t.middleButton},t.root,t[n.variant],!0===n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth,"vertical"===n.orientation&&t.vertical]},useUtilityClasses$38=e=>{const{classes:t,color:n,disabled:a,disableElevation:o,fullWidth:i,orientation:s,variant:l}=e;return composeClasses({root:["root",l,s,i&&"fullWidth",o&&"disableElevation",`color${$s(n)}`],grouped:["grouped",a&&"disabled"],firstButton:["firstButton"],lastButton:["lastButton"],middleButton:["middleButton"]},getButtonGroupUtilityClass,t)},Zc=Ts("div",{name:"MuiButtonGroup",slot:"Root",overridesResolver:overridesResolver$1})(Is(({theme:e})=>({display:"inline-flex",borderRadius:(e.vars||e).shape.borderRadius,variants:[{props:{variant:"contained"},style:{boxShadow:(e.vars||e).shadows[2],[`& .${Qc.grouped}`]:{boxShadow:"none","&:hover":{boxShadow:"none"}}}},{props:{disableElevation:!0},style:{boxShadow:"none"}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{orientation:"vertical"},style:{flexDirection:"column",[`& .${Qc.lastButton},& .${Qc.middleButton}`]:{borderTopRightRadius:0,borderTopLeftRadius:0},[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderBottomRightRadius:0,borderBottomLeftRadius:0}}},{props:{orientation:"horizontal"},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderTopRightRadius:0,borderBottomRightRadius:0},[`& .${Qc.lastButton},& .${Qc.middleButton}`]:{borderTopLeftRadius:0,borderBottomLeftRadius:0}}},{props:{variant:"text",orientation:"horizontal"},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderRight:e.vars?`1px solid ${e.alpha(e.vars.palette.common.onBackground,.23)}`:"1px solid "+("light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${Qc.disabled}`]:{borderRight:`1px solid ${(e.vars||e).palette.action.disabled}`}}}},{props:{variant:"text",orientation:"vertical"},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderBottom:e.vars?`1px solid ${e.alpha(e.vars.palette.common.onBackground,.23)}`:"1px solid "+("light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${Qc.disabled}`]:{borderBottom:`1px solid ${(e.vars||e).palette.action.disabled}`}}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).flatMap(([t])=>[{props:{variant:"text",color:t},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderColor:e.alpha((e.vars||e).palette[t].main,.5)}}}]),{props:{variant:"outlined",orientation:"horizontal"},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderRightColor:"transparent","&:hover":{borderRightColor:"currentColor"}},[`& .${Qc.lastButton},& .${Qc.middleButton}`]:{marginLeft:-1}}},{props:{variant:"outlined",orientation:"vertical"},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderBottomColor:"transparent","&:hover":{borderBottomColor:"currentColor"}},[`& .${Qc.lastButton},& .${Qc.middleButton}`]:{marginTop:-1}}},{props:{variant:"contained",orientation:"horizontal"},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderRight:`1px solid ${(e.vars||e).palette.grey[400]}`,[`&.${Qc.disabled}`]:{borderRight:`1px solid ${(e.vars||e).palette.action.disabled}`}}}},{props:{variant:"contained",orientation:"vertical"},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderBottom:`1px solid ${(e.vars||e).palette.grey[400]}`,[`&.${Qc.disabled}`]:{borderBottom:`1px solid ${(e.vars||e).palette.action.disabled}`}}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter(["dark"])).map(([t])=>({props:{variant:"contained",color:t},style:{[`& .${Qc.firstButton},& .${Qc.middleButton}`]:{borderColor:(e.vars||e).palette[t].dark}}}))],[`& .${Qc.grouped}`]:{minWidth:40}}))),Xc=u.forwardRef(function ButtonGroup(e,t){const n=useDefaultProps({props:e,name:"MuiButtonGroup"}),{children:a,className:o,color:i="primary",component:s="div",disabled:l=!1,disableElevation:c=!1,disableFocusRipple:d=!1,disableRipple:p=!1,fullWidth:m=!1,orientation:g="horizontal",size:h="medium",variant:b="outlined",...y}=n,v={...n,color:i,component:s,disabled:l,disableElevation:c,disableFocusRipple:d,disableRipple:p,fullWidth:m,orientation:g,size:h,variant:b},S=useUtilityClasses$38(v),x=u.useMemo(()=>({className:S.grouped,color:i,disabled:l,disableElevation:c,disableFocusRipple:d,disableRipple:p,fullWidth:m,size:h,variant:b}),[i,l,c,d,p,m,h,b,S.grouped]),C=getValidReactChildren(a),w=C.length,getButtonPositionClassName=e=>{const t=0===e,n=e===w-1;return t&&n?"":t?S.firstButton:n?S.lastButton:S.middleButton};return(0,Fa.jsx)(Zc,{as:s,role:"group",className:clsx(S.root,o),ref:t,ownerState:v,...y,children:(0,Fa.jsx)(Fc.Provider,{value:x,children:C.map((e,t)=>(0,Fa.jsx)(qc.Provider,{value:getButtonPositionClassName(t),children:e},t))})})});function getSwitchBaseUtilityClass(e){return generateUtilityClass("PrivateSwitchBase",e)}generateUtilityClasses("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var useUtilityClasses$37=e=>{const{classes:t,checked:n,disabled:a,edge:o}=e;return composeClasses({root:["root",n&&"checked",a&&"disabled",o&&`edge${$s(o)}`],input:["input"]},getSwitchBaseUtilityClass,t)},Jc=Ts(wl,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>"start"===e&&"small"!==t.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>"end"===e&&"small"!==t.size,style:{marginRight:-12}}]}),eu=Ts("input",{name:"MuiSwitchBase",shouldForwardProp:rootShouldForwardProp})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),tu=u.forwardRef(function SwitchBase(e,t){const{autoFocus:n,checked:a,checkedIcon:o,defaultChecked:i,disabled:s,disableFocusRipple:l=!1,edge:c=!1,icon:u,id:d,name:p,onBlur:m,onChange:g,onFocus:h,readOnly:b,required:y=!1,tabIndex:v,type:S,value:x,slots:C={},slotProps:w={},...k}=e,{nativeButton:E,...P}=k,[T,R]=Hs({controlled:a,default:Boolean(i),name:"SwitchBase",state:"checked"}),M=useFormControl(),handleFocus=e=>{h&&h(e),M&&M.onFocus&&M.onFocus(e)},handleBlur=e=>{m&&m(e),M&&M.onBlur&&M.onBlur(e)},handleInputChange=e=>{if(e.nativeEvent.defaultPrevented||b)return;const t=e.target.checked;R(t),g&&g(e,t)};let D=s;M&&void 0===D&&(D=M.disabled);const O="checkbox"===S||"radio"===S,$={...e,checked:T,disabled:D,disableFocusRipple:l,edge:c},I=useUtilityClasses$37($),N={slots:C,slotProps:w},[L,j]=useSlot("root",{ref:t,elementType:Jc,className:I.root,shouldForwardComponentProp:!0,externalForwardedProps:{...N,component:"span",...P},getSlotProps:e=>({...e,onFocus:t=>{e.onFocus?.(t),handleFocus(t)},onBlur:t=>{e.onBlur?.(t),handleBlur(t)}}),ownerState:$,additionalProps:{centerRipple:!0,focusRipple:!l,role:void 0,tabIndex:null}}),[B,F]=useSlot("input",{elementType:eu,className:I.input,externalForwardedProps:N,getSlotProps:e=>({...e,onChange:t=>{e.onChange?.(t),handleInputChange(t)}}),ownerState:$,additionalProps:{autoFocus:n,checked:a,defaultChecked:i,disabled:D,id:O?d:void 0,name:p,readOnly:b,required:y,tabIndex:v,type:S,..."checkbox"===S&&void 0===x?{}:{value:x}}});return(0,Fa.jsxs)(L,{...j,children:[(0,Fa.jsx)(B,{...F}),T?o:u]})}),ru=createSvgIcon((0,Fa.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),nu=createSvgIcon((0,Fa.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),au=createSvgIcon((0,Fa.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");function getCheckboxUtilityClass(e){return generateUtilityClass("MuiCheckbox",e)}var ou=generateUtilityClasses("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]),useUtilityClasses$36=e=>{const{classes:t,indeterminate:n,color:a,size:o}=e,i=composeClasses({root:["root",n&&"indeterminate",`color${$s(a)}`,`size${$s(o)}`]},getCheckboxUtilityClass,t);return{...t,...i}},iu=Ts(tu,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${$s(n.size)}`],"default"!==n.color&&t[`color${$s(n.color)}`]]}})(Is(({theme:e})=>({color:(e.vars||e).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}})),...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&.${ou.checked}, &.${ou.indeterminate}`]:{color:(e.vars||e).palette[t].main},[`&.${ou.disabled}`]:{color:(e.vars||e).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),su=(0,Fa.jsx)(nu,{}),lu=(0,Fa.jsx)(ru,{}),cu=(0,Fa.jsx)(au,{}),uu=u.forwardRef(function Checkbox(e,t){const n=useDefaultProps({props:e,name:"MuiCheckbox"}),{checkedIcon:a=su,color:o="primary",icon:i=lu,indeterminate:s=!1,indeterminateIcon:l=cu,size:c="medium",disableRipple:d=!1,className:p,slots:m={},slotProps:g={},...h}=n,b=s?l:i,y=s?l:a,v={...n,disableRipple:d,color:o,indeterminate:s,size:c},S=useUtilityClasses$36(v),x=g.input,[C,w]=useSlot("root",{ref:t,elementType:iu,className:clsx(S.root,p),shouldForwardComponentProp:!0,externalForwardedProps:{slots:m,slotProps:g,...h},ownerState:v,additionalProps:{type:"checkbox",icon:u.cloneElement(b,{fontSize:b.props.fontSize??c}),checkedIcon:u.cloneElement(y,{fontSize:y.props.fontSize??c}),disableRipple:d,slots:m,slotProps:{input:mergeSlotProps$1("function"==typeof x?x(v):x,{"data-indeterminate":s,"aria-checked":s?"mixed":void 0})}}});return(0,Fa.jsx)(C,{...w,classes:S})});function getScrollbarSize(e=window){const t=e.document.documentElement.clientWidth;return e.innerWidth-t}function isOverflowing(e){const t=ownerDocument(e);return t.body===e?ownerWindow(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}function ariaHidden(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function getPaddingRight(e){return parseFloat(ownerWindow(e).getComputedStyle(e).paddingRight)||0}function isAriaHiddenForbiddenOnElement(e){const t=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].includes(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}function ariaHiddenSiblings(e,t,n,a,o){const i=[t,n,...a];[].forEach.call(e.children,e=>{const t=!i.includes(e),n=!isAriaHiddenForbiddenOnElement(e);t&&n&&ariaHidden(e,o)})}function findIndexOf(e,t){let n=-1;return e.some((e,a)=>!!t(e)&&(n=a,!0)),n}function handleContainer(e,t){const n=[],a=e.container;if(!t.disableScrollLock){if(isOverflowing(a)){const e=getScrollbarSize(ownerWindow(a));n.push({value:a.style.paddingRight,property:"padding-right",el:a}),a.style.paddingRight=`${getPaddingRight(a)+e}px`;const t=ownerDocument(a).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight=`${getPaddingRight(t)+e}px`})}let e;if(a.parentNode instanceof DocumentFragment)e=ownerDocument(a).body;else{const t=a.parentElement,n=ownerWindow(a);e="HTML"===t?.nodeName&&"scroll"===n.getComputedStyle(t).overflowY?t:a}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(({value:e,el:t,property:n})=>{e?t.style.setProperty(n,e):t.style.removeProperty(n)})}}function getHiddenSiblings(e){const t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}var du=class{constructor(){this.modals=[],this.containers=[]}add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&ariaHidden(e.modalRef,!1);const a=getHiddenSiblings(t);ariaHiddenSiblings(t,e.mount,e.modalRef,a,!0);const o=findIndexOf(this.containers,e=>e.container===t);return-1!==o?(this.containers[o].modals.push(e),n):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:a}),n)}mount(e,t){const n=findIndexOf(this.containers,t=>t.modals.includes(e)),a=this.containers[n];a.restore||(a.restore=handleContainer(a,t))}remove(e,t=!0){const n=this.modals.indexOf(e);if(-1===n)return n;const a=findIndexOf(this.containers,t=>t.modals.includes(e)),o=this.containers[a];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(n,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&ariaHidden(e.modalRef,t),ariaHiddenSiblings(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(a,1);else{const e=o.modals[o.modals.length-1];e.modalRef&&ariaHidden(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}},pu=contains$1,mu="data-mui-focusable";function getFocusTarget(e){return e?e.hasAttribute("data-mui-focusable")?e:e.querySelector(`[${mu}]`):null}var fu=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function getTabIndex(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}function isNonTabbableRadio(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const getRadio=t=>e.ownerDocument.querySelector(`input[type="radio"]${t}`);let t=getRadio(`[name="${e.name}"]:checked`);return t||(t=getRadio(`[name="${e.name}"]`)),t!==e}function isNodeMatchingSelectorFocusable(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||isNonTabbableRadio(e))}function defaultGetTabbable(e){const t=[],n=[];return Array.from(e.querySelectorAll(fu)).forEach((e,a)=>{const o=getTabIndex(e);-1!==o&&isNodeMatchingSelectorFocusable(e)&&(0===o?t.push(e):n.push({documentOrder:a,tabIndex:o,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function defaultIsEnabled(){return!0}function FocusTrap(e){const{children:t,disableAutoFocus:n=!1,disableEnforceFocus:a=!1,disableRestoreFocus:o=!1,getTabbable:i=defaultGetTabbable,isEnabled:s=defaultIsEnabled,open:l}=e,c=u.useRef(!1),d=u.useRef(null),p=u.useRef(null),m=u.useRef(null),g=u.useRef(null),h=u.useRef(!1),b=u.useRef(null),y=useForkRef(getReactElementRef(t),b),v=u.useRef(null);u.useEffect(()=>{l&&b.current&&(h.current=!n)},[n,l]),u.useEffect(()=>{if(c.current=!1,!l||!b.current)return;const e=Bs(ownerDocument(b.current)),t=getFocusTarget(b.current)??b.current;return pu(b.current,e)||(t.hasAttribute("tabIndex")||t.setAttribute("tabIndex","-1"),h.current&&t.focus()),()=>{!o&&m.current&&(c.current=!0,m.current.focus(),m.current=null)}},[l]),u.useEffect(()=>{if(!l||!b.current)return;const e=ownerDocument(b.current),loopFocus=t=>{v.current=t,!a&&s()&&"Tab"===t.key&&Bs(e)===b.current&&t.shiftKey&&(c.current=!0,p.current&&p.current.focus())},contain=()=>{const t=b.current;if(null===t)return;const n=Bs(e);if(!e.hasFocus()||!s()||c.current)return void(c.current=!1);if(pu(t,n))return;if(a&&n!==d.current&&n!==p.current)return;if(n!==g.current)g.current=null;else if(null!==g.current)return;if(!h.current)return;let o=[];if(n!==d.current&&n!==p.current||(o=i(b.current)),o.length>0){const e=Boolean(v.current?.shiftKey&&"Tab"===v.current?.key),t=o[0],n=o[o.length-1];"string"!=typeof t&&"string"!=typeof n&&(e?n.focus():t.focus())}else t.focus()};e.addEventListener("focusin",contain),e.addEventListener("keydown",loopFocus,!0);const t=setInterval(()=>{const t=Bs(e);t&&"BODY"===t.tagName&&contain()},50);return()=>{clearInterval(t),e.removeEventListener("focusin",contain),e.removeEventListener("keydown",loopFocus,!0)}},[n,a,o,s,l,i]);const onFocus=e=>{null===m.current&&(m.current=e.relatedTarget),h.current=!0,g.current=e.target;const n=t.props.onFocus;n&&n(e)},handleFocusSentinel=e=>{null===m.current&&(m.current=e.relatedTarget),h.current=!0};return(0,Fa.jsxs)(u.Fragment,{children:[(0,Fa.jsx)("div",{tabIndex:l?0:-1,onFocus:handleFocusSentinel,ref:d,"data-testid":"sentinelStart"}),u.cloneElement(t,{ref:y,onFocus}),(0,Fa.jsx)("div",{tabIndex:l?0:-1,onFocus:handleFocusSentinel,ref:p,"data-testid":"sentinelEnd"})]})}function getContainer(e){return"function"==typeof e?e():e}function getHasTransition(e){return!!e&&e.props.hasOwnProperty("in")}var noop$1=()=>{},gu=new du;function useModal(e){const{container:t,disableScrollLock:n=!1,closeAfterTransition:a=!1,onTransitionEnter:o,onTransitionExited:i,children:s,onClose:l,open:c,rootRef:d}=e,p=u.useRef({}),m=u.useRef(null),g=u.useRef(null),h=useForkRef(g,d),[b,y]=u.useState(!c),v=getHasTransition(s);let S=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(S=!1);const getDoc=()=>ownerDocument(m.current),getModal=()=>(p.current.modalRef=g.current,p.current.mount=m.current,p.current),handleMounted=()=>{gu.mount(getModal(),{disableScrollLock:n}),g.current&&(g.current.scrollTop=0)},x=useEventCallback(()=>{const e=getContainer(t)||getDoc().body;gu.add(getModal(),e),g.current&&handleMounted()}),isTopModal=()=>gu.isTopModal(getModal()),C=useEventCallback(e=>{m.current=e,e&&(c&&isTopModal()?handleMounted():g.current&&ariaHidden(g.current,S))}),w=u.useCallback(()=>{gu.remove(getModal(),S)},[S]);u.useEffect(()=>()=>{w()},[w]),u.useEffect(()=>{c?x():v&&a||w()},[c,w,v,a,x]);const createHandleKeyDown=e=>t=>{e.onKeyDown?.(t),"Escape"===t.key&&229!==t.which&&isTopModal()&&(t.stopPropagation(),l&&l(t,"escapeKeyDown"))},createHandleBackdropClick=e=>t=>{e.onClick?.(t),t.target===t.currentTarget&&l&&l(t,"backdropClick")};return{getRootProps:(t={})=>{const n=extractEventHandlers(e);delete n.onTransitionEnter,delete n.onTransitionExited;const a={...n,...t};return{role:"presentation",...a,onKeyDown:createHandleKeyDown(a),ref:h}},getBackdropProps:(e={})=>{const t=e;return{"aria-hidden":!0,...t,onClick:createHandleBackdropClick(t),open:c}},getTransitionProps:()=>{const handleExited=()=>{y(!0),i&&i(),a&&w()};return{onEnter:createChainedFunction(()=>{y(!1),o&&o()},s?.props.onEnter??noop$1),onExited:createChainedFunction(handleExited,s?.props.onExited??noop$1)}},rootRef:h,portalRef:C,isTopModal,exited:b,hasTransition:v}}function getModalUtilityClass(e){return generateUtilityClass("MuiModal",e)}generateUtilityClasses("MuiModal",["root","hidden","backdrop"]);var useUtilityClasses$35=e=>{const{open:t,exited:n,classes:a}=e;return composeClasses({root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]},getModalUtilityClass,a)},hu=Ts("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(Is(({theme:e})=>({position:"fixed",zIndex:(e.vars||e).zIndex.modal,right:0,bottom:0,top:0,left:0,variants:[{props:({ownerState:e})=>!e.open&&e.exited,style:{visibility:"hidden"}}]}))),bu=Ts(zc,{name:"MuiModal",slot:"Backdrop"})({zIndex:-1}),yu=u.forwardRef(function Modal(e,t){const n=useDefaultProps({name:"MuiModal",props:e}),{classes:a,className:o,closeAfterTransition:i=!1,children:s,container:l,component:c,disableAutoFocus:d=!1,disableEnforceFocus:p=!1,disablePortal:m=!1,disableRestoreFocus:g=!1,disableScrollLock:h=!1,hideBackdrop:b=!1,keepMounted:y=!1,onClose:v,onTransitionEnter:S,onTransitionExited:x,open:C,slotProps:w={},slots:k={},theme:E,...P}=n,T={...n,closeAfterTransition:i,disableAutoFocus:d,disableEnforceFocus:p,disablePortal:m,disableRestoreFocus:g,disableScrollLock:h,hideBackdrop:b,keepMounted:y},{getRootProps:R,getBackdropProps:M,getTransitionProps:D,portalRef:O,isTopModal:$,exited:I,hasTransition:N}=useModal({...T,rootRef:t}),L={...T,exited:I},j=useUtilityClasses$35(L),B={};if(void 0===s.props.tabIndex&&(B.tabIndex="-1"),N){const{onEnter:e,onExited:t}=D();B.onEnter=e,B.onExited=t}const F={slots:k,slotProps:w},[q,U]=useSlot("root",{ref:t,elementType:hu,externalForwardedProps:{...F,...P,component:c},getSlotProps:R,ownerState:L,className:clsx(o,j?.root,!L.open&&L.exited&&j?.hidden)}),[V,H]=useSlot("backdrop",{elementType:bu,externalForwardedProps:F,shouldForwardComponentProp:!0,getSlotProps:e=>M({...e,onClick:t=>{e?.onClick&&e.onClick(t)}}),className:j?.backdrop,ownerState:L});return y||C||N&&!I?(0,Fa.jsx)(sc,{ref:O,container:l,disablePortal:m,children:(0,Fa.jsxs)(q,{...U,children:[b?null:(0,Fa.jsx)(V,{...H}),(0,Fa.jsx)(FocusTrap,{disableEnforceFocus:p,disableAutoFocus:d,disableRestoreFocus:g,isEnabled:$,open:C,children:u.cloneElement(s,B)})]})}):null});function getDialogUtilityClass(e){return generateUtilityClass("MuiDialog",e)}generateUtilityClasses("MuiDialog",["root","backdrop","scrollPaper","scrollBody","container","paper","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]);var vu=u.createContext({}),Su=Ts(zc,{name:"MuiDialog",slot:"Backdrop"})({zIndex:-1}),useUtilityClasses$34=e=>{const{classes:t,scroll:n,maxWidth:a,fullWidth:o,fullScreen:i}=e;return composeClasses({root:["root"],backdrop:["backdrop"],container:["container",`scroll${$s(n)}`],paper:["paper",`paperWidth${$s(String(a))}`,o&&"paperFullWidth",i&&"paperFullScreen"]},getDialogUtilityClass,t)},xu=Ts(yu,{name:"MuiDialog",slot:"Root"})({"@media print":{position:"absolute !important"}}),Cu=Ts("div",{name:"MuiDialog",slot:"Container",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.container,t[`scroll${$s(n.scroll)}`]]}})({height:"100%","@media print":{height:"auto"},outline:0,variants:[{props:{scroll:"paper"},style:{display:"flex",justifyContent:"center",alignItems:"center"}},{props:{scroll:"body"},style:{overflowY:"auto",overflowX:"hidden",textAlign:"center","&::after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}}}]}),wu=Ts(ul,{name:"MuiDialog",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.paper,t[`paperWidth${$s(String(n.maxWidth))}`],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})(Is(({theme:e})=>({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"},variants:[{props:{scroll:"paper"},style:{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"}},{props:{scroll:"body"},style:{display:"inline-block",verticalAlign:"middle",textAlign:"initial"}},{props:({ownerState:e})=>!e.maxWidth,style:{maxWidth:"calc(100% - 64px)"}},{props:{maxWidth:"xs"},style:{maxWidth:"px"===e.breakpoints.unit?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`}},{props:{maxWidth:"xs",scroll:"body"},style:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:"calc(100% - 64px)"}}},...Object.keys(e.breakpoints.values).filter(e=>"xs"!==e).map(t=>({props:{maxWidth:t},style:{maxWidth:`${e.breakpoints.values[t]}${e.breakpoints.unit}`}})),...Object.keys(e.breakpoints.values).filter(e=>"xs"!==e).map(t=>({props:{maxWidth:t,scroll:"body"},style:{[e.breakpoints.down(e.breakpoints.values[t]+64)]:{maxWidth:"calc(100% - 64px)"}}})),{props:({ownerState:e})=>e.fullWidth,style:{width:"calc(100% - 64px)"}},{props:({ownerState:e})=>e.fullScreen,style:{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0}},{props:({ownerState:e})=>e.fullScreen&&"body"===e.scroll,style:{margin:0,maxWidth:"100%"}}]}))),ku=u.forwardRef(function Dialog(e,t){const n=useDefaultProps({props:e,name:"MuiDialog"}),a=useTheme(),o={enter:a.transitions.duration.enteringScreen,exit:a.transitions.duration.leavingScreen},{"aria-describedby":i,"aria-labelledby":s,"aria-modal":l=!0,children:c,className:d,fullScreen:p=!1,fullWidth:m=!1,maxWidth:g="sm",onClick:h,onClose:b,open:y,PaperComponent:v=ul,role:S="dialog",scroll:x="paper",slots:C={},slotProps:w={},transitionDuration:k=o,...E}=n,P={...n,fullScreen:p,fullWidth:m,maxWidth:g,scroll:x},T=useUtilityClasses$34(P),R=u.useRef(),handleMouseDown=e=>{R.current=e.target===e.currentTarget},handleBackdropClick=e=>{h&&h(e),R.current&&(R.current=null,b&&b(e,"backdropClick"))},M=useId(s),D=u.useMemo(()=>({titleId:M}),[M]),O={slots:C,slotProps:w},[$,I]=useSlot("root",{elementType:xu,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:P,className:clsx(T.root,d),ref:t}),[N,L]=useSlot("backdrop",{elementType:Su,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:P,className:T.backdrop}),[j,B]=useSlot("paper",{elementType:wu,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:P,className:T.paper,additionalProps:{elevation:24,role:S,"aria-describedby":i,"aria-labelledby":M,"aria-modal":l,tabIndex:-1,[mu]:""}}),[F,q]=useSlot("container",{elementType:Cu,externalForwardedProps:O,ownerState:P,className:T.container}),[U,V]=useSlot("transition",{elementType:Ic,externalForwardedProps:O,ownerState:P,additionalProps:{appear:!0,in:y,timeout:k,role:"presentation"}});return(0,Fa.jsx)($,{closeAfterTransition:!0,slots:{backdrop:N},slotProps:{backdrop:{transitionDuration:k,...L}},onClose:b,open:y,onClick:handleBackdropClick,...I,...E,children:(0,Fa.jsx)(U,{...V,children:(0,Fa.jsx)(F,{onMouseDown:handleMouseDown,...q,children:(0,Fa.jsx)(j,{as:v,...B,children:(0,Fa.jsx)(vu.Provider,{value:D,children:c})})})})})});function getDialogActionsUtilityClass(e){return generateUtilityClass("MuiDialogActions",e)}generateUtilityClasses("MuiDialogActions",["root","spacing"]);var useUtilityClasses$33=e=>{const{classes:t,disableSpacing:n}=e;return composeClasses({root:["root",!n&&"spacing"]},getDialogActionsUtilityClass,t)},Eu=Ts("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto",variants:[{props:({ownerState:e})=>!e.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),_u=u.forwardRef(function DialogActions(e,t){const n=useDefaultProps({props:e,name:"MuiDialogActions"}),{className:a,disableSpacing:o=!1,...i}=n,s={...n,disableSpacing:o};return(0,Fa.jsx)(Eu,{className:clsx(useUtilityClasses$33(s).root,a),ownerState:s,ref:t,...i})});function getDialogContentUtilityClass(e){return generateUtilityClass("MuiDialogContent",e)}generateUtilityClasses("MuiDialogContent",["root","dividers"]);function getDialogTitleUtilityClass(e){return generateUtilityClass("MuiDialogTitle",e)}var Pu=generateUtilityClasses("MuiDialogTitle",["root"]),useUtilityClasses$32=e=>{const{classes:t,dividers:n}=e;return composeClasses({root:["root",n&&"dividers"]},getDialogContentUtilityClass,t)},Tu=Ts("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dividers&&t.dividers]}})(Is(({theme:e})=>({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px",variants:[{props:({ownerState:e})=>e.dividers,style:{padding:"16px 24px",borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>!e.dividers,style:{[`.${Pu.root} + &`]:{paddingTop:0}}}]}))),Au=u.forwardRef(function DialogContent(e,t){const n=useDefaultProps({props:e,name:"MuiDialogContent"}),{className:a,dividers:o=!1,...i}=n,s={...n,dividers:o};return(0,Fa.jsx)(Tu,{className:clsx(useUtilityClasses$32(s).root,a),ownerState:s,ref:t,...i})}),useUtilityClasses$31=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getDialogTitleUtilityClass,t)},Ru=Ts(Nl,{name:"MuiDialogTitle",slot:"Root"})({padding:"16px 24px",flex:"0 0 auto"}),Mu=u.forwardRef(function DialogTitle(e,t){const n=useDefaultProps({props:e,name:"MuiDialogTitle"}),{className:a,id:o,...i}=n,s=n,l=useUtilityClasses$31(s),{titleId:c=o}=u.useContext(vu);return(0,Fa.jsx)(Ru,{component:"h2",className:clsx(l.root,a),ownerState:s,ref:t,variant:"h6",id:o??c,...i})});function getDividerUtilityClass(e){return generateUtilityClass("MuiDivider",e)}var Du=generateUtilityClasses("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","vertical","withChildren","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),useUtilityClasses$30=e=>{const{absolute:t,children:n,classes:a,flexItem:o,orientation:i,textAlign:s,variant:l}=e;return composeClasses({root:["root",t&&"absolute",l,"vertical"===i&&"vertical",o&&"flexItem",n&&"withChildren","right"===s&&"vertical"!==i&&"textAlignRight","left"===s&&"vertical"!==i&&"textAlignLeft"],wrapper:["wrapper","vertical"===i&&"wrapperVertical"]},getDividerUtilityClass,a)},Ou=Ts("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.absolute&&t.absolute,t[n.variant],"vertical"===n.orientation&&t.vertical,n.flexItem&&t.flexItem,n.children&&t.withChildren,"right"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignRight,"left"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignLeft]}})(Is(({theme:e})=>({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(e.vars||e).palette.divider,borderBottomWidth:"thin",variants:[{props:{absolute:!0},style:{position:"absolute",bottom:0,left:0,width:"100%"}},{props:{variant:"inset"},style:{marginLeft:72}},{props:{variant:"middle",orientation:"horizontal"},style:{marginLeft:e.spacing(2),marginRight:e.spacing(2)}},{props:{variant:"middle",orientation:"vertical"},style:{marginTop:e.spacing(1),marginBottom:e.spacing(1)}},{props:{orientation:"vertical"},style:{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"}},{props:{flexItem:!0},style:{alignSelf:"stretch",height:"auto"}},{props:({ownerState:e})=>!!e.children,style:{display:"flex",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}}},{props:({ownerState:e})=>e.children&&"vertical"!==e.orientation,style:{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(e.vars||e).palette.divider}`,borderTopStyle:"inherit"}}},{props:({ownerState:e})=>"vertical"===e.orientation&&e.children,style:{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(e.vars||e).palette.divider}`,borderLeftStyle:"inherit"}}},{props:({ownerState:e})=>"right"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"90%"},"&::after":{width:"10%"}}},{props:({ownerState:e})=>"left"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"10%"},"&::after":{width:"90%"}}}]}))),$u=Ts("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.wrapper,"vertical"===n.orientation&&t.wrapperVertical]}})(Is(({theme:e})=>({display:"inline-block",paddingLeft:`calc(${e.spacing(1)} * 1.2)`,paddingRight:`calc(${e.spacing(1)} * 1.2)`,whiteSpace:"nowrap",variants:[{props:{orientation:"vertical"},style:{paddingTop:`calc(${e.spacing(1)} * 1.2)`,paddingBottom:`calc(${e.spacing(1)} * 1.2)`}}]}))),Iu=u.forwardRef(function Divider(e,t){const n=useDefaultProps({props:e,name:"MuiDivider"}),{absolute:a=!1,children:o,className:i,orientation:s="horizontal",component:l=(o||"vertical"===s?"div":"hr"),flexItem:c=!1,role:u=("hr"!==l?"separator":void 0),textAlign:d="center",variant:p="fullWidth",...m}=n,g={...n,absolute:a,component:l,flexItem:c,orientation:s,role:u,textAlign:d,variant:p},h=useUtilityClasses$30(g);return(0,Fa.jsx)(Ou,{as:l,className:clsx(h.root,i),role:u,ref:t,ownerState:g,"aria-orientation":"separator"!==u||"hr"===l&&"vertical"!==s?void 0:s,...m,children:o?(0,Fa.jsx)($u,{className:h.wrapper,ownerState:g,children:o}):null})}),useUtilityClasses$29=e=>{const{classes:t,disableUnderline:n,startAdornment:a,endAdornment:o,size:i,hiddenLabel:s,multiline:l}=e,c=composeClasses({root:["root",!n&&"underline",a&&"adornedStart",o&&"adornedEnd","small"===i&&`size${$s(i)}`,s&&"hiddenLabel",l&&"multiline"],input:["input"]},getFilledInputUtilityClass,t);return{...t,...c}},Nu=Ts(Ec,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...rootOverridesResolver(e,t),!n.disableUnderline&&t.underline]}})(Is(({theme:e})=>{const t="light"===e.palette.mode,n=t?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",a=t?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",o=t?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",i=t?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return{position:"relative",backgroundColor:e.vars?e.vars.palette.FilledInput.bg:a,borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),"&:hover":{backgroundColor:e.vars?e.vars.palette.FilledInput.hoverBg:o,"@media (hover: none)":{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:a}},[`&.${Mc.focused}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:a},[`&.${Mc.disabled}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.disabledBg:i},variants:[{props:({ownerState:e})=>!e.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${Mc.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${Mc.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${e.vars?e.alpha(e.vars.palette.common.onBackground,e.vars.opacity.inputUnderline):n}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${Mc.disabled}, .${Mc.error}):before`]:{borderBottom:`1px solid ${(e.vars||e).palette.text.primary}`},[`&.${Mc.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{disableUnderline:!1,color:t},style:{"&::after":{borderBottom:`2px solid ${(e.vars||e).palette[t]?.main}`}}})),{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:12}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:12}},{props:({ownerState:e})=>e.multiline,style:{padding:"25px 12px 8px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:e})=>e.multiline&&e.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:e})=>e.multiline&&e.hiddenLabel&&"small"===e.size,style:{paddingTop:8,paddingBottom:9}}]}})),zu=Ts(_c,{name:"MuiFilledInput",slot:"Input",overridesResolver:inputOverridesResolver})(Is(({theme:e})=>({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12,"&:-webkit-autofill":{...!e.vars&&{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff"},borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit",...e.vars&&e.applyStyles("dark",{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"})},variants:[{props:{size:"small"},style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:e})=>e.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:0}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:0}},{props:({ownerState:e})=>e.hiddenLabel&&"small"===e.size,style:{paddingTop:8,paddingBottom:9}},{props:({ownerState:e})=>e.multiline,style:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0}}]}))),Lu=u.forwardRef(function FilledInput(e,t){const n=useDefaultProps({props:e,name:"MuiFilledInput"}),{disableUnderline:a=!1,fullWidth:o=!1,hiddenLabel:i,inputComponent:s="input",multiline:l=!1,notched:c,slotProps:u,slots:d={},type:p="text",...m}=n,g={...n,disableUnderline:a,fullWidth:o,inputComponent:s,multiline:l,type:p},h=useUtilityClasses$29(n),b={root:{ownerState:g},input:{ownerState:g}},y=u?deepmerge(b,u):b;return(0,Fa.jsx)(Tc,{slots:{root:d.root??Nu,input:d.input??zu},slotProps:y,fullWidth:o,inputComponent:s,multiline:l,ref:t,type:p,...m,classes:h})});function getFormControlUtilityClasses(e){return generateUtilityClass("MuiFormControl",e)}Lu.muiName="Input";generateUtilityClasses("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);var useUtilityClasses$28=e=>{const{classes:t,margin:n,fullWidth:a}=e;return composeClasses({root:["root","none"!==n&&`margin${$s(n)}`,a&&"fullWidth"]},getFormControlUtilityClasses,t)},ju=Ts("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`margin${$s(n.margin)}`],n.fullWidth&&t.fullWidth]}})({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top",variants:[{props:{margin:"normal"},style:{marginTop:16,marginBottom:8}},{props:{margin:"dense"},style:{marginTop:8,marginBottom:4}},{props:{fullWidth:!0},style:{width:"100%"}}]}),Bu=u.forwardRef(function FormControl(e,t){const n=useDefaultProps({props:e,name:"MuiFormControl"}),{children:a,className:o,color:i="primary",component:s="div",disabled:l=!1,error:c=!1,focused:d,fullWidth:p=!1,hiddenLabel:m=!1,margin:g="none",required:h=!1,size:b="medium",variant:y="outlined",...v}=n,S={...n,color:i,component:s,disabled:l,error:c,fullWidth:p,hiddenLabel:m,margin:g,required:h,size:b,variant:y},x=useUtilityClasses$28(S),[C,w]=u.useState(()=>{let e=!1;return a&&u.Children.forEach(a,t=>{if(!js(t,["Input","Select"]))return;const n=js(t,["Select"])?t.props.input:t;n&&isAdornedStart(n.props)&&(e=!0)}),e}),[k,E]=u.useState(()=>{let e=!1;return a&&u.Children.forEach(a,t=>{js(t,["Input","Select"])&&(isFilled(t.props,!0)||isFilled(t.props.inputProps,!0))&&(e=!0)}),e}),[P,T]=u.useState(!1);l&&P&&T(!1);const R=void 0===d||l?P:d;let M;u.useRef(!1);const D=u.useCallback(()=>{E(!0)},[]),O=u.useCallback(()=>{E(!1)},[]),$=u.useMemo(()=>({adornedStart:C,setAdornedStart:w,color:i,disabled:l,error:c,filled:k,focused:R,fullWidth:p,hiddenLabel:m,size:b,onBlur:()=>{T(!1)},onFocus:()=>{T(!0)},onEmpty:O,onFilled:D,registerEffect:M,required:h,variant:y}),[C,i,l,c,k,R,p,m,M,O,D,h,b,y]);return(0,Fa.jsx)(Sc.Provider,{value:$,children:(0,Fa.jsx)(ju,{as:s,ownerState:S,className:clsx(x.root,o),ref:t,...v,children:a})})});function getFormControlLabelUtilityClasses(e){return generateUtilityClass("MuiFormControlLabel",e)}var Fu=generateUtilityClasses("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]),useUtilityClasses$27=e=>{const{classes:t,disabled:n,labelPlacement:a,error:o,required:i}=e;return composeClasses({root:["root",n&&"disabled",`labelPlacement${$s(a)}`,o&&"error",i&&"required"],label:["label",n&&"disabled"],asterisk:["asterisk",o&&"error"]},getFormControlLabelUtilityClasses,t)},qu=Ts("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${Fu.label}`]:t.label},t.root,t[`labelPlacement${$s(n.labelPlacement)}`]]}})(Is(({theme:e})=>({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,[`&.${Fu.disabled}`]:{cursor:"default"},[`& .${Fu.label}`]:{[`&.${Fu.disabled}`]:{color:(e.vars||e).palette.text.disabled}},variants:[{props:{labelPlacement:"start"},style:{flexDirection:"row-reverse",marginRight:-11}},{props:{labelPlacement:"top"},style:{flexDirection:"column-reverse"}},{props:{labelPlacement:"bottom"},style:{flexDirection:"column"}},{props:({labelPlacement:e})=>"start"===e||"top"===e||"bottom"===e,style:{marginLeft:16}}]}))),Uu=Ts("span",{name:"MuiFormControlLabel",slot:"Asterisk"})(Is(({theme:e})=>({[`&.${Fu.error}`]:{color:(e.vars||e).palette.error.main}}))),Vu=u.forwardRef(function FormControlLabel(e,t){const n=useDefaultProps({props:e,name:"MuiFormControlLabel"}),{checked:a,className:o,control:i,disabled:s,disableTypography:l,inputRef:c,label:d,labelPlacement:p="end",name:m,onChange:g,required:h,slots:b={},slotProps:y={},value:v,...S}=n,[x,C]=useFormControlState({props:n,states:["error"]}),w=s??i.props.disabled??C?.disabled,k=h??i.props.required,E={disabled:w,required:k};["checked","name","onChange","value","inputRef"].forEach(e=>{void 0===i.props[e]&&void 0!==n[e]&&(E[e]=n[e])});const P={...n,disabled:w,labelPlacement:p,required:k,error:x.error},T=useUtilityClasses$27(P),[R,M]=useSlot("typography",{elementType:Nl,externalForwardedProps:{slots:b,slotProps:y},ownerState:P});let D=d;return null==D||D.type===Nl||l||(D=(0,Fa.jsx)(R,{component:"span",...M,className:clsx(T.label,M?.className),children:D})),(0,Fa.jsxs)(qu,{className:clsx(T.root,o),ownerState:P,ref:t,...S,children:[u.cloneElement(i,E),k?(0,Fa.jsxs)("div",{children:[D,(0,Fa.jsxs)(Uu,{ownerState:P,"aria-hidden":!0,className:T.asterisk,children:[" ","*"]})]}):D]})});function getFormHelperTextUtilityClasses(e){return generateUtilityClass("MuiFormHelperText",e)}var Hu,Wu=generateUtilityClasses("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]),useUtilityClasses$26=e=>{const{classes:t,contained:n,size:a,disabled:o,error:i,filled:s,focused:l,required:c}=e;return composeClasses({root:["root",o&&"disabled",i&&"error",a&&`size${$s(a)}`,n&&"contained",l&&"focused",s&&"filled",c&&"required"]},getFormHelperTextUtilityClasses,t)},Gu=Ts("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.size&&t[`size${$s(n.size)}`],n.contained&&t.contained,n.filled&&t.filled]}})(Is(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.caption,textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${Wu.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${Wu.error}`]:{color:(e.vars||e).palette.error.main},variants:[{props:{size:"small"},style:{marginTop:4}},{props:({ownerState:e})=>e.contained,style:{marginLeft:14,marginRight:14}}]}))),Yu=u.forwardRef(function FormHelperText(e,t){const n=useDefaultProps({props:e,name:"MuiFormHelperText"}),{children:a,className:o,component:i="p",disabled:s,error:l,filled:c,focused:u,margin:d,required:p,variant:m,...g}=n,[h]=useFormControlState({props:n,states:["variant","size","disabled","error","filled","focused","required"]}),b={...n,component:i,contained:"filled"===h.variant||"outlined"===h.variant,variant:h.variant,size:h.size,disabled:h.disabled,error:h.error,filled:h.filled,focused:h.focused,required:h.required};return delete b.ownerState,(0,Fa.jsx)(Gu,{as:i,className:clsx(useUtilityClasses$26(b).root,o),ref:t,...g,ownerState:b,children:" "===a?Hu||(Hu=(0,Fa.jsx)("span",{className:"notranslate","aria-hidden":!0,children:"​"})):a})});function getFormLabelUtilityClasses(e){return generateUtilityClass("MuiFormLabel",e)}var Ku=generateUtilityClasses("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),useUtilityClasses$25=e=>{const{classes:t,color:n,focused:a,disabled:o,error:i,filled:s,required:l}=e;return composeClasses({root:["root",`color${$s(n)}`,o&&"disabled",i&&"error",s&&"filled",a&&"focused",l&&"required"],asterisk:["asterisk",i&&"error"]},getFormLabelUtilityClasses,t)},Qu=Ts("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"secondary"===n.color&&t.colorSecondary,n.filled&&t.filled]}})(Is(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.body1,lineHeight:"1.4375em",padding:0,position:"relative",variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&.${Ku.focused}`]:{color:(e.vars||e).palette[t].main}}})),{props:{},style:{[`&.${Ku.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${Ku.error}`]:{color:(e.vars||e).palette.error.main}}}]}))),Zu=Ts("span",{name:"MuiFormLabel",slot:"Asterisk"})(Is(({theme:e})=>({[`&.${Ku.error}`]:{color:(e.vars||e).palette.error.main}}))),Xu=u.forwardRef(function FormLabel(e,t){const n=useDefaultProps({props:e,name:"MuiFormLabel"}),{children:a,className:o,color:i,component:s="label",disabled:l,error:c,filled:u,focused:d,required:p,...m}=n,[g]=useFormControlState({props:n,states:["color","required","focused","disabled","error","filled"]}),h={...n,color:g.color||"primary",component:s,disabled:g.disabled,error:g.error,filled:g.filled,focused:g.focused,required:g.required},b=useUtilityClasses$25(h);return(0,Fa.jsxs)(Qu,{as:s,ownerState:h,className:clsx(b.root,o),ref:t,...m,children:[a,g.required&&(0,Fa.jsxs)(Zu,{ownerState:h,"aria-hidden":!0,className:b.asterisk,children:[" ","*"]})]})});function getScale(e){return`scale(${e}, ${e**2})`}var Ju={entering:{opacity:1,transform:getScale(1)},entered:{opacity:1,transform:"none"},exiting:{opacity:0,transform:getScale(.75)},exited:{opacity:0,transform:getScale(.75)}},ed={opacity:0,transform:getScale(.75),visibility:"hidden"},td=u.forwardRef(function Grow(e,t){const{addEndListener:n,appear:a=!0,children:o,easing:i,in:s,onEnter:l,onEntered:c,onEntering:d,onExit:p,onExited:m,onExiting:g,style:h,timeout:b="auto",...y}=e,v=useTimeout(),S=u.useRef(),x=useTheme(),C=u.useRef(null),w=Gs(C,getReactElementRef(o),t),k=normalizedTransitionCallback(C,d),E=normalizedTransitionCallback(C,(e,t)=>{reflow(e);const{duration:n,delay:a,easing:o}=getTransitionProps({style:h,timeout:b,easing:i},{mode:"enter"});let s;"auto"===b?(s=x.transitions.getAutoHeightDuration(e.clientHeight),S.current=s):s=n,e.style.transition=[x.transitions.create("opacity",{duration:s,delay:a}),x.transitions.create("transform",{duration:.666*s,delay:a,easing:o})].join(","),l&&l(e,t)}),P=normalizedTransitionCallback(C,c),T=normalizedTransitionCallback(C,g),R=normalizedTransitionCallback(C,e=>{const{duration:t,delay:n,easing:a}=getTransitionProps({style:h,timeout:b,easing:i},{mode:"exit"});let o;"auto"===b?(o=x.transitions.getAutoHeightDuration(e.clientHeight),S.current=o):o=t,e.style.transition=[x.transitions.create("opacity",{duration:o,delay:n}),x.transitions.create("transform",{duration:.666*o,delay:n||.333*o,easing:a})].join(","),e.style.opacity=0,e.style.transform=getScale(.75),p&&p(e)}),M=normalizedTransitionCallback(C,e=>{e.style.transition="",m&&m(e)}),handleAddEndListener=e=>{"auto"===b&&v.start(S.current||0,e),n&&n(C.current,e)};return(0,Fa.jsx)(rl,{appear:a,in:s,nodeRef:C,onEnter:E,onEntered:P,onEntering:k,onExit:R,onExited:M,onExiting:T,addEndListener:handleAddEndListener,timeout:"auto"===b?null:b,...y,children:(e,{ownerState:t,...n})=>{const a=getTransitionChildStyle(e,s,Ju,ed,h,o.props.style);return u.cloneElement(o,{style:a,ref:w,...n})}})});function getInputLabelUtilityClasses(e){return generateUtilityClass("MuiInputLabel",e)}td&&(td.muiSupportAuto=!0);var rd=generateUtilityClasses("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]),useUtilityClasses$24=e=>{const{classes:t,disableUnderline:n}=e,a=composeClasses({root:["root",!n&&"underline"],input:["input"]},getInputUtilityClass,t);return{...t,...a}},nd=Ts(Ec,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...rootOverridesResolver(e,t),!n.disableUnderline&&t.underline]}})(Is(({theme:e})=>{let t="light"===e.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return e.vars&&(t=e.alpha(e.vars.palette.common.onBackground,e.vars.opacity.inputUnderline)),{position:"relative",variants:[{props:({ownerState:e})=>e.formControl,style:{[`label + &, .${rd.root} + &`]:{marginTop:16}}},{props:({ownerState:e})=>!e.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${Ac.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${Ac.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${t}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${Ac.disabled}, .${Ac.error}):before`]:{borderBottom:`2px solid ${(e.vars||e).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${t}`}},[`&.${Ac.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t,disableUnderline:!1},style:{"&::after":{borderBottom:`2px solid ${(e.vars||e).palette[t].main}`}}}))]}})),ad=Ts(_c,{name:"MuiInput",slot:"Input",overridesResolver:inputOverridesResolver})({}),od=u.forwardRef(function Input(e,t){const n=useDefaultProps({props:e,name:"MuiInput"}),{disableUnderline:a=!1,fullWidth:o=!1,inputComponent:i="input",multiline:s=!1,notched:l,slotProps:c,slots:u={},type:d="text",...p}=n,m=useUtilityClasses$24(n),g={root:{ownerState:{disableUnderline:a}}},h=c?deepmerge(c,g):g;return(0,Fa.jsx)(Tc,{slots:{root:u.root??nd,input:u.input??ad},slotProps:h,fullWidth:o,inputComponent:i,multiline:s,ref:t,type:d,...p,classes:m})});od.muiName="Input";var useUtilityClasses$23=e=>{const{classes:t,formControl:n,size:a,shrink:o,disableAnimation:i,variant:s,required:l}=e,c=composeClasses({root:["root",n&&"formControl",!i&&"animated",o&&"shrink",a&&"medium"!==a&&`size${$s(a)}`,s],asterisk:[l&&"asterisk"]},getInputLabelUtilityClasses,t);return{...t,...c}},id=Ts(Xu,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${Ku.asterisk}`]:t.asterisk},t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,n.focused&&t.focused,t[n.variant]]}})(Is(({theme:e})=>({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",variants:[{props:({ownerState:e})=>e.formControl,style:{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"}},{props:{size:"small"},style:{transform:"translate(0, 17px) scale(1)"}},{props:({ownerState:e})=>e.shrink,style:{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"}},{props:({ownerState:e})=>!e.disableAnimation,style:{transition:e.transitions.create(["color","transform","max-width"],{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut})}},{props:{variant:"filled"},style:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"filled",size:"small"},style:{transform:"translate(12px, 13px) scale(1)"}},{props:({variant:e,ownerState:t})=>"filled"===e&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"}},{props:({variant:e,ownerState:t,size:n})=>"filled"===e&&t.shrink&&"small"===n,style:{transform:"translate(12px, 4px) scale(0.75)"}},{props:{variant:"outlined"},style:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"outlined",size:"small"},style:{transform:"translate(14px, 9px) scale(1)"}},{props:({variant:e,ownerState:t})=>"outlined"===e&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}}]}))),sd=u.forwardRef(function InputLabel(e,t){const n=useDefaultProps({name:"MuiInputLabel",props:e}),{disableAnimation:a=!1,margin:o,shrink:i,variant:s,className:l,...c}=n,[u,d]=useFormControlState({props:n,states:["size","variant","required","focused"]});let p=i;void 0===p&&d&&(p=d.filled||d.focused||d.adornedStart);const m={...n,disableAnimation:a,formControl:d,shrink:p,size:u.size,variant:u.variant,required:u.required,focused:u.focused},g=useUtilityClasses$23(m);return(0,Fa.jsx)(id,{"data-shrink":p,ref:t,className:clsx(g.root,l),...c,ownerState:m,classes:g})}),ld=u.createContext({});function getListUtilityClass(e){return generateUtilityClass("MuiList",e)}generateUtilityClasses("MuiList",["root","padding","dense","subheader"]);var useUtilityClasses$22=e=>{const{classes:t,disablePadding:n,dense:a,subheader:o}=e;return composeClasses({root:["root",!n&&"padding",a&&"dense",o&&"subheader"]},getListUtilityClass,t)},cd=Ts("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})({listStyle:"none",margin:0,padding:0,position:"relative",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>e.subheader,style:{paddingTop:0,isolation:"isolate"}}]}),ud=u.forwardRef(function List(e,t){const n=useDefaultProps({props:e,name:"MuiList"}),{children:a,className:o,component:i="ul",dense:s=!1,disablePadding:l=!1,subheader:c,...d}=n,p=u.useMemo(()=>({dense:s}),[s]),m={...n,component:i,dense:s,disablePadding:l},g=useUtilityClasses$22(m);return(0,Fa.jsx)(ld.Provider,{value:p,children:(0,Fa.jsxs)(cd,{as:i,className:clsx(g.root,o),ref:t,ownerState:m,...d,children:[c,a]})})}),dd=generateUtilityClasses("MuiListItemIcon",["root","alignItemsFlexStart"]),pd=generateUtilityClasses("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]),md=u.createContext(void 0);function useRovingTabIndexContext(){const e=u.useContext(md);if(void 0===e)throw new Error("MUI: RovingTabIndexContext is missing. Roving tab index items must be placed within a roving tab index provider.");return e}var fd=Object.is;function fastObjectShallowCompare(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let n=0,a=0;for(const o in e){if(n+=1,!fd(e[o],t[o]))return!1;if(!(o in t))return!1}for(const o in t)a+=1;return n===a}var gd=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown","Home","End"];function useRovingTabIndexRoot(e){const{activeItemId:t,getDefaultActiveItemId:n,orientation:a,isRtl:o=!1,isItemFocusable:i=isItemFocusable,wrap:s=!0}=e,[l,c]=u.useState(t),d=u.useRef(t);let p=l;t!==d.current&&(d.current=t,void 0!==t&&t!==l&&(p=t,c(t)));const m=u.useRef(null),g=u.useRef(new Map),[h,b]=u.useState(0),y=resolveActiveItemId(p,u.useMemo(()=>getOrderedItems(g.current),[h]),i,n),v=u.useRef(y);v.current=y;const S=u.useCallback(()=>{const e=getOrderedItems(g.current);return getItemById(e,resolveActiveItemId(v.current,e,i,n))},[n,i]),x=u.useCallback(()=>g.current,[]),C=useEventCallback(e=>{fastObjectShallowCompare(g.current.get(e.id)??null,e)||(g.current.set(e.id,e),b(e=>e+1))}),w=useEventCallback(e=>{g.current.delete(e)&&b(e=>e+1)}),k=useEventCallback(e=>{c(e)}),E=u.useCallback(e=>v.current===e,[]),P=u.useCallback((e,t,n,a)=>{const o=getNextActiveItem(getNavigableItemsSnapshot(g.current),e,t,n,a??i);return o?(o.element?.focus(),c(o.id),o):null},[i]),T=u.useCallback(e=>({onFocus:e=>{const t=getNavigableItemsSnapshot(g.current),n=findItemIndexByElement(t,e.target);-1!==n&&c(t[n].id)},onKeyDown:e=>{if(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)return;if(!gd.includes(e.key))return;let t="horizontal"===a?"ArrowLeft":"ArrowUp",n="horizontal"===a?"ArrowRight":"ArrowDown";"horizontal"===a&&o&&(t="ArrowRight",n="ArrowLeft");const i=getNavigableItemsSnapshot(g.current),l=activeElement(ownerDocument(m.current)),c=l===m.current;let u=getCurrentActiveItemIndex(i,l,v.current),d="next";switch(e.key){case t:d="previous",e.preventDefault(),c&&(u=i.length);break;case n:e.preventDefault(),c&&(u=-1);break;case"Home":e.preventDefault(),u=-1;break;case"End":e.preventDefault(),d="previous",u=i.length;break;default:return}P(u,d,s)},ref:handleRefs(e,e=>{m.current=e})}),[P,o,a,s]),R=u.useCallback(e=>{const t=getNavigableItemsSnapshot(g.current),n=activeElement(ownerDocument(m.current));return P(n===m.current?-1:getCurrentActiveItemIndex(t,n,v.current),"next",!0,e)?.id??null},[P]);return u.useMemo(()=>({activeItemId:y,focusNext:R,getActiveItem:S,getContainerProps:T,getItemMap:x,isItemActive:E,registerItem:C,setActiveItemId:k,unregisterItem:w}),[y,R,S,T,x,E,C,k,w])}function useRovingTabIndexItem(e){const{activeItemId:t,registerItem:n,unregisterItem:a}=useRovingTabIndexContext(),o=u.useRef(null),i=u.useMemo(()=>({disabled:e.disabled??!1,element:null,focusableWhenDisabled:e.focusableWhenDisabled??!1,id:e.id,selected:e.selected??!1,textValue:e.textValue}),[e.disabled,e.focusableWhenDisabled,e.id,e.selected,e.textValue]),s=u.useRef(i);s.current=i;const l=u.useCallback(t=>{o.current=t,null!=t?n({...s.current,element:t}):queueMicrotask(()=>{null==o.current&&a(e.id)})},[e.id,n,a]),c=useForkRef(e.ref,l);return ts(()=>{o.current&&n({...i,element:o.current})},[i,n]),ts(()=>{const t=e.id;return()=>{a(t)}},[e.id,a]),{ref:c,tabIndex:t===e.id?0:-1}}function resolveActiveItemId(e,t,n,a){return null!=e?resolveRequestedItemId(e,t,n):resolveDefaultItemId(t,n,a)}function resolveRequestedItemId(e,t,n){const a=findItemIndexById(t,e);return-1===a?getFirstFocusableItemId(t,n):n(t[a])?t[a].id:getNextActiveItem(t,a,"next",!1,n)?.id??null}function resolveDefaultItemId(e,t,n){const a=n?.(e);if(null!=a){const n=getItemById(e,a);if(n&&t(n))return n.id}return getFirstFocusableItemId(e,t)}function getCurrentActiveItemIndex(e,t,n){if(t){const n=findItemIndexByElement(e,t);if(-1!==n)return n}return findItemIndexById(e,n)}function getNextActiveItem(e,t,n,a,o){const i=e.length-1;if(-1===i)return null;let s=!1,l=getNextIndex(t,i,n,a);const c=l;for(;-1!==l;){if(l===c){if(s)return null;s=!0}const t=e[l];if(t&&o(t))return t;l=getNextIndex(l,i,n,a)}return null}function getFirstFocusableItemId(e,t){return e.find(e=>t(e))?.id??null}function getItemById(e,t){return null==t?null:e.find(e=>e.id===t)??null}function findItemIndexById(e,t){return null==t?-1:e.findIndex(e=>e.id===t)}function findItemIndexByElement(e,t){return t?e.findIndex(e=>e.element===t||e.element?.contains(t)):-1}function getOrderedItems(e){const t=Array.from(e.values());if(t.every(e=>null==e.element))return t;return[...t.filter(isConnectedItem).sort((e,t)=>sortByDocumentPosition(e.element,t.element)),...t.filter(e=>!isConnectedItem(e))]}function getNavigableItemsSnapshot(e){return getOrderedItems(e).filter(isConnectedItem)}function getNextIndex(e,t,n,a=!0){return"next"===n?e===t?a?0:-1:e+1:0===e?a?t:-1:e-1}function isItemFocusable(e){return!!e.element&&(!!e.focusableWhenDisabled||!e.disabled&&!e.element.hasAttribute("disabled")&&"true"!==e.element.getAttribute("aria-disabled")&&e.element.hasAttribute("tabindex"))}function isConnectedItem(e){return null!=e.element&&e.element.isConnected}function sortByDocumentPosition(e,t){if(e===t)return 0;const n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0}function handleRefs(...e){return t=>{e.forEach(e=>{setRef(e??null,t)})}}var hd=getScrollbarSize;function focusWithVisible(e,t){if(null!=t)try{e.focus({focusVisible:"keyboard"===t})}catch(n){e.focus()}else e.focus()}function getOpenInteractionType(e){return e?"mousedown"===e.type||"pointerdown"===e.type||"touchstart"===e.type?"pointer":"keydown"===e.type||"click"===e.type&&0===e.detail?"keyboard":null:null}function isEmpty(e){return null==e||"string"==typeof e&&!e.trim()}function areEqualValues(e,t){return"object"==typeof t&&null!==t?e===t:String(e)===String(t)}var bd=u.createContext(null);function useSelectFocusSource(){return u.useContext(bd)}var yd=bd.Provider,vd=u.createContext(void 0);function useMenuListContext(){const e=u.useContext(vd);if(void 0===e)throw new Error("MUI: MenuListContext is missing. MenuItems must be placed within Menu or MenuList.");return e}function getItemText(e){const t=e?.element??e;if(!t)return"";if(void 0!==e?.textValue)return e.textValue;let n=t.innerText;return void 0===n&&(n=t.textContent),n??""}function textCriteriaMatches(e,t){if(void 0===t)return!0;let n=getItemText(e);return n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:n.startsWith(t.keys.join("")))}function isItemFocusableWithTextCriteria(e,t){return!!textCriteriaMatches(e,t)&&isItemFocusable(e)}function focusInitialItem(e,t){focusWithVisible(e,t)}var Sd=u.forwardRef(function MenuList(e,t){const{actions:n,autoFocus:a=!1,autoFocusItem:o=!1,children:i,className:s,disabledItemsFocusable:l=!1,disableListWrap:c=!1,onKeyDown:d,variant:p="selectedMenu",...m}=e,g=u.useRef(null),h=u.useRef(!1),[b,y]=u.useState(!1),v=useSelectFocusSource(),S=u.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null}),x=useRovingTabIndexRoot({activeItemId:void 0,getDefaultActiveItemId:u.useCallback(e=>"selectedMenu"===p?e.find(e=>e.selected&&isItemFocusable(e))?.id??e.find(e=>isItemFocusable(e))?.id??null:e.find(e=>isItemFocusable(e))?.id??null,[p]),orientation:"vertical",wrap:!c}),{activeItemId:C,focusNext:w,getActiveItem:k,getContainerProps:E,getItemMap:P}=x,T=Ws((e=!1)=>{if(!g.current||!e&&h.current)return null;if(o){const e=k();if(e?.element){const t=Array.from(P().values()).some(e=>e.selected);return y("menu"===p&&t&&!e.selected&&null==v),focusInitialItem(e.element,v),h.current=!0,e.element}return a?(y(!1),g.current.focus(),g.current):null}return a?(y(!1),g.current.focus(),h.current=!0,g.current):(y(!1),null)});Us(()=>{if(!a&&!o)return h.current=!1,void y(!1);T()},[C,o,a,T]),u.useImperativeHandle(n,()=>({adjustStyleForScrollbar:(e,{direction:t})=>{const n=!g.current.style.width;if(e.clientHeight<g.current.clientHeight&&n){const n=`${hd(qs(e))}px`;g.current.style["rtl"===t?"paddingLeft":"paddingRight"]=n,g.current.style.width=`calc(100% + ${n})`}return g.current},focusInitialTarget:()=>{if(!g.current)return null;const e=Bs(Fs(g.current));return e&&pu(g.current,e)?e:T(!0)}}),[T]);const R=E(),M=Gs(g,R.ref,t),D=u.useMemo(()=>({itemsFocusableWhenDisabled:l,suppressInitialFocusVisible:b,variant:p}),[l,b,p]);return(0,Fa.jsx)(ud,{role:"menu",ref:M,className:s,onKeyDown:Ws(e=>{if(b&&y(!1),(e.ctrlKey||e.metaKey||e.altKey)&&d)d(e);else{if(R.onKeyDown(e),1===e.key.length){const t=S.current,n=e.key.toLowerCase(),a=performance.now();t.keys.length>0&&(a-t.lastTime>500?(t.keys=[],t.repeating=!0,t.previousKeyMatched=!0):t.repeating&&n!==t.keys[0]&&(t.repeating=!1)),t.lastTime=a,t.keys.push(n);const o=Bs(Fs(g.current)),i=o&&!t.repeating&&textCriteriaMatches(o,t);t.previousKeyMatched&&(i||null!=w(e=>isItemFocusableWithTextCriteria(e,t)))?e.preventDefault():t.previousKeyMatched=!1}d&&d(e)}}),onFocus:R.onFocus,tabIndex:-1,...m,children:(0,Fa.jsx)(vd.Provider,{value:D,children:(0,Fa.jsx)(md.Provider,{value:x,children:i})})})});function getPopoverUtilityClass(e){return generateUtilityClass("MuiPopover",e)}generateUtilityClasses("MuiPopover",["root","paper"]);function getOffsetTop(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function getOffsetLeft(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function getTransformOriginValue(e){return[e.horizontal,e.vertical].map(e=>"number"==typeof e?`${e}px`:e).join(" ")}function resolveAnchorEl(e){return"function"==typeof e?e():e}var useUtilityClasses$21=e=>{const{classes:t}=e;return composeClasses({root:["root"],paper:["paper"]},getPopoverUtilityClass,t)},xd=Ts(yu,{name:"MuiPopover",slot:"Root"})({}),Cd=Ts(ul,{name:"MuiPopover",slot:"Paper"})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),wd=u.forwardRef(function Popover(e,t){const n=useDefaultProps({props:e,name:"MuiPopover"}),{action:a,anchorEl:o,anchorOrigin:i={vertical:"top",horizontal:"left"},anchorPosition:s,anchorReference:l="anchorEl",children:c,className:d,container:p,disableAutoFocus:m=!1,elevation:g=8,marginThreshold:h=16,open:b,slots:y={},slotProps:v={},transformOrigin:S={vertical:"top",horizontal:"left"},transitionDuration:x="auto",disableScrollLock:C=!1,...w}=n,k=u.useRef(),E={...n,anchorOrigin:i,anchorReference:l,elevation:g,marginThreshold:h,transformOrigin:S,transitionDuration:x},P=useUtilityClasses$21(E),T=u.useCallback(()=>{if("anchorPosition"===l)return s;const e=resolveAnchorEl(o),t=(e&&1===e.nodeType?e:Fs(k.current).body).getBoundingClientRect();return{top:t.top+getOffsetTop(t,i.vertical),left:t.left+getOffsetLeft(t,i.horizontal)}},[o,i.horizontal,i.vertical,s,l]),R=u.useCallback(e=>({vertical:getOffsetTop(e,S.vertical),horizontal:getOffsetLeft(e,S.horizontal)}),[S.horizontal,S.vertical]),M=u.useCallback(e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=R(t);if("none"===l)return{top:null,left:null,transformOrigin:getTransformOriginValue(n)};const a=T();let i=a.top-n.vertical,s=a.left-n.horizontal;const c=i+t.height,u=s+t.width,d=qs(resolveAnchorEl(o)),p=d.innerHeight-h,m=d.innerWidth-h;if(null!=h&&i<h){const e=i-h;i-=e,n.vertical+=e}else if(null!=h&&c>p){const e=c-p;i-=e,n.vertical+=e}if(null!=h&&s<h){const e=s-h;s-=e,n.horizontal+=e}else if(u>m){const e=u-m;s-=e,n.horizontal+=e}return{top:`${Math.round(i)}px`,left:`${Math.round(s)}px`,transformOrigin:getTransformOriginValue(n)}},[o,l,T,R,h]),[D,O]=u.useState(b),$=u.useCallback(()=>{const e=k.current;if(!e)return;const t=M(e);null!=t.top&&e.style.setProperty("top",t.top),null!=t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,O(!0)},[M]);u.useEffect(()=>(C&&window.addEventListener("scroll",$),()=>window.removeEventListener("scroll",$)),[o,C,$]);const handleEntering=()=>{$()},handleExited=()=>{O(!1)};u.useEffect(()=>{b&&$()}),u.useImperativeHandle(a,()=>b?{updatePosition:()=>{$()}}:null,[b,$]),u.useEffect(()=>{if(!b)return;const e=Ls(()=>{$()}),t=qs(resolveAnchorEl(o));return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[o,b,$]);let I=x;const N={slots:y,slotProps:v},[L,j]=useSlot("transition",{elementType:td,externalForwardedProps:N,ownerState:E,getSlotProps:e=>({...e,onEntering:(t,n)=>{e.onEntering?.(t,n),handleEntering()},onExited:t=>{e.onExited?.(t),handleExited()}}),additionalProps:{appear:!0,in:b}});"auto"!==x||L.muiSupportAuto||(I=void 0);const B=p||(o?Fs(resolveAnchorEl(o)).body:void 0),[F,{slots:q,slotProps:U,...V}]=useSlot("root",{ref:t,elementType:xd,externalForwardedProps:{...N,...w},shouldForwardComponentProp:!0,additionalProps:{slots:{backdrop:y.backdrop},slotProps:{backdrop:mergeSlotProps$1("function"==typeof v.backdrop?v.backdrop(E):v.backdrop,{invisible:!0})},container:B,open:b},ownerState:E,className:clsx(P.root,d)}),[H,W]=useSlot("paper",{ref:k,className:P.paper,elementType:Cd,externalForwardedProps:N,shouldForwardComponentProp:!0,additionalProps:{elevation:g,style:D?void 0:{opacity:0}},ownerState:E});return(0,Fa.jsx)(F,{...V,...!isHostComponent(F)&&{slots:q,slotProps:U,disableAutoFocus:m,disableScrollLock:C},children:(0,Fa.jsx)(L,{...j,timeout:I,children:(0,Fa.jsx)(H,{...W,children:c})})})});function getMenuUtilityClass(e){return generateUtilityClass("MuiMenu",e)}generateUtilityClasses("MuiMenu",["root","paper","list"]);var kd={vertical:"top",horizontal:"right"},Ed={vertical:"top",horizontal:"left"},useUtilityClasses$20=e=>{const{classes:t}=e;return composeClasses({root:["root"],paper:["paper"],list:["list"]},getMenuUtilityClass,t)},_d=Ts(wd,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiMenu",slot:"Root"})({}),Pd=Ts(Cd,{name:"MuiMenu",slot:"Paper"})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),Td=Ts(Sd,{name:"MuiMenu",slot:"List"})({outline:0}),Ad=u.forwardRef(function Menu(e,t){const n=useDefaultProps({props:e,name:"MuiMenu"}),{autoFocus:a=!0,children:o,className:i,disableAutoFocusItem:s=!1,onClose:l,open:c,PopoverClasses:d,transitionDuration:p="auto",variant:m="selectedMenu",slots:g={},slotProps:h={},...b}=n,y=useRtl(),v={...n,autoFocus:a,disableAutoFocusItem:s,transitionDuration:p,variant:m},S=useUtilityClasses$20(v),x=a&&c,C=x&&!s,w=u.useRef(null),handleEntering=(e,t)=>{w.current&&(w.current.adjustStyleForScrollbar(e,{direction:y?"rtl":"ltr"}),x&&w.current.focusInitialTarget?.())},handleListKeyDown=e=>{"Tab"===e.key&&(e.preventDefault(),l&&l(e,"tabKeyDown"))},k={slots:g,slotProps:h},E=useSlotProps({elementType:g.root,externalSlotProps:h.root,ownerState:v,className:[S.root,i]}),[P,T]=useSlot("paper",{className:S.paper,elementType:Pd,externalForwardedProps:k,shouldForwardComponentProp:!0,ownerState:v}),[R,M]=useSlot("list",{className:S.list,elementType:Td,shouldForwardComponentProp:!0,externalForwardedProps:k,getSlotProps:e=>({...e,onKeyDown:t=>{handleListKeyDown(t),e.onKeyDown?.(t)}}),ownerState:v}),D="function"==typeof h.transition?h.transition(v):h.transition;return(0,Fa.jsx)(_d,{disableAutoFocus:a,onClose:l,anchorOrigin:{vertical:"bottom",horizontal:y?"right":"left"},transformOrigin:y?kd:Ed,slots:{root:g.root,paper:P,backdrop:g.backdrop,transition:g.transition},slotProps:{root:E,paper:T,backdrop:"function"==typeof h.backdrop?h.backdrop(v):h.backdrop,transition:{...D,onEntering:(...e)=>{handleEntering(...e),D?.onEntering?.(...e)}}},open:c,ref:t,transitionDuration:p,ownerState:v,...b,classes:d,children:(0,Fa.jsx)(R,{actions:w,autoFocus:x,autoFocusItem:C,variant:m,...M,children:o})})});function getMenuItemUtilityClass(e){return generateUtilityClass("MuiMenuItem",e)}var Rd=generateUtilityClasses("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),overridesResolver=(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]},useUtilityClasses$19=e=>{const{disabled:t,dense:n,divider:a,disableGutters:o,selected:i,classes:s}=e,l=composeClasses({root:["root",n&&"dense",t&&"disabled",!o&&"gutters",a&&"divider",i&&"selected"]},getMenuItemUtilityClass,s);return{...s,...l}},Md=Ts(wl,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver})(Is(({theme:e})=>({...e.typography.body1,display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap","&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${Rd.selected}`]:{backgroundColor:e.alpha((e.vars||e).palette.primary.main,(e.vars||e).palette.action.selectedOpacity),[`&.${Rd.focusVisible}`]:{backgroundColor:e.alpha((e.vars||e).palette.primary.main,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.focusOpacity}`)}},[`&.${Rd.selected}:hover`]:{backgroundColor:e.alpha((e.vars||e).palette.primary.main,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.hoverOpacity}`),"@media (hover: none)":{backgroundColor:e.alpha((e.vars||e).palette.primary.main,(e.vars||e).palette.action.selectedOpacity)}},[`&.${Rd.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${Rd.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${Du.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${Du.inset}`]:{marginLeft:52},[`& .${pd.root}`]:{marginTop:0,marginBottom:0},[`& .${pd.inset}`]:{paddingLeft:36},[`& .${dd.root}`]:{minWidth:36},variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>!e.dense,style:{[e.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:e})=>e.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...e.typography.body2,[`& .${dd.root} svg`]:{fontSize:"1.25rem"}}}]}))),Dd=u.forwardRef(function MenuItem(e,t){const n=useDefaultProps({props:e,name:"MuiMenuItem"}),{autoFocus:a=!1,component:o="li",dense:i=!1,divider:s=!1,disableGutters:l=!1,focusVisibleClassName:c,role:d="menuitem",tabIndex:p,className:m,...g}=n,h=useSelectFocusSource(),b=u.useContext(ld),y=u.useMemo(()=>({dense:i||b.dense||!1,disableGutters:l}),[b.dense,i,l]),v=useMenuListContext(),S=Vs(),x=v.suppressInitialFocusVisible,C=v.itemsFocusableWhenDisabled,w=u.useRef(null);Us(()=>{a&&w.current&&focusWithVisible(w.current,h)},[a]);const k={...n,dense:y.dense,divider:s,disableGutters:l},E=useUtilityClasses$19(n),{root:P,...T}=E,R=useRovingTabIndexItem({id:S,ref:t,disabled:n.disabled,focusableWhenDisabled:C,selected:n.selected}),M=Gs(w,R.ref);let D;return void 0!==p?D=p:"selectedMenu"===v.variant?D=R.tabIndex:n.disabled&&!C||(D=-1),(0,Fa.jsx)(ld.Provider,{value:y,children:(0,Fa.jsx)(Md,{ref:M,role:d,tabIndex:D,component:o,internalNativeButton:!1,focusableWhenDisabled:C,suppressFocusVisible:x,focusVisibleClassName:clsx(E.focusVisible,c),className:clsx(E.root,m),...g,ownerState:k,classes:T})})});function getNativeSelectUtilityClasses(e){return generateUtilityClass("MuiNativeSelect",e)}var Od,$d=generateUtilityClasses("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),useUtilityClasses$18=e=>{const{classes:t,variant:n,disabled:a,multiple:o,open:i,error:s}=e;return composeClasses({select:["select",n,a&&"disabled",o&&"multiple",s&&"error"],icon:["icon",`icon${$s(n)}`,i&&"iconOpen",a&&"disabled"]},getNativeSelectUtilityClasses,t)},Id=Ts("select",{name:"MuiNativeSelect"})(({theme:e})=>({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":{borderRadius:0},[`&.${$d.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(e.vars||e).palette.background.paper},variants:[{props:({ownerState:e})=>"filled"!==e.variant&&"outlined"!==e.variant,style:{"&&&":{paddingRight:24,minWidth:16}}},{props:{variant:"filled"},style:{"&&&":{paddingRight:32}}},{props:{variant:"outlined"},style:{borderRadius:(e.vars||e).shape.borderRadius,"&:focus":{borderRadius:(e.vars||e).shape.borderRadius},"&&&":{paddingRight:32}}}]})),Nd=Ts(Id,{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:rootShouldForwardProp,overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.select,t[n.variant],n.error&&t.error,{[`&.${$d.multiple}`]:t.multiple}]}})({}),zd=Ts("svg",{name:"MuiNativeSelect"})(({theme:e})=>({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(e.vars||e).palette.action.active,[`&.${$d.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:({ownerState:e})=>e.open,style:{transform:"rotate(180deg)"}},{props:{variant:"filled"},style:{right:7}},{props:{variant:"outlined"},style:{right:7}}]})),Ld=Ts(zd,{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t[`icon${$s(n.variant)}`],n.open&&t.iconOpen]}})({}),jd=u.forwardRef(function NativeSelectInput(e,t){const{className:n,disabled:a,error:o,IconComponent:i,inputRef:s,variant:l="standard",...c}=e,d={...e,disabled:a,variant:l,error:o},p=useUtilityClasses$18(d);return(0,Fa.jsxs)(u.Fragment,{children:[(0,Fa.jsx)(Nd,{ownerState:d,className:clsx(p.select,n),disabled:a,ref:s||t,...c}),e.multiple?null:(0,Fa.jsx)(Ld,{as:i,ownerState:d,className:p.icon})]})}),Bd=Ts("fieldset",{name:"MuiNotchedOutlined",shouldForwardProp:rootShouldForwardProp})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),Fd=Ts("legend",{name:"MuiNotchedOutlined",shouldForwardProp:rootShouldForwardProp})(Is(({theme:e})=>({float:"unset",width:"auto",overflow:"hidden",variants:[{props:({ownerState:e})=>!e.withLabel,style:{padding:0,lineHeight:"11px",transition:e.transitions.create("width",{duration:150,easing:e.transitions.easing.easeOut})}},{props:({ownerState:e})=>e.withLabel,style:{display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:e.transitions.create("max-width",{duration:50,easing:e.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}}},{props:({ownerState:e})=>e.withLabel&&e.notched,style:{maxWidth:"100%",transition:e.transitions.create("max-width",{duration:100,easing:e.transitions.easing.easeOut,delay:50})}}]})));function NotchedOutline(e){const{children:t,classes:n,className:a,label:o,notched:i,...s}=e,l=null!=o&&""!==o,c={...e,notched:i,withLabel:l};return(0,Fa.jsx)(Bd,{"aria-hidden":!0,className:a,ownerState:c,...s,children:(0,Fa.jsx)(Fd,{ownerState:c,children:l?(0,Fa.jsx)("span",{children:o}):Od||(Od=(0,Fa.jsx)("span",{className:"notranslate","aria-hidden":!0,children:"​"}))})})}var useUtilityClasses$17=e=>{const{classes:t}=e,n=composeClasses({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},getOutlinedInputUtilityClass,t);return{...t,...n}},qd=Ts(Ec,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:rootOverridesResolver})(Is(({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{position:"relative",borderRadius:(e.vars||e).shape.borderRadius,[`&:hover .${Rc.notchedOutline}`]:{borderColor:(e.vars||e).palette.text.primary},"@media (hover: none)":{[`&:hover .${Rc.notchedOutline}`]:{borderColor:e.vars?e.alpha(e.vars.palette.common.onBackground,.23):t}},[`&.${Rc.focused} .${Rc.notchedOutline}`]:{borderWidth:2},variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&.${Rc.focused} .${Rc.notchedOutline}`]:{borderColor:(e.vars||e).palette[t].main}}})),{props:{},style:{[`&.${Rc.error} .${Rc.notchedOutline}`]:{borderColor:(e.vars||e).palette.error.main},[`&.${Rc.disabled} .${Rc.notchedOutline}`]:{borderColor:(e.vars||e).palette.action.disabled}}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:14}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:14}},{props:({ownerState:e})=>e.multiline,style:{padding:"16.5px 14px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{padding:"8.5px 14px"}}]}})),Ud=Ts(NotchedOutline,{name:"MuiOutlinedInput",slot:"NotchedOutline"})(Is(({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:e.vars?e.alpha(e.vars.palette.common.onBackground,.23):t}})),Vd=Ts(_c,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:inputOverridesResolver})(Is(({theme:e})=>({padding:"16.5px 14px","&:-webkit-autofill":{...!e.vars&&{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff"},borderRadius:"inherit",...e.vars&&e.applyStyles("dark",{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"})},variants:[{props:{size:"small"},style:{padding:"8.5px 14px"}},{props:({ownerState:e})=>e.multiline,style:{padding:0}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:0}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:0}}]}))),Hd=u.forwardRef(function OutlinedInput(e,t){const n=useDefaultProps({props:e,name:"MuiOutlinedInput"}),{fullWidth:a=!1,inputComponent:o="input",label:i,multiline:s=!1,notched:l,slots:c={},slotProps:d={},type:p="text",...m}=n,g=useUtilityClasses$17(n),[h,b]=useFormControlState({props:n,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),y={...n,color:h.color||"primary",disabled:h.disabled,error:h.error,focused:h.focused,formControl:b,fullWidth:a,hiddenLabel:h.hiddenLabel,multiline:s,size:h.size,type:p},v=c.root??qd,S=c.input??Vd,[x,C]=useSlot("notchedOutline",{elementType:Ud,className:g.notchedOutline,shouldForwardComponentProp:!0,ownerState:y,externalForwardedProps:{slots:c,slotProps:d},additionalProps:{label:null!=i&&""!==i&&h.required?(0,Fa.jsxs)(u.Fragment,{children:[i," ","*"]}):i}});return(0,Fa.jsx)(Tc,{slots:{root:v,input:S},slotProps:d,renderSuffix:e=>(0,Fa.jsx)(x,{...C,notched:void 0!==l?l:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:a,inputComponent:o,multiline:s,ref:t,type:p,...m,classes:{...g,notchedOutline:null}})});Hd.muiName="Input";var Wd={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};function getSelectUtilityClasses(e){return generateUtilityClass("MuiSelect",e)}var Gd,Yd=generateUtilityClasses("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","nativeInput","error"]),Kd=2,Qd=400,Zd=200;function isMouseEventInsideElement(e,t){if(!t)return!1;if(e.composedPath().includes(t))return!0;if(e.target?.nodeType&&t.contains(e.target))return!0;const n=t.getBoundingClientRect();return(0!==n.width||0!==n.height)&&(e.clientX>=n.left-Kd&&e.clientX<=n.right+Kd&&e.clientY>=n.top-Kd&&e.clientY<=n.bottom+Kd)}var Xd=Ts(Id,{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`&.${Yd.select}`]:t.select},{[`&.${Yd.select}`]:t[n.variant]},{[`&.${Yd.error}`]:t.error},{[`&.${Yd.multiple}`]:t.multiple}]}})({[`&.${Yd.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),Jd=Ts(zd,{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.open&&t.iconOpen]}})({}),ep=Ts("input",{shouldForwardProp:e=>slotShouldForwardProp(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput"})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"}),useUtilityClasses$16=e=>{const{classes:t,variant:n,disabled:a,multiple:o,open:i,error:s}=e;return composeClasses({select:["select",n,a&&"disabled",o&&"multiple",s&&"error"],icon:["icon",i&&"iconOpen",a&&"disabled"],nativeInput:["nativeInput"]},getSelectUtilityClasses,t)},tp=u.forwardRef(function SelectInput(e,t){const{"aria-describedby":n,"aria-label":a,autoFocus:o,autoWidth:i,children:s,className:l,defaultOpen:c,defaultValue:d,disabled:p,displayEmpty:m,error:g=!1,IconComponent:h,inputRef:b,labelId:y,MenuProps:v={},multiple:S,name:x,onBlur:C,onChange:w,onClose:k,onFocus:E,onKeyDown:P,onMouseDown:T,onOpen:R,open:M,readOnly:D,renderValue:O,required:$,SelectDisplayProps:I={},tabIndex:N,type:L,value:j,variant:B="standard",...F}=e,[q,U]=Hs({controlled:j,default:d,name:"Select"}),[V,H]=Hs({controlled:M,default:c,name:"Select"}),W=u.useRef(null),G=u.useRef(null),Y=u.useRef(null),K=u.useRef(!1),Q=u.useRef(!1),Z=u.useRef(null),X=u.useRef(!1),J=u.useRef({allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}),ee=useTimeout(),te=useTimeout(),[re,ne]=u.useState(null),{current:ae}=u.useRef(null!=M),[oe,ie]=u.useState(),[se,le]=u.useState(null),ce=Gs(t,b),ue=u.useCallback(e=>{G.current=e,e&&ne(e)},[]),de=re?.parentNode;u.useImperativeHandle(ce,()=>({focus:()=>{G.current.focus()},node:W.current,value:q}),[q]);const pe=null!==re&&V;Us(()=>{K.current=pe},[pe]);const me=u.useCallback(()=>{ee.clear(),te.clear()},[ee,te]),fe=u.useCallback(()=>{me(),X.current=!1,J.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}},[me]),ge=u.useCallback(()=>{Z.current&&(Z.current(),Z.current=null)},[]);u.useEffect(()=>{pe||(fe(),ge())},[pe,fe,ge]),u.useEffect(()=>()=>{fe(),ge()},[fe,ge]),u.useEffect(()=>{if(!pe||!de||i)return;if("undefined"==typeof ResizeObserver)return;const e=new ResizeObserver(()=>{ie(de.clientWidth)});return e.observe(de),()=>{e.disconnect()}},[pe,de,i]),u.useEffect(()=>{c&&V&&re&&!ae&&(ie(i?null:de.clientWidth),G.current.focus())},[re,i]),u.useEffect(()=>{o&&G.current.focus()},[o]),u.useEffect(()=>{if(!y)return;const e=Fs(G.current).getElementById(y);if(e){const handler=()=>{getSelection().isCollapsed&&G.current.focus()};return e.addEventListener("click",handler),()=>{e.removeEventListener("click",handler)}}},[y]);const he=Ws((e,t)=>{e||(fe(),ge()),e?(le(getOpenInteractionType(t)),R&&R(t)):(le(null),k&&k(t)),ae||(K.current=e,ie(i?null:de.clientWidth),H(e))}),scheduleMouseUpSelection=()=>{fe(),Q.current?te.start(Zd,()=>{J.current.allowUnselectedMouseUp=!0,ee.start(Zd,()=>{J.current.allowSelectedMouseUp=!0})}):ee.start(Qd,()=>{J.current.allowSelectedMouseUp=!0,J.current.allowUnselectedMouseUp=!0})},handleMouseDown=e=>{if(T?.(e),0!==e.button)return;e.preventDefault(),G.current.focus();const t=Fs(e.currentTarget);scheduleMouseUpSelection(),ge();const handleMouseUp=e=>{Z.current=null,G.current&&(isMouseEventInsideElement(e,G.current)||isMouseEventInsideElement(e,Y.current)||!K.current&&ae||he(!1,e))};t.addEventListener("mouseup",handleMouseUp,{capture:!0,once:!0}),Z.current=()=>{t.removeEventListener("mouseup",handleMouseUp,!0)},he(!0,e)},handleClose=e=>{he(!1,e)},be=u.Children.toArray(s),handleChange=e=>{const t=be.find(t=>t.props.value===e.target.value);void 0!==t&&(U(t.props.value),w&&w(e,t))},handleItemClick=e=>t=>{let n;if(X.current=!1,t.currentTarget.hasAttribute("tabindex")){if(S){n=Array.isArray(q)?q.slice():[];const t=q.indexOf(e.props.value);-1===t?n.push(e.props.value):n.splice(t,1)}else n=e.props.value;if(e.props.onClick&&e.props.onClick(t),q!==n&&(U(n),w)){const a=t.nativeEvent||t,o=new a.constructor(a.type,a);Object.defineProperty(o,"target",{writable:!0,value:{value:n,name:x}}),w(o,e)}S||he(!1,t)}},handleItemMouseUp=(e,t)=>n=>{if(e.props.onMouseUp?.(n),X.current)return void(X.current=!1);const a=!J.current.allowSelectedMouseUp&&t,o=!J.current.allowUnselectedMouseUp&&!t;a||o||n.currentTarget.click()},handleKeyDown=e=>{D||([" ","ArrowUp","ArrowDown","Enter"].includes(e.key)&&(e.preventDefault(),he(!0,e)),P?.(e))},handleBlur=e=>{!pe&&C&&(Object.defineProperty(e,"target",{writable:!0,value:{value:q,name:x}}),C(e))};let ye,ve;delete F["aria-invalid"];const Se=[];let xe=!1,Ce=!1;(isFilled({value:q})||m)&&(O?ye=O(q):xe=!0);const we=be.map(e=>{if(!u.isValidElement(e))return null;let t;if(S){if(!Array.isArray(q))throw new Error(formatMuiErrorMessage(2));t=q.some(t=>areEqualValues(t,e.props.value)),t&&xe&&Se.push(e.props.children)}else t=areEqualValues(q,e.props.value),t&&xe&&(ve=e.props.children);return t&&(Ce=!0),u.cloneElement(e,{"aria-selected":t?"true":"false",onMouseDown:t=>{X.current=!0,e.props.onMouseDown?.(t)},onPointerDown:t=>{X.current=!0,e.props.onPointerDown?.(t)},onClick:handleItemClick(e),onMouseUp:handleItemMouseUp(e,t),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})});Us(()=>{Q.current=Ce},[Ce]),xe&&(ye=S?0===Se.length?null:Se.reduce((e,t,n)=>(e.push(t),n<Se.length-1&&e.push(", "),e),[]):ve);let ke,Ee=oe;!i&&ae&&re&&(Ee=de.clientWidth),ke=void 0!==N?N:p?null:0;const _e=I.id||(x?`mui-component-select-${x}`:void 0),Pe={...e,variant:B,value:q,open:pe,error:g},Te=useUtilityClasses$16(Pe),Ae="function"==typeof v.slotProps?.paper?v.slotProps.paper(Pe):v.slotProps?.paper,Re=Gs(Ae?.ref,Y),Me="function"==typeof v.slotProps?.list?v.slotProps.list(Pe):v.slotProps?.list,De=useId(),Oe=useId();return(0,Fa.jsxs)(u.Fragment,{children:[(0,Fa.jsx)(Xd,{as:"div",ref:ue,tabIndex:ke,role:"combobox","aria-controls":pe?De:void 0,"aria-disabled":p?"true":void 0,"aria-expanded":pe?"true":"false","aria-haspopup":"listbox","aria-label":a,"aria-labelledby":y,"aria-describedby":n,"aria-required":$?"true":void 0,"aria-invalid":g?"true":void 0,onKeyDown:handleKeyDown,onMouseDown:p||D?null:handleMouseDown,onBlur:handleBlur,onFocus:E,...I,ownerState:Pe,className:clsx(I.className,Te.select,l),id:_e,children:isEmpty(ye)?Gd||(Gd=(0,Fa.jsx)("span",{className:"notranslate","aria-hidden":!0,children:"​"})):ye}),(0,Fa.jsx)(ep,{"aria-invalid":g,value:Array.isArray(q)?q.join(","):q,name:x,ref:W,"aria-hidden":!0,onChange:handleChange,tabIndex:-1,disabled:p,className:Te.nativeInput,autoFocus:o,required:$,...F,id:F.id??Oe,ownerState:Pe}),(0,Fa.jsx)(Jd,{as:h,className:Te.icon,ownerState:Pe}),(0,Fa.jsx)(yd,{value:se,children:(0,Fa.jsx)(Ad,{id:`menu-${x||""}`,anchorEl:de,open:pe,onClose:handleClose,anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},...v,slotProps:{...v.slotProps,list:{"aria-labelledby":y,role:"listbox","aria-multiselectable":S?"true":void 0,disableListWrap:!0,id:De,...Me},paper:{...Ae,ref:Re,style:{minWidth:Ee,...Ae?.style}}},children:we})})]})}),useUtilityClasses$15=e=>{const{classes:t}=e,n=composeClasses({root:["root"]},getSelectUtilityClasses,t);return{...t,...n}},rp={name:"MuiSelect",slot:"Root",shouldForwardProp:e=>rootShouldForwardProp(e)&&"variant"!==e},np=Ts(od,rp)(""),ap=Ts(Hd,rp)(""),op=Ts(Lu,rp)(""),ip=u.forwardRef(function Select(e,t){const n=useDefaultProps({name:"MuiSelect",props:e}),{autoWidth:a=!1,children:o,classes:i={},className:s,defaultOpen:l=!1,displayEmpty:c=!1,IconComponent:d=Dc,id:p,input:m,inputProps:g,label:h,labelId:b,MenuProps:y,multiple:v=!1,native:S=!1,onClose:x,onOpen:C,open:w,renderValue:k,SelectDisplayProps:E,variant:P="outlined",...T}=n,R=S?jd:tp,[M]=useFormControlState({props:n,states:["variant","error"]}),D=M.variant||P,O={...n,variant:D,classes:i},$=useUtilityClasses$15(O),{root:I,...N}=$,L=m||{standard:(0,Fa.jsx)(np,{ownerState:O}),outlined:(0,Fa.jsx)(ap,{label:h,ownerState:O}),filled:(0,Fa.jsx)(op,{ownerState:O})}[D],j=Gs(t,getReactElementRef(L));return(0,Fa.jsx)(u.Fragment,{children:u.cloneElement(L,{inputComponent:R,inputProps:{children:o,error:M.error,IconComponent:d,variant:D,type:void 0,multiple:v,...S?{id:p}:{autoWidth:a,defaultOpen:l,displayEmpty:c,labelId:b,MenuProps:y,onClose:x,onOpen:C,open:w,renderValue:k,SelectDisplayProps:{id:p,...E}},...g,classes:g?deepmerge(N,g.classes):N,...m?m.props.inputProps:{}},...(v&&S||c)&&"outlined"===D?{notched:!0}:{},ref:j,className:clsx(L.props.className,s,$.root),...!m&&{variant:D},...T})})});function areArraysEqual(e,t,n=(e,t)=>e===t){return e.length===t.length&&e.every((e,a)=>n(e,t[a]))}ip.muiName="Select";var sp=2,lp=[],cp={};function getNewValue(e,t,n,a,o){return 1===n?Math.min(e+t,o):Math.max(e-t,a)}function asc(e,t){return e-t}function findClosest(e,t,n=-1){const{index:a}=e.reduce((e,n,a)=>{const o=Math.abs(t-n);return null==e||o<=e.distance?{distance:o,index:a}:e},null)??cp;return null==a?a:n>=0&&e[n]===e[a]?n:a}function trackFinger(e,t){if(null!=t.current&&e.changedTouches){const n=e;for(let e=0;e<n.changedTouches.length;e+=1){const a=n.changedTouches[e];if(a.identifier===t.current)return{x:a.clientX,y:a.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function valueToPercent(e,t,n){return 100*(e-t)/(n-t)}function percentToValue(e,t,n){return(n-t)*e+t}function getDecimalPrecision(e){if(Math.abs(e)<1){const t=e.toExponential().split("e-"),n=t[0].split(".")[1];return(n?n.length:0)+parseInt(t[1],10)}const t=e.toString().split(".")[1];return t?t.length:0}function roundValueToStep(e,t,n){const a=Math.round((e-n)/t)*t+n;return Number(a.toFixed(getDecimalPrecision(t)))}function setValueIndex(e,t,n){const a=e.slice();return a[n]=t,a.sort(asc)}function focusThumb(e,t,n,a){const o=Bs(ownerDocument(e.current));if(!pu(e.current,o)||Number(o?.getAttribute("data-index"))!==t){const n=e.current?.querySelector(`[type="range"][data-index="${t}"]`);null!=n&&(null==a?n.focus({preventScroll:!0}):n.focus({preventScroll:!0,focusVisible:a}))}n&&n(t)}function areValuesEqual(e,t){return"number"==typeof e&&"number"==typeof t?e===t:"object"==typeof e&&"object"==typeof t&&areArraysEqual(e,t)}var dp={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},Identity$1=e=>e;function useSlider(e){const{"aria-labelledby":t,defaultValue:n,disabled:a=!1,disableSwap:o=!1,isRtl:i=!1,marks:s=!1,max:l=100,min:c=0,name:d,onChange:p,onChangeCommitted:m,orientation:g="horizontal",rootRef:h,scale:b=Identity$1,step:y=1,shiftStep:v=10,tabIndex:S,value:x}=e,C=u.useRef(void 0),w=u.useRef(null),[k,E]=u.useState(-1),[P,T]=u.useState(-1),[R,M]=u.useState(!1),D=u.useRef(0),O=u.useRef(-1),$=u.useRef(!1),I=u.useRef(-1),N=useEventCallback(()=>{null!=w.current&&(cancelAnimationFrame(w.current),w.current=null)}),L=u.useRef(null),[j,B]=useControlled({controlled:x,default:n??c,name:"Slider"}),F=useEventCallback((e,t,n)=>{const a="nativeEvent"in e?e.nativeEvent:e,o=new a.constructor(a.type,a);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:d}}),L.current=t,p?.(o,t,n)}),q=Array.isArray(j),U=u.useMemo(()=>{if("number"==typeof j)return[clamp(j,c,l)];if(null==j)return[c];const e=j.slice().sort(asc);for(let t=0;t<e.length;t+=1){const n=e[t];e[t]=null==n?c:clamp(n,c,l)}return e},[j,c,l]),V=u.useMemo(()=>{if(!0===s&&null!=y){const e=new Array(Math.floor((l-c)/y)+1);for(let t=0;t<e.length;t+=1)e[t]={value:c+y*t};return e}return Array.isArray(s)?s:lp},[s,y,c,l]),H=u.useMemo(()=>{const e=new Array(V.length);for(let t=0;t<V.length;t+=1)e[t]=V[t].value;return e},[V]),[W,G]=u.useState(-1),Y=u.useRef(null),K=useForkRef(h,Y),createHandleHiddenInputFocus=e=>t=>{const n=Number(t.currentTarget.getAttribute("data-index"));isFocusVisible(t.target)&&G(n),T(n),e?.onFocus?.(t)},createHandleHiddenInputBlur=e=>t=>{isFocusVisible(t.target)||G(-1),T(-1),e?.onBlur?.(t)},changeValue=(e,t)=>{const n=Number(e.currentTarget.getAttribute("data-index")),a=U[n],i=H.indexOf(a);let s=t;if(V&&null==y){const e=H[H.length-1];s=s>=e?e:s<=H[0]?H[0]:s<a?H[i-1]:H[i+1]}if(s=clamp(s,c,l),q){o&&(s=clamp(s,U[n-1]||-1/0,U[n+1]||1/0));const e=s;s=setValueIndex(U,s,n);let t=n;o||(t=s.indexOf(e)),focusThumb(Y,t)}B(s),G(n),p&&!areValuesEqual(s,j)&&F(e,s,n),m&&m(e,L.current??s)},createHandleHiddenInputKeyDown=e=>t=>{if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End"].includes(t.key)){t.preventDefault();const e=U[Number(t.currentTarget.getAttribute("data-index"))];let n=null;if(null!=y){const a=t.shiftKey?v:y;switch(t.key){case"ArrowUp":n=getNewValue(e,a,1,c,l);break;case"ArrowRight":n=getNewValue(e,a,i?-1:1,c,l);break;case"ArrowDown":n=getNewValue(e,a,-1,c,l);break;case"ArrowLeft":n=getNewValue(e,a,i?1:-1,c,l);break;case"PageUp":n=getNewValue(e,v,1,c,l);break;case"PageDown":n=getNewValue(e,v,-1,c,l);break;case"Home":n=c;break;case"End":n=l}}else if(V){const a=H[H.length-1],o=H.indexOf(e),s=[i?"ArrowLeft":"ArrowRight","ArrowUp","PageUp","End"];[i?"ArrowRight":"ArrowLeft","ArrowDown","PageDown","Home"].includes(t.key)?n=0===o?H[0]:H[o-1]:s.includes(t.key)&&(n=o===H.length-1?a:H[o+1])}null!=n&&changeValue(t,n)}e?.onKeyDown?.(t)};ts(()=>{const e=Bs(ownerDocument(Y.current));a&&pu(Y.current,e)&&null!=e&&"blur"in e&&e.blur()},[a]),a&&-1!==k&&E(-1),a&&-1!==W&&G(-1);const createHandleHiddenInputChange=e=>t=>{e.onChange?.(t),changeValue(t,t.currentTarget.valueAsNumber)},Q=u.useRef(void 0);let Z=g;i&&"horizontal"===g&&(Z+="-reverse");const getValueAtFinger=e=>{const{current:t}=Y;if(!t)return null;const{width:n,height:a,bottom:i,left:s}=t.getBoundingClientRect();let u,d;u=Z.startsWith("vertical")?(i-e.y)/a:(e.x-s)/n,Z.includes("-reverse")&&(u=1-u),d=percentToValue(u,c,l),d=y?roundValueToStep(d,y,c):H[findClosest(H,d)],d=clamp(d,c,l);let p=0;if(q){const e=-1!==Q.current;p=e?Q.current:findClosest(U,d,O.current),o&&(d=clamp(d,U[p-1]||-1/0,U[p+1]||1/0));const t=d;d=setValueIndex(U,d,p),o&&e||(p=d.indexOf(t),Q.current=p)}return{newValue:d,activeIndex:p}},X=useEventCallback(e=>{if("pointerId"in e&&e.pointerId!==I.current)return;const t=trackFinger(e,C);if(!t)return;if(D.current+=1,"pointermove"===e.type&&0===e.buttons)return void J(e);const n=getValueAtFinger(t);n&&(focusThumb(Y,n.activeIndex,E,!1),O.current=n.activeIndex,B(n.newValue),!R&&D.current>sp&&M(!0),p&&!areValuesEqual(n.newValue,j)&&F(e,n.newValue,n.activeIndex))}),J=useEventCallback(e=>{if("pointerId"in e&&e.pointerId!==I.current)return;const t=trackFinger(e,C);if(M(!1),!t)return;const n=getValueAtFinger(t);E(-1),"touchend"===e.type&&T(-1),n&&m&&m(e,L.current??n.newValue),"pointerType"in e&&Y.current?.hasPointerCapture(e.pointerId)&&Y.current.releasePointerCapture(e.pointerId),C.current=void 0,I.current=-1,te()}),ee=useEventCallback(e=>{if(a)return;if($.current){$.current=!1;const t=e.changedTouches[0];return void(null!=t&&(C.current=t.identifier))}const t=e.changedTouches[0];null!=t&&(C.current=t.identifier);const n=trackFinger(e,C);if(!1!==n){Q.current=-1;const t=getValueAtFinger(n);t&&(focusThumb(Y,t.activeIndex,E,!1),O.current=t.activeIndex,B(t.newValue),p&&!areValuesEqual(t.newValue,j)&&F(e,t.newValue,t.activeIndex))}D.current=0;const o=ownerDocument(Y.current);o.addEventListener("touchmove",X,{passive:!0}),o.addEventListener("touchend",J,{passive:!0})}),te=u.useCallback(()=>{const e=ownerDocument(Y.current);e.removeEventListener("pointermove",X),e.removeEventListener("pointerup",J),e.removeEventListener("touchmove",X),e.removeEventListener("touchend",J)},[J,X]);u.useEffect(()=>{const e=Y.current;if(e)return e.addEventListener("touchstart",ee,{passive:!0}),()=>{e.removeEventListener("touchstart",ee),N(),te()}},[te,ee,N]),u.useEffect(()=>{a&&(te(),N())},[a,te,N]);const createHandlePointerDown=e=>t=>{if(e.onPointerDown?.(t),"touch"===t.pointerType&&($.current=!0),a||t.defaultPrevented||0!==t.button)return;const n=trackFinger(t,C);if(!1!==n){Q.current=-1;const e=getValueAtFinger(n);if(e){const n=Y.current?.querySelector(`input[type="range"][data-index="${e.activeIndex}"]`),a=ownerDocument(Y.current),o=null!=n&&n===Bs(a);E(e.activeIndex),O.current=e.activeIndex,o?t.preventDefault():(N(),w.current=requestAnimationFrame(()=>{w.current=null,focusThumb(Y,e.activeIndex,void 0,!1)})),B(e.newValue),p&&!areValuesEqual(e.newValue,j)&&F(t,e.newValue,e.activeIndex)}}D.current=0,I.current=t.pointerId;const o=ownerDocument(Y.current);try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}o.addEventListener("pointermove",X,{passive:!0}),o.addEventListener("pointerup",J)},re=valueToPercent(q?U[0]:c,c,l),ne=valueToPercent(U[U.length-1],c,l)-re,createHandleMouseOver=e=>t=>{e.onMouseOver?.(t),T(Number(t.currentTarget.getAttribute("data-index")))},createHandleMouseLeave=e=>t=>{e.onMouseLeave?.(t),T(-1)},getThumbStyle=e=>{let t;return q?k===e?t=2:O.current===e&&(t=1):k===e&&(t=1),{pointerEvents:-1!==k&&k!==e?"none":void 0,zIndex:t}};let ae;"vertical"===g&&(ae=i?"vertical-rl":"vertical-lr");return{active:k,axis:Z,axisProps:dp,dragging:R,focusedThumbIndex:W,getHiddenInputProps:(n=cp)=>{const o=extractEventHandlers(n),s={onChange:createHandleHiddenInputChange(o),onFocus:createHandleHiddenInputFocus(o),onBlur:createHandleHiddenInputBlur(o),onKeyDown:createHandleHiddenInputKeyDown(o)},u={...o,...s};return{tabIndex:S,"aria-labelledby":t,"aria-orientation":g,"aria-valuemax":b(l),"aria-valuemin":b(c),name:d,type:"range",min:e.min,max:e.max,step:null===e.step&&e.marks?"any":e.step??void 0,disabled:a,...n,...u,style:{...Wd,direction:i?"rtl":"ltr",width:"100%",height:"100%",writingMode:ae}}},getRootProps:(e=cp)=>{const t=extractEventHandlers(e),n={onPointerDown:createHandlePointerDown(t)},a={...t,...n};return{...e,ref:K,...a}},getThumbProps:(e=cp)=>{const t=extractEventHandlers(e),n={onMouseOver:createHandleMouseOver(t),onMouseLeave:createHandleMouseLeave(t)};return{...e,...t,...n}},marks:V,open:P,range:q,rootRef:K,trackLeap:ne,trackOffset:re,values:U,getThumbStyle}}function getSliderUtilityClass(e){return generateUtilityClass("MuiSlider",e)}var pp=generateUtilityClasses("MuiSlider",["root","active","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","disabled","dragging","focusVisible","mark","markActive","marked","markLabel","markLabelActive","rail","sizeSmall","thumb","track","trackInverted","trackFalse","valueLabel","valueLabelOpen","valueLabelCircle","valueLabelLabel","vertical"]),useValueLabelClasses=e=>{const{open:t}=e;return{offset:clsx(t&&pp.valueLabelOpen),circle:pp.valueLabelCircle,label:pp.valueLabelLabel}};function SliderValueLabel$1(e){const{children:t,className:n,value:a}=e,o=useValueLabelClasses(e);return t?u.cloneElement(t,{className:t.props.className},(0,Fa.jsxs)(u.Fragment,{children:[t.props.children,(0,Fa.jsx)("span",{className:clsx(o.offset,n),"aria-hidden":!0,children:(0,Fa.jsx)("span",{className:o.circle,children:(0,Fa.jsx)("span",{className:o.label,children:a})})})]})):null}function Identity(e){return e}var mp=Ts("span",{name:"MuiSlider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`color${$s(n.color)}`],"medium"!==n.size&&t[`size${$s(n.size)}`],n.marked&&t.marked,"vertical"===n.orientation&&t.vertical,"inverted"===n.track&&t.trackInverted,!1===n.track&&t.trackFalse]}})(Is(({theme:e})=>({borderRadius:12,boxSizing:"content-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent","@media print":{colorAdjust:"exact"},[`&.${pp.disabled}`]:{pointerEvents:"none",cursor:"default",color:(e.vars||e).palette.grey[400]},[`&.${pp.dragging}`]:{[`& .${pp.thumb}, & .${pp.track}`]:{transition:"none"}},variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:"horizontal"},style:{height:4,width:"100%",padding:"13px 0","@media (pointer: coarse)":{padding:"20px 0"}}},{props:{orientation:"horizontal",size:"small"},style:{height:2}},{props:{orientation:"horizontal",marked:!0},style:{marginBottom:20}},{props:{orientation:"vertical"},style:{height:"100%",width:4,padding:"0 13px","@media (pointer: coarse)":{padding:"0 20px"}}},{props:{orientation:"vertical",size:"small"},style:{width:2}},{props:{orientation:"vertical",marked:!0},style:{marginRight:44}}]}))),fp=Ts("span",{name:"MuiSlider",slot:"Rail"})({display:"block",position:"absolute",borderRadius:"inherit",backgroundColor:"currentColor",opacity:.38,"@media (forced-colors: active)":{border:"1px solid transparent",boxSizing:"border-box"},variants:[{props:{orientation:"horizontal"},style:{width:"100%",height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{height:"100%",width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:"inverted"},style:{opacity:1}}]}),gp=Ts("span",{name:"MuiSlider",slot:"Track"})(Is(({theme:e})=>({display:"block",position:"absolute",borderRadius:"inherit",border:"1px solid currentColor",backgroundColor:"currentColor",transition:e.transitions.create(["left","width","bottom","height"],{duration:e.transitions.duration.shortest}),variants:[{props:{size:"small"},style:{"@media (forced-colors: none)":{border:"none"}}},{props:{orientation:"horizontal"},style:{height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:!1},style:{display:"none"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t,track:"inverted"},style:{...e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:{backgroundColor:e.lighten(e.palette[t].main,.62),borderColor:e.lighten(e.palette[t].main,.62),...e.applyStyles("dark",{backgroundColor:e.darken(e.palette[t].main,.5)}),...e.applyStyles("dark",{borderColor:e.darken(e.palette[t].main,.5)})}}}))]}))),hp=Ts("span",{name:"MuiSlider",slot:"Thumb"})(Is(({theme:e})=>({position:"absolute",width:20,height:20,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:e.transitions.create(["box-shadow","left","bottom"],{duration:e.transitions.duration.shortest}),"@media (forced-colors: active)":{border:"1px solid ButtonBorder"},"&::before":{position:"absolute",content:'""',borderRadius:"inherit",width:"100%",height:"100%",boxShadow:(e.vars||e).shadows[2]},"&::after":{position:"absolute",content:'""',borderRadius:"50%",width:42,height:42,top:"50%",left:"50%",transform:"translate(-50%, -50%)"},[`&.${pp.disabled}`]:{"&:hover":{boxShadow:"none"}},variants:[{props:{size:"small"},style:{width:12,height:12,"&::before":{boxShadow:"none"}}},{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-50%, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 50%)"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&:hover, &.${pp.focusVisible}`]:{boxShadow:`0px 0px 0px 8px ${e.alpha((e.vars||e).palette[t].main,.16)}`,"@media (hover: none)":{boxShadow:"none"}},[`&.${pp.active}`]:{boxShadow:`0px 0px 0px 14px ${e.alpha((e.vars||e).palette[t].main,.16)}`}}}))]}))),bp=Ts(SliderValueLabel$1,{name:"MuiSlider",slot:"ValueLabel"})(Is(({theme:e})=>({zIndex:1,whiteSpace:"nowrap",...e.typography.body2,fontWeight:500,transition:e.transitions.create(["transform"],{duration:e.transitions.duration.shortest}),position:"absolute",backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",padding:"0.25rem 0.75rem",variants:[{props:{orientation:"horizontal"},style:{transform:"translateY(-100%) scale(0)",top:"-10px",transformOrigin:"bottom center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, 50%) rotate(45deg)",backgroundColor:"inherit",bottom:0,left:"50%"},[`&.${pp.valueLabelOpen}`]:{transform:"translateY(-100%) scale(1)"}}},{props:{orientation:"vertical"},style:{transform:"translateY(-50%) scale(0)",right:"30px",top:"50%",transformOrigin:"right center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, -50%) rotate(45deg)",backgroundColor:"inherit",right:-8,top:"50%"},[`&.${pp.valueLabelOpen}`]:{transform:"translateY(-50%) scale(1)"}}},{props:{size:"small"},style:{fontSize:e.typography.pxToRem(12),padding:"0.25rem 0.5rem"}},{props:{orientation:"vertical",size:"small"},style:{right:"20px"}}]}))),yp=Ts("span",{name:"MuiSlider",slot:"Mark",shouldForwardProp:e=>slotShouldForwardProp(e)&&"markActive"!==e,overridesResolver:(e,t)=>{const{markActive:n}=e;return[t.mark,n&&t.markActive]}})(Is(({theme:e})=>({position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor",variants:[{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-1px, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 1px)"}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]}))),vp=Ts("span",{name:"MuiSlider",slot:"MarkLabel",shouldForwardProp:e=>slotShouldForwardProp(e)&&"markLabelActive"!==e})(Is(({theme:e})=>({...e.typography.body2,color:(e.vars||e).palette.text.secondary,position:"absolute",whiteSpace:"nowrap",variants:[{props:{orientation:"horizontal"},style:{top:30,transform:"translateX(-50%)","@media (pointer: coarse)":{top:40}}},{props:{orientation:"vertical"},style:{left:36,transform:"translateY(50%)","@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]}))),useUtilityClasses$14=e=>{const{disabled:t,dragging:n,marked:a,orientation:o,track:i,classes:s,color:l,size:c}=e;return composeClasses({root:["root",t&&"disabled",n&&"dragging",a&&"marked","vertical"===o&&"vertical","inverted"===i&&"trackInverted",!1===i&&"trackFalse",l&&`color${$s(l)}`,c&&`size${$s(c)}`],rail:["rail"],track:["track"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],thumb:["thumb",t&&"disabled"],active:["active"],disabled:["disabled"],focusVisible:["focusVisible"]},getSliderUtilityClass,s)},Forward=({children:e})=>e,Sp=u.forwardRef(function Slider(e,t){const n=useDefaultProps({props:e,name:"MuiSlider"}),a=useRtl(),{"aria-label":o,"aria-valuetext":i,"aria-labelledby":s,color:l="primary",classes:c,className:d,disableSwap:p=!1,disabled:m=!1,getAriaLabel:g,getAriaValueText:h,marks:b=!1,max:y=100,min:v=0,name:S,onChange:x,onChangeCommitted:C,orientation:w="horizontal",shiftStep:k=10,size:E="medium",step:P=1,scale:T=Identity,slotProps:R={},slots:M={},tabIndex:D,track:O="normal",value:$,valueLabelDisplay:I="off",valueLabelFormat:N=Identity,...L}=n,j={...n,isRtl:a,max:y,min:v,classes:c,disabled:m,disableSwap:p,orientation:w,marks:b,color:l,size:E,step:P,shiftStep:k,scale:T,track:O,valueLabelDisplay:I,valueLabelFormat:N},{axisProps:B,getRootProps:F,getHiddenInputProps:q,getThumbProps:U,open:V,active:H,axis:W,focusedThumbIndex:G,range:Y,dragging:K,marks:Q,values:Z,trackOffset:X,trackLeap:J,getThumbStyle:ee}=useSlider({...j,rootRef:t});j.marked=Q.length>0&&Q.some(e=>e.label),j.dragging=K,j.focusedThumbIndex=G;const te=useUtilityClasses$14(j),re={slots:M,slotProps:R},[ne,ae]=useSlot("root",{elementType:mp,getSlotProps:F,externalForwardedProps:{...re,...L},ownerState:j,className:[te.root,d]}),[oe,ie]=useSlot("rail",{elementType:fp,externalForwardedProps:re,ownerState:j,className:te.rail}),[se,le]=useSlot("track",{elementType:gp,externalForwardedProps:re,additionalProps:{style:{...B[W].offset(X),...B[W].leap(J)}},ownerState:j,className:te.track}),[ce,ue]=useSlot("thumb",{elementType:hp,getSlotProps:U,externalForwardedProps:re,ownerState:j,className:te.thumb}),[de,pe]=useSlot("valueLabel",{elementType:bp,externalForwardedProps:re,ownerState:j,className:te.valueLabel}),[me,fe]=useSlot("mark",{elementType:yp,externalForwardedProps:re,ownerState:j,className:te.mark}),[ge,he]=useSlot("markLabel",{elementType:vp,externalForwardedProps:re,ownerState:j,className:te.markLabel}),[be,ye]=useSlot("input",{elementType:"input",getSlotProps:q,externalForwardedProps:re,ownerState:j});return(0,Fa.jsxs)(ne,{...ae,children:[(0,Fa.jsx)(oe,{...ie}),(0,Fa.jsx)(se,{...le}),Q.filter(e=>e.value>=v&&e.value<=y).map((e,t)=>{const n=valueToPercent(e.value,v,y),a=B[W].offset(n);let o;return o=!1===O?Z.includes(e.value):"normal"===O&&(Y?e.value>=Z[0]&&e.value<=Z[Z.length-1]:e.value<=Z[0])||"inverted"===O&&(Y?e.value<=Z[0]||e.value>=Z[Z.length-1]:e.value>=Z[0]),(0,Fa.jsxs)(u.Fragment,{children:[(0,Fa.jsx)(me,{"data-index":t,...fe,...!isHostComponent(me)&&{markActive:o},style:{...a,...fe.style},className:clsx(fe.className,o&&te.markActive)}),null!=e.label?(0,Fa.jsx)(ge,{"aria-hidden":!0,"data-index":t,...he,...!isHostComponent(ge)&&{markLabelActive:o},style:{...a,...he.style},className:clsx(te.markLabel,he.className,o&&te.markLabelActive),children:e.label}):null]},t)}),Z.map((e,t)=>{const n=valueToPercent(e,v,y),a=B[W].offset(n),l="off"===I?Forward:de;return(0,Fa.jsx)(l,{...!isHostComponent(l)&&{valueLabelFormat:N,valueLabelDisplay:I,value:"function"==typeof N?N(T(e),t):N,index:t,open:V===t||H===t||"on"===I,disabled:m},...pe,children:(0,Fa.jsx)(ce,{"data-index":t,...ue,className:clsx(te.thumb,ue.className,H===t&&te.active,G===t&&te.focusVisible),style:{...a,...ee(t),...ue.style},children:(0,Fa.jsx)(be,{"data-index":t,"aria-label":g?g(t):o,"aria-valuenow":T(e),"aria-labelledby":s,"aria-valuetext":h?h(T(e),t):i,value:Z[t],...ye})})},t)})]})});function getTooltipUtilityClass(e){return generateUtilityClass("MuiTooltip",e)}var xp=generateUtilityClasses("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]);function round(e){return Math.round(1e5*e)/1e5}var useUtilityClasses$13=e=>{const{classes:t,disableInteractive:n,arrow:a,touch:o,placement:i}=e;return composeClasses({popper:["popper",!n&&"popperInteractive",a&&"popperArrow"],tooltip:["tooltip",a&&"tooltipArrow",o&&"touch",`tooltipPlacement${$s(i.split("-")[0])}`],arrow:["arrow"]},getTooltipUtilityClass,t)},Cp=Ts(pc,{name:"MuiTooltip",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.popper,!n.disableInteractive&&t.popperInteractive,n.arrow&&t.popperArrow,!n.open&&t.popperClose]}})(Is(({theme:e})=>({zIndex:(e.vars||e).zIndex.tooltip,pointerEvents:"none",variants:[{props:({ownerState:e,open:t})=>t&&!e.disableInteractive,style:{pointerEvents:"auto"}},{props:({ownerState:e})=>e.arrow,style:{[`&[data-popper-placement*="bottom"] .${xp.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${xp.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${xp.arrow}`]:{height:"1em",width:"0.71em",insetInlineStart:0,marginInlineStart:"-0.71em","&::before":{transformOrigin:"100% 100%"}},[`&[data-popper-placement*="left"] .${xp.arrow}`]:{height:"1em",width:"0.71em",insetInlineEnd:0,marginInlineEnd:"-0.71em","&::before":{transformOrigin:"0 0"}}}}]}))),wp=Ts("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.tooltip,n.touch&&t.touch,n.arrow&&t.tooltipArrow,t[`tooltipPlacement${$s(n.placement.split("-")[0])}`]]}})(Is(({theme:e})=>({backgroundColor:e.vars?e.vars.palette.Tooltip.bg:e.alpha(e.palette.grey[700],.92),borderRadius:(e.vars||e).shape.borderRadius,color:(e.vars||e).palette.common.white,fontFamily:e.typography.fontFamily,padding:"4px 8px",fontSize:e.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:e.typography.fontWeightMedium,[`.${xp.popper}[data-popper-placement*="left"] &`]:{transformOrigin:"right center",marginInlineEnd:"14px"},[`.${xp.popper}[data-popper-placement*="right"] &`]:{transformOrigin:"left center",marginInlineStart:"14px"},[`.${xp.popper}[data-popper-placement*="top"] &`]:{transformOrigin:"center bottom",marginBottom:"14px"},[`.${xp.popper}[data-popper-placement*="bottom"] &`]:{transformOrigin:"center top",marginTop:"14px"},variants:[{props:({ownerState:e})=>e.arrow,style:{position:"relative",marginBlock:0}},{props:({ownerState:e})=>e.touch,style:{padding:"8px 16px",fontSize:e.typography.pxToRem(14),lineHeight:`${round(16/14)}em`,fontWeight:e.typography.fontWeightRegular}},{props:({ownerState:e})=>e.touch,style:{[`.${xp.popper}[data-popper-placement*="left"] &`]:{marginInlineEnd:"24px"},[`.${xp.popper}[data-popper-placement*="right"] &`]:{marginInlineStart:"24px"},[`.${xp.popper}[data-popper-placement*="top"] &`]:{marginBottom:"24px"},[`.${xp.popper}[data-popper-placement*="bottom"] &`]:{marginTop:"24px"}}}]}))),kp=Ts("span",{name:"MuiTooltip",slot:"Arrow"})(Is(({theme:e})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:e.vars?e.vars.palette.Tooltip.bg:e.alpha(e.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}}))),Ep=!1,_p=new ll,Pp={x:0,y:0};function composeEventHandler(e,t){return(n,...a)=>{t&&t(n,...a),e(n,...a)}}var Tp=u.forwardRef(function Tooltip(e,t){const n=useDefaultProps({props:e,name:"MuiTooltip"}),{arrow:a=!1,children:o,classes:i,describeChild:s=!1,disableFocusListener:l=!1,disableHoverListener:c=!1,disableInteractive:d=!1,disableTouchListener:p=!1,enterDelay:m=100,enterNextDelay:g=0,enterTouchDelay:h=700,followCursor:b=!1,id:y,leaveDelay:v=0,leaveTouchDelay:S=1500,onClose:x,onOpen:C,open:w,placement:k="bottom",slotProps:E={},slots:P={},title:T,...R}=n,M=u.isValidElement(o)?o:(0,Fa.jsx)("span",{children:o}),D=useTheme(),[O,$]=u.useState(),[I,N]=u.useState(null),L=u.useRef(!1),j=d||b,B=useTimeout(),F=useTimeout(),q=useTimeout(),U=useTimeout(),[V,H]=Hs({controlled:w,default:!1,name:"Tooltip",state:"open"});let W=V;const G=Vs(y),Y=u.useRef(),K=Ws(()=>{void 0!==Y.current&&(document.body.style.WebkitUserSelect=Y.current,Y.current=void 0),U.clear()});u.useEffect(()=>K,[K]);const handleOpen=e=>{_p.clear(),Ep=!0,H(!0),C&&!W&&C(e)},Q=Ws(e=>{_p.start(800+v,()=>{Ep=!1}),H(!1),x&&W&&x(e),B.start(D.transitions.duration.shortest,()=>{L.current=!1})}),handleMouseOver=e=>{L.current&&"touchstart"!==e.type||(O&&O.removeAttribute("title"),F.clear(),q.clear(),m||Ep&&g?F.start(Ep?g:m,()=>{handleOpen(e)}):handleOpen(e))},handleMouseLeave=e=>{F.clear(),q.start(v,()=>{Q(e)})},[,Z]=u.useState(!1),handleBlur=e=>{const t=e?.target??O;if(!t||t.disabled||!isFocusVisible(t)){Z(!1);const n=e??new Event("blur");!e&&t&&(Object.defineProperty(n,"target",{value:t}),Object.defineProperty(n,"currentTarget",{value:t})),handleMouseLeave(n)}},handleFocus=e=>{if(O||$(e.currentTarget),isFocusVisible(e.target)){const handleNativeBlur=e=>{e.target.disabled&&handleBlur(e),e.target.removeEventListener("blur",handleNativeBlur)};e.target.addEventListener("blur",handleNativeBlur),Z(!0),handleMouseOver(e)}},detectTouchStart=e=>{L.current=!0;const t=M.props;t.onTouchStart&&t.onTouchStart(e)},handleTouchStart=e=>{detectTouchStart(e),q.clear(),B.clear(),K(),Y.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",U.start(h,()=>{document.body.style.WebkitUserSelect=Y.current,handleMouseOver(e)})},handleTouchEnd=e=>{M.props.onTouchEnd&&M.props.onTouchEnd(e),K(),q.start(S,()=>{Q(e)})};u.useEffect(()=>{if(W)return document.addEventListener("keydown",handleKeyDown),()=>{document.removeEventListener("keydown",handleKeyDown)};function handleKeyDown(e){"Escape"===e.key&&Q(e)}},[Q,W]);const X=Gs(getReactElementRef(M),$,t);T||0===T||(W=!1);const J=u.useRef(),handleMouseMove=e=>{const t=M.props;t.onMouseMove&&t.onMouseMove(e),Pp={x:e.clientX,y:e.clientY},J.current&&J.current.update()},ee={},te="string"==typeof T;s?(ee.title=W||!te||c?null:T,ee["aria-describedby"]=W?G:null):(ee["aria-label"]=te?T:null,ee["aria-labelledby"]=W&&!te?G:null);const re={...ee,...R,...M.props,className:clsx(R.className,M.props.className),onTouchStart:detectTouchStart,ref:X,...b?{onMouseMove:handleMouseMove}:{}},ne={};p||(re.onTouchStart=handleTouchStart,re.onTouchEnd=handleTouchEnd),c||(re.onMouseOver=composeEventHandler(handleMouseOver,re.onMouseOver),re.onMouseLeave=composeEventHandler(handleMouseLeave,re.onMouseLeave),j||(ne.onMouseOver=handleMouseOver,ne.onMouseLeave=handleMouseLeave)),l||(re.onFocus=composeEventHandler(handleFocus,re.onFocus),re.onBlur=composeEventHandler(handleBlur,re.onBlur),j||(ne.onFocus=handleFocus,ne.onBlur=handleBlur));const ae={...n,arrow:a,disableInteractive:j,placement:k,touch:L.current},oe="function"==typeof E.popper?E.popper(ae):E.popper,ie=u.useMemo(()=>{let e=[{name:"arrow",enabled:Boolean(I),options:{element:I,padding:4}}];return oe?.popperOptions?.modifiers&&(e=e.concat(oe.popperOptions.modifiers)),{...oe?.popperOptions,modifiers:e}},[I,oe?.popperOptions]),se=useUtilityClasses$13(ae),le={slots:P,slotProps:{arrow:E.arrow,popper:oe,tooltip:E.tooltip,transition:E.transition}},[ce,ue]=useSlot("popper",{elementType:Cp,externalForwardedProps:le,ownerState:ae,className:se.popper}),[de,pe]=useSlot("transition",{elementType:td,externalForwardedProps:le,ownerState:ae}),[me,fe]=useSlot("tooltip",{elementType:wp,className:se.tooltip,externalForwardedProps:le,ownerState:ae}),[ge,he]=useSlot("arrow",{elementType:kp,className:se.arrow,externalForwardedProps:le,ownerState:ae,ref:N});return(0,Fa.jsxs)(u.Fragment,{children:[u.cloneElement(M,re),(0,Fa.jsx)(ce,{as:pc,placement:k,anchorEl:b?{getBoundingClientRect:()=>({top:Pp.y,left:Pp.x,right:Pp.x,bottom:Pp.y,width:0,height:0})}:O,popperRef:J,open:!!O&&W,id:G,transition:!0,...ne,...ue,popperOptions:ie,children:({TransitionProps:e})=>(0,Fa.jsx)(de,{timeout:D.transitions.duration.shorter,...e,...pe,children:(0,Fa.jsxs)(me,{...fe,children:[T,a?(0,Fa.jsx)(ge,{...he}):null]})})})]})});function getSwitchUtilityClass(e){return generateUtilityClass("MuiSwitch",e)}var Ap=generateUtilityClasses("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]),useUtilityClasses$12=e=>{const{classes:t,edge:n,size:a,color:o,checked:i,disabled:s}=e,l=composeClasses({root:["root",n&&`edge${$s(n)}`,`size${$s(a)}`],switchBase:["switchBase",`color${$s(o)}`,i&&"checked",s&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},getSwitchUtilityClass,t);return{...t,...l}},Rp=Ts("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.edge&&t[`edge${$s(n.edge)}`],t[`size${$s(n.size)}`]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,[`& .${Ap.thumb}`]:{width:16,height:16},[`& .${Ap.switchBase}`]:{padding:4,[`&.${Ap.checked}`]:{transform:"translateX(16px)"}}}}]}),Mp=Ts(tu,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.switchBase,{[`& .${Ap.input}`]:t.input},"default"!==n.color&&t[`color${$s(n.color)}`]]}})(Is(({theme:e})=>({position:"absolute",top:0,left:0,zIndex:1,color:e.vars?e.vars.palette.Switch.defaultColor:`${"light"===e.palette.mode?e.palette.common.white:e.palette.grey[300]}`,transition:e.transitions.create(["left","transform"],{duration:e.transitions.duration.shortest}),[`&.${Ap.checked}`]:{transform:"translateX(20px)"},[`&.${Ap.disabled}`]:{color:e.vars?e.vars.palette.Switch.defaultDisabledColor:`${"light"===e.palette.mode?e.palette.grey[100]:e.palette.grey[600]}`},[`&.${Ap.checked} + .${Ap.track}`]:{opacity:.5},[`&.${Ap.disabled} + .${Ap.track}`]:{opacity:e.vars?e.vars.opacity.switchTrackDisabled:""+("light"===e.palette.mode?.12:.2)},[`& .${Ap.input}`]:{left:"-100%",width:"300%"}})),Is(({theme:e})=>({"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter(["light"])).map(([t])=>({props:{color:t},style:{[`&.${Ap.checked}`]:{color:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${Ap.disabled}`]:{color:e.vars?e.vars.palette.Switch[`${t}DisabledColor`]:`${"light"===e.palette.mode?e.lighten(e.palette[t].main,.62):e.darken(e.palette[t].main,.55)}`}},[`&.${Ap.checked} + .${Ap.track}`]:{backgroundColor:(e.vars||e).palette[t].main}}}))]}))),Dp=Ts("span",{name:"MuiSwitch",slot:"Track"})(Is(({theme:e})=>({height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:e.transitions.create(["opacity","background-color"],{duration:e.transitions.duration.shortest}),"@media (forced-colors: active)":{boxSizing:"border-box",border:"1px solid ButtonBorder"},backgroundColor:e.vars?e.vars.palette.common.onBackground:`${"light"===e.palette.mode?e.palette.common.black:e.palette.common.white}`,opacity:e.vars?e.vars.opacity.switchTrack:""+("light"===e.palette.mode?.38:.3)}))),Op=Ts("span",{name:"MuiSwitch",slot:"Thumb"})(Is(({theme:e})=>({boxShadow:(e.vars||e).shadows[1],backgroundColor:"currentColor",boxSizing:"border-box",border:"1px solid transparent",width:20,height:20,borderRadius:"50%"}))),$p=u.forwardRef(function Switch(e,t){const n=useDefaultProps({props:e,name:"MuiSwitch"}),{className:a,color:o="primary",edge:i=!1,size:s="medium",sx:l,slots:c={},slotProps:u={},...d}=n,p={...n,color:o,edge:i,size:s},m=useUtilityClasses$12(p),g=u.input,h={slots:c,slotProps:u},[b,y]=useSlot("root",{className:clsx(m.root,a),elementType:Rp,externalForwardedProps:h,ownerState:p,additionalProps:{sx:l}}),[v,S]=useSlot("thumb",{className:m.thumb,elementType:Op,externalForwardedProps:h,ownerState:p}),x=(0,Fa.jsx)(v,{...S}),[C,w]=useSlot("track",{className:m.track,elementType:Dp,externalForwardedProps:h,ownerState:p});return(0,Fa.jsxs)(b,{...y,children:[(0,Fa.jsx)(Mp,{type:"checkbox",icon:x,checkedIcon:x,ref:t,ownerState:p,...d,classes:{...m,root:m.switchBase},slots:{...c.switchBase&&{root:c.switchBase},...c.input&&{input:c.input}},slotProps:{...u.switchBase&&{root:"function"==typeof u.switchBase?u.switchBase(p):u.switchBase},input:mergeSlotProps$1("function"==typeof g?g(p):g,{role:"switch"})}}),(0,Fa.jsx)(C,{...w})]})});function getTabUtilityClass(e){return generateUtilityClass("MuiTab",e)}var Ip=generateUtilityClasses("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","icon"]),useUtilityClasses$11=e=>{const{classes:t,textColor:n,fullWidth:a,wrapped:o,icon:i,label:s,selected:l,disabled:c}=e;return composeClasses({root:["root",i&&s&&"labelIcon",`textColor${$s(n)}`,a&&"fullWidth",o&&"wrapped",l&&"selected",c&&"disabled"],icon:["icon"]},getTabUtilityClass,t)},Np=Ts(wl,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t[`textColor${$s(n.textColor)}`],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped,{[`& .${Ip.icon}`]:t.icon}]}})(Is(({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:e})=>e.label&&("top"===e.iconPosition||"bottom"===e.iconPosition),style:{flexDirection:"column"}},{props:({ownerState:e})=>e.label&&"top"!==e.iconPosition&&"bottom"!==e.iconPosition,style:{flexDirection:"row"}},{props:({ownerState:e})=>e.icon&&e.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"top"===t,style:{[`& > .${Ip.icon}`]:{marginBottom:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"bottom"===t,style:{[`& > .${Ip.icon}`]:{marginTop:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"start"===t,style:{[`& > .${Ip.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"end"===t,style:{[`& > .${Ip.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${Ip.selected}`]:{opacity:1},[`&.${Ip.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${Ip.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${Ip.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${Ip.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${Ip.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:e})=>e.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:e})=>e.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]}))),zp=u.forwardRef(function Tab(e,t){const n=useDefaultProps({props:e,name:"MuiTab"}),{className:a,disabled:o=!1,disableFocusRipple:i=!1,fullWidth:s,icon:l,iconPosition:c="top",indicator:d,label:p,onChange:m,onClick:g,onFocus:h,selected:b,selectionFollowsFocus:y,textColor:v="inherit",value:S,wrapped:x=!1,...C}=n,w=useRovingTabIndexContext(),k=useRovingTabIndexItem({id:S,ref:t,disabled:o,selected:b}),E=0===w.getItemMap().size&&b?0:k.tabIndex,P={...n,disabled:o,disableFocusRipple:i,selected:b,icon:!!l,iconPosition:c,label:!!p,fullWidth:s,textColor:v,wrapped:x},T=useUtilityClasses$11(P),R=l&&p&&u.isValidElement(l)?u.cloneElement(l,{className:clsx(T.icon,l.props.className)}):l,handleClick=e=>{!b&&m&&m(e,S),g&&g(e)},handleFocus=e=>{y&&!b&&m&&m(e,S),h&&h(e)};return(0,Fa.jsxs)(Np,{internalNativeButton:!0,focusRipple:!i,className:clsx(T.root,a),ref:k.ref,role:"tab","aria-selected":b,disabled:o,onClick:handleClick,onFocus:handleFocus,tabIndex:E,ownerState:P,...C,children:["top"===c||"start"===c?(0,Fa.jsxs)(u.Fragment,{children:[R,p]}):(0,Fa.jsxs)(u.Fragment,{children:[p,R]}),d]})}),Lp=u.createContext();function getTableUtilityClass(e){return generateUtilityClass("MuiTable",e)}generateUtilityClasses("MuiTable",["root","stickyHeader"]);var useUtilityClasses$10=e=>{const{classes:t,stickyHeader:n}=e;return composeClasses({root:["root",n&&"stickyHeader"]},getTableUtilityClass,t)},jp=Ts("table",{name:"MuiTable",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.stickyHeader&&t.stickyHeader]}})(Is(({theme:e})=>({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":{...e.typography.body2,padding:e.spacing(2),color:(e.vars||e).palette.text.secondary,textAlign:"left",captionSide:"bottom"},variants:[{props:({ownerState:e})=>e.stickyHeader,style:{borderCollapse:"separate"}}]}))),Bp="table",Fp=u.forwardRef(function Table(e,t){const n=useDefaultProps({props:e,name:"MuiTable"}),{className:a,component:o=Bp,padding:i="normal",size:s="medium",stickyHeader:l=!1,...c}=n,d={...n,component:o,padding:i,size:s,stickyHeader:l},p=useUtilityClasses$10(d),m=u.useMemo(()=>({padding:i,size:s,stickyHeader:l}),[i,s,l]);return(0,Fa.jsx)(Lp.Provider,{value:m,children:(0,Fa.jsx)(jp,{as:o,role:o===Bp?null:"table",ref:t,className:clsx(p.root,a),ownerState:d,...c})})}),qp=u.createContext();function getTableBodyUtilityClass(e){return generateUtilityClass("MuiTableBody",e)}generateUtilityClasses("MuiTableBody",["root"]);var useUtilityClasses$9=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getTableBodyUtilityClass,t)},Up=Ts("tbody",{name:"MuiTableBody",slot:"Root"})({display:"table-row-group"}),Vp={variant:"body"},Hp="tbody",Wp=u.forwardRef(function TableBody(e,t){const n=useDefaultProps({props:e,name:"MuiTableBody"}),{className:a,component:o=Hp,...i}=n,s={...n,component:o},l=useUtilityClasses$9(s);return(0,Fa.jsx)(qp.Provider,{value:Vp,children:(0,Fa.jsx)(Up,{className:clsx(l.root,a),as:o,ref:t,role:o===Hp?null:"rowgroup",ownerState:s,...i})})});function getTableCellUtilityClass(e){return generateUtilityClass("MuiTableCell",e)}var Gp=generateUtilityClasses("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"]),useUtilityClasses$8=e=>{const{classes:t,variant:n,align:a,padding:o,size:i,stickyHeader:s}=e;return composeClasses({root:["root",n,s&&"stickyHeader","inherit"!==a&&`align${$s(a)}`,"normal"!==o&&`padding${$s(o)}`,`size${$s(i)}`]},getTableCellUtilityClass,t)},Yp=Ts("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`size${$s(n.size)}`],"normal"!==n.padding&&t[`padding${$s(n.padding)}`],"inherit"!==n.align&&t[`align${$s(n.align)}`],n.stickyHeader&&t.stickyHeader]}})(Is(({theme:e})=>({...e.typography.body2,display:"table-cell",verticalAlign:"inherit",borderBottom:e.vars?`1px solid ${e.vars.palette.TableCell.border}`:`1px solid\n ${"light"===e.palette.mode?e.lighten(e.alpha(e.palette.divider,1),.88):e.darken(e.alpha(e.palette.divider,1),.68)}`,textAlign:"left",padding:16,variants:[{props:{variant:"head"},style:{color:(e.vars||e).palette.text.primary,lineHeight:e.typography.pxToRem(24),fontWeight:e.typography.fontWeightMedium}},{props:{variant:"body"},style:{color:(e.vars||e).palette.text.primary}},{props:{variant:"footer"},style:{color:(e.vars||e).palette.text.secondary,lineHeight:e.typography.pxToRem(21),fontSize:e.typography.pxToRem(12)}},{props:{size:"small"},style:{padding:"6px 16px",[`&.${Gp.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}}},{props:{padding:"checkbox"},style:{width:48,padding:"0 0 0 4px"}},{props:{padding:"none"},style:{padding:0}},{props:{align:"left"},style:{textAlign:"left"}},{props:{align:"center"},style:{textAlign:"center"}},{props:{align:"right"},style:{textAlign:"right",flexDirection:"row-reverse"}},{props:{align:"justify"},style:{textAlign:"justify"}},{props:({ownerState:e})=>e.stickyHeader,style:{position:"sticky",top:0,zIndex:2,backgroundColor:(e.vars||e).palette.background.default}}]}))),Kp=u.forwardRef(function TableCell(e,t){const n=useDefaultProps({props:e,name:"MuiTableCell"}),{align:a="inherit",className:o,component:i,padding:s,scope:l,size:c,sortDirection:d,variant:p,...m}=n,g=u.useContext(Lp),h=u.useContext(qp),b=h&&"head"===h.variant;let y;y=i||(b?"th":"td");let v=l;"td"===y?v=void 0:!v&&b&&(v="col");const S=p||h&&h.variant,x={...n,align:a,component:y,padding:s||(g&&g.padding?g.padding:"normal"),size:c||(g&&g.size?g.size:"medium"),sortDirection:d,stickyHeader:"head"===S&&g&&g.stickyHeader,variant:S},C=useUtilityClasses$8(x);let w=null;return d&&(w="asc"===d?"ascending":"descending"),(0,Fa.jsx)(Yp,{as:y,ref:t,className:clsx(C.root,o),"aria-sort":w,scope:v,ownerState:x,...m})});function getTableContainerUtilityClass(e){return generateUtilityClass("MuiTableContainer",e)}generateUtilityClasses("MuiTableContainer",["root"]);var useUtilityClasses$7=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getTableContainerUtilityClass,t)},Qp=Ts("div",{name:"MuiTableContainer",slot:"Root"})({width:"100%",overflowX:"auto"}),Zp=u.forwardRef(function TableContainer(e,t){const n=useDefaultProps({props:e,name:"MuiTableContainer"}),{className:a,component:o="div",...i}=n,s={...n,component:o};return(0,Fa.jsx)(Qp,{ref:t,as:o,className:clsx(useUtilityClasses$7(s).root,a),ownerState:s,...i})});function getTableHeadUtilityClass(e){return generateUtilityClass("MuiTableHead",e)}generateUtilityClasses("MuiTableHead",["root"]);var useUtilityClasses$6=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getTableHeadUtilityClass,t)},Xp=Ts("thead",{name:"MuiTableHead",slot:"Root"})({display:"table-header-group"}),Jp={variant:"head"},em="thead",tm=u.forwardRef(function TableHead(e,t){const n=useDefaultProps({props:e,name:"MuiTableHead"}),{className:a,component:o=em,...i}=n,s={...n,component:o},l=useUtilityClasses$6(s);return(0,Fa.jsx)(qp.Provider,{value:Jp,children:(0,Fa.jsx)(Xp,{as:o,className:clsx(l.root,a),ref:t,role:o===em?null:"rowgroup",ownerState:s,...i})})}),rm=createSvgIcon((0,Fa.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),nm=createSvgIcon((0,Fa.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function getTableRowUtilityClass(e){return generateUtilityClass("MuiTableRow",e)}var am=generateUtilityClasses("MuiTableRow",["root","selected","hover","head","footer"]),useUtilityClasses$5=e=>{const{classes:t,selected:n,hover:a,head:o,footer:i}=e;return composeClasses({root:["root",n&&"selected",a&&"hover",o&&"head",i&&"footer"]},getTableRowUtilityClass,t)},om=Ts("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.head&&t.head,n.footer&&t.footer]}})(Is(({theme:e})=>({color:"inherit",display:"table-row",verticalAlign:"middle",outline:0,[`&.${am.hover}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${am.selected}`]:{backgroundColor:e.alpha((e.vars||e).palette.primary.main,(e.vars||e).palette.action.selectedOpacity),"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.primary.main,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.hoverOpacity}`)}}}))),im="tr",sm=u.forwardRef(function TableRow(e,t){const n=useDefaultProps({props:e,name:"MuiTableRow"}),{className:a,component:o=im,hover:i=!1,selected:s=!1,...l}=n,c=u.useContext(qp),d={...n,component:o,hover:i,selected:s,head:c&&"head"===c.variant,footer:c&&"footer"===c.variant};return(0,Fa.jsx)(om,{as:o,ref:t,className:clsx(useUtilityClasses$5(d).root,a),role:o===im?null:"row",ownerState:d,...l})});function easeInOutSin(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function animate(e,t,n,a={},o=()=>{}){const{ease:i=easeInOutSin,duration:s=300}=a;let l=null;const c=t[e];let u=!1;const cancel=()=>{u=!0},step=a=>{if(u)return void o(new Error("Animation cancelled"));null===l&&(l=a);const d=Math.min(1,(a-l)/s);t[e]=i(d)*(n-c)+c,d>=1?requestAnimationFrame(()=>{o(null)}):requestAnimationFrame(step)};return c===n?(o(new Error("Element already at target position")),cancel):(requestAnimationFrame(step),cancel)}var lm={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll",pointerEvents:"none"};function ScrollbarSize(e){const{onChange:t,...n}=e,a=u.useRef(),o=u.useRef(null),setMeasurements=()=>{a.current=o.current.offsetHeight-o.current.clientHeight};return Us(()=>{const e=Ls(()=>{const e=a.current;setMeasurements(),e!==a.current&&t(a.current)}),n=qs(o.current);return n.addEventListener("resize",e),()=>{e.clear(),n.removeEventListener("resize",e)}},[t]),u.useEffect(()=>{setMeasurements(),t(a.current)},[t]),(0,Fa.jsx)("div",{style:lm,...n,ref:o})}function getTabScrollButtonUtilityClass(e){return generateUtilityClass("MuiTabScrollButton",e)}var cm=generateUtilityClasses("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),useUtilityClasses$4=e=>{const{classes:t,orientation:n,disabled:a}=e;return composeClasses({root:["root",n,a&&"disabled"]},getTabScrollButtonUtilityClass,t)},um=Ts(wl,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${cm.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),dm=u.forwardRef(function TabScrollButton(e,t){const n=useDefaultProps({props:e,name:"MuiTabScrollButton"}),{className:a,slots:o={},slotProps:i={},direction:s,orientation:l,disabled:c,...u}=n,{nativeButton:d,...p}=u,m=useRtl(),g={isRtl:m,...n},h=useUtilityClasses$4(g),b=o.StartScrollButtonIcon??rm,y=o.EndScrollButtonIcon??nm,v=useSlotProps({elementType:b,externalSlotProps:i.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:g}),S=useSlotProps({elementType:y,externalSlotProps:i.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:g});return(0,Fa.jsx)(um,{component:"div",className:clsx(h.root,a),ref:t,role:null,ownerState:g,tabIndex:null,...p,style:{...p.style,..."vertical"===l&&{"--TabScrollButton-svgRotate":`rotate(${m?-90:90}deg)`}},children:"left"===s?(0,Fa.jsx)(b,{...v}):(0,Fa.jsx)(y,{...S})})});function getTabsUtilityClass(e){return generateUtilityClass("MuiTabs",e)}var pm=generateUtilityClasses("MuiTabs",["root","vertical","list","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),useUtilityClasses$3=e=>{const{vertical:t,fixed:n,hideScrollbar:a,scrollableX:o,scrollableY:i,centered:s,scrollButtonsHideMobile:l,classes:c}=e;return composeClasses({root:["root",t&&"vertical"],scroller:["scroller",n&&"fixed",a&&"hideScrollbar",o&&"scrollableX",i&&"scrollableY"],list:["list",t&&"vertical",s&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",l&&"scrollButtonsHideMobile"],scrollableX:[o&&"scrollableX"],hideScrollbar:[a&&"hideScrollbar"]},getTabsUtilityClass,c)},mm=Ts("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${pm.scrollButtons}`]:t.scrollButtons},{[`& .${pm.scrollButtons}`]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(Is(({theme:e})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.scrollButtonsHideMobile,style:{[`& .${pm.scrollButtons}`]:{[e.breakpoints.down("sm")]:{display:"none"}}}}]}))),fm=Ts("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),gm=Ts("div",{name:"MuiTabs",slot:"List",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.list,n.centered&&t.centered]}})({display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.centered,style:{justifyContent:"center"}}]}),hm=Ts("span",{name:"MuiTabs",slot:"Indicator"})(Is(({theme:e})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:e.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:e})=>e.vertical,style:{height:"100%",width:2,right:0}}]}))),bm=Ts(ScrollbarSize)({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),ym={},vm=u.forwardRef(function Tabs(e,t){const n=useDefaultProps({props:e,name:"MuiTabs"}),a=useTheme(),o=useRtl(),{"aria-label":i,"aria-labelledby":s,action:l,centered:c=!1,children:d,className:p,component:m="div",allowScrollButtonsMobile:g=!1,indicatorColor:h="primary",onChange:b,orientation:y="horizontal",scrollButtons:v="auto",selectionFollowsFocus:S,slots:x={},slotProps:C={},textColor:w="primary",value:k,variant:E="standard",visibleScrollbar:P=!1,...T}=n,R="scrollable"===E,M="vertical"===y,D=M?"scrollTop":"scrollLeft",O=M?"top":"left",$=M?"bottom":"right",I=M?"clientHeight":"clientWidth",N=M?"height":"width",L={...n,component:m,allowScrollButtonsMobile:g,indicatorColor:h,orientation:y,vertical:M,scrollButtons:v,textColor:w,variant:E,visibleScrollbar:P,fixed:!R,hideScrollbar:R&&!P,scrollableX:R&&!M,scrollableY:R&&M,centered:c&&!R,scrollButtonsHideMobile:!g},j=useUtilityClasses$3(L),B=useSlotProps({elementType:x.startScrollButtonIcon,externalSlotProps:C.startScrollButtonIcon,ownerState:L}),F=useSlotProps({elementType:x.endScrollButtonIcon,externalSlotProps:C.endScrollButtonIcon,ownerState:L}),[q,U]=u.useState(!1),[V,H]=u.useState(ym),[W,G]=u.useState(!1),[Y,K]=u.useState(!1),[Q,Z]=u.useState(!1),X=!1===k?null:k,[J,ee]=u.useState(!1),[te,re]=u.useState({overflow:"hidden",scrollbarWidth:0}),ne=new Map,ae=u.useRef(null),oe=u.useRef(null),ie={slots:x,slotProps:C},getTabsMeta=()=>{const e=ae.current;let t,n;if(e){const n=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollWidth:e.scrollWidth,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}if(e&&!1!==k){const e=oe.current.children;if(e.length>0){const t=e[ne.get(k)];n=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:n}},se=Ws(()=>{const{tabsMeta:e,tabMeta:t}=getTabsMeta();let n,a=0;M?(n="top",t&&e&&(a=t.top-e.top+e.scrollTop)):(n=o?"right":"left",t&&e&&(a=(o?-1:1)*(t[n]-e[n]+e.scrollLeft)));const i={[n]:a,[N]:t?t[N]:0};if("number"!=typeof V[n]||"number"!=typeof V[N])H(i);else{const e=Math.abs(V[n]-i[n]),t=Math.abs(V[N]-i[N]);(e>=1||t>=1)&&H(i)}}),scroll=(e,{animation:t=!0}={})=>{t?animate(D,ae.current,e,{duration:a.transitions.duration.standard}):ae.current[D]=e},moveTabsScroll=e=>{let t=ae.current[D];t+=M?e:e*(o?-1:1),scroll(t)},getScrollSize=()=>{const e=ae.current[I];let t=0;const n=Array.from(oe.current.children);for(let a=0;a<n.length;a+=1){const o=n[a];if(t+o[I]>e){0===a&&(t=e);break}t+=o[I]}return t},handleStartScrollClick=()=>{moveTabsScroll(-1*getScrollSize())},handleEndScrollClick=()=>{moveTabsScroll(getScrollSize())},[le,{onChange:ce,...ue}]=useSlot("scrollbar",{className:clsx(j.scrollableX,j.hideScrollbar),elementType:bm,shouldForwardComponentProp:!0,externalForwardedProps:ie,ownerState:L}),de=u.useCallback(e=>{ce?.(e),re({overflow:null,scrollbarWidth:e})},[ce]),[pe,me]=useSlot("scrollButtons",{className:j.scrollButtons,elementType:dm,externalForwardedProps:ie,ownerState:L,additionalProps:{orientation:y,slots:{StartScrollButtonIcon:x.startScrollButtonIcon,EndScrollButtonIcon:x.endScrollButtonIcon},slotProps:{startScrollButtonIcon:B,endScrollButtonIcon:F}}}),getConditionalElements=()=>{const e={};e.scrollbarSizeListener=R?(0,Fa.jsx)(le,{...ue,onChange:de}):null;const t=R&&("auto"===v&&(W||Y)||!0===v);return e.scrollButtonStart=t?(0,Fa.jsx)(pe,{direction:o?"right":"left",onClick:handleStartScrollClick,disabled:!W,...me}):null,e.scrollButtonEnd=t?(0,Fa.jsx)(pe,{direction:o?"left":"right",onClick:handleEndScrollClick,disabled:!Y,...me}):null,e},fe=Ws(e=>{const{tabsMeta:t,tabMeta:n}=getTabsMeta();n&&t&&(n[O]<t[O]?scroll(t[D]+(n[O]-t[O]),{animation:e}):n[$]>t[$]&&scroll(t[D]+(n[$]-t[$]),{animation:e}))}),ge=Ws(()=>{R&&!1!==v&&Z(!Q)});u.useEffect(()=>{const e=Ls(()=>{ae.current&&se()});let t;const handleMutation=n=>{n.forEach(e=>{e.removedNodes.forEach(e=>{t?.unobserve(e)}),e.addedNodes.forEach(e=>{t?.observe(e)})}),e(),ge()},n=qs(ae.current);let a;return n.addEventListener("resize",e),"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(e),Array.from(oe.current.children).forEach(e=>{t.observe(e)})),"undefined"!=typeof MutationObserver&&(a=new MutationObserver(handleMutation),a.observe(oe.current,{childList:!0})),()=>{e.clear(),n.removeEventListener("resize",e),a?.disconnect(),t?.disconnect()}},[se,ge]),u.useEffect(()=>{const e=Array.from(oe.current.children),t=e.length;if("undefined"!=typeof IntersectionObserver&&t>0&&R&&!1!==v){const n=e[0],a=e[t-1],o={root:ae.current,threshold:.99},i=new IntersectionObserver(e=>{G(!e[0].isIntersecting)},o);i.observe(n);const s=new IntersectionObserver(e=>{K(!e[0].isIntersecting)},o);return s.observe(a),()=>{i.disconnect(),s.disconnect()}}},[R,v,Q,d?.length]),u.useEffect(()=>{U(!0)},[]),u.useEffect(()=>{se()}),u.useEffect(()=>{fe(ym!==V)},[fe,V]),u.useImperativeHandle(l,()=>({updateIndicator:se,updateScrollButtons:ge}),[se,ge]);const[he,be]=useSlot("indicator",{className:j.indicator,elementType:hm,externalForwardedProps:ie,ownerState:L,additionalProps:{style:V}}),ye=(0,Fa.jsx)(he,{...be}),ve=useRovingTabIndexRoot({activeItemId:J?void 0:X,orientation:y,isRtl:o}),Se=ve.getContainerProps(),xe=u.Children.toArray(d).filter(u.isValidElement).map((e,t)=>{const n=void 0===e.props.value?t:e.props.value;return ne.set(n,t),{child:e,index:t,childValue:n}}).map(({child:e,childValue:t})=>{const n=t===k;return u.cloneElement(e,{fullWidth:"fullWidth"===E,indicator:n&&!q&&ye,selected:n,selectionFollowsFocus:S,onChange:b,textColor:w,value:t})}),Ce=getConditionalElements(),[we,ke]=useSlot("root",{ref:t,className:clsx(j.root,p),elementType:mm,externalForwardedProps:{...ie,...T,component:m},ownerState:L}),[Ee,_e]=useSlot("scroller",{ref:ae,className:j.scroller,elementType:fm,externalForwardedProps:ie,ownerState:L,additionalProps:{style:{overflow:te.overflow,[M?"margin"+(o?"Left":"Right"):"marginBottom"]:P?void 0:-te.scrollbarWidth}}}),Pe=Gs(Se.ref,oe),handleKeyDown=e=>{const t=oe.current;"tab"===Bs(Fs(t))?.getAttribute("role")&&Se.onKeyDown(e)},[Te,Ae]=useSlot("list",{ref:Pe,className:j.list,elementType:gm,externalForwardedProps:ie,ownerState:L,getSlotProps:e=>({...e,onBlur:t=>{pu(t.currentTarget,t.relatedTarget)||ee(!1),e.onBlur?.(t)},onKeyDown:t=>{handleKeyDown(t),e.onKeyDown?.(t)},onFocus:t=>{ee(!0),Se.onFocus(t),e.onFocus?.(t)}})});return(0,Fa.jsxs)(we,{...ke,children:[Ce.scrollButtonStart,Ce.scrollbarSizeListener,(0,Fa.jsxs)(Ee,{..._e,children:[(0,Fa.jsx)(Te,{"aria-label":i,"aria-labelledby":s,"aria-orientation":"vertical"===y?"vertical":null,role:"tablist",...Ae,children:(0,Fa.jsx)(md.Provider,{value:ve,children:xe})}),q&&ye]}),Ce.scrollButtonEnd]})});function getTextFieldUtilityClass(e){return generateUtilityClass("MuiTextField",e)}generateUtilityClasses("MuiTextField",["root"]);var Sm={standard:od,filled:Lu,outlined:Hd},useUtilityClasses$2=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getTextFieldUtilityClass,t)},xm=Ts(Bu,{name:"MuiTextField",slot:"Root"})({}),Cm=u.forwardRef(function TextField(e,t){const n=useDefaultProps({props:e,name:"MuiTextField"}),{autoComplete:a,autoFocus:o=!1,children:i,className:s,color:l="primary",defaultValue:c,disabled:u=!1,error:d=!1,fullWidth:p=!1,helperText:m,id:g,inputRef:h,label:b,maxRows:y,minRows:v,multiline:S=!1,name:x,onBlur:C,onChange:w,onFocus:k,placeholder:E,required:P=!1,rows:T,select:R=!1,slots:M={},slotProps:D={},type:O,value:$,variant:I="outlined",...N}=n,L={...n,autoFocus:o,color:l,disabled:u,error:d,fullWidth:p,multiline:S,required:P,select:R,variant:I},j=useUtilityClasses$2(L),B=useId(g),F=m&&B?`${B}-helper-text`:void 0,q=b&&B?`${B}-label`:void 0,U=Sm[I],V={slots:M,slotProps:D},[H,W]=useSlot("select",{elementType:ip,externalForwardedProps:V,ownerState:L}),G=R&&W.native,Y={},K=V.slotProps.inputLabel;"outlined"===I&&(K&&void 0!==K.shrink&&(Y.notched=K.shrink),Y.label=b),R&&(G||(Y.id=void 0),Y["aria-describedby"]=void 0);const[Q,Z]=useSlot("root",{elementType:xm,shouldForwardComponentProp:!0,externalForwardedProps:{...V,...N},ownerState:L,className:clsx(j.root,s),ref:t,additionalProps:{disabled:u,error:d,fullWidth:p,required:P,color:l,variant:I}}),[X,J]=useSlot("input",{elementType:U,externalForwardedProps:V,additionalProps:Y,ownerState:L}),[ee,te]=useSlot("inputLabel",{elementType:sd,externalForwardedProps:V,ownerState:L}),[re,ne]=useSlot("htmlInput",{elementType:"input",externalForwardedProps:V,ownerState:L}),[ae,oe]=useSlot("formHelperText",{elementType:Yu,externalForwardedProps:V,ownerState:L}),ie=(0,Fa.jsx)(X,{"aria-describedby":F,autoComplete:a,autoFocus:o,defaultValue:c,fullWidth:p,multiline:S,name:x,rows:T,maxRows:y,minRows:v,type:O,value:$,id:B,inputRef:h,onBlur:C,onChange:w,onFocus:k,placeholder:E,inputProps:ne,slots:{input:M.htmlInput?re:void 0},...J});return(0,Fa.jsxs)(Q,{...Z,children:[null!=b&&""!==b&&(0,Fa.jsx)(ee,{htmlFor:R&&!G?void 0:B,id:q,...R&&!G&&{component:"div"},...te,children:b}),R?(0,Fa.jsx)(H,{"aria-describedby":F,id:B,labelId:q,value:$,input:ie,...W,children:i}):ie,m&&(0,Fa.jsx)(ae,{id:F,...oe,children:m})]})});function getToggleButtonUtilityClass(e){return generateUtilityClass("MuiToggleButton",e)}var wm=generateUtilityClasses("MuiToggleButton",["root","disabled","selected","standard","primary","secondary","sizeSmall","sizeMedium","sizeLarge","fullWidth"]),km=u.createContext({}),Em=u.createContext(void 0);function isValueSelected(e,t){return void 0!==t&&void 0!==e&&(Array.isArray(t)?t.includes(e):e===t)}var useUtilityClasses$1=e=>{const{classes:t,fullWidth:n,selected:a,disabled:o,size:i,color:s}=e;return composeClasses({root:["root",a&&"selected",o&&"disabled",n&&"fullWidth",`size${$s(i)}`,s]},getToggleButtonUtilityClass,t)},_m=Ts(wl,{name:"MuiToggleButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`size${$s(n.size)}`]]}})(Is(({theme:e})=>({...e.typography.button,borderRadius:(e.vars||e).shape.borderRadius,padding:11,border:`1px solid ${(e.vars||e).palette.divider}`,color:(e.vars||e).palette.action.active,[`&.${wm.disabled}`]:{color:(e.vars||e).palette.action.disabled,border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"&:hover":{textDecoration:"none",backgroundColor:e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[{props:{color:"standard"},style:{[`&.${wm.selected}`]:{color:(e.vars||e).palette.text.primary,backgroundColor:e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.selectedOpacity),"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.text.primary,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.hoverOpacity}`),"@media (hover: none)":{backgroundColor:e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.selectedOpacity)}}}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&.${wm.selected}`]:{color:(e.vars||e).palette[t].main,backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.selectedOpacity),"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.hoverOpacity}`),"@media (hover: none)":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.selectedOpacity)}}}}})),{props:{fullWidth:!0},style:{width:"100%"}},{props:{size:"small"},style:{padding:7,fontSize:e.typography.pxToRem(13)}},{props:{size:"large"},style:{padding:15,fontSize:e.typography.pxToRem(15)}}]}))),Pm=u.forwardRef(function ToggleButton(e,t){const{value:n,...a}=u.useContext(km),o=u.useContext(Em),i=useDefaultProps({props:resolveProps({...a,selected:isValueSelected(e.value,n)},e),name:"MuiToggleButton"}),{children:s,className:l,color:c="standard",disabled:d=!1,disableFocusRipple:p=!1,fullWidth:m=!1,onChange:g,onClick:h,selected:b,size:y="medium",value:v,...S}=i,x={...i,color:c,disabled:d,disableFocusRipple:p,fullWidth:m,size:y},C=useUtilityClasses$1(x),handleChange=e=>{h&&(h(e,v),e.defaultPrevented)||g&&g(e,v)},w=o||"";return(0,Fa.jsx)(_m,{className:clsx(a.className,C.root,l,w),internalNativeButton:!0,disabled:d,focusRipple:!p,ref:t,onClick:handleChange,onChange:g,value:v,ownerState:x,"aria-pressed":b,...S,children:s})});function getToggleButtonGroupUtilityClass(e){return generateUtilityClass("MuiToggleButtonGroup",e)}var Tm=generateUtilityClasses("MuiToggleButtonGroup",["root","selected","horizontal","vertical","disabled","grouped","fullWidth","firstButton","lastButton","middleButton"]),useUtilityClasses=e=>{const{classes:t,orientation:n,fullWidth:a,disabled:o}=e;return composeClasses({root:["root",n,a&&"fullWidth"],grouped:["grouped",o&&"disabled"],firstButton:["firstButton"],lastButton:["lastButton"],middleButton:["middleButton"]},getToggleButtonGroupUtilityClass,t)},Am=Ts("div",{name:"MuiToggleButtonGroup",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${Tm.grouped}`]:t.grouped},{[`& .${Tm.firstButton}`]:t.firstButton},{[`& .${Tm.lastButton}`]:t.lastButton},{[`& .${Tm.middleButton}`]:t.middleButton},t.root,"vertical"===n.orientation&&t.vertical,n.fullWidth&&t.fullWidth]}})(Is(({theme:e})=>({display:"inline-flex",borderRadius:(e.vars||e).shape.borderRadius,variants:[{props:{orientation:"vertical"},style:{flexDirection:"column",[`& .${Tm.grouped}`]:{[`&.${Tm.selected} + .${Tm.grouped}.${Tm.selected}`]:{borderTop:0,marginTop:0}},[`& .${Tm.firstButton},& .${Tm.middleButton}`]:{borderBottomLeftRadius:0,borderBottomRightRadius:0},[`& .${Tm.lastButton},& .${Tm.middleButton}`]:{marginTop:-1,borderTop:"1px solid transparent",borderTopLeftRadius:0,borderTopRightRadius:0},[`& .${Tm.lastButton}.${wm.disabled},& .${Tm.middleButton}.${wm.disabled}`]:{borderTop:"1px solid transparent"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{orientation:"horizontal"},style:{[`& .${Tm.grouped}`]:{[`&.${Tm.selected} + .${Tm.grouped}.${Tm.selected}`]:{borderLeft:0,marginLeft:0}},[`& .${Tm.firstButton},& .${Tm.middleButton}`]:{borderTopRightRadius:0,borderBottomRightRadius:0},[`& .${Tm.lastButton},& .${Tm.middleButton}`]:{marginLeft:-1,borderLeft:"1px solid transparent",borderTopLeftRadius:0,borderBottomLeftRadius:0},[`& .${Tm.lastButton}.${wm.disabled},& .${Tm.middleButton}.${wm.disabled}`]:{borderLeft:"1px solid transparent"}}}]}))),Rm=u.forwardRef(function ToggleButtonGroup(e,t){const n=useDefaultProps({props:e,name:"MuiToggleButtonGroup"}),{children:a,className:o,color:i="standard",disabled:s=!1,exclusive:l=!1,fullWidth:c=!1,onChange:d,orientation:p="horizontal",size:m="medium",value:g,...h}=n,b={...n,disabled:s,fullWidth:c,orientation:p,size:m},y=useUtilityClasses(b),v=u.useCallback((e,t)=>{if(!d)return;const n=g&&g.indexOf(t);let a;g&&n>=0?(a=g.slice(),a.splice(n,1)):a=g?g.concat(t):[t],d(e,a)},[d,g]),S=u.useCallback((e,t)=>{d&&d(e,g===t?null:t)},[d,g]),x=u.useMemo(()=>({className:y.grouped,onChange:l?S:v,value:g,size:m,fullWidth:c,color:i,disabled:s}),[y.grouped,l,S,v,g,m,c,i,s]),C=getValidReactChildren(a),w=C.length,getButtonPositionClassName=e=>{const t=0===e,n=e===w-1;return t&&n?"":t?y.firstButton:n?y.lastButton:y.middleButton};return(0,Fa.jsx)(Am,{role:"group",className:clsx(y.root,o),ref:t,ownerState:b,...h,children:(0,Fa.jsx)(km.Provider,{value:x,children:C.map((e,t)=>(0,Fa.jsx)(Em.Provider,{value:getButtonPositionClassName(t),children:e},t))})})}),Mm=createTheme({palette:{mode:"dark",text:{primary:"#FFF5D6",secondary:"#C0B090",muted:"#706050",accent:"#FFD700"},background:{primary:"#0d0d0d",panel:"#141414",header:"#1a1a1a",modal:"#1e1e1e"},primary:{main:"#FFD700"}},typography:{fontFamily:"Roboto Mono, Consolas, monospace",fontSize:13},components:{MuiSwitch:{defaultProps:{size:"small"}},MuiTextField:{defaultProps:{size:"small"}},MuiSelect:{defaultProps:{size:"small"}},MuiPopover:{styleOverrides:{paper:{background:"#000",border:"1px solid #fff"}}},MuiDialog:{styleOverrides:{paper:({theme:e})=>({backgroundImage:"none",border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius})}}}}),Dm=!1;function useDialogOpen(e){const[t,n]=(0,u.useState)(Dm);return(0,u.useEffect)(()=>e?.events?.on?.(re.UI_CONFIG_CHANGED,({open:e})=>{n(Boolean(e))})??void 0,[e]),[t,n]}var Om=Symbol.for("immer-nothing"),$m=Symbol.for("immer-draftable"),Im=Symbol.for("immer-state");function die(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Nm=Object,zm=Nm.getPrototypeOf,Lm="constructor",jm="prototype",Bm="configurable",Fm="enumerable",qm="writable",Um="value",isDraft=e=>!!e&&!!e[Im];function isDraftable(e){return!!e&&(isPlainObject(e)||Wm(e)||!!e[$m]||!!e[Lm]?.[$m]||isMap(e)||isSet(e))}var Vm=Nm[jm][Lm].toString(),Hm=new WeakMap;function isPlainObject(e){if(!e||!isObjectish(e))return!1;const t=zm(e);if(null===t||t===Nm[jm])return!0;const n=Nm.hasOwnProperty.call(t,Lm)&&t[Lm];if(n===Object)return!0;if(!isFunction(n))return!1;let a=Hm.get(n);return void 0===a&&(a=Function.toString.call(n),Hm.set(n,a)),a===Vm}function each(e,t,n=!0){0===getArchtype(e)?(n?Reflect.ownKeys(e):Nm.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,a)=>t(a,n,e))}function getArchtype(e){const t=e[Im];return t?t.type_:Wm(e)?1:isMap(e)?2:isSet(e)?3:0}var has=(e,t,n=getArchtype(e))=>2===n?e.has(t):Nm[jm].hasOwnProperty.call(e,t),get=(e,t,n=getArchtype(e))=>2===n?e.get(t):e[t],set=(e,t,n,a=getArchtype(e))=>{2===a?e.set(t,n):3===a?e.add(n):e[t]=n};function is(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}var Wm=Array.isArray,isMap=e=>e instanceof Map,isSet=e=>e instanceof Set,isObjectish=e=>"object"==typeof e,isFunction=e=>"function"==typeof e,isBoolean=e=>"boolean"==typeof e;function isArrayIndex(e){const t=+e;return Number.isInteger(t)&&String(t)===e}var latest=e=>e.copy_||e.base_,getFinalValue=e=>e.modified_?e.copy_:e.base_;function shallowCopy(e,t){if(isMap(e))return new Map(e);if(isSet(e))return new Set(e);if(Wm(e))return Array[jm].slice.call(e);const n=isPlainObject(e);if(!0===t||"class_only"===t&&!n){const t=Nm.getOwnPropertyDescriptors(e);delete t[Im];let n=Reflect.ownKeys(t);for(let a=0;a<n.length;a++){const o=n[a],i=t[o];!1===i[qm]&&(i[qm]=!0,i[Bm]=!0),(i.get||i.set)&&(t[o]={[Bm]:!0,[qm]:!0,[Fm]:i[Fm],[Um]:e[o]})}return Nm.create(zm(e),t)}{const t=zm(e);if(null!==t&&n)return{...e};const a=Nm.create(t);return Nm.assign(a,e)}}function freeze(e,t=!1){return isFrozen(e)||isDraft(e)||!isDraftable(e)||(getArchtype(e)>1&&Nm.defineProperties(e,{set:Gm,add:Gm,clear:Gm,delete:Gm}),Nm.freeze(e),t&&each(e,(e,t)=>{freeze(t,!0)},!1)),e}function dontMutateFrozenCollections(){die(2)}var Gm={[Um]:dontMutateFrozenCollections};function isFrozen(e){return null===e||!isObjectish(e)||Nm.isFrozen(e)}var Ym="MapSet",Km="Patches",Qm="ArrayMethods",Zm={};function getPlugin(e){const t=Zm[e];return t||die(0,e),t}var Xm,isPluginLoaded=e=>!!Zm[e],getCurrentScope=()=>Xm,createScope=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:isPluginLoaded(Ym)?getPlugin(Ym):void 0,arrayMethodsPlugin_:isPluginLoaded(Qm)?getPlugin(Qm):void 0});function usePatchesInScope(e,t){t&&(e.patchPlugin_=getPlugin(Km),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function revokeScope(e){leaveScope(e),e.drafts_.forEach(revokeDraft),e.drafts_=null}function leaveScope(e){e===Xm&&(Xm=e.parent_)}var enterScope=e=>Xm=createScope(Xm,e);function revokeDraft(e){const t=e[Im];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function processResult(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];if(void 0!==e&&e!==n){n[Im].modified_&&(revokeScope(t),die(4)),isDraftable(e)&&(e=finalize(t,e));const{patchPlugin_:a}=t;a&&a.generateReplacementPatches_(n[Im].base_,e,t)}else e=finalize(t,n);return maybeFreeze(t,e,!0),revokeScope(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Om?e:void 0}function finalize(e,t){if(isFrozen(t))return t;const n=t[Im];if(!n)return handleValue(t,e.handledSet_,e);if(!isSameScope(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){const{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);generatePatchesAndFinalize(n,e)}return n.copy_}function maybeFreeze(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&freeze(t,n)}function markStateFinalized(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var isSameScope=(e,t)=>e.scope_===t,Jm=[];function updateDraftInParent(e,t,n,a){const o=latest(e),i=e.type_;if(void 0!==a&&get(o,a,i)===t)return void set(o,a,n,i);if(!e.draftLocations_){const t=e.draftLocations_=new Map;each(o,(e,n)=>{if(isDraft(n)){const a=t.get(n)||[];a.push(e),t.set(n,a)}})}const s=e.draftLocations_.get(t)??Jm;for(const l of s)set(o,l,n,i)}function registerChildFinalizationCallback(e,t,n){e.callbacks_.push(function childCleanup(a){const o=t;if(!o||!isSameScope(o,a))return;a.mapSetPlugin_?.fixSetContents(o);const i=getFinalValue(o);updateDraftInParent(e,o.draft_??o,i,n),generatePatchesAndFinalize(o,a)})}function generatePatchesAndFinalize(e,t){if(e.modified_&&!e.finalized_&&(3===e.type_||1===e.type_&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){const{patchPlugin_:n}=t;if(n){const a=n.getPath(e);a&&n.generatePatches_(e,a,t)}markStateFinalized(e)}}function handleCrossReference(e,t,n){const{scope_:a}=e;if(isDraft(n)){const o=n[Im];isSameScope(o,a)&&o.callbacks_.push(function crossReferenceCleanup(){prepareCopy(e),updateDraftInParent(e,n,getFinalValue(o),t)})}else isDraftable(n)&&e.callbacks_.push(function nestedDraftCleanup(){const o=latest(e);3===e.type_?o.has(n)&&handleValue(n,a.handledSet_,a):get(o,t,e.type_)===n&&a.drafts_.length>1&&!0===(e.assigned_.get(t)??!1)&&e.copy_&&handleValue(get(e.copy_,t,e.type_),a.handledSet_,a)})}function handleValue(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||isDraft(e)||t.has(e)||!isDraftable(e)||isFrozen(e)||(t.add(e),each(e,(a,o)=>{if(isDraft(o)){const t=o[Im];isSameScope(t,n)&&(set(e,a,getFinalValue(t),e.type_),markStateFinalized(t))}else isDraftable(o)&&handleValue(o,t,n)})),e}function createProxyProxy(e,t){const n=Wm(e),a={type_:n?1:0,scope_:t?t.scope_:getCurrentScope(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let o=a,i=ef;n&&(o=[a],i=tf);const{revoke:s,proxy:l}=Proxy.revocable(o,i);return a.draft_=l,a.revoke_=s,[l,a]}var ef={get(e,t){if(t===Im)return e;let n=e.scope_.arrayMethodsPlugin_;const a=1===e.type_&&"string"==typeof t;if(a&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);const o=latest(e);if(!has(o,t,e.type_))return readPropFromProto(e,o,t);const i=o[t];if(e.finalized_||!isDraftable(i))return i;if(a&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&isArrayIndex(t))return i;if(i===peek(e.base_,t)){prepareCopy(e);const n=1===e.type_?+t:t,a=createProxy(e.scope_,i,e,n);return e.copy_[n]=a}return i},has:(e,t)=>t in latest(e),ownKeys:e=>Reflect.ownKeys(latest(e)),set(e,t,n){const a=getDescriptorFromProto(latest(e),t);if(a?.set)return a.set.call(e.draft_,n),!0;if(!e.modified_){const a=peek(latest(e),t),o=a?.[Im];if(o&&o.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(is(n,a)&&(void 0!==n||has(e.base_,t,e.type_)))return!0;prepareCopy(e),markChanged(e)}return e.copy_[t]===n&&(void 0!==n||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_.set(t,!0),handleCrossReference(e,t,n)),!0},deleteProperty:(e,t)=>(prepareCopy(e),void 0!==peek(e.base_,t)||t in e.base_?(e.assigned_.set(t,!1),markChanged(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=latest(e),a=Reflect.getOwnPropertyDescriptor(n,t);return a?{[qm]:!0,[Bm]:1!==e.type_||"length"!==t,[Fm]:a[Fm],[Um]:n[t]}:a},defineProperty(){die(11)},getPrototypeOf:e=>zm(e.base_),setPrototypeOf(){die(12)}},tf={};for(let Lg in ef){let e=ef[Lg];tf[Lg]=function(){const t=arguments;return t[0]=t[0][0],e.apply(this,t)}}function peek(e,t){const n=e[Im];return(n?latest(n):e)[t]}function readPropFromProto(e,t,n){const a=getDescriptorFromProto(t,n);return a?Um in a?a[Um]:a.get?.call(e.draft_):void 0}function getDescriptorFromProto(e,t){if(!(t in e))return;let n=zm(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=zm(n)}}function markChanged(e){e.modified_||(e.modified_=!0,e.parent_&&markChanged(e.parent_))}function prepareCopy(e){e.copy_||(e.assigned_=new Map,e.copy_=shallowCopy(e.base_,e.scope_.immer_.useStrictShallowCopy_))}tf.deleteProperty=function(e,t){return tf.set.call(this,e,t,void 0)},tf.set=function(e,t,n){return ef.set.call(this,e[0],t,n,e[0])};var rf=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(isFunction(e)&&!isFunction(t)){const n=t;t=e;const a=this;return function curriedProduce(e=n,...o){return a.produce(e,e=>t.call(this,e,...o))}}let a;if(isFunction(t)||die(6),void 0===n||isFunction(n)||die(7),isDraftable(e)){const o=enterScope(this),i=createProxy(o,e,void 0);let s=!0;try{a=t(i),s=!1}finally{s?revokeScope(o):leaveScope(o)}return usePatchesInScope(o,n),processResult(a,o)}if(!e||!isObjectish(e)){if(a=t(e),void 0===a&&(a=e),a===Om&&(a=void 0),this.autoFreeze_&&freeze(a,!0),n){const t=[],o=[];getPlugin(Km).generateReplacementPatches_(e,a,{patches_:t,inversePatches_:o}),n(t,o)}return a}die(1,e)},this.produceWithPatches=(e,t)=>{if(isFunction(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,a;return[this.produce(e,t,(e,t)=>{n=e,a=t}),n,a]},isBoolean(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),isBoolean(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),isBoolean(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){isDraftable(e)||die(8),isDraft(e)&&(e=current(e));const t=enterScope(this),n=createProxy(t,e,void 0);return n[Im].isManual_=!0,leaveScope(t),n}finishDraft(e,t){const n=e&&e[Im];n&&n.isManual_||die(9);const{scope_:a}=n;return usePatchesInScope(a,t),processResult(void 0,a)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const a=t[n];if(0===a.path.length&&"replace"===a.op){e=a.value;break}}n>-1&&(t=t.slice(n+1));const a=getPlugin(Km).applyPatches_;return isDraft(e)?a(e,t):this.produce(e,e=>a(e,t))}};function createProxy(e,t,n,a){const[o,i]=isMap(t)?getPlugin(Ym).proxyMap_(t,n):isSet(t)?getPlugin(Ym).proxySet_(t,n):createProxyProxy(t,n);return(n?.scope_??getCurrentScope()).drafts_.push(o),i.callbacks_=n?.callbacks_??[],i.key_=a,n&&void 0!==a?registerChildFinalizationCallback(n,i,a):i.callbacks_.push(function rootDraftCleanup(e){e.mapSetPlugin_?.fixSetContents(i);const{patchPlugin_:t}=e;i.modified_&&t&&t.generatePatches_(i,[],e)}),o}function current(e){return isDraft(e)||die(10,e),currentImpl(e)}function currentImpl(e){if(!isDraftable(e)||isFrozen(e))return e;const t=e[Im];let n,a=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=shallowCopy(e,t.scope_.immer_.useStrictShallowCopy_),a=t.scope_.immer_.shouldUseStrictIteration()}else n=shallowCopy(e,!0);return each(n,(e,t)=>{set(n,e,currentImpl(t))},a),t&&(t.finalized_=!1),n}var nf=(new rf).produce,cloneSettings=(e={})=>nf(e,()=>{}),toFiniteNumber=(e,t=0)=>{const n=Number(e);return Number.isFinite(n)?n:t},toPriority=e=>toFiniteNumber(e,0),toConfigPriority=e=>Math.max(0,Math.min(26,toPriority(e))),toQuantity=e=>Math.max(0,toFiniteNumber(e,0)),isBlankInput=e=>""===e,toDraftConfigPriority=(e,t=0)=>{if(isBlankInput(e))return"";const n=Number(e);return Number.isFinite(n)?Math.max(0,Math.min(26,n)):t},normalizePriorityDraft=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=toConfigPriority(n),e),{}),buildAffPriorityDraft=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=toPriority(n?.defaultPriority),e),{}),buildDefPriorityDraft=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=toConfigPriority(n?.defaultPriority),e),{}),buildDefStaticDraft=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=Boolean(n?.static),e),{}),buildPrecacheDraft=(e={})=>Object.entries(e?.desiredPrecache??{}).reduce((e,[t,n])=>(e[t]=toQuantity(n),e),{}),buildDraft=(e={})=>({settings:cloneSettings(e.system?.settings??{}),affPriorities:buildAffPriorityDraft(e.affs??{}),defPriorities:buildDefPriorityDraft(e.defs??{}),defStatics:buildDefStaticDraft(e.defs??{}),desiredPrecache:buildPrecacheDraft(e.cache??{})}),keysChangedFrom=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].filter(n=>e[n]!==t[n]);function useSettingsForm(e){const[t]=(0,u.useState)(()=>buildDraft(e?.runtime?.snapshot?.()??{})),[n,a]=(0,u.useState)(()=>t.settings),[o,i]=(0,u.useState)(()=>t.affPriorities),[s,l]=(0,u.useState)(()=>t.defPriorities),[c,d]=(0,u.useState)(()=>t.defStatics),[p,m]=(0,u.useState)(()=>t.desiredPrecache);return{pending:n,set:(0,u.useCallback)((e,t)=>{a(n=>n?nf(n,n=>{const a=e.split(".");let o=n;for(let e=0;e<a.length-1;e+=1)o[a[e]]&&"object"==typeof o[a[e]]||(o[a[e]]={}),o=o[a[e]];o[a[a.length-1]]=t}):n)},[]),affPriorities:o,setAffPriority:(0,u.useCallback)((e,t)=>{i(n=>({...n,[e]:toConfigPriority(t)}))},[]),defPriorities:s,setDefPriority:(0,u.useCallback)((e,t)=>{l(n=>{const a=n?.[e]??0;return{...n,[e]:toDraftConfigPriority(t,a)}})},[]),defStatics:c,setDefStatic:(0,u.useCallback)((e,t)=>{d(n=>({...n,[e]:Boolean(t)}))},[]),desiredPrecache:p,setPrecache:(0,u.useCallback)((e,t)=>{m(n=>({...n,[e]:toQuantity(t)}))},[]),commit:(0,u.useCallback)(()=>{if(!e)return;const a=t;keysChangedFrom(o,a.affPriorities).forEach(t=>{e.api?.affs?.setDefaultPriority?.(t,o[t])});const i=normalizePriorityDraft(s);keysChangedFrom(i,a.defPriorities).forEach(t=>{e.api?.defs?.setDefaultPriority?.(t,i[t])}),keysChangedFrom(c,a.defStatics).forEach(t=>{e.api?.defs?.setStatic?.(t,c[t])});const l=keysChangedFrom(p,a.desiredPrecache).reduce((e,t)=>(e[t]=p[t]??0,e),{});Object.keys(l).length&&e.api?.ss?.precache?.set?.(l),n&&e.api?.control?.applySettings?.(n)},[n,o,s,c,p,t,e])}}function LabelledSwitch({label:e,checked:t,onChange:n}){return(0,Fa.jsx)(Vu,{control:(0,Fa.jsx)($p,{checked:Boolean(t),onChange:e=>n(e.target.checked),size:"small"}),label:e,sx:{ml:0,mr:0,gap:.5,alignItems:"center",userSelect:"none","& .MuiSwitch-root":{mr:.5},"& .MuiFormControlLabel-label":{fontSize:11,lineHeight:1.25}}})}function ThresholdSlider({label:e,value:t,onChange:n,min:a=0,max:o=100,step:i=5,unit:s="%"}){return(0,Fa.jsxs)(jc,{sx:{mb:1},children:[(0,Fa.jsxs)(Nl,{variant:"body2",sx:{mb:.5,fontSize:11,lineHeight:1.3},children:[e,": ",t,s]}),(0,Fa.jsx)(Sp,{value:t,min:a,max:o,step:i,onChange:(e,t)=>n(t),size:"small",sx:{color:"primary.main"}})]})}var af="50px",of={minWidth:95,height:25,px:1,fontSize:11,lineHeight:1};function SectionHeader({children:e}){return(0,Fa.jsx)(Nl,{variant:"overline",sx:{display:"block",color:"primary.main",mt:2,mb:.5,fontWeight:700},children:e})}function SystemSettingsTab({pending:e,set:t}){return e?(0,Fa.jsxs)(jc,{sx:{display:"flex",flexWrap:"wrap",alignItems:"flex-start",columnGap:{xs:2,md:af},rowGap:2,pt:1},children:[(0,Fa.jsxs)(jc,{sx:{flexGrow:0,flexShrink:0,flexBasis:{xs:"100%",md:250},width:{xs:"100%",md:250},minWidth:0},children:[(0,Fa.jsx)(SectionHeader,{children:"nexSys Config"}),(0,Fa.jsxs)(jc,{sx:{display:"flex",flexDirection:"column"},children:[(0,Fa.jsx)(LabelledSwitch,{label:"Load on login",checked:!!e.loadOnLogin,onChange:e=>t("loadOnLogin",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Queue while paused",checked:e.queueWhilePaused,onChange:e=>t("queueWhilePaused",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Override Tab target",checked:e.overrideTab,onChange:e=>t("overrideTab",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Custom Prompt",checked:e.customPrompt,onChange:e=>t("customPrompt",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Debug output",checked:e.debug,onChange:e=>t("debug",e)})]}),(0,Fa.jsx)(SectionHeader,{children:"Notices (Echo)"}),(0,Fa.jsxs)(jc,{sx:{display:"flex",flexDirection:"column"},children:[(0,Fa.jsx)(LabelledSwitch,{label:"Affliction gained",checked:e.notices?.affGot,onChange:e=>t("notices.affGot",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Affliction lost",checked:e.notices?.affLost,onChange:e=>t("notices.affLost",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Defence gained",checked:e.notices?.defGot,onChange:e=>t("notices.defGot",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Defence lost",checked:e.notices?.defLost,onChange:e=>t("notices.defLost",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Balance lost",checked:e.notices?.balanceLost,onChange:e=>t("notices.balanceLost",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Balance recovered",checked:e.notices?.balanceRecovered,onChange:e=>t("notices.balanceRecovered",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Trackable gained",checked:e.notices?.trackableGot,onChange:e=>t("notices.trackableGot",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Trackable lost",checked:e.notices?.trackableLost,onChange:e=>t("notices.trackableLost",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Priority changes",checked:e.notices?.priority,onChange:e=>t("notices.priority",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"General output",checked:e.notices?.output,onChange:e=>t("notices.output",e)})]})]}),(0,Fa.jsxs)(jc,{sx:{flexGrow:0,flexShrink:0,flexBasis:{xs:"100%",md:190},width:{xs:"100%",md:190},minWidth:0},children:[(0,Fa.jsx)(SectionHeader,{children:"Curing Method"}),(0,Fa.jsxs)(jc,{sx:{mb:1},children:[(0,Fa.jsx)(Nl,{variant:"caption",sx:{display:"block",mb:.5,opacity:.7},children:"Curing type"}),(0,Fa.jsxs)(Rm,{exclusive:!0,size:"small",value:e.ss?.transmutation?"transmutation":"concoctions",onChange:(e,n)=>n&&t("ss.transmutation","transmutation"===n),sx:{"& .MuiToggleButton-root":of},children:[(0,Fa.jsx)(Pm,{value:"transmutation",children:"Transmutation"}),(0,Fa.jsx)(Pm,{value:"concoctions",children:"Concoctions"})]})]}),(0,Fa.jsxs)(jc,{sx:{mb:1},children:[(0,Fa.jsx)(Nl,{variant:"caption",sx:{display:"block",mb:.5,opacity:.7},children:"Sip priority"}),(0,Fa.jsxs)(Rm,{exclusive:!0,size:"small",value:e.ss?.sipPriority??"health",onChange:(e,n)=>n&&t("ss.sipPriority",n),sx:{"& .MuiToggleButton-root":of},children:[(0,Fa.jsx)(Pm,{value:"health",children:"Health"}),(0,Fa.jsx)(Pm,{value:"mana",children:"Mana"})]})]}),(0,Fa.jsxs)(jc,{sx:{display:"flex",flexDirection:"column",mt:1},children:[(0,Fa.jsx)(LabelledSwitch,{label:"Batching",checked:e.ss?.batch,onChange:e=>t("ss.batch",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Tree Tattoo",checked:"on"===e.ss?.tree,onChange:e=>t("ss.tree",e?"on":"off")}),(0,Fa.jsx)(LabelledSwitch,{label:"Focus",checked:e.ss?.focus,onChange:e=>t("ss.focus",e)}),e.ss?.focus&&(0,Fa.jsx)(LabelledSwitch,{label:"Focus over Herbs",checked:e.ss?.focusOverHerbs,onChange:e=>t("ss.focusOverHerbs",e)}),(0,Fa.jsx)(LabelledSwitch,{label:"Blood clotting",checked:e.ss?.clot,onChange:e=>t("ss.clot",e)}),e.ss?.clot&&(0,Fa.jsx)(jc,{sx:{ml:1,mt:2,mb:.5},children:(0,Fa.jsx)(Cm,{label:"Clot above",value:e.ss?.clotAt??"",onChange:e=>t("ss.clotAt",Number(e.target.value)||0),type:"number",size:"small",sx:{width:100,maxWidth:"100%"},slotProps:{htmlInput:{min:0}}})})]})]}),(0,Fa.jsxs)(jc,{sx:{flexGrow:0,flexShrink:0,flexBasis:{xs:"100%",md:250},width:{xs:"100%",md:250},minWidth:0},children:[(0,Fa.jsx)(SectionHeader,{children:"Thresholds"}),(0,Fa.jsx)(ThresholdSlider,{label:"Sip health at",value:e.ss?.sipHealthAt??0,onChange:e=>t("ss.sipHealthAt",e)}),(0,Fa.jsx)(ThresholdSlider,{label:"Sip mana at",value:e.ss?.sipManaAt??0,onChange:e=>t("ss.sipManaAt",e)}),(0,Fa.jsx)(Iu,{sx:{my:1,opacity:.3}}),(0,Fa.jsx)(ThresholdSlider,{label:"Moss health at",value:e.ss?.mossHealthAt??0,onChange:e=>t("ss.mossHealthAt",e)}),(0,Fa.jsx)(ThresholdSlider,{label:"Moss mana at",value:e.ss?.mossManaAt??0,onChange:e=>t("ss.mossManaAt",e)}),(0,Fa.jsx)(Iu,{sx:{my:1,opacity:.3}}),(0,Fa.jsx)(ThresholdSlider,{label:"Cure fractures above",value:e.ss?.fracturesAbove??0,onChange:e=>t("ss.fracturesAbove",e)}),(0,Fa.jsx)(ThresholdSlider,{label:"Use mana abilities above",value:e.ss?.manaThreshold??0,onChange:e=>t("ss.manaThreshold",e)})]})]}):null}function useCombinedRefs(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];return(0,t.useMemo)(()=>e=>{n.forEach(t=>t(e))},n)}var sf="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function isWindow(e){const t=Object.prototype.toString.call(e);return"[object Window]"===t||"[object global]"===t}function isNode(e){return"nodeType"in e}function getWindow(e){var t,n;return e?isWindow(e)?e:isNode(e)&&null!=(t=null==(n=e.ownerDocument)?void 0:n.defaultView)?t:window:window}function isDocument(e){const{Document:t}=getWindow(e);return e instanceof t}function isHTMLElement(e){return!isWindow(e)&&e instanceof getWindow(e).HTMLElement}function isSVGElement(e){return e instanceof getWindow(e).SVGElement}function getOwnerDocument(e){return e?isWindow(e)?e.document:isNode(e)?isDocument(e)?e:isHTMLElement(e)||isSVGElement(e)?e.ownerDocument:document:document:document}var lf=sf?t.useLayoutEffect:t.useEffect;function useEvent(e){const n=(0,t.useRef)(e);return lf(()=>{n.current=e}),(0,t.useCallback)(function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return null==n.current?void 0:n.current(...t)},[])}function useInterval(){const e=(0,t.useRef)(null);return[(0,t.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,t.useCallback)(()=>{null!==e.current&&(clearInterval(e.current),e.current=null)},[])]}function useLatestValue(e,n){void 0===n&&(n=[e]);const a=(0,t.useRef)(e);return lf(()=>{a.current!==e&&(a.current=e)},n),a}function useLazyMemo(e,n){const a=(0,t.useRef)();return(0,t.useMemo)(()=>{const t=e(a.current);return a.current=t,t},[...n])}function useNodeRef(e){const n=useEvent(e),a=(0,t.useRef)(null);return[a,(0,t.useCallback)(e=>{e!==a.current&&n?.(e,a.current),a.current=e},[])]}function usePrevious(e){const n=(0,t.useRef)();return(0,t.useEffect)(()=>{n.current=e},[e]),n.current}var cf={};function useUniqueId(e,n){return(0,t.useMemo)(()=>{if(n)return n;const t=null==cf[e]?0:cf[e]+1;return cf[e]=t,e+"-"+t},[e,n])}function createAdjustmentFn(e){return function(t){for(var n=arguments.length,a=new Array(n>1?n-1:0),o=1;o<n;o++)a[o-1]=arguments[o];return a.reduce((t,n)=>{const a=Object.entries(n);for(const[o,i]of a){const n=t[o];null!=n&&(t[o]=n+e*i)}return t},{...t})}}var uf=createAdjustmentFn(1),df=createAdjustmentFn(-1);function hasViewportRelativeCoordinates(e){return"clientX"in e&&"clientY"in e}function isKeyboardEvent(e){if(!e)return!1;const{KeyboardEvent:t}=getWindow(e.target);return t&&e instanceof t}function isTouchEvent(e){if(!e)return!1;const{TouchEvent:t}=getWindow(e.target);return t&&e instanceof t}function getEventCoordinates(e){if(isTouchEvent(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return hasViewportRelativeCoordinates(e)?{x:e.clientX,y:e.clientY}:null}var pf=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[pf.Translate.toString(e),pf.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:a}=e;return t+" "+n+"ms "+a}}}),mf="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function findFirstFocusableNode(e){return e.matches(mf)?e:e.querySelector(mf)}var ff={display:"none"};function HiddenText(e){let{id:n,value:a}=e;return t.default.createElement("div",{id:n,style:ff},a)}function LiveRegion(e){let{id:n,announcement:a,ariaLiveType:o="assertive"}=e;return t.default.createElement("div",{id:n,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":o,"aria-atomic":!0},a)}function useAnnouncement(){const[e,n]=(0,t.useState)("");return{announce:(0,t.useCallback)(e=>{null!=e&&n(e)},[]),announcement:e}}var gf=(0,t.createContext)(null);function useDndMonitor(e){const n=(0,t.useContext)(gf);(0,t.useEffect)(()=>{if(!n)throw new Error("useDndMonitor must be used within a children of <DndContext>");return n(e)},[e,n])}function useDndMonitorProvider(){const[e]=(0,t.useState)(()=>new Set),n=(0,t.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,t.useCallback)(t=>{let{type:n,event:a}=t;e.forEach(e=>{var t;return null==(t=e[n])?void 0:t.call(e,a)})},[e]),n]}var hf,bf={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},yf={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Accessibility(e){let{announcements:a=yf,container:o,hiddenTextDescribedById:i,screenReaderInstructions:s=bf}=e;const{announce:l,announcement:c}=useAnnouncement(),u=useUniqueId("DndLiveRegion"),[d,p]=(0,t.useState)(!1);if((0,t.useEffect)(()=>{p(!0)},[]),useDndMonitor((0,t.useMemo)(()=>({onDragStart(e){let{active:t}=e;l(a.onDragStart({active:t}))},onDragMove(e){let{active:t,over:n}=e;a.onDragMove&&l(a.onDragMove({active:t,over:n}))},onDragOver(e){let{active:t,over:n}=e;l(a.onDragOver({active:t,over:n}))},onDragEnd(e){let{active:t,over:n}=e;l(a.onDragEnd({active:t,over:n}))},onDragCancel(e){let{active:t,over:n}=e;l(a.onDragCancel({active:t,over:n}))}}),[l,a])),!d)return null;const m=t.default.createElement(t.default.Fragment,null,t.default.createElement(HiddenText,{id:i,value:s.draggable}),t.default.createElement(LiveRegion,{id:u,announcement:c}));return o?(0,n.createPortal)(m,o):m}function noop(){}function useSensor(e,n){return(0,t.useMemo)(()=>({sensor:e,options:null!=n?n:{}}),[e,n])}function useSensors(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];return(0,t.useMemo)(()=>[...n].filter(e=>null!=e),[...n])}!function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"}(hf||(hf={}));var vf=Object.freeze({x:0,y:0});function distanceBetween(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function getRelativeTransformOrigin(e,t){const n=getEventCoordinates(e);if(!n)return"0 0";const a={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return a.x+"% "+a.y+"%"}function sortCollisionsAsc(e,t){let{data:{value:n}}=e,{data:{value:a}}=t;return n-a}function sortCollisionsDesc(e,t){let{data:{value:n}}=e,{data:{value:a}}=t;return a-n}function cornersOfRectangle(e){let{left:t,top:n,height:a,width:o}=e;return[{x:t,y:n},{x:t+o,y:n},{x:t,y:n+a},{x:t+o,y:n+a}]}function getFirstCollision(e,t){if(!e||0===e.length)return null;const[n]=e;return t?n[t]:n}var closestCorners=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:a}=e;const o=cornersOfRectangle(t),i=[];for(const s of a){const{id:e}=s,t=n.get(e);if(t){const n=cornersOfRectangle(t),a=o.reduce((e,t,a)=>e+distanceBetween(n[a],t),0),l=Number((a/4).toFixed(4));i.push({id:e,data:{droppableContainer:s,value:l}})}}return i.sort(sortCollisionsAsc)};function getIntersectionRatio(e,t){const n=Math.max(t.top,e.top),a=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),i=Math.min(t.top+t.height,e.top+e.height),s=o-a,l=i-n;if(a<o&&n<i){const n=t.width*t.height,a=e.width*e.height,o=s*l;return Number((o/(n+a-o)).toFixed(4))}return 0}var rectIntersection=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:a}=e;const o=[];for(const i of a){const{id:e}=i,a=n.get(e);if(a){const n=getIntersectionRatio(a,t);n>0&&o.push({id:e,data:{droppableContainer:i,value:n}})}}return o.sort(sortCollisionsDesc)};function adjustScale(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function getRectDelta(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:vf}function createRectAdjustmentFn(e){return function adjustClientRect(t){for(var n=arguments.length,a=new Array(n>1?n-1:0),o=1;o<n;o++)a[o-1]=arguments[o];return a.reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var Sf=createRectAdjustmentFn(1);function parseTransform(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function inverseTransform(e,t,n){const a=parseTransform(t);if(!a)return e;const{scaleX:o,scaleY:i,x:s,y:l}=a,c=e.left-s-(1-o)*parseFloat(n),u=e.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),d=o?e.width/o:e.width,p=i?e.height/i:e.height;return{width:d,height:p,top:u,right:c+d,bottom:u+p,left:c}}var xf,Cf={ignoreTransform:!1};function getClientRect(e,t){void 0===t&&(t=Cf);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:t,transformOrigin:a}=getWindow(e).getComputedStyle(e);t&&(n=inverseTransform(n,t,a))}const{top:a,left:o,width:i,height:s,bottom:l,right:c}=n;return{top:a,left:o,width:i,height:s,bottom:l,right:c}}function getTransformAgnosticClientRect(e){return getClientRect(e,{ignoreTransform:!0})}function getWindowClientRect(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function isFixed(e,t){return void 0===t&&(t=getWindow(e).getComputedStyle(e)),"fixed"===t.position}function isScrollable(e,t){void 0===t&&(t=getWindow(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(e=>{const a=t[e];return"string"==typeof a&&n.test(a)})}function getScrollableAncestors(e,t){const n=[];function findScrollableAncestors(a){if(null!=t&&n.length>=t)return n;if(!a)return n;if(isDocument(a)&&null!=a.scrollingElement&&!n.includes(a.scrollingElement))return n.push(a.scrollingElement),n;if(!isHTMLElement(a)||isSVGElement(a))return n;if(n.includes(a))return n;const o=getWindow(e).getComputedStyle(a);return a!==e&&isScrollable(a,o)&&n.push(a),isFixed(a,o)?n:findScrollableAncestors(a.parentNode)}return e?findScrollableAncestors(e):n}function getFirstScrollableAncestor(e){const[t]=getScrollableAncestors(e,1);return null!=t?t:null}function getScrollableElement(e){return sf&&e?isWindow(e)?e:isNode(e)?isDocument(e)||e===getOwnerDocument(e).scrollingElement?window:isHTMLElement(e)?e:null:null:null}function getScrollXCoordinate(e){return isWindow(e)?e.scrollX:e.scrollLeft}function getScrollYCoordinate(e){return isWindow(e)?e.scrollY:e.scrollTop}function getScrollCoordinates(e){return{x:getScrollXCoordinate(e),y:getScrollYCoordinate(e)}}function isDocumentScrollingElement(e){return!(!sf||!e)&&e===document.scrollingElement}function getScrollPosition(e){const t={x:0,y:0},n=isDocumentScrollingElement(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},a={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=a.y,isRight:e.scrollLeft>=a.x,maxScroll:a,minScroll:t}}!function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"}(xf||(xf={}));var wf={x:.2,y:.2};function getScrollDirectionAndSpeed(e,t,n,a,o){let{top:i,left:s,right:l,bottom:c}=n;void 0===a&&(a=10),void 0===o&&(o=wf);const{isTop:u,isBottom:d,isLeft:p,isRight:m}=getScrollPosition(e),g={x:0,y:0},h={x:0,y:0},b={height:t.height*o.y,width:t.width*o.x};return!u&&i<=t.top+b.height?(g.y=xf.Backward,h.y=a*Math.abs((t.top+b.height-i)/b.height)):!d&&c>=t.bottom-b.height&&(g.y=xf.Forward,h.y=a*Math.abs((t.bottom-b.height-c)/b.height)),!m&&l>=t.right-b.width?(g.x=xf.Forward,h.x=a*Math.abs((t.right-b.width-l)/b.width)):!p&&s<=t.left+b.width&&(g.x=xf.Backward,h.x=a*Math.abs((t.left+b.width-s)/b.width)),{direction:g,speed:h}}function getScrollElementRect(e){if(e===document.scrollingElement){const{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}const{top:t,left:n,right:a,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:a,bottom:o,width:e.clientWidth,height:e.clientHeight}}function getScrollOffsets(e){return e.reduce((e,t)=>uf(e,getScrollCoordinates(t)),vf)}function getScrollXOffset(e){return e.reduce((e,t)=>e+getScrollXCoordinate(t),0)}function getScrollYOffset(e){return e.reduce((e,t)=>e+getScrollYCoordinate(t),0)}function scrollIntoViewIfNeeded(e,t){if(void 0===t&&(t=getClientRect),!e)return;const{top:n,left:a,bottom:o,right:i}=t(e);getFirstScrollableAncestor(e)&&(o<=0||i<=0||n>=window.innerHeight||a>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}var kf,Ef,_f=[["x",["left","right"],getScrollXOffset],["y",["top","bottom"],getScrollYOffset]],Pf=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const n=getScrollableAncestors(t),a=getScrollOffsets(n);this.rect={...e},this.width=e.width,this.height=e.height;for(const[o,i,s]of _f)for(const e of i)Object.defineProperty(this,e,{get:()=>{const t=s(n),i=a[o]-t;return this.rect[e]+i},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},Tf=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>{var t;return null==(t=this.target)?void 0:t.removeEventListener(...e)})},this.target=e}add(e,t,n){var a;null==(a=this.target)||a.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function getEventListenerTarget(e){const{EventTarget:t}=getWindow(e);return e instanceof t?e:getOwnerDocument(e)}function hasExceededDistance(e,t){const n=Math.abs(e.x),a=Math.abs(e.y);return"number"==typeof t?Math.sqrt(n**2+a**2)>t:"x"in t&&"y"in t?n>t.x&&a>t.y:"x"in t?n>t.x:"y"in t&&a>t.y}function preventDefault(e){e.preventDefault()}function stopPropagation(e){e.stopPropagation()}!function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"}(kf||(kf={})),function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"}(Ef||(Ef={}));var Af={start:[Ef.Space,Ef.Enter],cancel:[Ef.Esc],end:[Ef.Space,Ef.Enter,Ef.Tab]},defaultKeyboardCoordinateGetter=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Ef.Right:return{...n,x:n.x+25};case Ef.Left:return{...n,x:n.x-25};case Ef.Down:return{...n,y:n.y+25};case Ef.Up:return{...n,y:n.y-25}}},Rf=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:t}}=e;this.props=e,this.listeners=new Tf(getOwnerDocument(t)),this.windowListeners=new Tf(getWindow(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(kf.Resize,this.handleCancel),this.windowListeners.add(kf.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(kf.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&scrollIntoViewIfNeeded(n),t(vf)}handleKeyDown(e){if(isKeyboardEvent(e)){const{active:t,context:n,options:a}=this.props,{keyboardCodes:o=Af,coordinateGetter:i=defaultKeyboardCoordinateGetter,scrollBehavior:s="smooth"}=a,{code:l}=e;if(o.end.includes(l))return void this.handleEnd(e);if(o.cancel.includes(l))return void this.handleCancel(e);const{collisionRect:c}=n.current,u=c?{x:c.left,y:c.top}:vf;this.referenceCoordinates||(this.referenceCoordinates=u);const d=i(e,{active:t,context:n.current,currentCoordinates:u});if(d){const t=df(d,u),a={x:0,y:0},{scrollableAncestors:o}=n.current;for(const n of o){const o=e.code,{isTop:i,isRight:l,isLeft:c,isBottom:u,maxScroll:p,minScroll:m}=getScrollPosition(n),g=getScrollElementRect(n),h={x:Math.min(o===Ef.Right?g.right-g.width/2:g.right,Math.max(o===Ef.Right?g.left:g.left+g.width/2,d.x)),y:Math.min(o===Ef.Down?g.bottom-g.height/2:g.bottom,Math.max(o===Ef.Down?g.top:g.top+g.height/2,d.y))},b=o===Ef.Right&&!l||o===Ef.Left&&!c,y=o===Ef.Down&&!u||o===Ef.Up&&!i;if(b&&h.x!==d.x){const e=n.scrollLeft+t.x,i=o===Ef.Right&&e<=p.x||o===Ef.Left&&e>=m.x;if(i&&!t.y)return void n.scrollTo({left:e,behavior:s});a.x=i?n.scrollLeft-e:o===Ef.Right?n.scrollLeft-p.x:n.scrollLeft-m.x,a.x&&n.scrollBy({left:-a.x,behavior:s});break}if(y&&h.y!==d.y){const e=n.scrollTop+t.y,i=o===Ef.Down&&e<=p.y||o===Ef.Up&&e>=m.y;if(i&&!t.x)return void n.scrollTo({top:e,behavior:s});a.y=i?n.scrollTop-e:o===Ef.Down?n.scrollTop-p.y:n.scrollTop-m.y,a.y&&n.scrollBy({top:-a.y,behavior:s});break}}this.handleMove(e,uf(df(d,this.referenceCoordinates),a))}}}handleMove(e,t){const{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){const{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){const{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};function isDistanceConstraint(e){return Boolean(e&&"distance"in e)}function isDelayConstraint(e){return Boolean(e&&"delay"in e)}Rf.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:a=Af,onActivation:o}=t,{active:i}=n;const{code:s}=e.nativeEvent;if(a.start.includes(s)){const t=i.activatorNode.current;return(!t||e.target===t)&&(e.preventDefault(),o?.({event:e.nativeEvent}),!0)}return!1}}];var Mf=class{constructor(e,t,n){var a;void 0===n&&(n=getEventListenerTarget(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;const{event:o}=e,{target:i}=o;this.props=e,this.events=t,this.document=getOwnerDocument(i),this.documentListeners=new Tf(this.document),this.listeners=new Tf(n),this.windowListeners=new Tf(getWindow(i)),this.initialCoordinates=null!=(a=getEventCoordinates(o))?a:vf,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(kf.Resize,this.handleCancel),this.windowListeners.add(kf.DragStart,preventDefault),this.windowListeners.add(kf.VisibilityChange,this.handleCancel),this.windowListeners.add(kf.ContextMenu,preventDefault),this.documentListeners.add(kf.Keydown,this.handleKeydown),t){if(null!=n&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(isDelayConstraint(t))return this.timeoutId=setTimeout(this.handleStart,t.delay),void this.handlePending(t);if(isDistanceConstraint(t))return void this.handlePending(t)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){const{active:n,onPending:a}=this.props;a(n,e,this.initialCoordinates,t)}handleStart(){const{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(kf.Click,stopPropagation,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(kf.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){var t;const{activated:n,initialCoordinates:a,props:o}=this,{onMove:i,options:{activationConstraint:s}}=o;if(!a)return;const l=null!=(t=getEventCoordinates(e))?t:vf,c=df(a,l);if(!n&&s){if(isDistanceConstraint(s)){if(null!=s.tolerance&&hasExceededDistance(c,s.tolerance))return this.handleCancel();if(hasExceededDistance(c,s.distance))return this.handleStart()}return isDelayConstraint(s)&&hasExceededDistance(c,s.tolerance)?this.handleCancel():void this.handlePending(s,c)}e.cancelable&&e.preventDefault(),i(l)}handleEnd(){const{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){const{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===Ef.Esc&&this.handleCancel()}removeTextSelection(){var e;null==(e=this.document.getSelection())||e.removeAllRanges()}},Df={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}},Of=class extends Mf{constructor(e){const{event:t}=e,n=getOwnerDocument(t.target);super(e,Df,n)}};Of.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:a}=t;return!(!n.isPrimary||0!==n.button)&&(a?.({event:n}),!0)}}];var $f,If={move:{name:"mousemove"},end:{name:"mouseup"}};!function(e){e[e.RightClick=2]="RightClick"}($f||($f={})),class extends Mf{constructor(e){super(e,If,getOwnerDocument(e.event.target))}}.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:a}=t;return n.button!==$f.RightClick&&(a?.({event:n}),!0)}}];var Nf,zf,Lf={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}},jf=class extends Mf{constructor(e){super(e,Lf)}static setup(){return window.addEventListener(Lf.move.name,noop,{capture:!1,passive:!1}),function teardown(){window.removeEventListener(Lf.move.name,noop)};function noop(){}}};function useAutoScroller(e){let{acceleration:n,activator:a=Nf.Pointer,canScroll:o,draggingRect:i,enabled:s,interval:l=5,order:c=zf.TreeOrder,pointerCoordinates:u,scrollableAncestors:d,scrollableAncestorRects:p,delta:m,threshold:g}=e;const h=useScrollIntent({delta:m,disabled:!s}),[b,y]=useInterval(),v=(0,t.useRef)({x:0,y:0}),S=(0,t.useRef)({x:0,y:0}),x=(0,t.useMemo)(()=>{switch(a){case Nf.Pointer:return u?{top:u.y,bottom:u.y,left:u.x,right:u.x}:null;case Nf.DraggableRect:return i}},[a,i,u]),C=(0,t.useRef)(null),w=(0,t.useCallback)(()=>{const e=C.current;if(!e)return;const t=v.current.x*S.current.x,n=v.current.y*S.current.y;e.scrollBy(t,n)},[]),k=(0,t.useMemo)(()=>c===zf.TreeOrder?[...d].reverse():d,[c,d]);(0,t.useEffect)(()=>{if(s&&d.length&&x){for(const e of k){if(!1===(null==o?void 0:o(e)))continue;const t=p[d.indexOf(e)];if(!t)continue;const{direction:a,speed:i}=getScrollDirectionAndSpeed(e,t,x,n,g);for(const e of["x","y"])h[e][a[e]]||(i[e]=0,a[e]=0);if(i.x>0||i.y>0)return y(),C.current=e,b(w,l),v.current=i,void(S.current=a)}v.current={x:0,y:0},S.current={x:0,y:0},y()}else y()},[n,w,o,y,s,l,JSON.stringify(x),JSON.stringify(h),b,d,k,p,JSON.stringify(g)])}jf.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:a}=t;const{touches:o}=n;return!(o.length>1)&&(a?.({event:n}),!0)}}],function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"}(Nf||(Nf={})),function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"}(zf||(zf={}));var Bf,Ff,qf={x:{[xf.Backward]:!1,[xf.Forward]:!1},y:{[xf.Backward]:!1,[xf.Forward]:!1}};function useScrollIntent(e){let{delta:t,disabled:n}=e;const a=usePrevious(t);return useLazyMemo(e=>{if(n||!a||!e)return qf;const o={x:Math.sign(t.x-a.x),y:Math.sign(t.y-a.y)};return{x:{[xf.Backward]:e.x[xf.Backward]||-1===o.x,[xf.Forward]:e.x[xf.Forward]||1===o.x},y:{[xf.Backward]:e.y[xf.Backward]||-1===o.y,[xf.Forward]:e.y[xf.Forward]||1===o.y}}},[n,t,a])}function useCachedNode(e,t){const n=null!=t?e.get(t):void 0,a=n?n.node.current:null;return useLazyMemo(e=>{var n;return null==t?null:null!=(n=null!=a?a:e)?n:null},[a,t])}function useCombineActivators(e,n){return(0,t.useMemo)(()=>e.reduce((e,t)=>{const{sensor:a}=t;return[...e,...a.activators.map(e=>({eventName:e.eventName,handler:n(e.handler,t)}))]},[]),[e,n])}!function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"}(Bf||(Bf={})),function(e){e.Optimized="optimized"}(Ff||(Ff={}));var Uf=new Map;function useDroppableMeasuring(e,n){let{dragging:a,dependencies:o,config:i}=n;const[s,l]=(0,t.useState)(null),{frequency:c,measure:u,strategy:d}=i,p=(0,t.useRef)(e),m=isDisabled(),g=useLatestValue(m),h=(0,t.useCallback)(function(e){void 0===e&&(e=[]),g.current||l(t=>null===t?e:t.concat(e.filter(e=>!t.includes(e))))},[g]),b=(0,t.useRef)(null),y=useLazyMemo(t=>{if(m&&!a)return Uf;if(!t||t===Uf||p.current!==e||null!=s){const t=new Map;for(let n of e){if(!n)continue;if(s&&s.length>0&&!s.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}const e=n.node.current,a=e?new Pf(u(e),e):null;n.rect.current=a,a&&t.set(n.id,a)}return t}return t},[e,s,a,m,u]);return(0,t.useEffect)(()=>{p.current=e},[e]),(0,t.useEffect)(()=>{m||h()},[a,m]),(0,t.useEffect)(()=>{s&&s.length>0&&l(null)},[JSON.stringify(s)]),(0,t.useEffect)(()=>{m||"number"!=typeof c||null!==b.current||(b.current=setTimeout(()=>{h(),b.current=null},c))},[c,m,h,...o]),{droppableRects:y,measureDroppableContainers:h,measuringScheduled:null!=s};function isDisabled(){switch(d){case Bf.Always:return!1;case Bf.BeforeDragging:return a;default:return!a}}}function useInitialValue(e,t){return useLazyMemo(n=>e?n||("function"==typeof t?t(e):e):null,[t,e])}function useInitialRect(e,t){return useInitialValue(e,t)}function useMutationObserver(e){let{callback:n,disabled:a}=e;const o=useEvent(n),i=(0,t.useMemo)(()=>{if(a||"undefined"==typeof window||void 0===window.MutationObserver)return;const{MutationObserver:e}=window;return new e(o)},[o,a]);return(0,t.useEffect)(()=>()=>null==i?void 0:i.disconnect(),[i]),i}function useResizeObserver(e){let{callback:n,disabled:a}=e;const o=useEvent(n),i=(0,t.useMemo)(()=>{if(a||"undefined"==typeof window||void 0===window.ResizeObserver)return;const{ResizeObserver:e}=window;return new e(o)},[a]);return(0,t.useEffect)(()=>()=>null==i?void 0:i.disconnect(),[i]),i}function defaultMeasure(e){return new Pf(getClientRect(e),e)}function useRect(e,n,a){void 0===n&&(n=defaultMeasure);const[o,i]=(0,t.useState)(null);function measureRect(){i(t=>{if(!e)return null;var o;if(!1===e.isConnected)return null!=(o=null!=t?t:a)?o:null;const i=n(e);return JSON.stringify(t)===JSON.stringify(i)?t:i})}const s=useMutationObserver({callback(t){if(e)for(const n of t){const{type:t,target:a}=n;if("childList"===t&&a instanceof HTMLElement&&a.contains(e)){measureRect();break}}}}),l=useResizeObserver({callback:measureRect});return lf(()=>{measureRect(),e?(l?.observe(e),s?.observe(document.body,{childList:!0,subtree:!0})):(l?.disconnect(),s?.disconnect())},[e]),o}function useRectDelta(e){return getRectDelta(e,useInitialValue(e))}var Vf=[];function useScrollableAncestors(e){const n=(0,t.useRef)(e),a=useLazyMemo(t=>e?t&&t!==Vf&&e&&n.current&&e.parentNode===n.current.parentNode?t:getScrollableAncestors(e):Vf,[e]);return(0,t.useEffect)(()=>{n.current=e},[e]),a}function useScrollOffsets(e){const[n,a]=(0,t.useState)(null),o=(0,t.useRef)(e),i=(0,t.useCallback)(e=>{const t=getScrollableElement(e.target);t&&a(e=>e?(e.set(t,getScrollCoordinates(t)),new Map(e)):null)},[]);return(0,t.useEffect)(()=>{const t=o.current;if(e!==t){cleanup(t);const n=e.map(e=>{const t=getScrollableElement(e);return t?(t.addEventListener("scroll",i,{passive:!0}),[t,getScrollCoordinates(t)]):null}).filter(e=>null!=e);a(n.length?new Map(n):null),o.current=e}return()=>{cleanup(e),cleanup(t)};function cleanup(e){e.forEach(e=>{getScrollableElement(e)?.removeEventListener("scroll",i)})}},[i,e]),(0,t.useMemo)(()=>e.length?n?Array.from(n.values()).reduce((e,t)=>uf(e,t),vf):getScrollOffsets(e):vf,[e,n])}function useScrollOffsetsDelta(e,n){void 0===n&&(n=[]);const a=(0,t.useRef)(null);return(0,t.useEffect)(()=>{a.current=null},n),(0,t.useEffect)(()=>{const t=e!==vf;t&&!a.current&&(a.current=e),!t&&a.current&&(a.current=null)},[e]),a.current?df(e,a.current):vf}function useSensorSetup(e){(0,t.useEffect)(()=>{if(!sf)return;const t=e.map(e=>{let{sensor:t}=e;return null==t.setup?void 0:t.setup()});return()=>{for(const e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function useSyntheticListeners(e,n){return(0,t.useMemo)(()=>e.reduce((e,t)=>{let{eventName:a,handler:o}=t;return e[a]=e=>{o(e,n)},e},{}),[e,n])}function useWindowRect(e){return(0,t.useMemo)(()=>e?getWindowClientRect(e):null,[e])}var Hf=[];function useRects(e,n){void 0===n&&(n=getClientRect);const[a]=e,o=useWindowRect(a?getWindow(a):null),[i,s]=(0,t.useState)(Hf);function measureRects(){s(()=>e.length?e.map(e=>isDocumentScrollingElement(e)?o:new Pf(n(e),e)):Hf)}const l=useResizeObserver({callback:measureRects});return lf(()=>{l?.disconnect(),measureRects(),e.forEach(e=>null==l?void 0:l.observe(e))},[e]),i}function getMeasurableNode(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return isHTMLElement(t)?t:e}function useDragOverlayMeasuring(e){let{measure:n}=e;const[a,o]=(0,t.useState)(null),i=useResizeObserver({callback:(0,t.useCallback)(e=>{for(const{target:t}of e)if(isHTMLElement(t)){o(e=>{const a=n(t);return e?{...e,width:a.width,height:a.height}:a});break}},[n])}),[s,l]=useNodeRef((0,t.useCallback)(e=>{const t=getMeasurableNode(e);i?.disconnect(),t&&i?.observe(t),o(t?n(t):null)},[n,i]));return(0,t.useMemo)(()=>({nodeRef:s,rect:a,setRef:l}),[a,s,l])}var Wf=[{sensor:Of,options:{}},{sensor:Rf,options:{}}],Gf={current:{}},Yf={draggable:{measure:getTransformAgnosticClientRect},droppable:{measure:getTransformAgnosticClientRect,strategy:Bf.WhileDragging,frequency:Ff.Optimized},dragOverlay:{measure:getClientRect}},Kf=class extends Map{get(e){var t;return null!=e&&null!=(t=super.get(e))?t:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){var t,n;return null!=(t=null==(n=this.get(e))?void 0:n.node.current)?t:void 0}},Qf={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Kf,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:noop},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Yf,measureDroppableContainers:noop,windowRect:null,measuringScheduled:!1},Zf={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:noop,draggableNodes:new Map,over:null,measureDroppableContainers:noop},Xf=(0,t.createContext)(Zf),Jf=(0,t.createContext)(Qf);function getInitialState(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Kf}}}function reducer(e,t){switch(t.type){case hf.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case hf.DragMove:return null==e.draggable.active?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case hf.DragEnd:case hf.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case hf.RegisterDroppable:{const{element:n}=t,{id:a}=n,o=new Kf(e.droppable.containers);return o.set(a,n),{...e,droppable:{...e.droppable,containers:o}}}case hf.SetDroppableDisabled:{const{id:n,key:a,disabled:o}=t,i=e.droppable.containers.get(n);if(!i||a!==i.key)return e;const s=new Kf(e.droppable.containers);return s.set(n,{...i,disabled:o}),{...e,droppable:{...e.droppable,containers:s}}}case hf.UnregisterDroppable:{const{id:n,key:a}=t,o=e.droppable.containers.get(n);if(!o||a!==o.key)return e;const i=new Kf(e.droppable.containers);return i.delete(n),{...e,droppable:{...e.droppable,containers:i}}}default:return e}}function RestoreFocus(e){let{disabled:n}=e;const{active:a,activatorEvent:o,draggableNodes:i}=(0,t.useContext)(Xf),s=usePrevious(o),l=usePrevious(null==a?void 0:a.id);return(0,t.useEffect)(()=>{if(!n&&!o&&s&&null!=l){if(!isKeyboardEvent(s))return;if(document.activeElement===s.target)return;const e=i.get(l);if(!e)return;const{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(const e of[t.current,n.current]){if(!e)continue;const t=findFirstFocusableNode(e);if(t){t.focus();break}}})}},[o,n,i,l,s]),null}function applyModifiers(e,t){let{transform:n,...a}=t;return null!=e&&e.length?e.reduce((e,t)=>t({transform:e,...a}),n):n}function useMeasuringConfiguration(e){return(0,t.useMemo)(()=>({draggable:{...Yf.draggable,...null==e?void 0:e.draggable},droppable:{...Yf.droppable,...null==e?void 0:e.droppable},dragOverlay:{...Yf.dragOverlay,...null==e?void 0:e.dragOverlay}}),[null==e?void 0:e.draggable,null==e?void 0:e.droppable,null==e?void 0:e.dragOverlay])}function useLayoutShiftScrollCompensation(e){let{activeNode:n,measure:a,initialRect:o,config:i=!0}=e;const s=(0,t.useRef)(!1),{x:l,y:c}="boolean"==typeof i?{x:i,y:i}:i;lf(()=>{if(!l&&!c||!n)return void(s.current=!1);if(s.current||!o)return;const e=null==n?void 0:n.node.current;if(!e||!1===e.isConnected)return;const t=getRectDelta(a(e),o);if(l||(t.x=0),c||(t.y=0),s.current=!0,Math.abs(t.x)>0||Math.abs(t.y)>0){const n=getFirstScrollableAncestor(e);n&&n.scrollBy({top:t.y,left:t.x})}},[n,l,c,o,a])}var eg,tg=(0,t.createContext)({...vf,scaleX:1,scaleY:1});!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"}(eg||(eg={}));var rg=(0,t.memo)(function DndContext(e){var a,o,i,s;let{id:l,accessibility:c,autoScroll:u=!0,children:d,sensors:p=Wf,collisionDetection:m=rectIntersection,measuring:g,modifiers:h,...b}=e;const[y,v]=(0,t.useReducer)(reducer,void 0,getInitialState),[S,x]=useDndMonitorProvider(),[C,w]=(0,t.useState)(eg.Uninitialized),k=C===eg.Initialized,{draggable:{active:E,nodes:P,translate:T},droppable:{containers:R}}=y,M=null!=E?P.get(E):null,D=(0,t.useRef)({initial:null,translated:null}),O=(0,t.useMemo)(()=>{var e;return null!=E?{id:E,data:null!=(e=null==M?void 0:M.data)?e:Gf,rect:D}:null},[E,M]),$=(0,t.useRef)(null),[I,N]=(0,t.useState)(null),[L,j]=(0,t.useState)(null),B=useLatestValue(b,Object.values(b)),F=useUniqueId("DndDescribedBy",l),q=(0,t.useMemo)(()=>R.getEnabled(),[R]),U=useMeasuringConfiguration(g),{droppableRects:V,measureDroppableContainers:H,measuringScheduled:W}=useDroppableMeasuring(q,{dragging:k,dependencies:[T.x,T.y],config:U.droppable}),G=useCachedNode(P,E),Y=(0,t.useMemo)(()=>L?getEventCoordinates(L):null,[L]),K=getAutoScrollerOptions(),Q=useInitialRect(G,U.draggable.measure);useLayoutShiftScrollCompensation({activeNode:null!=E?P.get(E):null,config:K.layoutShiftCompensation,initialRect:Q,measure:U.draggable.measure});const Z=useRect(G,U.draggable.measure,Q),X=useRect(G?G.parentElement:null),J=(0,t.useRef)({activatorEvent:null,active:null,activeNode:G,collisionRect:null,collisions:null,droppableRects:V,draggableNodes:P,draggingNode:null,draggingNodeRect:null,droppableContainers:R,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ee=R.getNodeFor(null==(a=J.current.over)?void 0:a.id),te=useDragOverlayMeasuring({measure:U.dragOverlay.measure}),re=null!=(o=te.nodeRef.current)?o:G,ne=k?null!=(i=te.rect)?i:Z:null,ae=Boolean(te.nodeRef.current&&te.rect),oe=useRectDelta(ae?null:Z),ie=useWindowRect(re?getWindow(re):null),se=useScrollableAncestors(k?null!=ee?ee:G:null),le=useRects(se),ce=applyModifiers(h,{transform:{x:T.x-oe.x,y:T.y-oe.y,scaleX:1,scaleY:1},activatorEvent:L,active:O,activeNodeRect:Z,containerNodeRect:X,draggingNodeRect:ne,over:J.current.over,overlayNodeRect:te.rect,scrollableAncestors:se,scrollableAncestorRects:le,windowRect:ie}),ue=Y?uf(Y,T):null,de=useScrollOffsets(se),pe=useScrollOffsetsDelta(de),me=useScrollOffsetsDelta(de,[Z]),fe=uf(ce,pe),ge=ne?Sf(ne,ce):null,he=O&&ge?m({active:O,collisionRect:ge,droppableRects:V,droppableContainers:q,pointerCoordinates:ue}):null,be=getFirstCollision(he,"id"),[ye,ve]=(0,t.useState)(null),Se=adjustScale(ae?ce:uf(ce,me),null!=(s=null==ye?void 0:ye.rect)?s:null,Z),xe=(0,t.useRef)(null),Ce=(0,t.useCallback)((e,t)=>{let{sensor:a,options:o}=t;if(null==$.current)return;const i=P.get($.current);if(!i)return;const s=e.nativeEvent;function createHandler(e){return async function handler(){const{active:t,collisions:a,over:o,scrollAdjustedTranslate:i}=J.current;let l=null;if(t&&i){const{cancelDrop:n}=B.current;l={activatorEvent:s,active:t,collisions:a,delta:i,over:o},e===hf.DragEnd&&"function"==typeof n&&await Promise.resolve(n(l))&&(e=hf.DragCancel)}$.current=null,(0,n.unstable_batchedUpdates)(()=>{v({type:e}),w(eg.Uninitialized),ve(null),N(null),j(null),xe.current=null;const t=e===hf.DragEnd?"onDragEnd":"onDragCancel";if(l){const e=B.current[t];e?.(l),S({type:t,event:l})}})}}xe.current=new a({active:$.current,activeNode:i,event:s,options:o,context:J,onAbort(e){if(!P.get(e))return;const{onDragAbort:t}=B.current,n={id:e};t?.(n),S({type:"onDragAbort",event:n})},onPending(e,t,n,a){if(!P.get(e))return;const{onDragPending:o}=B.current,i={id:e,constraint:t,initialCoordinates:n,offset:a};o?.(i),S({type:"onDragPending",event:i})},onStart(e){const t=$.current;if(null==t)return;const a=P.get(t);if(!a)return;const{onDragStart:o}=B.current,i={activatorEvent:s,active:{id:t,data:a.data,rect:D}};(0,n.unstable_batchedUpdates)(()=>{o?.(i),w(eg.Initializing),v({type:hf.DragStart,initialCoordinates:e,active:t}),S({type:"onDragStart",event:i}),N(xe.current),j(s)})},onMove(e){v({type:hf.DragMove,coordinates:e})},onEnd:createHandler(hf.DragEnd),onCancel:createHandler(hf.DragCancel)})},[P]),we=useCombineActivators(p,(0,t.useCallback)((e,t)=>(n,a)=>{const o=n.nativeEvent,i=P.get(a);if(null!==$.current||!i||o.dndKit||o.defaultPrevented)return;const s={active:i};!0===e(n,t.options,s)&&(o.dndKit={capturedBy:t.sensor},$.current=a,Ce(n,t))},[P,Ce]));useSensorSetup(p),lf(()=>{Z&&C===eg.Initializing&&w(eg.Initialized)},[Z,C]),(0,t.useEffect)(()=>{const{onDragMove:e}=B.current,{active:t,activatorEvent:a,collisions:o,over:i}=J.current;if(!t||!a)return;const s={active:t,activatorEvent:a,collisions:o,delta:{x:fe.x,y:fe.y},over:i};(0,n.unstable_batchedUpdates)(()=>{e?.(s),S({type:"onDragMove",event:s})})},[fe.x,fe.y]),(0,t.useEffect)(()=>{const{active:e,activatorEvent:t,collisions:a,droppableContainers:o,scrollAdjustedTranslate:i}=J.current;if(!e||null==$.current||!t||!i)return;const{onDragOver:s}=B.current,l=o.get(be),c=l&&l.rect.current?{id:l.id,rect:l.rect.current,data:l.data,disabled:l.disabled}:null,u={active:e,activatorEvent:t,collisions:a,delta:{x:i.x,y:i.y},over:c};(0,n.unstable_batchedUpdates)(()=>{ve(c),s?.(u),S({type:"onDragOver",event:u})})},[be]),lf(()=>{J.current={activatorEvent:L,active:O,activeNode:G,collisionRect:ge,collisions:he,droppableRects:V,draggableNodes:P,draggingNode:re,draggingNodeRect:ne,droppableContainers:R,over:ye,scrollableAncestors:se,scrollAdjustedTranslate:fe},D.current={initial:ne,translated:ge}},[O,G,he,ge,P,re,ne,V,R,ye,se,fe]),useAutoScroller({...K,delta:T,draggingRect:ge,pointerCoordinates:ue,scrollableAncestors:se,scrollableAncestorRects:le});const ke=(0,t.useMemo)(()=>({active:O,activeNode:G,activeNodeRect:Z,activatorEvent:L,collisions:he,containerNodeRect:X,dragOverlay:te,draggableNodes:P,droppableContainers:R,droppableRects:V,over:ye,measureDroppableContainers:H,scrollableAncestors:se,scrollableAncestorRects:le,measuringConfiguration:U,measuringScheduled:W,windowRect:ie}),[O,G,Z,L,he,X,te,P,R,V,ye,H,se,le,U,W,ie]),Ee=(0,t.useMemo)(()=>({activatorEvent:L,activators:we,active:O,activeNodeRect:Z,ariaDescribedById:{draggable:F},dispatch:v,draggableNodes:P,over:ye,measureDroppableContainers:H}),[L,we,O,Z,v,F,P,ye,H]);return t.default.createElement(gf.Provider,{value:x},t.default.createElement(Xf.Provider,{value:Ee},t.default.createElement(Jf.Provider,{value:ke},t.default.createElement(tg.Provider,{value:Se},d)),t.default.createElement(RestoreFocus,{disabled:!1===(null==c?void 0:c.restoreFocus)})),t.default.createElement(Accessibility,{...c,hiddenTextDescribedById:F}));function getAutoScrollerOptions(){const e=!1===(null==I?void 0:I.autoScrollEnabled),t="object"==typeof u?!1===u.enabled:!1===u,n=k&&!e&&!t;return"object"==typeof u?{...u,enabled:n}:{enabled:n}}}),ng=(0,t.createContext)(null),ag="button",og="Draggable";function useDraggable(e){let{id:n,data:a,disabled:o=!1,attributes:i}=e;const s=useUniqueId(og),{activators:l,activatorEvent:c,active:u,activeNodeRect:d,ariaDescribedById:p,draggableNodes:m,over:g}=(0,t.useContext)(Xf),{role:h=ag,roleDescription:b="draggable",tabIndex:y=0}=null!=i?i:{},v=(null==u?void 0:u.id)===n,S=(0,t.useContext)(v?tg:ng),[x,C]=useNodeRef(),[w,k]=useNodeRef(),E=useSyntheticListeners(l,n),P=useLatestValue(a);return lf(()=>(m.set(n,{id:n,key:s,node:x,activatorNode:w,data:P}),()=>{const e=m.get(n);e&&e.key===s&&m.delete(n)}),[m,n]),{active:u,activatorEvent:c,activeNodeRect:d,attributes:(0,t.useMemo)(()=>({role:h,tabIndex:y,"aria-disabled":o,"aria-pressed":!(!v||h!==ag)||void 0,"aria-roledescription":b,"aria-describedby":p.draggable}),[o,h,y,v,b,p.draggable]),isDragging:v,listeners:o?void 0:E,node:x,over:g,setNodeRef:C,setActivatorNodeRef:k,transform:S}}function useDndContext(){return(0,t.useContext)(Jf)}var ig="Droppable",sg={timeout:25};function useDroppable(e){let{data:n,disabled:a=!1,id:o,resizeObserverConfig:i}=e;const s=useUniqueId(ig),{active:l,dispatch:c,over:u,measureDroppableContainers:d}=(0,t.useContext)(Xf),p=(0,t.useRef)({disabled:a}),m=(0,t.useRef)(!1),g=(0,t.useRef)(null),h=(0,t.useRef)(null),{disabled:b,updateMeasurementsFor:y,timeout:v}={...sg,...i},S=useLatestValue(null!=y?y:o),x=useResizeObserver({callback:(0,t.useCallback)(()=>{m.current?(null!=h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{d(Array.isArray(S.current)?S.current:[S.current]),h.current=null},v)):m.current=!0},[v]),disabled:b||!l}),[C,w]=useNodeRef((0,t.useCallback)((e,t)=>{x&&(t&&(x.unobserve(t),m.current=!1),e&&x.observe(e))},[x])),k=useLatestValue(n);return(0,t.useEffect)(()=>{x&&C.current&&(x.disconnect(),m.current=!1,x.observe(C.current))},[C,x]),(0,t.useEffect)(()=>(c({type:hf.RegisterDroppable,element:{id:o,key:s,disabled:a,node:C,rect:g,data:k}}),()=>c({type:hf.UnregisterDroppable,key:s,id:o})),[o]),(0,t.useEffect)(()=>{a!==p.current.disabled&&(c({type:hf.SetDroppableDisabled,id:o,key:s,disabled:a}),p.current.disabled=a)},[o,s,a,c]),{active:l,rect:g,isOver:(null==u?void 0:u.id)===o,node:C,over:u,setNodeRef:w}}function AnimationManager(e){let{animation:n,children:a}=e;const[o,i]=(0,t.useState)(null),[s,l]=(0,t.useState)(null),c=usePrevious(a);return a||o||!c||i(c),lf(()=>{if(!s)return;const e=null==o?void 0:o.key,t=null==o?void 0:o.props.id;null!=e&&null!=t?Promise.resolve(n(t,s)).then(()=>{i(null)}):i(null)},[n,o,s]),t.default.createElement(t.default.Fragment,null,a,o?(0,t.cloneElement)(o,{ref:l}):null)}var lg={x:0,y:0,scaleX:1,scaleY:1};function NullifiedContextProvider(e){let{children:n}=e;return t.default.createElement(Xf.Provider,{value:Zf},t.default.createElement(tg.Provider,{value:lg},n))}var cg={position:"fixed",touchAction:"none"},defaultTransition$1=e=>isKeyboardEvent(e)?"transform 250ms ease":void 0,ug=(0,t.forwardRef)((e,n)=>{let{as:a,activatorEvent:o,adjustScale:i,children:s,className:l,rect:c,style:u,transform:d,transition:p=defaultTransition$1}=e;if(!c)return null;const m=i?d:{...d,scaleX:1,scaleY:1},g={...cg,width:c.width,height:c.height,top:c.top,left:c.left,transform:pf.Transform.toString(m),transformOrigin:i&&o?getRelativeTransformOrigin(o,c):void 0,transition:"function"==typeof p?p(o):p,...u};return t.default.createElement(a,{className:l,style:g,ref:n},s)}),defaultDropAnimationSideEffects=e=>t=>{let{active:n,dragOverlay:a}=t;const o={},{styles:i,className:s}=e;if(null!=i&&i.active)for(const[e,l]of Object.entries(i.active))void 0!==l&&(o[e]=n.node.style.getPropertyValue(e),n.node.style.setProperty(e,l));if(null!=i&&i.dragOverlay)for(const[e,l]of Object.entries(i.dragOverlay))void 0!==l&&a.node.style.setProperty(e,l);return null!=s&&s.active&&n.node.classList.add(s.active),null!=s&&s.dragOverlay&&a.node.classList.add(s.dragOverlay),function cleanup(){for(const[e,t]of Object.entries(o))n.node.style.setProperty(e,t);null!=s&&s.active&&n.node.classList.remove(s.active)}},dg={duration:250,easing:"ease",keyframes:e=>{let{transform:{initial:t,final:n}}=e;return[{transform:pf.Transform.toString(t)},{transform:pf.Transform.toString(n)}]},sideEffects:defaultDropAnimationSideEffects({styles:{active:{opacity:"0"}}})};function useDropAnimation(e){let{config:t,draggableNodes:n,droppableContainers:a,measuringConfiguration:o}=e;return useEvent((e,i)=>{if(null===t)return;const s=n.get(e);if(!s)return;const l=s.node.current;if(!l)return;const c=getMeasurableNode(i);if(!c)return;const{transform:u}=getWindow(i).getComputedStyle(i),d=parseTransform(u);if(!d)return;const p="function"==typeof t?t:createDefaultDropAnimation(t);return scrollIntoViewIfNeeded(l,o.draggable.measure),p({active:{id:e,data:s.data,node:l,rect:o.draggable.measure(l)},draggableNodes:n,dragOverlay:{node:i,rect:o.dragOverlay.measure(c)},droppableContainers:a,measuringConfiguration:o,transform:d})})}function createDefaultDropAnimation(e){const{duration:t,easing:n,sideEffects:a,keyframes:o}={...dg,...e};return e=>{let{active:i,dragOverlay:s,transform:l,...c}=e;if(!t)return;const u={x:s.rect.left-i.rect.left,y:s.rect.top-i.rect.top},d={scaleX:1!==l.scaleX?i.rect.width*l.scaleX/s.rect.width:1,scaleY:1!==l.scaleY?i.rect.height*l.scaleY/s.rect.height:1},p={x:l.x-u.x,y:l.y-u.y,...d},m=o({...c,active:i,dragOverlay:s,transform:{initial:l,final:p}}),[g]=m,h=m[m.length-1];if(JSON.stringify(g)===JSON.stringify(h))return;const b=null==a?void 0:a({active:i,dragOverlay:s,...c}),y=s.node.animate(m,{duration:t,easing:n,fill:"forwards"});return new Promise(e=>{y.onfinish=()=>{b?.(),e()}})}}var pg=0;function useKey(e){return(0,t.useMemo)(()=>{if(null!=e)return++pg},[e])}var mg=t.default.memo(e=>{let{adjustScale:n=!1,children:a,dropAnimation:o,style:i,transition:s,modifiers:l,wrapperElement:c="div",className:u,zIndex:d=999}=e;const{activatorEvent:p,active:m,activeNodeRect:g,containerNodeRect:h,draggableNodes:b,droppableContainers:y,dragOverlay:v,over:S,measuringConfiguration:x,scrollableAncestors:C,scrollableAncestorRects:w,windowRect:k}=useDndContext(),E=(0,t.useContext)(tg),P=useKey(null==m?void 0:m.id),T=applyModifiers(l,{activatorEvent:p,active:m,activeNodeRect:g,containerNodeRect:h,draggingNodeRect:v.rect,over:S,overlayNodeRect:v.rect,scrollableAncestors:C,scrollableAncestorRects:w,transform:E,windowRect:k}),R=useInitialValue(g),M=useDropAnimation({config:o,draggableNodes:b,droppableContainers:y,measuringConfiguration:x}),D=R?v.setRef:void 0;return t.default.createElement(NullifiedContextProvider,null,t.default.createElement(AnimationManager,{animation:M},m&&P?t.default.createElement(ug,{key:P,id:m.id,ref:D,as:c,activatorEvent:p,adjustScale:n,className:u,transition:s,rect:R,style:{zIndex:d,...i},transform:T},a):null))});function arrayMove(e,t,n){const a=e.slice();return a.splice(n<0?a.length+n:n,0,a.splice(t,1)[0]),a}function getSortedRects(e,t){return e.reduce((e,n,a)=>{const o=t.get(n);return o&&(e[a]=o),e},Array(e.length))}function isValidIndex(e){return null!==e&&e>=0}function itemsEqual(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function normalizeDisabled(e){return"boolean"==typeof e?{draggable:e,droppable:e}:e}var rectSortingStrategy=e=>{let{rects:t,activeIndex:n,overIndex:a,index:o}=e;const i=arrayMove(t,a,n),s=t[o],l=i[o];return l&&s?{x:l.left-s.left,y:l.top-s.top,scaleX:l.width/s.width,scaleY:l.height/s.height}:null},fg={scaleX:1,scaleY:1},verticalListSortingStrategy=e=>{var t;let{activeIndex:n,activeNodeRect:a,index:o,rects:i,overIndex:s}=e;const l=null!=(t=i[n])?t:a;if(!l)return null;if(o===n){const e=i[s];return e?{x:0,y:n<s?e.top+e.height-(l.top+l.height):e.top-l.top,...fg}:null}const c=getItemGap$1(i,o,n);return o>n&&o<=s?{x:0,y:-l.height-c,...fg}:o<n&&o>=s?{x:0,y:l.height+c,...fg}:{x:0,y:0,...fg}};function getItemGap$1(e,t,n){const a=e[t],o=e[t-1],i=e[t+1];return a?n<t?o?a.top-(o.top+o.height):i?i.top-(a.top+a.height):0:i?i.top-(a.top+a.height):o?a.top-(o.top+o.height):0:0}var gg="Sortable",hg=t.default.createContext({activeIndex:-1,containerId:gg,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:rectSortingStrategy,disabled:{draggable:!1,droppable:!1}});function SortableContext(e){let{children:n,id:a,items:o,strategy:i=rectSortingStrategy,disabled:s=!1}=e;const{active:l,dragOverlay:c,droppableRects:u,over:d,measureDroppableContainers:p}=useDndContext(),m=useUniqueId(gg,a),g=Boolean(null!==c.rect),h=(0,t.useMemo)(()=>o.map(e=>"object"==typeof e&&"id"in e?e.id:e),[o]),b=null!=l,y=l?h.indexOf(l.id):-1,v=d?h.indexOf(d.id):-1,S=(0,t.useRef)(h),x=!itemsEqual(h,S.current),C=-1!==v&&-1===y||x,w=normalizeDisabled(s);lf(()=>{x&&b&&p(h)},[x,h,b,p]),(0,t.useEffect)(()=>{S.current=h},[h]);const k=(0,t.useMemo)(()=>({activeIndex:y,containerId:m,disabled:w,disableTransforms:C,items:h,overIndex:v,useDragOverlay:g,sortedRects:getSortedRects(h,u),strategy:i}),[y,m,w.draggable,w.droppable,C,h,v,u,g,i]);return t.default.createElement(hg.Provider,{value:k},n)}var defaultNewIndexGetter=e=>{let{id:t,items:n,activeIndex:a,overIndex:o}=e;return arrayMove(n,a,o).indexOf(t)},defaultAnimateLayoutChanges=e=>{let{containerId:t,isSorting:n,wasDragging:a,index:o,items:i,newIndex:s,previousItems:l,previousContainerId:c,transition:u}=e;return!(!u||!a)&&((l===i||o!==s)&&(!!n||s!==o&&t===c))},bg={duration:200,easing:"ease"},yg="transform",vg=pf.Transition.toString({property:yg,duration:0,easing:"linear"}),Sg={roleDescription:"sortable"};function useDerivedTransform(e){let{disabled:n,index:a,node:o,rect:i}=e;const[s,l]=(0,t.useState)(null),c=(0,t.useRef)(a);return lf(()=>{if(!n&&a!==c.current&&o.current){const e=i.current;if(e){const t=getClientRect(o.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&l(n)}}a!==c.current&&(c.current=a)},[n,a,o,i]),(0,t.useEffect)(()=>{s&&l(null)},[s]),s}function useSortable(e){let{animateLayoutChanges:n=defaultAnimateLayoutChanges,attributes:a,disabled:o,data:i,getNewIndex:s=defaultNewIndexGetter,id:l,strategy:c,resizeObserverConfig:u,transition:d=bg}=e;const{items:p,containerId:m,activeIndex:g,disabled:h,disableTransforms:b,sortedRects:y,overIndex:v,useDragOverlay:S,strategy:x}=(0,t.useContext)(hg),C=normalizeLocalDisabled(o,h),w=p.indexOf(l),k=(0,t.useMemo)(()=>({sortable:{containerId:m,index:w,items:p},...i}),[m,i,w,p]),E=(0,t.useMemo)(()=>p.slice(p.indexOf(l)),[p,l]),{rect:P,node:T,isOver:R,setNodeRef:M}=useDroppable({id:l,data:k,disabled:C.droppable,resizeObserverConfig:{updateMeasurementsFor:E,...u}}),{active:D,activatorEvent:O,activeNodeRect:$,attributes:I,setNodeRef:N,listeners:L,isDragging:j,over:B,setActivatorNodeRef:F,transform:q}=useDraggable({id:l,data:k,attributes:{...Sg,...a},disabled:C.draggable}),U=useCombinedRefs(M,N),V=Boolean(D),H=V&&!b&&isValidIndex(g)&&isValidIndex(v),W=!S&&j,G=W&&H?q:null,Y=H?null!=G?G:(null!=c?c:x)({rects:y,activeNodeRect:$,activeIndex:g,overIndex:v,index:w}):null,K=isValidIndex(g)&&isValidIndex(v)?s({id:l,items:p,activeIndex:g,overIndex:v}):w,Q=null==D?void 0:D.id,Z=(0,t.useRef)({activeId:Q,items:p,newIndex:K,containerId:m}),X=p!==Z.current.items,J=n({active:D,containerId:m,isDragging:j,isSorting:V,id:l,index:w,items:p,newIndex:Z.current.newIndex,previousItems:Z.current.items,previousContainerId:Z.current.containerId,transition:d,wasDragging:null!=Z.current.activeId}),ee=useDerivedTransform({disabled:!J,index:w,node:T,rect:P});return(0,t.useEffect)(()=>{V&&Z.current.newIndex!==K&&(Z.current.newIndex=K),m!==Z.current.containerId&&(Z.current.containerId=m),p!==Z.current.items&&(Z.current.items=p)},[V,K,m,p]),(0,t.useEffect)(()=>{if(Q===Z.current.activeId)return;if(null!=Q&&null==Z.current.activeId)return void(Z.current.activeId=Q);const e=setTimeout(()=>{Z.current.activeId=Q},50);return()=>clearTimeout(e)},[Q]),{active:D,activeIndex:g,attributes:I,data:k,rect:P,index:w,newIndex:K,items:p,isOver:R,isSorting:V,isDragging:j,listeners:L,node:T,overIndex:v,over:B,setNodeRef:U,setActivatorNodeRef:F,setDroppableNodeRef:M,setDraggableNodeRef:N,transform:null!=ee?ee:Y,transition:getTransition()};function getTransition(){return ee||X&&Z.current.newIndex===w?vg:W&&!isKeyboardEvent(O)||!d?void 0:V||J?pf.Transition.toString({...d,property:yg}):void 0}}function normalizeLocalDisabled(e,t){var n,a;return"boolean"==typeof e?{draggable:e,droppable:!1}:{draggable:null!=(n=null==e?void 0:e.draggable)?n:t.draggable,droppable:null!=(a=null==e?void 0:e.droppable)?a:t.droppable}}function hasSortableData(e){if(!e)return!1;const t=e.data.current;return!!(t&&"sortable"in t&&"object"==typeof t.sortable&&"containerId"in t.sortable&&"items"in t.sortable&&"index"in t.sortable)}var xg=[Ef.Down,Ef.Right,Ef.Up,Ef.Left],sortableKeyboardCoordinates=(e,t)=>{let{context:{active:n,collisionRect:a,droppableRects:o,droppableContainers:i,over:s,scrollableAncestors:l}}=t;if(xg.includes(e.code)){if(e.preventDefault(),!n||!a)return;const t=[];i.getEnabled().forEach(n=>{if(!n||null!=n&&n.disabled)return;const i=o.get(n.id);if(i)switch(e.code){case Ef.Down:a.top<i.top&&t.push(n);break;case Ef.Up:a.top>i.top&&t.push(n);break;case Ef.Left:a.left>i.left&&t.push(n);break;case Ef.Right:a.left<i.left&&t.push(n)}});const c=closestCorners({active:n,collisionRect:a,droppableRects:o,droppableContainers:t,pointerCoordinates:null});let u=getFirstCollision(c,"id");if(u===(null==s?void 0:s.id)&&c.length>1&&(u=c[1].id),null!=u){const e=i.get(n.id),t=i.get(u),s=t?o.get(t.id):null,c=null==t?void 0:t.node.current;if(c&&s&&e&&t){const n=getScrollableAncestors(c).some((e,t)=>l[t]!==e),o=isSameContainer(e,t),i=isAfter(e,t),u=n||!o?{x:0,y:0}:{x:i?a.width-s.width:0,y:i?a.height-s.height:0},d={x:s.left,y:s.top};return u.x&&u.y?d:df(d,u)}}}};function isSameContainer(e,t){return!(!hasSortableData(e)||!hasSortableData(t))&&e.data.current.sortable.containerId===t.data.current.sortable.containerId}function isAfter(e,t){return!(!hasSortableData(e)||!hasSortableData(t))&&(!!isSameContainer(e,t)&&e.data.current.sortable.index<t.data.current.sortable.index)}function useNexSysSnapshot(e){return(0,u.useSyncExternalStore)((0,u.useCallback)(t=>{const n=e.events.topics,a=[n.SYSTEM_SETTINGS_CHANGED,n.SYSTEM_STATUS_CHANGED,n.SYSTEM_CLASS_CHANGED,n.AFF_PRIORITY_CHANGED,n.DEF_PRIORITY_CHANGED,n.CACHE_PRECACHE_CHANGED,n.SYSTEM_RUNTIME_CHANGED];return a.forEach(n=>e.events.on(n,t)),()=>a.forEach(n=>e.events.off(n,t))},[e]),e.runtime.snapshot,e.runtime.snapshot)}var Cg=Object.freeze({}),wg=new Set(Object.keys(V?.types?.nonServerside??{}));function buildColumns(e,t={}){return nf({},n=>{for(let e=0;e<=25;e++)n[`col-${e}`]={id:`col-${e}`,label:0===e?"Ignored 26":`Prio ${e}`,priority:e,affs:[]};for(const[a,o]of Object.entries(e)){if(wg.has(a))continue;const e=Number(t[a]??o.defaultPriority??0);!Number.isFinite(e)||e>26||n[`col-${Math.max(0,Math.min(25,26===e?0:e))}`].affs.push(a)}})}function findContainer(e,t){return t[e]?e:Object.keys(t).find(n=>t[n].affs.includes(e))??null}function useAffPriorities(e,t={}){const[n,a]=(0,u.useState)(null),[o,i]=(0,u.useState)(null),s=(0,u.useRef)(null),l=useNexSysSnapshot(e)?.affs??Cg,{affPriorities:c=Cg,setAffPriority:d}=t,p=(0,u.useMemo)(()=>buildColumns(l,c),[l,c]);return{columns:o??p,activeId:n,sensors:useSensors(useSensor(Of,{activationConstraint:{distance:4}}),useSensor(Rf,{coordinateGetter:sortableKeyboardCoordinates})),onDragStart:(0,u.useCallback)(({active:e})=>{a(String(e.id));const t=nf(p,()=>{});s.current=t,i(t)},[p]),onDragOver:(0,u.useCallback)(({active:e,over:t})=>{if(!t)return;const n=String(e.id),a=String(t.id),o=s.current;if(!o)return;const l=findContainer(n,o),c=findContainer(a,o);if(!l||!c)return;let u;if(l===c){const e=o[l].affs,t=e.indexOf(n),i=e.indexOf(a);if(-1===t||-1===i||t===i)return;u=nf(o,n=>{n[l].affs=arrayMove(e,t,i)})}else u=nf(o,e=>{const t=e[l].affs,o=e[c].affs;if(-1===t.indexOf(n))return;const i=o.indexOf(a),s=-1===i?o.length:i;e[l].affs=t.filter(e=>e!==n),e[c].affs=[...o.slice(0,s),n,...o.slice(s)]});s.current=u,i(u)},[]),onDragEnd:(0,u.useCallback)(({active:e,over:t})=>{a(null);const n=s.current;if(s.current=null,i(null),!t||!n)return;const o=String(e.id),l=findContainer(o,n);if(!l)return;const c=n[l]?.priority??0;c!==(p[findContainer(o,p)]?.priority??0)&&d?.(o,c)},[p,d]),onDragCancel:(0,u.useCallback)(()=>{a(null),s.current=null,i(null)},[])}}var kg={antimony:"olive",argentum:"royalblue",aurum:"ForestGreen",calcite:"slategray",cinnabar:"greenyellow",cuprum:"DeepSkyBlue",ferrum:"DarkOrange",magnesium:"Red",plumbum:"Gold",realgar:"firebrick",stannum:"Tan",caloric:"darkseagreen",mending:"orchid",epidermal:"sienna",restoration:"darkviolet",health:"lightpink",writhe:"PaleGoldenRod"},Eg={ginseng:"ferrum",bloodroot:"magnesium",kelp:"aurum",hawthorn:"calamine",lobelia:"argentum",bellwort:"cuprum",ginger:"antimony",bayberry:"arsenic",ash:"stannum",goldenseal:"plumbum",pear:"calcite",elm:"cinnabar",valerian:"realgar",skullcap:"azurite",moss:"potash",kola:"quartz",sileris:"quicksilver",cohosh:"gypsum"};function resolveCureColor(e){if(e in kg)return kg[e]??null;const t=Eg[e];if(t)return kg[t]??null;const n=e.match(/^(caloric|mending|epidermal|restoration|health)\b/);return n?kg[n[1]]??null:null}var _g=["bound","daeggerimpale","entangled","impaled","transfixation","webbed","icebound"],Pg={};for(const[Lg,jg]of Object.entries(K))for(const e of jg){const t=resolveCureColor(e);if(t){Pg[Lg]=t;break}}for(const Lg of _g)Pg[Lg]||(Pg[Lg]=kg.writhe);function getAffColor(e){return Pg[e]??null}function AffChip({name:e,isDragging:t=!1}){const n=getAffColor(e);return(0,Fa.jsx)(bc,{label:e,size:"small",sx:{fontSize:13,height:22,mb:.25,padding:.5,opacity:t?.4:1,cursor:"grab",bgcolor:"rgba(0,0,0,0.5)",color:n??"text.secondary",border:"1px solid "+(n?n+"55":"rgba(255,255,255,0.2)"),"& .MuiChip-label":{px:.75},"&:active":{cursor:"grabbing"}}})}function SortableAffChip({name:e}){const{attributes:t,listeners:n,setNodeRef:a,transform:o,transition:i,isDragging:s}=useSortable({id:e});return(0,Fa.jsx)(jc,{ref:a,...t,...n,sx:{transform:pf.Transform.toString(o),transition:i,touchAction:"none"},children:(0,Fa.jsx)(AffChip,{name:e,isDragging:s})})}function PriorityColumn({column:e}){const t=0===e.priority,{setNodeRef:n}=useDroppable({id:e.id});return(0,Fa.jsxs)(jc,{sx:{minWidth:125,maxWidth:125,border:"1px solid",borderColor:t?"rgba(255,255,255,0.1)":"rgba(79,195,247,0.2)",borderRadius:1,p:.5,bgcolor:t?"rgba(0,0,0,0.2)":"rgba(79,195,247,0.04)",flexShrink:0},children:[(0,Fa.jsx)(Nl,{variant:"caption",sx:{display:"block",textAlign:"center",fontWeight:700,color:t?"text.secondary":"primary.main",mb:.5,fontSize:13},children:e.label}),(0,Fa.jsx)(SortableContext,{items:e.affs,strategy:verticalListSortingStrategy,children:(0,Fa.jsx)(jc,{ref:n,sx:{minHeight:28,display:"flex",flexDirection:"column"},children:e.affs.map(e=>(0,Fa.jsx)(SortableAffChip,{name:e},e))})})]})}function AffPrioritiesTab({settingsForm:e}){const{columns:t,activeId:n,sensors:a,onDragStart:o,onDragOver:i,onDragEnd:s,onDragCancel:l}=useAffPriorities(useNexSys(),e);return(0,Fa.jsx)(jc,{sx:{py:1},children:(0,Fa.jsx)(jc,{sx:{display:"inline-flex",gap:.75,alignItems:"flex-start"},children:(0,Fa.jsxs)(rg,{sensors:a,collisionDetection:closestCorners,onDragStart:o,onDragOver:i,onDragEnd:s,onDragCancel:l,children:[Object.keys(t).map(e=>(0,Fa.jsx)(PriorityColumn,{column:t[e]},e)),(0,Fa.jsx)(mg,{children:n?(0,Fa.jsx)(AffChip,{name:n}):null})]})})})}var Tg=createSvgIcon((0,Fa.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25"}),"HelpOutlined"),Ag=Object.freeze({}),Rg=Object.freeze({}),getDefaultClassFilter=(e="")=>{const t=normalizeClassName(e);return Ee.includes(t)?t:"all"};function useDefPriorities(e,t={}){const n=useNexSysSnapshot(e)??Ag,a=n.defs??Rg,o=n.system?.char?.class??"",{defPriorities:i=Rg,defStatics:s=Rg,setDefPriority:l,setDefStatic:c}=t,d=(0,u.useMemo)(()=>getDefaultClassFilter(o),[o]),[p,m]=(0,u.useState)(null),g=p??d,h=(0,u.useMemo)(()=>["all",...Ee],[]),b=(0,u.useMemo)(()=>Object.entries(a).reduce((e,[t,n])=>(e[t]={...n,defaultPriority:i[t]??n.defaultPriority,static:s[t]??n.static},e),{}),[a,i,s]),y=(0,u.useMemo)(()=>Object.entries(b).filter(([,e])=>!0===e.serverside),[b]),v=(0,u.useMemo)(()=>"all"===g?y.map(([e])=>e):y.filter(([,e])=>classListIncludes(e.skills,g)).map(([e])=>e),[y,g]),S=(0,u.useCallback)((e,t)=>{c?.(e,t)},[c]),x=(0,u.useCallback)((e,t)=>{l?.(e,t)},[l]);return{defList:v,defsState:b,classFilter:g,setClassFilter:(0,u.useCallback)(e=>{m(e)},[]),classOptions:h,updateStatic:S,updatePriority:x}}function defNameColor(e){const t=e?.bals_used??[],n=e?.bals_req??[],a=["balance","equilibrium"];return t.some(e=>a.includes(e))?"tomato":n.some(e=>a.includes(e))?"yellow":"dodgerblue"}var Mg=(0,Fa.jsxs)(jc,{sx:{fontSize:13,lineHeight:1.6},children:[(0,Fa.jsxs)(jc,{children:[(0,Fa.jsx)(jc,{component:"span",sx:{color:"tomato",fontWeight:700},children:"Red"}),": These skills will USE eq or bal to activate and should have the lowest priority."]}),(0,Fa.jsxs)(jc,{children:[(0,Fa.jsx)(jc,{component:"span",sx:{color:"yellow",fontWeight:700},children:"Yellow"}),": These skills are free to use but REQUIRE eq or bal to activate and should have the middle priority."]}),(0,Fa.jsxs)(jc,{children:[(0,Fa.jsx)(jc,{component:"span",sx:{color:"dodgerblue",fontWeight:700},children:"Blue"}),": Skills that are free to use and should likely have the highest priority."]})]}),Dg=(0,Fa.jsx)(jc,{sx:{fontSize:13,lineHeight:1.6},children:"Checked defences are player-controlled and only raised by the manual defence-up action. Unchecked defences are kept up by server-side curing."}),Og={py:.25,px:.75,border:"none"},$g={py:.5,px:.75,border:"none",borderBottom:"1px solid rgba(255,255,255,0.1)",fontWeight:700,fontSize:13,whiteSpace:"nowrap"};function HelpIcon(){return(0,Fa.jsx)(Tg,{sx:{fontSize:14,verticalAlign:"middle",ml:.25,opacity:.7}})}function DefRow({name:e,def:t,updateStatic:n,updatePriority:a}){const o=defNameColor(t);return(0,Fa.jsxs)(sm,{sx:{"& td":Og},children:[(0,Fa.jsx)(Kp,{padding:"checkbox",sx:{...Og,width:36},children:(0,Fa.jsx)(uu,{size:"small",checked:Boolean(t?.static),onChange:t=>n(e,t.target.checked),sx:{p:.25}})}),(0,Fa.jsx)(Kp,{sx:{width:100},children:(0,Fa.jsx)(Nl,{variant:"body2",sx:{color:o,fontSize:13},children:e})}),(0,Fa.jsx)(Kp,{sx:{width:50},children:(0,Fa.jsx)(Cm,{value:t?.defaultPriority??0,onChange:t=>a(e,t.target.value),type:"number",size:"small",sx:{width:56},slotProps:{htmlInput:{min:0,max:26,style:{padding:"2px 6px",fontSize:13}}}})})]})}function DefHalfTable({defNames:e,defsState:t,updateStatic:n,updatePriority:a}){return(0,Fa.jsx)(Zp,{sx:{flex:1},children:(0,Fa.jsxs)(Fp,{size:"small",stickyHeader:!0,sx:{tableLayout:"fixed"},children:[(0,Fa.jsx)(tm,{children:(0,Fa.jsxs)(sm,{children:[(0,Fa.jsx)(Kp,{padding:"checkbox",sx:{...$g,width:36},children:(0,Fa.jsx)(Tp,{arrow:!0,placement:"bottom-start",title:Dg,children:(0,Fa.jsxs)("span",{children:["Defup",(0,Fa.jsx)(HelpIcon,{})]})})}),(0,Fa.jsx)(Kp,{sx:{...$g,width:100},children:(0,Fa.jsx)(Tp,{arrow:!0,placement:"bottom-start",title:Mg,children:(0,Fa.jsxs)("span",{children:["Name ",(0,Fa.jsx)(HelpIcon,{})]})})}),(0,Fa.jsx)(Kp,{sx:{...$g,width:70},children:"Priority"})]})}),(0,Fa.jsx)(Wp,{children:e.map(e=>(0,Fa.jsx)(DefRow,{name:e,def:t[e],updateStatic:n,updatePriority:a},e))})]})})}function DefPrioritiesTab({settingsForm:e}){const{defList:t,defsState:n,classFilter:a,setClassFilter:o,classOptions:i,updateStatic:s,updatePriority:l}=useDefPriorities(useNexSys(),e),[c,d]=(0,u.useMemo)(()=>{const e=Math.ceil(t.length/2);return[t.slice(0,e),t.slice(e)]},[t]);return(0,Fa.jsxs)(jc,{sx:{pt:1},children:[(0,Fa.jsxs)(Bu,{size:"small",sx:{mb:1.5,minWidth:180},children:[(0,Fa.jsx)(sd,{children:"Class"}),(0,Fa.jsx)(ip,{value:a,label:"Class",onChange:e=>o(e.target.value),children:i.map(e=>(0,Fa.jsx)(Dd,{value:e,children:"all"===e?"All Classes":e},e))})]}),(0,Fa.jsxs)(jc,{sx:{display:"flex",gap:1,alignItems:"flex-start"},children:[(0,Fa.jsx)(DefHalfTable,{defNames:c,defsState:n,updateStatic:s,updatePriority:l}),d.length>0&&(0,Fa.jsx)(DefHalfTable,{defNames:d,defsState:n,updateStatic:s,updatePriority:l})]})]})}var Ig=Object.freeze({}),Ng=C.map(e=>k[e]).filter(Boolean).map(e=>({herb:e,mineral:P[e]??null}));function capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}function usePrecache(e,t={}){const n=useNexSysSnapshot(e),{desiredPrecache:a,setPrecache:o}=t,i=a??n?.cache?.desiredPrecache??Ig;return{pairs:(0,u.useMemo)(()=>Ng.map(({herb:e,mineral:t})=>({herb:e,herbLabel:capitalize(e),herbQty:i[e]??0,mineral:t,mineralLabel:t?capitalize(t):null,mineralQty:t?i[t]??0:0})),[i]),update:(0,u.useCallback)((e,t)=>{o?.(e,Math.max(0,t))},[o])}}function QuantityControl({label:e,value:t,onIncrement:n,onDecrement:a,compact:o=!1}){return(0,Fa.jsxs)(jc,{sx:{display:"flex",alignItems:"center",gap:1,mb:o?0:.5},children:[(0,Fa.jsxs)(Xc,{size:"small",variant:"outlined",children:[(0,Fa.jsx)(Kc,{onClick:a,disabled:t<=0,sx:{minWidth:28,px:.5,fontSize:12},children:"−"}),(0,Fa.jsx)(Kc,{disableRipple:!0,disableFocusRipple:!0,sx:{minWidth:36,px:.5,cursor:"default",pointerEvents:"none",fontSize:12,color:"text.primary",borderColor:"divider"},children:t}),(0,Fa.jsx)(Kc,{onClick:n,sx:{minWidth:28,px:.5,fontSize:12},children:"+"})]}),(0,Fa.jsx)(Nl,{variant:"body2",children:e})]})}function PairRow({pair:e,update:t}){return(0,Fa.jsxs)(jc,{sx:{display:"flex",gap:.5},children:[(0,Fa.jsx)(jc,{sx:{flex:1},children:(0,Fa.jsx)(QuantityControl,{compact:!0,label:e.herbLabel,value:e.herbQty,onIncrement:()=>t(e.herb,e.herbQty+1),onDecrement:()=>t(e.herb,e.herbQty-1)})}),(0,Fa.jsx)(jc,{sx:{flex:1},children:e.mineral?(0,Fa.jsx)(QuantityControl,{compact:!0,label:e.mineralLabel,value:e.mineralQty,onIncrement:()=>t(e.mineral,e.mineralQty+1),onDecrement:()=>t(e.mineral,e.mineralQty-1)}):(0,Fa.jsx)(jc,{sx:{height:28}})})]})}function PrecacheTab({settingsForm:e}){const{pairs:t,update:n}=usePrecache(useNexSys(),e);return(0,Fa.jsxs)(jc,{sx:{pt:1},children:[(0,Fa.jsxs)(jc,{sx:{display:"flex",gap:.5,mb:.25},children:[(0,Fa.jsx)(Nl,{variant:"overline",sx:{flex:1,color:"primary.main",fontWeight:700,fontSize:10},children:"Herb"}),(0,Fa.jsx)(Nl,{variant:"overline",sx:{flex:1,color:"primary.main",fontWeight:700,fontSize:10},children:"Mineral"})]}),t.map(e=>(0,Fa.jsx)(PairRow,{pair:e,update:n},e.herb))]})}function ColorSettingsTab(){return(0,Fa.jsx)(jc,{sx:{pt:2},children:(0,Fa.jsx)(Nl,{variant:"body2",color:"text.secondary",children:"Color settings are not yet implemented."})})}var zg=["System","Aff Priorities","Defences","Precache","Colors"];function ConfigTabs({settingsForm:e}){const[t,n]=(0,u.useState)(0),{pending:a,set:o}=e;return(0,Fa.jsxs)(jc,{sx:{width:"100%"},children:[(0,Fa.jsx)(vm,{value:t,onChange:(e,t)=>n(t),variant:"scrollable",scrollButtons:"auto",sx:{borderBottom:"1px solid rgba(255,255,255,0.1)",mb:1,"& .MuiTab-root":{fontSize:11,minHeight:36,py:.5}},children:zg.map(e=>(0,Fa.jsx)(zp,{label:e},e))}),(0,Fa.jsxs)(jc,{sx:{overflowY:"auto",overflowX:"auto",maxHeight:800},children:[0===t&&(0,Fa.jsx)(SystemSettingsTab,{pending:a,set:o}),1===t&&(0,Fa.jsx)(AffPrioritiesTab,{settingsForm:e}),2===t&&(0,Fa.jsx)(DefPrioritiesTab,{settingsForm:e}),3===t&&(0,Fa.jsx)(PrecacheTab,{settingsForm:e}),4===t&&(0,Fa.jsx)(ColorSettingsTab,{})]})]})}function ConfigDialogContent({nexSys:e,onClose:t}){const n=useSettingsForm(e),handleSave=()=>{n.commit(),e?.api?.ui?.closeConfig("ui.save"),t()},handleCancel=()=>{e?.api?.ui?.closeConfig("ui.cancel"),t()};return(0,Fa.jsxs)(ku,{open:!0,onClose:handleCancel,maxWidth:"md",slotProps:{paper:{sx:{width:{xs:"calc(100% - 24px)",md:900},maxWidth:"calc(100% - 24px)",bgcolor:"background.paper !important",color:"text.primary !important",backgroundImage:"none",border:"1px solid rgba(79,195,247,0.2)"}}},children:[(0,Fa.jsxs)(Mu,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",bgcolor:"background.paper !important",color:"text.primary !important",pb:.5,borderBottom:"1px solid rgba(255,255,255,0.08)"},children:[(0,Fa.jsx)(Nl,{component:"span",variant:"h6",sx:{fontSize:14,color:"primary.main !important",fontWeight:700},children:"nexSys4 Configuration"}),(0,Fa.jsx)(Nl,{component:"span",variant:"caption",sx:{opacity:.65,color:"text.secondary !important"},children:"v1.0.4"})]}),(0,Fa.jsx)(Au,{style:{padding:"16px 16px 0px"},sx:{"&.MuiDialogContent-root":{p:0}},children:(0,Fa.jsx)(jc,{sx:{px:2,pt:2,pb:0},children:(0,Fa.jsx)(ConfigTabs,{settingsForm:n})})}),(0,Fa.jsxs)(_u,{sx:{borderTop:"1px solid rgba(255,255,255,0.08)",px:2,py:1},children:[(0,Fa.jsx)(Kc,{onClick:handleCancel,size:"small",sx:{fontSize:11},children:"Cancel"}),(0,Fa.jsx)(Kc,{onClick:handleSave,variant:"contained",size:"small",sx:{fontSize:11},children:"Save"})]})]})}function ConfigDialog(){const e=useNexSys(),[t,n]=useDialogOpen(e);return(0,Fa.jsx)(ThemeProvider,{theme:Mm,children:t?(0,Fa.jsx)(ConfigDialogContent,{nexSys:e,onClose:()=>n(!1)}):null})}function NexSysGuiApp({nexSys:e}){return(0,Fa.jsx)(NexSysProvider,{nexSys:e,children:(0,Fa.jsx)(ConfigDialog,{})})}var bootstrapNexus=(e={})=>{const t=bootstrapNexus$1(e);return t.component=NexSysGuiApp,startupNexus(),t.api.control.updateNxs(),t};e.bootstrapNexus=bootstrapNexus}(globalThis.nexSys=globalThis.nexSys||{},React,ReactDOM);
1
+ !function(e,t,a,n,s,i,o,l,c){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var u=Object.create,d=Object.defineProperty,m=Object.getOwnPropertyDescriptor,p=Object.getOwnPropertyNames,g=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,t,a,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var s,i=p(t),o=0,l=i.length;o<l;o++)s=i[o],h.call(e,s)||s===a||d(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(n=m(t,s))||n.enumerable});return e},__toESM=(e,t,a)=>(a=null!=e?u(g(e)):{},__copyProps(!t&&e&&e.__esModule?a:d(a,"default",{value:e,enumerable:!0}),e));let b=__toESM(a,1);a=__toESM(a);var y=Symbol.for("nexsys4.nexusClientOverrides.installed"),v=Symbol.for("nexsys4.nexusClientOverrides.originals"),S=200,resolveOverrideTargets=e=>({buffer:"function"==typeof e?.buffer?e.buffer():null,platform:"function"==typeof e?.platform?e.platform():null,datahandler:"function"==typeof e?.datahandler?e.datahandler():null}),getActiveNexSys=()=>globalThis.nexSys&&"object"==typeof globalThis.nexSys?globalThis.nexSys:null,getSystemSettings=(e=getActiveNexSys())=>e?.state?.system?.settings||e?.sys?.settings||{},isOverrideTabEnabled=(e=getActiveNexSys())=>Boolean(getSystemSettings(e).overrideTab),normalizeTargetQuery=e=>{const t=String(e??"").trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1).toLowerCase()}`:""},getInputArea=()=>globalThis.document?.getElementsByTagName?.("textarea")?.[0]??null,createTabCompletion=()=>({txt:null,qry:null,vals:null,index:0,reset(){this.txt=null,this.qry=null,this.vals=null,this.index=0},tc(){const e=getInputArea();if(!e)return;if(this.txt??=String(e.value??"").split(" "),this.qry??=normalizeTargetQuery(this.txt.at(-1)),!this.qry)return;const t=Array.isArray(globalThis.nexGui?.colors?.enemies)?globalThis.nexGui.colors.enemies:[],a=Array.isArray(globalThis.GMCP?.WhoList)?globalThis.GMCP.WhoList:[];this.vals??=[...new Set([...t.map(e=>String(e)),...a.map(e=>String(e?.name??"")).filter(e=>e.startsWith(this.qry))])],this.vals.length&&(this.index>this.vals.length-1?(this.txt[this.txt.length-1]=this.qry,this.index=0):(this.txt[this.txt.length-1]=this.vals[this.index],this.index+=1),e.value=this.txt.join(" "))}}),ensureTabCompletion=(e=getActiveNexSys())=>{if(e?.tabCompletion?.tc&&e?.tabCompletion?.reset)return e.tabCompletion;const t=createTabCompletion();return e&&"object"==typeof e&&(e.tabCompletion=t),t},renderCustomPrompt=(e,t={})=>{const a=e?.api?.prompt,n=t?.line;try{const e="function"==typeof a?.getCustomPrompt?a.getCustomPrompt():"function"==typeof a?.render?a.render(t):null;return"string"!=typeof e?null:(n?.parsed_line&&"object"==typeof n.parsed_line&&(n.parsed_line.formatted=()=>e),e)}catch(s){return console.error("nexSys4 custom prompt render failed",s),null}},createAddBlockOverride=()=>function add_block(e=[]){const t=getActiveNexSys();t?.prepend_line&&(e.unshift(t.prepend_line),t.prepend_line=!1);const a=Boolean(getSystemSettings(t).customPrompt);let n=0;for(let i=0;i<e.length;i+=1){const s=e[i];if(!s||s.gag)continue;if(!s.parsed_line&&!s.html_line)continue;const o=Boolean(s.is_prompt&&a&&s.parsed_line)?renderCustomPrompt(t,{line:s,source:"nexus-client-override"}):null;s.is_prompt&&0===n&&null===o?s.gag=!0:(!s.parsed_line||"function"!=typeof s.parsed_line.text||s.parsed_line.text()||0!==n&&i!==e.length-1||null!==o)&&("function"==typeof this._fill_tab_completion&&this._fill_tab_completion(s),n+=1,this.lineid+=1,s.id=this.lineid,this.lines.push(s),this.unread=!0)}const s=this.prune_lines?.()??!1;(n||s)&&this.on_lines_changed?.()},createProcessLinesOverride=()=>function process_lines(e=[]){if(this.gagged)return;if(!e.length)return;this.current_block=e;const t=this.reflexes?.();for(let a=0;a<e.length&&!(a>=1e3);a+=1)if(this.current_line=e[a],this.current_line.index=a,e[a]?.line&&String(e[a].line).indexOf(String.fromCharCode(7))>=0&&this.platform?.()?.beep?.(),!this.fullstop&&"function"==typeof t?.handle_triggers){const n=t.handle_triggers(e,a);Array.isArray(n)&&(e=n)}t?.run_function?.("onBlock",e,"ALL"),this.buffer?.()?.add_block?.(e),this.current_line=void 0,this.current_block=void 0},createOnKeyUpOverride=()=>function on_key_up(e){if(!this._nexus?.datahandler?.()?.is_connected?.())return!0;if(this.dialog_has_focus?.())return!0;const t=getActiveNexSys(),a=isOverrideTabEnabled(t),n=a?ensureTabCompletion(t):null;return this.tab_pressed?9!==e||(this.tab_pressed=!1,a?(n?.tc?.(),!1):(this.player_targetted||this._nexus?.datahandler?.()?.tab_target?.(!1),this.player_targetted=!1,!1)):(n?.reset?.(),!0)},createSendCommandOverride=e=>function send_command(t){const a=getActiveNexSys(),n=Date.now();if(a&&"object"==typeof a&&(a.sentCommands=[...(Array.isArray(a.sentCommands)?a.sentCommands:[]).slice(0,S-1),{cmd:t,time:n}]),"function"==typeof e)return e.call(this,t);this._socket&&(this._socket.send(`${t}\r\n`),this.last_send=n)},installNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e||e[y])return Boolean(e);const{buffer:t,platform:a,datahandler:n}=resolveOverrideTargets(e);return!!(t&&a&&n)&&(e[v]={buffer:t,platform:a,datahandler:n,process_lines:e.process_lines,add_block:t.add_block,on_key_up:a.on_key_up,send_command:n.send_command},e.process_lines=createProcessLinesOverride(),t.add_block=createAddBlockOverride(),a.on_key_up=createOnKeyUpOverride(),n.send_command=createSendCommandOverride(n.send_command),e[y]=!0,!0)},uninstallNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e?.[y])return!1;const t=e[v];if(!t)return delete e[y],!1;const a=t.buffer||resolveOverrideTargets(e).buffer,n=t.platform||resolveOverrideTargets(e).platform,s=t.datahandler||resolveOverrideTargets(e).datahandler;return e.process_lines=t.process_lines,a&&(a.add_block=t.add_block),n&&(n.on_key_up=t.on_key_up),s&&(s.send_command=t.send_command),delete e[v],delete e[y],!0},x=["send","sendGmcp","on","off","notice","getCommandSeparator","now","setTimeout","clearTimeout","getVariable","setVariable","emitLocal","raiseToEventStream"],C=Object.freeze({promptRender:["renderPrompt"],gmcpSnapshot:["getGMCP"],debugToggle:["setDebugEnabled","isDebugEnabled"],destroy:["destroy"]}),resolveAdapterCapabilities=e=>{const t=e?.capabilities&&"object"==typeof e.capabilities?e.capabilities:{},a={};return Object.entries(C).forEach(([n,s])=>{const i=Object.prototype.hasOwnProperty.call(t,n)?Boolean(t[n]):s.every(t=>"function"==typeof e?.[t]);if(i){const t=s.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter capability "${n}" requires methods: ${t.join(", ")}`)}a[n]=i}),Object.freeze(a)},assertAdapterContract=e=>{const t=x.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter missing required methods: ${t.join(", ")}`);return resolveAdapterCapabilities(e),e},k=["Char.Vitals","Char.Status","Char.Afflictions.List","Char.Afflictions.Add","Char.Afflictions.Remove","Char.Defences.List","Char.Defences.Add","Char.Defences.Remove","Char.Items.Add","Char.Items.Remove","Char.Items.Update","Char.Items.List","IRE.Rift.List","IRE.Rift.Change","Room.Info","IRE.Target.Info"],registerEventStreamBindings=({eventBus:e,emit:t,pushTrace:a,eventRegistrations:n})=>{if(!e?.registerEvent)return;const registerBinding=(t,s)=>{const i=`nexsys4-${t.replace(/\W+/g,"-")}`,callback=e=>s(e);e.registerEvent(t,callback,{id:i,tags:["nexsys4"]}),n.push({eventName:t,id:i}),a("register:eventStream",{eventName:t,id:i})};k.forEach(e=>{registerBinding(e,a=>{t("GmcpEvent",{tag:e,payload:a??null,rawTag:e})})}),registerBinding("PromptEvent",e=>{t("PromptEvent",{source:"eventstream-prompt",payload:e??null})})},registerStartupGag=({onLocalEvent:e,client:t,notice:a,isDebugEnabled:n})=>{if("function"!=typeof e)return;const gagBlock=()=>{n()||t?.current_block?.forEach(e=>e.gag=!0)};let s=null,i=null,o=null;i=e("CuringStartupBeginEvent",()=>{i?.(),i=null,s||(s=e("PromptEvent",gagBlock))}),o=e("CuringStartupCompleteEvent",()=>{o?.(),o=null,gagBlock(),s?.(),s=null,a("loaded using startup spam gag.")})},escapeRegExp$2=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),createTriggerRegex=e=>e.regex instanceof RegExp?e.regex:new RegExp(`^${escapeRegExp$2(e.text)}$`,"i"),resolveTriggerReason=(e,t={})=>"function"==typeof e.resolveReason?e.resolveReason(t):e.reason,resolveTriggerPayload=(e,t,a={})=>{const n={id:e,source:"text"},s=resolveTriggerReason(t,a);return void 0!==t.have&&(n.have=t.have),void 0!==s&&(n.reason=s),"function"==typeof t.resolvePayload&&Object.assign(n,t.resolvePayload(a,n)||{}),n},createBalanceTextTrigger=(e,t)=>({name:`${e}-${t.name}`,regex:createTriggerRegex(t),action:({args:a,emit:n})=>{n("BalanceStateTextEvent",resolveTriggerPayload(e,t,a.groups))}}),createBalanceTextTriggersFromFamilies=(e=[])=>e.flatMap(({id:e,entries:t=[]})=>t.map(t=>createBalanceTextTrigger(e,t))),A=["a dolomite grain","a calcite mote","a bisemutum chip","an azurite mote","a magnesium chip","an aurum flake","a plumbum flake","a stannum flake","an arsenic pellet","a ferrum flake","an antimony flake","a cuprum flake","an argentum flake","a calamine crystal","a pinch of ground cinnabar","a pinch of realgar crystals","a quartz grain","a pinch of ground malachite","a quicksilver droplet","a potash crystal","a gypsum crystal"],E=["dolomite grains","calcite motes","bisemutum chips","azurite motes","magnesium chips","aurum flakes","plumbum flakes","stannum flakes","arsenic pellets","ferrum flakes","antimony flakes","cuprum flakes","argentum flakes","calamine crystals","pinches of ground cinnabar","pinches of ground realgar","quartz grains","pinches of ground malachite","quicksilver droplets","potash crystals","gypsum crystals"],_=["a bloodroot leaf","a piece of kelp","a goldenseal root","some prickly ash bark","some bayberry bark","a ginseng root","a ginger root","a bellwort flower","a lobelia seed","a hawthorn berry","a valerian leaf","a skullcap flower","slippery elm","a kola nut","sileris berry","some irid moss","a black cohosh root","a prickly pear","some myrrh gum","an echinacea root"],w=["bloodroot leaves","pieces of kelp","goldenseal roots","pieces of prickly ash bark","pieces of bayberry bark","ginseng roots","ginger roots","bellwort flowers","lobelia seeds","hawthorn berries","valerian leaves","skullcap flowers","slippery elms","kola nuts","sileris berries","pieces of irid moss","cohosh roots","prickly pears","myrrh gums","echinacea roots"],T={"a dolomite grain":"dolomite","a calcite mote":"calcite","a bisemutum chip":"bisemutum","an azurite mote":"azurite","a magnesium chip":"magnesium","an aurum flake":"aurum","a plumbum flake":"plumbum","a stannum flake":"stannum","an arsenic pellet":"arsenic","a ferrum flake":"ferrum","an antimony flake":"antimony","a cuprum flake":"cuprum","an argentum flake":"argentum","a calamine crystal":"calamine","a pinch of ground cinnabar":"cinnabar","a pinch of realgar crystals":"realgar","a quartz grain":"quartz","a pinch of ground malachite":"malachite","a quicksilver droplet":"quicksilver","a potash crystal":"potash","a gypsum crystal":"gypsum","a bloodroot leaf":"bloodroot","a piece of kelp":"kelp","a goldenseal root":"goldenseal","some prickly ash bark":"ash","some bayberry bark":"bayberry","a ginseng root":"ginseng","a ginger root":"ginger","a bellwort flower":"bellwort","a lobelia seed":"lobelia","a hawthorn berry":"hawthorn","a valerian leaf":"valerian","a skullcap flower":"skullcap","slippery elm":"elm","a kola nut":"kola","sileris berry":"sileris","some irid moss":"moss","a black cohosh root":"cohosh","a prickly pear":"pear","some myrrh gum":"myrrh","an echinacea root":"echinacea","dolomite grains":"dolomite","calcite motes":"calcite","bisemutum chips":"bisemutum","azurite motes":"azurite","magnesium chips":"magnesium","aurum flakes":"aurum","plumbum flakes":"plumbum","stannum flakes":"stannum","arsenic pellets":"arsenic","ferrum flakes":"ferrum","antimony flakes":"antimony","cuprum flakes":"cuprum","argentum flakes":"argentum","calamine crystals":"calamine","pinches of ground cinnabar":"cinnabar","pinches of ground realgar":"realgar","quartz grains":"quartz","pinches of ground malachite":"malachite","quicksilver droplets":"quicksilver","potash crystals":"potash","gypsum crystals":"gypsum","bloodroot leaves":"bloodroot","pieces of kelp":"kelp","goldenseal roots":"goldenseal","pieces of prickly ash bark":"ash","pieces of bayberry bark":"bayberry","ginseng roots":"ginseng","ginger roots":"ginger","bellwort flowers":"bellwort","lobelia seeds":"lobelia","hawthorn berries":"hawthorn","valerian leaves":"valerian","skullcap flowers":"skullcap","slippery elms":"elm","kola nuts":"kola","sileris berries":"sileris","pieces of irid moss":"moss","cohosh roots":"cohosh","prickly pears":"pear","myrrh gums":"myrrh","echinacea roots":"echinacea"},P={antimony:"ginger",argentum:"lobelia",arsenic:"bayberry",aurum:"kelp",bisemutum:"myrrh",calamine:"hawthorn",calcite:"pear",cinnabar:"elm",cuprum:"bellwort",dolomite:"echinacea",ferrum:"ginseng",gypsum:"cohosh",magnesium:"bloodroot",malachite:"skullcap",plumbum:"goldenseal",potash:"moss",quartz:"kola",quicksilver:"sileris",realgar:"valerian",stannum:"ash"},M={ash:"stannum",bayberry:"arsenic",bellwort:"cuprum",bloodroot:"magnesium",cohosh:"gypsum",echinacea:"dolomite",elm:"cinnabar",ginseng:"ferrum",ginger:"antimony",goldenseal:"plumbum",hawthorn:"calamine",kelp:"aurum",kola:"quartz",lobelia:"argentum",moss:"potash",myrrh:"bisemutum",pear:"calcite",sileris:"quicksilver",skullcap:"malachite",valerian:"realgar"},D={azurite:0,bisemutum:0,magnesium:0,plumbum:0,arsenic:0,potash:0,stannum:0,malachite:0,realgar:0,cinnabar:0,antimony:0,ferrum:0,quartz:0,quicksilver:0,aurum:0,calamine:0,cuprum:0,argentum:0,gypsum:0,calcite:0,dolomite:0,ginseng:0,bloodroot:0,kelp:0,hawthorn:0,lobelia:0,bellwort:0,ginger:0,bayberry:0,ash:0,goldenseal:0,moss:0,valerian:0,elm:0,skullcap:0,sileris:0,kola:0,cohosh:0,pear:0,myrrh:0,echinacea:0},escapeRegExp$1=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),buildAlternation=(e=[])=>e.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean).map(escapeRegExp$1).join("|"),exactEntry=(e,t,a,n)=>({name:e,text:t,have:a,reason:n}),regexEntry=(e,t,a,n)=>({name:e,regex:t,have:a,reason:n}),dynamicReasonEntry=(e,t,a,n)=>({name:e,regex:t,have:a,resolveReason:n}),dynamicPayloadEntry=(e,t,a)=>({name:e,regex:t,resolvePayload:a}),R=[..._,...A].filter(e=>"some irid moss"!==e&&"a potash crystal"!==e),O=new RegExp(`^You eat (?<item>${buildAlternation(R)})\\.$`,"i"),N=/^Balance used: (?<duration>\d+\.\d{1,2})s\.$/i,I=/^Equilibrium used: (?<duration>\d+\.\d{1,2})s\.$/i,normalizeConsumedHerb=e=>{const t=String(e||"").trim().toLowerCase();return T[t]||t},parseObservedDurationSeconds=(e={})=>Number.parseFloat(String(e.duration||"")),L=[{id:"balance",entries:[exactEntry("ready","You have recovered balance on all limbs.",!0,"ready"),dynamicPayloadEntry("used",N,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"equilibrium",entries:[exactEntry("ready","You have recovered equilibrium.",!0,"ready"),dynamicPayloadEntry("used",I,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"herb",entries:[exactEntry("ready","You may eat another plant or mineral.",!0,"ready"),dynamicReasonEntry("use",O,!1,e=>normalizeConsumedHerb(e?.item))]},{id:"focus",entries:[exactEntry("ready","Your mind is able to focus once again.",!0,"ready"),exactEntry("use","You focus your mind intently on curing your mental maladies.",!1,"focus"),regexEntry("shriek",/^A diminutive homunculus resembling \w+ turns its head towards you, its jaws opening wider than what seems possible\. The homunculus stares intently at you and lets out an ear-piercing shriek that disrupts your thoughts\.$/i,!1,"shriek"),regexEntry("concussion",/^(?:The blow sets your head to spinning - you cannot concentrate on anything\.|\w+ swings (?:his|her) shield around, smashing your temple with a backhanded blow\.)$/i,!1,"concussion"),exactEntry("failed","You concentrate, but your mind is too tired to focus.",!1,"failed")]},{id:"sip",entries:[exactEntry("ready","You may drink another health or mana elixir.",!0,"ready"),exactEntry("health","The elixir heals and soothes you.",!1,"health"),exactEntry("mana","Your mind feels stronger and more alert.",!1,"mana"),regexEntry("apply",/^You take some elixir from .+ and rub it into your .+\.$/i,!1,"apply"),regexEntry("failed",/^(?:The elixir flows down your throat without effect\.|The health elixir fizzles away without any discernable effect\.)$/i,!1,"failed")]},{id:"moss",entries:[exactEntry("ready","You may eat another bit of irid moss or potash.",!0,"ready"),exactEntry("use","You feel your health and mana replenished.",!1,"consume"),exactEntry("failed","The potash slides down without effect.",!1,"failed")]},{id:"tree",entries:[exactEntry("ready","You may utilise the tree tattoo again.",!0,"ready"),exactEntry("use","You touch the tree of life tattoo.",!1,"touch"),exactEntry("failed","Your tree of life tattoo glows faintly for a moment then fades, leaving you unchanged.",!1,"failed")]},{id:"salve",entries:[exactEntry("ready","You may apply another salve to yourself.",!0,"ready"),exactEntry("failed","The salve dissolves and quickly disappears after you apply it.",!1,"failed"),regexEntry("restoration",/^\[Curing\]: APPLY RESTORATION TO \w+$/i,!1,"restoration"),regexEntry("apply",/^(?:\[Curing\]: APPLY (?:MENDING|EPIDERMAL|CALORIC).*$|You take out some salve and quickly rub it on your(?:\s\w+)+\.)$/i,!1,"apply")]},{id:"immunity",entries:[exactEntry("ready","Your system is able to absorb antidotes once again.",!0,"ready"),exactEntry("failed","The liquid reacts with the substance still present in your system, cancelling itself out.",!1,"failed"),exactEntry("use","[Curing]: SIP IMMUNITY",!1,"immunity")]},{id:"rebounding",entries:[exactEntry("aura","You feel an aura of rebounding surround you.",!0,"aura"),exactEntry("discharged","Your aura of weapons rebounding disappears.",!0,"discharged"),exactEntry("already-on","You puff on the pipe, but your existing aura of weapons rebounding negates any effect.",!0,"already-on"),regexEntry("malachite",/^You take a long drag of malachite off your pipe\.?$/i,!1,"malachite"),regexEntry("skullcap",/^You take a long drag of skullcap off your pipe\.$/i,!1,"skullcap")]},{id:"smoke",entries:[exactEntry("ready","Your lungs have recovered enough to smoke another mineral or plant.",!0,"ready"),exactEntry("failed","Your lungs have not yet recovered enough to allow you to smoke.",!1,"failed"),regexEntry("use",/^You take a long drag of/i,!1,"smoke")]},{id:"dragonbreath",entries:[regexEntry("ready",/^Your \w+ summoning is complete\.$/i,!0,"ready"),exactEntry("failed","You already have your breath summoned, Wyrm.",!1,"failed"),exactEntry("lightning","You feel your eyes begin to blaze as you summon lightning to your belly.",!1,"lightning"),exactEntry("fire","With an almost inaudible growl, you begin summoning a fiery inferno into your belly.",!1,"fire"),exactEntry("acid","With a great effort, you begin to summon caustic hell to your innards.",!1,"acid"),exactEntry("cold","Flaring your wings and head back, you begin summoning forth the icy cold of the pure, endless void into your belly.",!1,"cold"),exactEntry("venom","With a great shudder, you begin to summon forth the defiling, deadly wyrmvenom of legend.",!1,"venom"),exactEntry("psi","Calling upon the vast well of mental power at your disposal, you begin to summon a mind-rending blast of psi energy.",!1,"psi")]},{id:"deafness",entries:[exactEntry("ready","The aural world fades to silence.",!0,"ready"),exactEntry("calamine","You eat a calamine crystal.",!1,"calamine"),exactEntry("hawthorn","You eat a hawthorn berry.",!1,"hawthorn")]},{id:"deaf",entries:[exactEntry("already-on","You are already deaf.",!0,"already-on"),exactEntry("trance","The world about you falls silent as the deafness trance sinks upon you.",!0,"trance"),exactEntry("use","You stare straight ahead and concentrate on a distant focal point.",!1,"deaf")]},{id:"blind",entries:[exactEntry("already-on","You are already blind.",!0,"already-on"),exactEntry("ready","You open your eyes once more, and the world about you is darkness.",!0,"ready"),exactEntry("use","You close your eyes for a moment.",!1,"blind")]},{id:"speed",entries:[exactEntry("ready","Tiny tremours spread through your body as the world seems to slow down.",!0,"ready"),exactEntry("use","[Curing]: SIP SPEED",!1,"speed")]},{id:"sileris",entries:[exactEntry("quicksilver-ready","The quicksilver hardens into a supple metallic shell.",!0,"quicksilver"),exactEntry("berry-ready","The sileris berry juice hardens into a supple purple shell.",!0,"sileris"),exactEntry("quicksilver-use","You apply a quicksilver droplet to yourself.",!1,"quicksilver"),exactEntry("berry-use","You apply a sileris berry to yourself.",!1,"sileris")]},{id:"voice",entries:[exactEntry("ready","You have recovered voice balance.",!0,"ready")]},{id:"tremolo",entries:[exactEntry("ready","You may mangle a limb with the vibrato or tremolo once again.",!0,"ready"),regexEntry("arm-use",/^With a trilling vibrato you attack \w+'s broken (?:left|right) arm\. (?:He|She) screams in pain\.$/i,!1,"arm"),regexEntry("leg-use",/^Using a heavy tremolo you brutally punish \w+'s already shattered (?:left|right) leg\.$/i,!1,"leg")]},{id:"homunculus",entries:[exactEntry("ready","You may order your homunculus once more.",!0,"ready"),exactEntry("failed","You are unable to order your homunculus again so soon.",!1,"failed"),regexEntry("use",/^Focusing your mind on a diminutive homunculus resembling (?:\w+), you command it to disrupt (?:\w+)'s focus\. The homunculus turns towards (?:him|her) before letting out an ear-piercing shriek\.$/i,!1,"shriek")]},{id:"fitness",entries:[exactEntry("ready","You may purge your lungs once again.",!0,"ready"),exactEntry("use","You inhale deeply, purging yourself of your asthmatic condition.",!1,"fitness"),exactEntry("failed","You may not purge your lungs again as of this time.",!1,"failed")]},{id:"bloodboil",entries:[exactEntry("ready","You may boil your blood once again.",!0,"ready"),exactEntry("use","You summon spirits of fire to burn off that which afflicts you.",!1,"bloodboil"),exactEntry("failed","You have not recovered enough to boil your blood again as of yet.",!1,"failed")]},{id:"dragonheal",entries:[exactEntry("ready","You may purge your great form of afflictions once again.",!0,"ready"),exactEntry("use","You let out a great keening, and cast the impurities from your form.",!1,"dragonheal"),exactEntry("failed-recovery","You have not yet recovered enough to purge your great form of afflictions.",!1,"failed"),exactEntry("failed-disjointed","Your mind and body are too disjointed to invoke your healing powers, wyrm.",!1,"failed")]},{id:"rage",entries:[exactEntry("ready","You may channel your rage to cure your afflictions once again.",!0,"ready"),exactEntry("use","You allow your pent-up rage to vent and your eyes flash dangerously.",!1,"rage")]},{id:"salt",entries:[exactEntry("use","Directing the energy of salt, you surround yourself with a primal aura, purging yourself of ailments.",!1,"salt"),exactEntry("ready","You may channel alchemical energy to heal yourself once again.",!0,"ready"),exactEntry("failed","You have not recovered enough to heal yourself with alchemical energy once again.",!1,"failed")]},{id:"shrugging",entries:[exactEntry("ready","Your body has recovered enough to shrug afflictions once again.",!0,"ready"),exactEntry("use","Focusing inward, you purge your body of afflictions.",!1,"shrugging"),exactEntry("failed","You may not shrug again so soon.",!1,"failed")]},{id:"fool",entries:[exactEntry("ready","You may heal another affliction.",!0,"ready"),exactEntry("use","You press the Fool tarot to your forehead.",!1,"fool"),exactEntry("failed","The Fool has no effect on you.",!1,"failed")]},{id:"writhe",entries:[regexEntry("free",/^You have writhed free\b/i,!0,"ready"),exactEntry("no-affliction","You begin to writhe helplessly, throwing your body off balance.",!0,"no-affliction"),exactEntry("entangled","You begin to struggle free of your entanglement.",!1,"entangled"),exactEntry("transfixation","You begin trying to wrest your mind free of that which has transfixed it.",!1,"transfixation"),exactEntry("failed-entangled","You twist and turn as you attempt to escape from your entanglement.",!1,"failed"),exactEntry("failed-transfixation","You continue trying to wrest your mind free.",!1,"failed")]},{id:"impalewrithe",entries:[exactEntry("free-direct","With an heroic effort you manage to writhe yourself free from the weapon that impaled you.",!0,"impale"),exactEntry("use","You begin to writhe furiously to escape the blade that has impaled you.",!1,"impale"),regexEntry("free-swathe",/^With a vicious snarl \w+ carves a merciless swathe through your steaming guts\. You gurgle and choke as s?he withdraws (?:his|her) dripping blade, glistening with gore\.$/i,!0,"impale"),regexEntry("free-wrench",/^Searing pain tears through your midsection as you wrench away from [A-Z][a-z]+, (?:his|her) weapon ripping unceremoniously through your innards\.$/i,!0,"impale"),regexEntry("free-slide",/^With a snarl of contempt, \w+ allows you to slide free of (?:her|his) weapon\.$/i,!0,"impale")]},{id:"alleviate",entries:[exactEntry("ready","You may purge your body of afflictions once again.",!0,"ready"),exactEntry("use","Applying your knowledge of anatomy, you massage pressure points with your fingers, and a flood of relief courses through your body.",!1,"alleviate"),exactEntry("no-afflictions","There are no pesky afflictions keeping you from your destiny, Warrior.",!1,"no-afflictions"),exactEntry("failed","You are too exhausted to purge your body of afflictions.",!1,"failed")]},{id:"slough",entries:[exactEntry("use","You allow your outer layers to slough away, their fires extinguished along with the impurities contaminating them.",!1,"slough"),exactEntry("ready","You may slough off the impurities that plague you once again.",!0,"ready"),exactEntry("failed","You may not slough off the impurities again quite yet.",!1,"failed")]}],createBalanceTextTriggers=()=>({group:"balance/text",triggers:createBalanceTextTriggersFromFamilies(L)}),parsePositiveInteger=(e,t=1)=>{const a=Number.parseInt(String(e??""),10);return Number.isFinite(a)&&a>0?a:t},cleanItemText=e=>String(e||"").trim(),emitInventoryDelta=({emit:e,item:t,delta:a,source:n="text-trigger"})=>{e("CacheInventoryDeltaTextEvent",{item:cleanItemText(t),delta:a,source:n})},createCacheTextTriggers=()=>({group:"cache/text",triggers:[{name:"rift-out",regex:/^You remove (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)\.$/i,action:({args:e,emit:t})=>{const a=e?.groups||{};t("CacheRiftOutTextEvent",{item:cleanItemText(a.item),amount:parsePositiveInteger(a.amount),riftAmount:parsePositiveInteger(a.riftAmount,0),source:"text-trigger"})}},{name:"curative-consume",regex:/^You eat (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{t("CacheCurativeConsumedTextEvent",{item:cleanItemText((e?.groups||{}).item),amount:1,source:"text-trigger"})}},{name:"rift-in",regex:/^You store (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)(?<capacityMarker>, which is the maximum for that type of object)?\.$/i,action:({args:e,emit:t})=>{const a=e?.groups||{};t("CacheRiftInTextEvent",{item:cleanItemText(a.item),amount:parsePositiveInteger(a.amount),riftAmount:parsePositiveInteger(a.riftAmount,0),atCapacity:Boolean(a.capacityMarker),source:"text-trigger"})}},{name:"rift-full",regex:/^You may not store any more of that type of thing\.$/i,action:({emit:e})=>{e("CacheRiftFullTextEvent",{source:"text-trigger"})}},{name:"inventory-empty",regex:/^You have no (?<item>.+?) in your inventory\.$/i,action:({args:e,emit:t})=>{t("CacheInventoryEmptyTextEvent",{item:cleanItemText((e?.groups||{}).item),source:"text-trigger"})}},{name:"give-away",regex:/^You give (?<item>.+?) to .+\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}},{name:"receive",regex:/^.+ gives (?<item>.+?) to you\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:1})}},{name:"drop",regex:/^You drop (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}}]}),normalizeTextValue=e=>String(e||"").trim(),parseDelimitedEntries=e=>String(e||"").split(/[|,]/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),parseSpaceDelimitedEntries=e=>String(e||"").replace(/\s+\((\d+)\)/g,"($1)").trim().split(/\s+/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),buildLimbPayload=({args:e,client:t,source:a="text-trigger"})=>({limb:normalizeTextValue(e.groups?.limb),raw:normalizeTextValue(t?.current_line?.line),source:a}),createLimbTextTriggers=()=>({group:"limb/selfDamage",triggers:[{name:"carve-hit",regex:/^As .+? carves into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:a})=>{a("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"crunch-hit",regex:/^As .+?'s? blow crunches into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:a})=>{a("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"pain-subsides",regex:/^The pain plaguing your (?<limb>.+) subsides\.$/,action:({args:e,client:t,emit:a})=>{a("LimbResetTextEvent",buildLimbPayload({args:e,client:t}))}}]}),normalizeTag=e=>String(e||"").trim().toLowerCase(),normalizeCommandSeparator=e=>String(e??"").trim(),toNumber=(e,t=0)=>{const a=Number(e);return Number.isFinite(a)?a:t},toOptionalBooleanFromYesNo=e=>{if(null==e||""===e)return;if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;const t=String(e).trim().toLowerCase();return!!["yes","1","true","on"].includes(t)||!["no","0","false","off"].includes(t)&&void 0},boolWord=e=>e?"on":"off",nowMs=()=>Date.now(),j={classQueue:{name:"class",type:"c!p!t!w",pre:["touch soul","stand"],post:[],exclusions:["fullQueue"]},freeQueue:{name:"free",type:"free",pre:["touch soul","stand"],post:[],exclusions:["fullQueue","shieldQueue"]},fullQueue:{name:"full",type:"ebc!w!p!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","shieldQueue","classQueue"]},shieldQueue:{name:"shield",type:"eb!w!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","fullQueue"]},shipQueue:{name:"ship",type:"s!w!t",pre:["touch soul","stand"],post:[],exclusions:[]},bloodcloakQueue:{name:"bloodcloak",type:"!teb",pre:["touch soul"],post:[],exclusions:["fullQueue","freeQueue"]},battlerageQueue:{name:"battlerage",type:"!p!t!wu",pre:["touch soul"],post:[],exclusions:[]},stunQueue:{name:"stun",type:"!t",pre:["touch soul"],post:[],exclusions:[]}},escapeRegExp=e=>String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),normalizeTriggerName=e=>String(e||"").replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,""),resolveSeparator=e=>normalizeCommandSeparator(e?.settings?.command_separator??e?.settings?.commandSeparator)||"|",splitCommands=(e,t)=>String(e||"").split(String(t||"|")||"|").map(e=>e.trim()).filter(Boolean),createQueueSentTrigger=([e,t])=>({name:`sent-${normalizeTriggerName(e)}`,regex:new RegExp(`^\\[System\\]: Added (?<commands>.+) to your ${escapeRegExp(t.type)} queue\\.$`,"i"),action:({args:a,client:n,emit:s})=>{const i=resolveSeparator(n),o=normalizeTextValue(a.groups?.commands);s("QueueSentTextEvent",{raw:normalizeTextValue(n?.current_line?.line),queueId:e,queueName:t.name,queueType:t.type,rawCommands:o,commands:splitCommands(o,i),separator:i,source:"text-trigger"})}}),createQueueTextTriggers=()=>({group:"queue/text",triggers:Object.entries(j).map(createQueueSentTrigger)}),createAffPrioritySnapshotTriggers=()=>({group:"serverside/affPrioritySnapshot",session:{name:"affPriorities",completionEvent:"ServersideAffPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"aff-priority-header",regex:/^Your affliction curing priorities(?::| for the priority set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideAffPrioSnapshotOpenTextEvent",{topic:"affPriorities",reason:"aff-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<prio>\d+):\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{const a=parseSpaceDelimitedEntries(e.groups.entries);return!!a.length&&(a.forEach(a=>{t("ServersideAffPrioTextEvent",{aff:a,prio:Number(e.groups.prio)})}),!0)}},{name:"close",closer:!0,closeReason:"aff-priority-terminal-line",regex:/^Affs with priority 26 are ignored\.$/i}]}),createCuringSetSnapshotTriggers=()=>{let e=[],t="";const reset=()=>{e=[],t=""};return{group:"serverside/curingSetSnapshot",session:{name:"curingSets",completionEvent:"ServersideCuringSetSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"curingset-list-header",regex:/^Your current curing sets$/,action:()=>{reset()}},{name:"set-line",regex:/^(?!-+$)(?<name>\S+)(?<current> \(current\))?$/,action:({args:a})=>{const n=String(a.groups?.name||"").trim();return!!n&&(e.push(n),a.groups?.current&&(t=n),!0)}},{name:"close",closer:!0,closeReason:"curingset-total-line",regex:/^You are using a total of (?<used>\d+) of your allowed (?<limit>\d+) curing sets\.$/,action:({args:a,emit:n})=>{n("ServersideCuringSetsTextEvent",{sets:[...e],activeSet:t,used:Number(a.groups.used),limit:Number(a.groups.limit)})}},{name:"empty",opener:!0,closer:!0,openReason:"curingset-empty-header",closeReason:"curingset-empty-line",regex:/^You have no sets defined/,action:({emit:e})=>{reset(),e("ServersideCuringSetsTextEvent",{sets:[],activeSet:"",used:0})}}]}},createCuringSetSwitchTriggers=()=>({group:"serverside/curingSetSwitch",triggers:[{name:"switched",regex:/^You will now cure using the (?<set>\S+) set\.$/,action:({args:e,emit:t})=>{t("ServersideCuringSetSwitchedTextEvent",{set:e.groups?.set||""})}}]}),createDefPrioritySnapshotTriggers=()=>({group:"serverside/defPrioritySnapshot",session:{name:"defPriorities",completionEvent:"ServersideDefPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"def-priority-header",regex:/^Your defence priorities(?::| for curing set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioSnapshotOpenTextEvent",{topic:"defPriorities",reason:"def-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<def>\w+)\s*: (?<prio>\d+)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio)})}}]}),createLivePriorityConfirmationTriggers=()=>({group:"serverside/livePriorityConfirmations",triggers:[{name:"aff-set",regex:/^You have set the '(?<aff>[^']+)' affliction to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideAffPrioTextEvent",{aff:String(e.groups.aff||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}},{name:"def-set",regex:/^You have set the '(?<def>\w+)' defence to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}}]}),emitStatus$1=(e,t,a)=>{e("ServersideStatusTextEvent",{key:t,value:a})},createLiveStatusConfirmationTriggers=()=>({group:"serverside/liveStatusConfirmations",triggers:[{name:"enabled",regex:/^Curing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"enabled",/^activated$/.test(e.groups.value))}},{name:"transmutation-on",regex:/^You will now use transmutation cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!0)}},{name:"transmutation-off",regex:/^You will now use concoction-based cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!1)}},{name:"sip-priority",regex:/^Curing will now prioritise (?<value>mana|health) over (?<other>mana|health)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-threshold",regex:/^(?<kind>Health|Mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"sipHealthAt":"sipManaAt",Number(e.groups.value))}},{name:"moss-threshold",regex:/^Moss (?<kind>health|mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"mossHealthAt":"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Automatic usage of focusing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focus",/^activated$/.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^You will now prioritise (?<value>focus|herbs) over (?<other>focus|herbs)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focusOverHerbs",/^focus$/.test(e.groups.value))}},{name:"tree",regex:/^Automatic usage of the tree tattoo (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"tree",/^activated$/.test(e.groups.value)?"on":"off")}},{name:"clot-on",regex:/^You will now attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!0)}},{name:"clot-off",regex:/^You will no longer attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!1)}},{name:"clot-at",regex:/^Will clot above (?<value>\d+) bleeding\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAt",Number(e.groups.value))}},{name:"insomnia-on",regex:/^You will now use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!0)}},{name:"insomnia-off",regex:/^You will now not use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!1)}},{name:"fractures-above",regex:/^Will cure health based afflictions above (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^You will now use mana if above (?<value>\d+)% of your maximum mana reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"manaThreshold",Number(e.groups.value))}},{name:"batch-on",regex:/^You will now attempt to cure multiple things at once\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!0)}},{name:"batch-off",regex:/^You will now cure one thing at a time\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!1)}},{name:"clot-above",regex:/^You will now use corrupted clotting if above (?<value>\d+)% of your maximum health reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAbove",Number(e.groups.value))}}]}),createQueuePredictionTriggers=()=>({group:"serverside/queuePrediction",triggers:[{name:"queue-line",regex:/^CURING QUEUE(?:\s+LIST)?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersideQueueListTextEvent",{queue:parseDelimitedEntries(e.groups.entries)})}},{name:"predictions-line",regex:/^CURING PREDICTIONS?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersidePredictionsTextEvent",{predictions:parseDelimitedEntries(e.groups.entries).reduce((e,t)=>(e[t]=!0,e),{})})}}]}),emitStatus=(e,t,a)=>{e("ServersideStatusTextEvent",{key:t,value:a})},createStatusSnapshotTriggers=()=>({group:"serverside/statusSnapshot",session:{name:"status",completionEvent:"ServersideStatusSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"status-header",regex:/^Curing Status:$/},{name:"enabled",regex:/^Enabled:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"enabled",/^yes$/i.test(e.groups.value))}},{name:"reporting",regex:/^Reporting commands:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"reporting",/^yes$/i.test(e.groups.value))}},{name:"sipping",regex:/^Sipping:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipping",/^yes$/i.test(e.groups.value))}},{name:"afflictions",regex:/^Affliction Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"afflictions",/^yes$/i.test(e.groups.value))}},{name:"defences",regex:/^Defence Upkeep:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"defences",/^yes$/i.test(e.groups.value))}},{name:"transmutation",regex:/^Curing Method:\s+(?<value>\w+)$/,action:({args:e,emit:t})=>{emitStatus(t,"transmutation","transmutation"===String(e.groups.value||"").toLowerCase())}},{name:"fallback",regex:/^Fallback Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"fallback",/^yes$/i.test(e.groups.value))}},{name:"custom-aff-priority",regex:/^Custom Curing Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customAffPriority",/^yes$/i.test(e.groups.value))}},{name:"custom-def-priority",regex:/^Custom Defence Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customDefPriority",/^yes$/i.test(e.groups.value))}},{name:"sip-priority",regex:/^Health\/Mana Priority:\s+(?<value>Health|Mana)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-health-at",regex:/^Sip health at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipHealthAt",Number(e.groups.value))}},{name:"sip-mana-at",regex:/^Sip mana at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipManaAt",Number(e.groups.value))}},{name:"moss-health-at",regex:/^Eat moss below health:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossHealthAt",Number(e.groups.value))}},{name:"moss-mana-at",regex:/^Eat moss below mana:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Use focus:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focus",/^yes$/i.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^Focus over herbs:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focusOverHerbs",/^yes$/i.test(e.groups.value))}},{name:"clot",regex:/^Use clot:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"clot",/^yes$/i.test(e.groups.value))}},{name:"tree",regex:/^Use tree:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"tree",/^yes$/i.test(e.groups.value)?"on":"off")}},{name:"clot-at",regex:/^Clot at:\s+(?<value>\d+) bleeding$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAt",Number(e.groups.value))}},{name:"insomnia",regex:/^Use insomnia:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"insomnia",/^yes$/i.test(e.groups.value))}},{name:"fractures-above",regex:/^Will cure fractures above:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^Will use mana above:\s+(?<value>\d+)% mana$/,action:({args:e,emit:t})=>{emitStatus(t,"manaThreshold",Number(e.groups.value))}},{name:"clot-health",regex:/^Will clot health until:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAbove",Number(e.groups.value))}},{name:"batch",regex:/^Batch actions:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"batch",/^yes$/i.test(e.groups.value))}},{name:"kaido-transmute",closer:!0,closeReason:"status-terminal-line",regex:/^Use Kaido Transmute:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"kaidoTransmute",/^yes$/i.test(e.groups.value))}}]}),createSystemEventTriggers=()=>({group:"system/systemEvent",triggers:[{name:"line",regex:/^SystemEvent (?<eventName>.+)$/,action:({args:e,client:t,emit:a})=>{const n=normalizeTextValue(e.groups?.eventName);if(!n)return;const s=normalizeTextValue(t?.current_line?.line);a(n,{raw:s});const i=n.match(/^(?<queueName>[A-Za-z]+)QueueFired$/);i?.groups?.queueName&&a("QueueFiredTextEvent",{raw:s,queueName:i.groups.queueName})}},{name:"all-queues-cleared",regex:/^\[System\]: All queued commands cleared\.$/,action:({client:e,emit:t})=>{t("AllQueuesClearedTextEvent",{raw:normalizeTextValue(e?.current_line?.line)})}}]}),createSeparatorChangedTrigger=()=>({group:"system/separatorChanged",triggers:[{name:"separator-changed",regex:/^Your command separator is now:\s*(?<sep>\S+)\s*$/,action:({args:e,emit:t})=>{const a=String(e.groups?.sep||"").trim();a&&t("CommandSeparatorChangedTextEvent",{separator:a})}}]}),q=[createSystemEventTriggers,createSeparatorChangedTrigger,createBalanceTextTriggers,createCacheTextTriggers,createLimbTextTriggers,createQueueTextTriggers,createStatusSnapshotTriggers,createAffPrioritySnapshotTriggers,createDefPrioritySnapshotTriggers,createCuringSetSnapshotTriggers,createCuringSetSwitchTriggers,createLiveStatusConfirmationTriggers,createLivePriorityConfirmationTriggers,createQueuePredictionTriggers],createTriggerCatalog=()=>q.map(e=>e()),registerTextTriggers=({triggerApi:e,client:t,emit:a,onLocalEvent:n,pushTrace:s,triggerIds:i,registerCleanup:o,registerTriggerGroupActivity:l,triggerSessions:c})=>{if(!e?.triggers?.add)return void s("register:nexAction:skipped",{reason:"trigger-api-unavailable"});const u="function"==typeof e.triggers.enable&&"function"==typeof e.triggers.disable,sessionToggleTag=e=>`session:${e}`,setSessionTriggers=(t,a)=>{if(!u)return;const n=sessionToggleTag(t);a?e.triggers.enable([n]):e.triggers.disable([n]),s(a?"session:enable":"session:disable",{session:t,tag:n})},resetSession=(e,t={})=>{const a=c[e];return!!a&&(a.active=!1,a.hasLines=!1,a.lastReason=String(t.reason||"reset"),a.lastClosedAt=Date.now(),setSessionTriggers(e,!1),s("session:reset",{session:e,...t}),!0)},beginSession=(e,t={})=>{const a=c[e];return!!a&&(setSessionTriggers(e,!0),a.active?(s("session:reopen",{session:e,...t}),!1):(a.active=!0,a.hasLines=!1,a.lastReason=String(t.reason||t.source||"begin"),a.lastOpenedAt=Date.now(),s("session:begin",{session:e,...t}),!0))},markSessionHasData=e=>{const t=c[e];t?.active&&!t.hasLines&&(t.hasLines=!0)},completeSession=(e,t={})=>{const n=c[e];if(!n?.active)return!1;const i=n.hasLines;return n.active=!1,n.hasLines=!1,n.lastReason=String(t.reason||"complete"),n.lastClosedAt=Date.now(),setSessionTriggers(e,!1),s("session:complete",{session:e,reason:n.lastReason,hadLines:i,completionEvent:t.completionEvent||""}),t.completionEvent&&a(t.completionEvent,{topic:e,reason:n.lastReason}),!0},registerTextTrigger=({id:n,group:o,regex:c,action:u,enabled:d=!0,tags:m=[],once:p,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:k})=>{e.triggers.add({id:n,regex:c,enabled:d,tags:m,once:p,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:k,action:e=>u({args:e,client:t,emit:a,pushTrace:s})}),i.push(n),l(o,"triggerCount"),s("register:nexAction",{id:n,group:o,enabled:d,regex:c instanceof RegExp?c.source:String(c)})};createTriggerCatalog().forEach(e=>{const t=e.session;t&&"function"==typeof n&&((t.resetEvents||[]).forEach(({event:a,reason:s})=>{o(n(a,()=>resetSession(t.name,{reason:s,event:a}))),l(e.group,"hookCount")}),(t.fallbackCloseEvents||[]).forEach(({event:a,reason:s})=>{o(n(a,()=>completeSession(t.name,{reason:s,completionEvent:t.completionEvent}))),l(e.group,"hookCount")})),e.triggers.forEach(a=>{const n=t?.name,s=Boolean(n&&!0===a.opener),i=Boolean(n&&!0===a.closer),o=["nexsys4","adapter","text",`group:${e.group}`],l=Boolean(n)&&!s,d=l?[sessionToggleTag(n)]:[],m=(!l||!u)&&(a.enabled??!0);registerTextTrigger({id:`nexsys4-${e.group.replace(/[\\/]+/g,"-")}-${a.name}`,group:e.group,regex:a.regex,enabled:m,tags:[...o,...d,...a.tags||[]],once:a.once,duration:a.duration,fg:a.fg,bg:a.bg,lines:a.lines,prompt:a.prompt,finalAction:a.finalAction,onRemove:a.onRemove,onDisable:a.onDisable,onEnable:a.onEnable,action:o=>{if(s)beginSession(n,{group:e.group,trigger:a.name,reason:a.openReason||"open"});else if(n&&!c[n]?.active)return;const l="function"==typeof a.action?a.action(o):void 0;return!n||s||i||!1===l||markSessionHasData(n),i&&completeSession(n,{reason:a.closeReason||"close",completionEvent:t.completionEvent}),l}})})})},$="",B="#c1bfff",F="#cf6dfc",z="#FFF2D7",G=`<span style="color:${B}">[-</span><span style="color:${F}">nexSys</span><span style="color:${B}">-] </span>`,H=Object.freeze({fg:z,bg:$}),U=Object.freeze({default:Object.freeze({default:Object.freeze({message:H})}),affGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +aff ",fg:"orange",bg:$}),message:Object.freeze({fg:"green",bg:$})})}),affLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -aff ",fg:"orange",bg:$}),message:Object.freeze({fg:"red",bg:$})})}),defGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +def ",fg:"purple",bg:$}),message:Object.freeze({fg:"green",bg:$})})}),defLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -def ",fg:"purple",bg:$}),message:Object.freeze({fg:"red",bg:$})})}),balanceRecovered:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" onBal ",fg:"brown",bg:$}),message:Object.freeze({fg:"green",bg:$})})}),balanceLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" offBal ",fg:"brown",bg:$}),message:Object.freeze({fg:"red",bg:$})})}),trackableGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" + ",fg:"white",bg:$}),message:Object.freeze({fg:"green",bg:$})})}),trackableLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" - ",fg:"white",bg:$}),message:Object.freeze({fg:"red",bg:$})})}),priority:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:"priority change: ",fg:"yellow",bg:$}),message:Object.freeze({fg:"red",bg:$})})}),output:Object.freeze({default:Object.freeze({message:Object.freeze({fg:"red",bg:$})})})}),escapeHtml$1=e=>String(e||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),normalizeNoticeToken=(e,t="")=>String(e||t).trim().toLowerCase(),resolveNoticeStyle=(e={})=>{const t=String(e.category||"default").trim(),a=normalizeNoticeToken(e.action,"default"),n=U[t]||U.default;return n[a]||n.default||U.default.default},normalizeNoticePart=(e,t=H)=>"string"==typeof e?{text:e,fg:t.fg,bg:t.bg}:{text:String(e?.text||""),fg:String(e?.fg??t.fg??H.fg),bg:String(e?.bg??t.bg??H.bg)},buildNoticeParts=(e,t={})=>{const a=resolveNoticeStyle(t),n=a.message||H;if(Array.isArray(t.parts)&&t.parts.length)return t.parts.map(e=>normalizeNoticePart(e,n)).filter(e=>e.text);if(t.title)return[normalizeNoticePart({text:String(t.title),fg:t.titleFg??n.fg,bg:t.titleBg??n.bg},n),normalizeNoticePart({text:String(e),fg:t.fg??n.fg,bg:t.bg??n.bg},n)].filter(e=>e.text);const s=[];return a.prefix?.text&&s.push(normalizeNoticePart(a.prefix,n)),s.push(normalizeNoticePart({text:String(e),fg:t.fg??n.fg,bg:t.bg??n.bg},n)),s.filter(e=>e.text)},renderSpanStyle=e=>["white-space:pre-wrap",e.fg?`color:${escapeHtml$1(e.fg)}`:"",e.bg?`background-color:${escapeHtml$1(e.bg)}`:""].filter(Boolean).join(";"),renderNoticeHtml=(e,t={},a=[])=>`<span class="nexsys4-notice" style="white-space:pre-wrap;">${G}${t.html?String(t.html):(a.length?a:buildNoticeParts(e,t)).map(e=>`<span style="${renderSpanStyle(e)}">${escapeHtml$1(e.text)}</span>`).join("")}</span>`,createNoticeTransport=({client:e,emit:t,pushTrace:a})=>({notice(n,s={}){const i=String(n),o=buildNoticeParts(i,s);e.add_html_line(renderNoticeHtml(i,s,o)),a("notice",{message:i,context:s,parts:o}),t("NoticeEvent",{message:i,context:s,parts:o})}}),createTriggerSessionState=()=>({active:!1,hasLines:!1,lastReason:"idle",lastOpenedAt:0,lastClosedAt:0}),createAdapterDebugState=({debug:e=!1,traceLimit:t=200,now:a=()=>Date.now(),logLabel:n="nexSys4.adapter"}={})=>{let s=Boolean(e);const i=Math.max(1,Number(t||200)),o=[],l=new Map,c={status:createTriggerSessionState(),affPriorities:createTriggerSessionState(),defPriorities:createTriggerSessionState(),curingSets:createTriggerSessionState()},pushTrace=(e,t={})=>{if(!s)return null;const l={at:a(),type:e,detail:t};return o.push(l),o.length>i&&o.splice(0,o.length-i),console.log(`[${n}] ${e}`,t),l};return{pushTrace,triggerSessions:c,registerTriggerGroupActivity:(e,t="triggerCount")=>{const a=String(e||"").trim();if(!a)return null;const n=l.get(a)||{name:a,triggerCount:0,hookCount:0};return n[t]=Number(n[t]||0)+1,l.set(a,n),n},setDebugEnabled(e){s=Boolean(e),pushTrace("debug",{enabled:s})},isDebugEnabled:()=>s,snapshotTriggerGroups:()=>[...l.values()].map(e=>({...e})).sort((e,t)=>e.name.localeCompare(t.name)),snapshotTriggerSessions:()=>Object.entries(c).reduce((e,[t,a])=>(e[t]={...a},e),{}),snapshotRecentTrace:()=>[...o]}},createAdapterEventHub=({pushTrace:e=()=>{},errorLabel:t="nexSys4 adapter listener failed"}={})=>{const a=new Map,normalizeEventName=e=>String(e||"").trim(),on=(t,n)=>{const s=normalizeEventName(t);if(!s||"function"!=typeof n)return()=>{};let i=a.get(s);return i||(i=new Set,a.set(s,i)),i.add(n),e("on",{event:s,listenerCount:i.size}),()=>off(s,n)},off=(t,n)=>{const s=normalizeEventName(t),i=a.get(s);if(!s||!i)return!1;const o=i.delete(n);return i.size||a.delete(s),e("off",{event:s,removed:o,listenerCount:i.size}),o};return{emit:(n,s)=>{const i=normalizeEventName(n),o=a.get(i);if(!i||!o?.size)return i&&e("emit",{event:i,listenerCount:0,payload:s}),0;const l=[...o];return e("emit",{event:i,listenerCount:l.length,payload:s}),l.forEach(e=>{if(a.get(i)?.has(e))try{e(s)}catch(n){console.error(t,{event:i,error:n})}}),l.length},on,off,clear(){a.clear()}}},createAdapterLifecycle=({eventBus:e,triggerApi:t,pushTrace:a=()=>{},clearListeners:n=()=>{}}={})=>{const s=[],i=[],o=[],destroy=()=>{const l=o.length,c=s.length,u=[...i];o.splice(0).forEach(e=>{try{e()}catch(t){console.error("nexSys4 adapter cleanup failed",{error:t})}}),e?.removeListener&&s.forEach(({eventName:t,id:a})=>{e.removeListener(t,a)}),t?.triggers?.remove&&i.forEach(e=>t.triggers.remove(e)),a("destroy",{eventRegistrations:c,triggerIds:u,internalCleanupCount:l}),n()};return{eventRegistrations:s,triggerIds:i,registerCleanup:e=>"function"==typeof e?(o.push(e),e):()=>{},destroy}},summarizePromptContext=(e={})=>({source:e.source||"",hasLine:Boolean(e.line)}),createAdapterPromptSink=({emit:e,pushTrace:t})=>{const renderPrompt=(a,n={})=>{const s=String(a??""),i=n?.line;return i?.parsed_line&&"object"==typeof i.parsed_line&&(i.parsed_line.formatted=()=>s),e("PromptRendered",{prompt:s,context:n}),t("renderPrompt",{promptLength:s.length,context:summarizePromptContext(n)}),s};return{renderPrompt}},normalizeOutboundCommands=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[],normalizeGmcpRequests=e=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],createAdapterTransport=({client:e,emit:t,pushTrace:a,resolveSeparator:n}={})=>({send(s=[],i={}){const o=normalizeOutboundCommands(s);if(!o.length)return[];const l=o.join(n()||"|");return e?.send_commands&&e.send_commands(l,!1),a("send",{commands:o,payload:l,context:i}),t("OutboundCommandsEvent",{commands:o,payload:l,context:i}),o},sendGmcp(n=[],s={}){const i="function"==typeof e?.datahandler?e.datahandler():null;if("function"!=typeof i?.send_GMCP)return[];const o=normalizeGmcpRequests(n);if(!o.length)return[];const l=[];return o.forEach(e=>{try{i.send_GMCP(e),l.push(e)}catch(t){console.error("nexSys4 GMCP request failed",{request:e,error:t})}}),l.length&&(a("sendGmcp",{requests:l,context:s}),t("AdapterGmcpRequest",{requests:l,context:s})),l},getVariable(t){if(!e?.variables)return;const a=e.variables();return"function"==typeof a?.get?a.get(t):a?.vars?.[t]},setVariable(t,a){if(!e?.variables)return a;const n=e.variables();return"function"==typeof n?.set?(n.set(t,a),a):n?.vars?(n.vars[t]=a,a):a}}),createNexusAdapter=(e={})=>{const t=e.nexusclient||globalThis.nexusclient,monotonicNowMs=()=>globalThis.performance?.now?globalThis.performance.now():Date.now();let a=null;const resolveSeparator=()=>a||normalizeCommandSeparator(e.separator??t?.settings?.command_separator??t?.settings?.commandSeparator),n=e.eventStream||globalThis.eventStream,s=e.nexAction||globalThis.nexAction,getGMCP=()=>e.GMCP||globalThis.GMCP,{pushTrace:i,triggerSessions:o,registerTriggerGroupActivity:l,setDebugEnabled:c,isDebugEnabled:u,snapshotTriggerGroups:d,snapshotTriggerSessions:m,snapshotRecentTrace:p}=createAdapterDebugState({debug:e.debug,traceLimit:e.traceLimit}),{emit:g,on:h,off:b,clear:y}=createAdapterEventHub({pushTrace:i}),{eventRegistrations:v,triggerIds:S,registerCleanup:x,destroy:C}=createAdapterLifecycle({eventBus:n,triggerApi:s,pushTrace:i,clearListeners:y}),{send:k,sendGmcp:A,getVariable:E,setVariable:_}=createAdapterTransport({client:t,emit:g,pushTrace:i,resolveSeparator}),normalizeEventName=e=>String(e||"").trim(),{notice:w}=createNoticeTransport({client:t,emit:g,pushTrace:i}),{renderPrompt:T}=createAdapterPromptSink({emit:g,pushTrace:i}),emitLocal=(e,t)=>{const a=normalizeEventName(e);return!!a&&(g(a,t),i("emit:local",{event:a,payload:t}),!0)},raiseToEventStream=(e,t)=>{const a=normalizeEventName(e);return!(!a||!n?.raiseEvent)&&(n.raiseEvent(a,t),i("emit:eventstream",{topic:a,payload:t}),!0)};s?.triggers?.remove&&s.triggers.remove(["nexsys4"]),n?.removeByTag&&n.removeByTag(["nexsys4"]),registerEventStreamBindings({eventBus:n,emit:g,pushTrace:i,eventRegistrations:v}),registerTextTriggers({triggerApi:s,client:t,emit:g,onLocalEvent:h,pushTrace:i,triggerIds:S,registerCleanup:x,registerTriggerGroupActivity:l,triggerSessions:o}),!1!==e.startupGag&&registerStartupGag({onLocalEvent:h,client:t,notice:w,isDebugEnabled:u});const addOnceTrigger=({id:e,regex:a,action:n})=>s?.triggers?.add?(s.triggers.add({id:e,regex:a,enabled:!0,once:!0,tags:["nexsys4","probe",`probe:${e}`],action:e=>n({args:e,client:t,emit:g,pushTrace:i})}),S.push(e),i("probe-trigger:add",{id:e,regex:a instanceof RegExp?a.source:String(a)}),()=>{s?.triggers?.remove&&s.triggers.remove(e),i("probe-trigger:remove",{id:e})}):()=>{};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send:k,sendGmcp:A,on:h,off:b,notice:w,getCommandSeparator:()=>resolveSeparator(),setSeparator(e){a=normalizeCommandSeparator(e)||null},addOnceTrigger,now:monotonicNowMs,setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),renderPrompt:T,getVariable:E,setVariable:_,emitLocal,raiseToEventStream,destroy:C,getGMCP,setDebugEnabled:c,isDebugEnabled:u,debugInfo:()=>({debugEnabled:u(),startupGagEnabled:!1!==e.startupGag,separator:resolveSeparator(),eventRegistrations:v.map(e=>({...e})),triggerIds:[...S],triggerGroups:d(),triggerSessions:m(),hasEventStream:Boolean(n?.registerEvent),hasNexActionTriggers:Boolean(s?.triggers?.add),recentTrace:p()})}},createMockAdapter=(e={})=>{const t=new Map,a=new Map,n=new Map;let s=normalizeCommandSeparator(e.separator??"|");const i=[],o=[],l=[],c=[],u=[],d=[];let m=Boolean(e.debug);const p=Math.max(1,Number(e.traceLimit||200)),g=[],pushTrace=(e,t={})=>{const a={at:nowMs(),type:e,detail:t};g.push(a),g.length>p&&g.splice(0,g.length-p),m&&console.log(`[nexSys4.mockAdapter] ${e}`,t)},normalizeEventName=e=>String(e||"").trim(),emit=(e,a)=>{const n=normalizeEventName(e),s=t.get(n);if(!n||!s?.size)return n&&pushTrace("emit",{event:n,listenerCount:0,payload:a}),0;const i=[...s];return pushTrace("emit",{event:n,listenerCount:i.length,payload:a}),i.forEach(e=>{if(t.get(n)?.has(e))try{e(a)}catch(s){console.error("nexSys4 mock adapter listener failed",{event:n,error:s})}}),i.length},on=(e,a)=>{const n=normalizeEventName(e);if(!n||"function"!=typeof a)return()=>{};let s=t.get(n);return s||(s=new Set,t.set(n,s)),s.add(a),pushTrace("on",{event:n,listenerCount:s.size}),()=>off(n,a)},off=(e,a)=>{const n=normalizeEventName(e),s=t.get(n);if(!n||!s)return!1;const i=s.delete(a);return s.size||t.delete(n),pushTrace("off",{event:n,removed:i,listenerCount:s.size}),i},removeOnceTrigger=e=>{const t=String(e||"").trim();if(!t)return!1;const a=n.delete(t);return pushTrace("probe-trigger:remove",{id:t,removed:a}),a},addOnceTrigger=({id:e,regex:t,action:a}={})=>{const s=String(e||"").trim();return s&&t instanceof RegExp&&"function"==typeof a?(n.set(s,{regex:t,action:a}),pushTrace("probe-trigger:add",{id:s,regex:t.source}),()=>removeOnceTrigger(s)):()=>{}},fireText=(e,t={})=>{const a=String(e??"");pushTrace("fireText",{text:a,detail:t,triggerCount:n.size});const s=[];return[...n.entries()].forEach(([e,i])=>{i.regex.lastIndex=0;const o=i.regex.exec(a);o&&(n.delete(e),s.push(e),i.action({args:{raw:a,line:a,text:a,groups:o.groups||{},matches:[...o]},detail:t}))}),s};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send(e=[],t={}){const a=Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[];return a.length?(i.push({commands:a,context:t}),pushTrace("send",{commands:a,context:t}),emit("OutboundCommandsEvent",{commands:a,context:t}),a):[]},sendGmcp(e=[],t={}){const a=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)];return a.length?(u.push(...a),pushTrace("sendGmcp",{requests:a,context:t}),emit("AdapterGmcpRequest",{requests:a,context:t}),a):[]},on,off,emit,notice(e,t={}){o.push({message:String(e),context:t}),pushTrace("notice",{message:String(e),context:t})},getCommandSeparator:()=>s,setSeparator:e=>(s=normalizeCommandSeparator(e),pushTrace("setSeparator",{separator:s}),s),addOnceTrigger,fireText,now:()=>"function"==typeof e.now?e.now():nowMs(),setTimeout:(e,t)=>setTimeout(e,t),clearTimeout(e){clearTimeout(e)},renderPrompt(e,t={}){const a=String(e??""),n={prompt:a,context:t};return d.push(n),pushTrace("renderPrompt",{promptLength:a.length,source:t.source||"",hasLine:Boolean(t.line)}),emit("PromptRendered",n),a},getVariable:e=>a.get(e),setVariable:(e,t)=>(a.set(e,t),t),emitLocal(e,t){const a=String(e||"").trim();if(!a)return!1;const n={event:a,payload:t};return l.push(n),pushTrace("emit:local",n),emit(a,t),!0},raiseToEventStream(e,t){const a=String(e||"").trim();if(!a)return!1;const n={topic:a,payload:t};return c.push(n),pushTrace("emit:eventstream",n),!0},destroy(){t.clear(),n.clear()},getSentBatches:()=>i,getNotices:()=>o,getLocalEvents:()=>l,getEventStreamEvents:()=>c,getGmcpRequests:()=>u,getRenderedPrompts:()=>d,getGMCP:()=>e.gmcp||{},setDebugEnabled(e){m=Boolean(e),pushTrace("debug",{enabled:m})},isDebugEnabled:()=>m,debugInfo:()=>({debugEnabled:m,separator:s,recentTrace:[...g],sentBatchCount:i.length,gmcpRequests:[...u],renderedPromptCount:d.length})}},defineStringPrototypeHelper=(e,t)=>"function"!=typeof String.prototype[e]&&(Object.defineProperty(String.prototype,e,{configurable:!0,writable:!0,value:t}),!0),installStringPrototypeHelpers=()=>({toProperCase:defineStringPrototypeHelper("toProperCase",function toProperCase(){return this.replace(/\w\S*/g,function formatWord(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}),capitalize:defineStringPrototypeHelper("capitalize",function capitalize(){return this.charAt(0).toUpperCase()+this.slice(1)})}),V={list:["accentato","addiction","aeon","agoraphobia","airfisted","amnesia","anorexia","asphyxiating","asthma","betrayal","blackout","blindness","blistered","bloodfire","bound","breathless","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","bruisedribs","burning","cadmuscurse","calcifiedskull","calcifiedtorso","claustrophobia","clumsiness","coldfate","concussion","condemned","conflagration","confusion","constricted","convergence","corruption","crackedribs","cremated","crescendo","crushedthroat","daeggerimpale","damagedhead","damagedleftarm","damagedleftleg","damagedrightarm","damagedrightleg","darkshade","dazed","dazzled","deadening","deafness","death","deathsickness","deepsleep","degenerate","dehydrated","dementia","demonstain","depression","deteriorate","diminished","disloyalty","disrupted","dissonance","dizziness","earworm","empoweredmannaz","empoweredloshre","enlightenment","enmesh","ensorcelled","entangled","epilepsy","fear","flamefisted","flushings","fratricide","frostbite","frozen","fulminated","generosity","grievouswounds","guilt","hamstrung","haemophilia","hallucinations","hatred","healthleech","heartseed","hecatecurse","hellsight","hindered","homunculusmercury","horror","hypersomnia","hypochondria","hypothermia","icebound","icefisted","impaled","impatience","indifference","inquisition","insomnia","internalbleeding","isolation","itching","justice","kaisurge","kkractlebrand","laceratedthroat","lapsingconsciousness","latched","lethargy","lightbind","loneliness","lovers","lovestruck","lullaby","manaleech","masochism","mildtrauma","mangledleftarm","mangledleftleg","mangledrightarm","mangledrightleg","mangledhead","mindclamp","mindravaged","muddled","mycalium","nausea","numbedleftarm","numbedrightarm","pacified","palpatarfeed","paralysis","paranoia","parasite","peace","penitence","petrified","phlogisticated","pinshot","pressure","prone","pyramides","pyre","rebbies","recklessness","reeling","retribution","revealed","sandfever","scalded","scrambledbrains","scytherus","selarnia","sensitivity","serioustrauma","shadowmadness","shivering","shyness","silenced","silver","skullfractures","slashedthroat","sleeping","slickness","slimeobscure","snared","solarburn","speechless","spiritburn","stridulating","stun","stupidity","stuttering","succumbed","temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine","tenderskin","tension","timeflux","timeloop","tonguetied","torntendons","transfixation","trueblind","unweavingbody","unweavingmind","unweavingspirit","vertigo","vinewreathed","vitiated","vitrified","voidfisted","voyria","waterbonds","weakenedmind","weariness","webbed","woeconstrained","whisperingmadness","wristfractures","unconsciousness","harmonic","bop","spiritwrack","bedevil","loki","moon","evileye","dragoncurse","swiftcurse"],prios:{aeon:4,concussion:4,crushedthroat:4,paralysis:4,peace:4,sleeping:5,grievouswounds:5,latched:5,dazzled:5,unweavingbody:5,unweavingmind:5,unweavingspirit:5,weariness:5,prone:5,timeloop:5,fulminated:5,spiritburn:6,heartseed:6,guilt:6,tenderskin:6,pyramides:6,parasite:6,hypochondria:6,pacified:6,depression:6,confusion:6,mindravaged:6,retribution:6,shadowmadness:6,whisperingmadness:6,hellsight:6,anorexia:7,scalded:7,mycalium:7,frostbite:7,flushings:7,rebbies:7,sandfever:7,asthma:7,healthleech:7,impatience:8,itching:8,fratricide:8,scytherus:8,clumsiness:8,kkractlebrand:8,damagedleftleg:8,darkshade:8,slickness:8,recklessness:8,dementia:8,icebound:8,bound:9,daeggerimpale:9,entangled:9,sensitivity:9,transfixation:9,webbed:9,tonguetied:9,haemophilia:9,lethargy:9,manaleech:9,dissonance:9,pyre:9,skullfractures:10,damagedrightleg:10,hypersomnia:10,earworm:10,crescendo:10,diminished:10,torntendons:11,brokenleftleg:11,brokenrightleg:11,hallucinations:11,calcifiedskull:12,calcifiedtorso:12,mangledleftleg:12,mangledrightleg:12,disrupted:12,mangledhead:12,voyria:12,crackedribs:12,hypothermia:13,impaled:13,brokenleftarm:13,brokenrightarm:13,indifference:13,addiction:13,nausea:13,deadening:13,frozen:13,shivering:13,mildtrauma:13,internalbleeding:13,stupidity:14,wristfractures:14,damagedleftarm:14,disloyalty:14,tension:15,damagedhead:15,dazed:15,burning:15,lovers:16,pressure:16,damagedrightarm:16,temperedcholeric:16,temperedmelancholic:16,temperedphlegmatic:16,temperedsanguine:16,mangledleftarm:17,mangledrightarm:17,agoraphobia:18,claustrophobia:18,generosity:18,justice:18,loneliness:18,vertigo:18,paranoia:19,serioustrauma:20,epilepsy:20,laceratedthroat:22,slashedthroat:22,stuttering:22,selarnia:23,fear:23,masochism:23,dizziness:25,shyness:25,stridulating:25,horror:26,bleeding:30,amnesia:30,blackout:30,insomnia:30,deafness:30,blindness:30,harmonic:100,bop:100,spiritwrack:100,bedevil:100,loki:100,moon:100,evileye:100,dragoncurse:100,swiftcurse:100},types:{countable:{pressure:{min:0,max:5},crescendo:{min:0,max:5},unweavingbody:{min:0,max:5},unweavingspirit:{min:0,max:5},unweavingmind:{min:0,max:5},burning:{min:0,max:5},horror:{min:0,max:5},pyre:{min:0,max:3},temperedcholeric:{min:0,max:8},temperedmelancholic:{min:0,max:8},temperedphlegmatic:{min:0,max:8},temperedsanguine:{min:0,max:8},torntendons:{min:0,max:6},crackedribs:{min:0,max:6},skullfractures:{min:0,max:6},wristfractures:{min:0,max:6}},nonServerside:{accentato:0,airfisted:0,asphyxiating:0,blistered:0,bloodfire:0,bruisedribs:0,cadmuscurse:0,coldfate:0,condemned:0,conflagration:0,constricted:0,convergence:0,corruption:0,cremated:0,death:0,deathsickness:0,deepsleep:0,degenerate:0,dehydrated:0,demonstain:0,deteriorate:0,empoweredloshre:0,empoweredmannaz:0,enlightenment:0,enmesh:0,ensorcelled:0,flamefisted:0,hamstrung:0,hatred:0,hecatecurse:0,hindered:0,homunculusmercury:0,icefisted:0,inquisition:0,isolation:0,kaisurge:0,lightbind:0,lullaby:0,mindclamp:0,muddled:0,numbedleftarm:0,numbedrightarm:0,palpatarfeed:0,petrified:0,phlogisticated:0,pinshot:0,revealed:0,scrambledbrains:0,silenced:0,silver:0,slimeobscure:0,solarburn:0,stun:0,timeflux:0,trueblind:0,vinewreathed:0,vitiated:0,vitrified:0,voidfisted:0,waterbonds:0,weakenedmind:0,unconsciousness:0},timed:{accentato:{length:20},aeon:{length:16},airfisted:{length:16},betrayal:{length:15},blackout:{length:20},blistered:{length:20},breathless:{length:3},bruisedribs:{length:30},cadmuscurse:{length:20},condemned:{length:20},constricted:{length:30},corruption:{length:45},dazzled:{length:60},dehydrated:{length:60},demonstain:{length:120},empoweredloshre:{length:12},empoweredmannaz:{length:20},enmesh:{length:5},ensorcelled:{length:20},flamefisted:{length:30},hamstrung:{length:9},heartseed:{length:11},hecatecurse:{length:16},icefisted:{length:30},inquisition:{length:30},lightbind:{length:22},lovestruck:{length:5},muddled:{length:12},numbedleftarm:{length:7.5},numbedrightarm:{length:7.5},palpatarfeed:{length:20},phlogisticated:{length:45},pinshot:{length:18},reeling:{length:20},revealed:{length:60},scalded:{length:20},scrambledbrains:{length:60},silver:{length:180},slimeobscure:{length:60},solarburn:{length:5},snared:{length:20},speechless:{length:300},stridulating:{length:15},stun:{length:3},succumbed:{length:30},timeflux:{length:60},trueblind:{length:6},unconsciousness:{length:10},vinewreathed:{length:30},vitrified:{length:45},voidfisted:{length:5},waterbonds:{length:30},weakenedmind:{length:60},woeconstrained:{length:30}},unknown:{moon:["stupidity","confusion","epilepsy","masochism","hypersomnia","hallucinations"],loki:["stupidity","clumsiness","recklessness","asthma","shyness","darkshade","paralysis","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","sensitivity","disloyalty","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","selarnia","slickness","scytherus"],evileye:["confusion","dizziness"],dragoncurse:["recklessness","clumsiness","epilepsy","dizziness","pacified","nausea","addiction","anorexia","generosity","disloyalty","sensitivity","vertigo","paranoia","stupidity","hypochondria","lethargy","shivering","frozen","impatience","paralysis","asthma","agoraphobia"],harmonic:["stupidity","recklessness"],bop:["stupidity","recklessness"],swiftcurse:["stupidity","clumsiness","recklessness","asthma","paralysis","deafness","sensitivity","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","impatience","claustrophobia","vertigo","agoraphobia","masochism","epilepsy","manaleech","pacified","dementia","healthleech"],bedevil:["stupidity","recklessness"]},uncurable:{bloodfire:!0,cadmuscurse:!0,conflagration:!0,death:!0,deathsickness:!0,deepsleep:!0,enlightenment:!0,isolation:!0,lullaby:!0,mindclamp:!0,palpatarfeed:!0,penitence:!0,scalded:!0,stun:!0,weakenedmind:!0}}},buildAffIndex=e=>{const t=new Set(e.list),a={};for(const[n,s]of Object.entries(e.prios))a[s]||(a[s]=[]),a[s].push(n);return Object.freeze({affSet:t,prioArrays:Object.freeze(a)})},Y=(buildAffIndex(V),{herb:{length:1.6,aff_modifiers:{homunculusmercury:{multiplier:1,offset:.5}}},focus:{length:2.5,aff_modifiers:{weakenedmind:{multiplier:2,offset:.5},whisperingmadness:{multiplier:1.6,offset:0}}},sip:{length:4.5,aff_modifiers:{skullfractures:{multiplier:1,offset:1}}},moss:{length:6},tree:{length:15,aff_modifiers:{slimeobscure:{multiplier:1,offset:10}}},equilibrium:{length:20,aff_modifiers:{confusion:{multiplier:1.5,offset:0}}},balance:{length:20,aff_modifiers:{lethargy:{multiplier:1.25,offset:0}}},salve:{length:4,aff_modifiers:{timeflux:{multiplier:1.5,offset:0}}},immunity:{length:10},rebounding:{length:9},smoke:{length:1.5},dragonbreath:{length:1.5},deafness:{length:3},deaf:{length:6},blind:{length:6},speed:{length:6},wake:{length:20},sileris:{length:8},free:{length:0},voice:{length:2.5},tremolo:{length:6},homunculus:{length:12},fitness:{length:10},bloodboil:{length:10},dragonheal:{length:20},rage:{length:10},salt:{length:10},shrugging:{length:10},alleviate:{length:10},slough:{length:10},fool:{length:40},writhe:{length:6},impalewrithe:{length:4},entity:{length:4},word:{length:5},anathema:{length:5},systemOutput:{length:1}}),Q=["itching","paralysis","fear","brokenrightarm","brokenleftarm","brokenrightleg","brokenleftleg","lapsingconsciousness","aeon","lovers","confusion","epilepsy","pacified","blackout","dazed","justice","slashedthroat","hellsight","peace","dazzled","shyness","dizziness","slickness","asthma","nausea","selarnia","weariness","scytherus","fratricide","haemophilia","clumsiness","hallucinations","healthleech","dementia","recklessness","anorexia","masochism","impatience","stupidity","generosity","addiction","deadening","manaleech","stuttering","paranoia","agoraphobia","loneliness","claustrophobia","vertigo","hypersomnia","shivering","frozen","burning","sensitivity","hypochondria","lethargy","disloyalty","darkshade","voyria","dissonance","phlogisticated","silver","spiritburn","tenderskin","guilt","skullfractures","wristfractures","crackedribs","torntendons","indifference","retribution","shadowmadness","parasite","depression","timeloop","crushedthroat","tension","unweavingspirit","grievouswounds","pyramides","flushings","rebbies","mycalium","sandfever","crescendo","fulminated","frostbite"],W={ferrum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ferrum",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},magnesium:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat magnesium",order:["paralysis","slickness","pyramides"],prio:0},aurum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat aurum",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},calamine:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat calamine",order:["deafness"],delay:2.5,prio:0},argentum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat argentum",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},cuprum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat cuprum",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},antimony:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat antimony",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},arsenic:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat arsenic",prio:0},stannum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat stannum",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},plumbum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],command:"eat plumbum",prio:0},calcite:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat calcite",prio:0},ginseng:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginseng",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},bloodroot:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bloodroot",order:["paralysis","slickness","pyramides"],prio:0},kelp:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat kelp",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},hawthorn:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat hawthorn",order:["deafness"],delay:2.5,prio:0},lobelia:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat lobelia",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},bellwort:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bellwort",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},ginger:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginger",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},bayberry:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bayberry",prio:0},ash:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ash",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},goldenseal:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat goldenseal",order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],prio:0},pear:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat pear",prio:0},smoke:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","disloyalty","hellsight","manaleech","slickness","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},cinnabar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},malachite:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke malachite",prio:0},realgar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke realgar",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},elm:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke elm",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},skullcap:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke skullcap",prio:0},valerian:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke valerian",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},caloric:{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply caloric",order:["frozen","shivering","frostbite"],prio:0},"epidermal to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to body",order:["anorexia","itching"],prio:0},"epidermal to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to head",order:["blindness","scalded","deafness","stuttering"],prio:0},"epidermal to ears":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to ears",order:["deafness"],prio:0},"mending to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to head",order:["crushedthroat","dazzled"],prio:0},"mending to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to arms",order:["brokenleftarm","brokenrightarm"],prio:0},"mending to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to legs",order:["brokenleftleg","brokenrightleg"],prio:0},"mending to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to torso",order:["burning"],prio:0},"mending to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to body",order:["selarnia"],prio:0},"restoration to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to head",order:["mangledhead","damagedhead","calcifiedskull","concussion","tonguetied","slashedthroat","laceratedthroat"],delay:4,prio:0},"restoration to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to torso",order:["hypothermia","heartseed","serioustrauma","mildtrauma","calcifiedtorso","internalbleeding"],delay:4,prio:0},"restoration to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to arms",order:["mangledleftarm","mangledrightarm","damagedleftarm","damagedrightarm"],delay:4,prio:0},"restoration to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to legs",order:["mangledleftleg","mangledrightleg","damagedleftleg","damagedrightleg"],delay:4,prio:0},focus:{bals_req:["focus"],bals_used:["focus"],blocks:["death","impatience","sleeping"],command:"focus",order:["stupidity","epilepsy","dizziness","shyness","claustrophobia","paranoia","confusion","hallucinations","dementia","pacified","peace","lovers","generosity","masochism","loneliness","vertigo","recklessness","agoraphobia","anorexia","stuttering"],prio:0},"health to head":{bals_req:["sip"],bals_used:["sip"],command:"apply health to head",order:["skullfractures"],prio:0},"health to torso":{bals_req:["sip"],bals_used:["sip"],command:"apply health to torso",order:["crackedribs","grievouswounds"],prio:0},"health to arms":{bals_req:["sip"],bals_used:["sip"],command:"apply health to arms",order:["wristfractures"],prio:0},"health to legs":{bals_req:["sip"],bals_used:["sip"],command:"apply health to legs",order:["torntendons","latched","kkractlebrand"],prio:0},concentrate:{blocks:["death","sleeping","confusion"],command:"concentrate",order:["disrupted"],prio:0},immunity:{bals_req:["immunity"],bals_used:["immunity"],blocks:["death","sleeping","anorexia"],command:"sip immunity",order:["voyria"],prio:0},stand:{bals_req:["balance","equilibrium"],blocks:["death","sleeping","paralysis","brokenrightleg","brokenleftleg","damagedleftleg","damagedrightleg","mangledrightleg","mangledleftleg","entangled","transfixation","impaled","webbed","bound"],command:"stand",order:["prone"],prio:0},tree:{bals_used:["tree"],bals_req:["tree"],blocks:["death","sleeping","paralysis",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],command:"touch tree",order:Q,prio:0},health:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip health",prio:0},mana:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip mana",prio:0},potash:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat potash",prio:0},moss:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat moss",prio:0},fitness:{bals_req:["equilibrium","balance","fitness"],bals_used:["balance","fitness"],blocks:["death","weariness","sleeping"],skills:["Monk","Shikudo","Runewarden"],command:"fitness",order:["asthma"],prio:0},bloodboil:{bals_req:["equilibrium","balance","bloodboil"],bals_used:["equilibrium","bloodboil"],blocks:["death","haemophilia","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Magi"],command:"cast bloodboil",order:Q,prio:0},restore:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"restore",order:["brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","skullfractures","torntendons","wristfractures","crackedribs"],prio:0},dragonflex:{bals_req:["balance"],bals_used:["balance"],command:"dragonflex",skills:["Dragon"],order:["webbed","entangled"],prio:0},dragonheal:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"dragonheal",skills:["Dragon"],blocks:["death","sleeping",["recklessness","weariness"]],order:Q,prio:0},dwinnu:{bals_req:["voice"],bals_used:["voice"],command:"chant dwinnu",skills:["Bard"],order:["webbed","entangled"],prio:0},rage:{bals_req:["rage"],bals_used:["rage"],command:"rage",skills:["Runewarden"],order:["pacified","peace","lovers","generosity"],prio:95},"touch soul":{command:"touch soul",blocks:["death"],order:["amnesia"],prio:101},salt:{bals_req:["equilibrium","salt"],bals_used:["salt","equilibrium"],blocks:["death","stupidity","sleeping"],skills:["Alchemist"],command:"educe salt",order:Q,prio:0},siphon:{bals_req:["angel"],bals_used:["angel"],blocks:["death","sleeping"],skills:["Apostate","Priest"],command:"educe salt",order:Q,prio:0},shrugging:{bals_req:["equilibrium","balance","shrugging"],bals_used:["shrugging"],blocks:["death","weariness","sleeping"],skills:["Serpent"],command:"shrugging",order:Q,prio:0},slough:{bals_req:["equilibrium","balance","slough"],bals_used:["slough","balance"],blocks:["death","weariness","sleeping"],skills:["Fire Elemental Lord"],command:"slough impurities",order:Q,prio:0},fool:{bals_req:["equilibrium","balance","fool"],bals_used:["fool","balance"],blocks:["death","prone","paralysis","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Occultist"],command:"fling fool at me",order:Q,prio:0},alleviate:{bals_req:["equilibrium","balance","alleviate"],bals_used:["alleviate","balance"],blocks:["death","paralysis","sleeping"],skills:["Blademaster"],command:"alleviate",order:Q,prio:0}},normalizeCureCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],K=Object.freeze(Object.fromEntries(Object.entries(W).map(([e,t])=>[e,Object.freeze({...t,command:Object.freeze(normalizeCureCommand(t.command))})]))),X=Object.freeze(Object.entries(K).reduce((e,[t,a])=>((Array.isArray(a.order)?a.order:[]).forEach(a=>{e[a]||(e[a]=[]),e[a].push(t)}),e),{})),J={acrobatics:{command:"acrobatics on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},airpocket:{command:["outr calcite","eat calcite"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},alertness:{static:!0,command:"alertness on",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},antiforce:{command:"intone gaiartha",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],serverside:!0},aria:{command:"sing aria at me",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"]},arctar:{command:"command orb",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Occultist"],serverside:!1,preempt:!0},arrowcatching:{command:"arrowcatch on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},astronomy:{static:!0,command:"astronomy empower me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},balancing:{command:"balancing on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},belltattoo:{command:"touch bell",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0,preempt:!0},blindness:{command:["outr arsenic","eat arsenic"],bals_req:["herb"],bals_used:["herb"],blocks:["death","sleeping","anorexia"],serverside:!0},blocking:{command:"block d",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","prone"],serverside:!1,preempt:!0},bloodshield:{command:"activate bloodshield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!0,preempt:!0},bodyaugment:{command:"intone mainaas",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},bodyblock:{static:!0,command:"bdb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},boostedregeneration:{command:"boost regeneration",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},bulk:{command:"mutate bulk",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},cloak:{command:"touch cloak",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},chargeshield:{static:!0,command:"cast chargeshield at me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},coldresist:{command:"activate cold resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},compoundmask:{command:["wear mask","secure mask"],bals_req:["free"],bals_used:["free"],skills:["Alchemist"],serverside:!1},consciousness:{command:"consciousness on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},constitution:{static:!0,command:"constitution",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},curseward:{static:!0,command:"curseward",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],serverside:!0},deafness:{command:["outr calamine","eat calamine"],bals_req:["herb","deafness"],bals_used:["herb","deafness"],blocks:["death","sleeping","anorexia"],serverside:!0},deathsight:{static:!0,command:"deathsight",bals_req:["balance","equilibrium"],bals_used:["free"],serverside:!0,preempt:!0},deflect:{command:"deflect",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","prone","sleeping"],skills:["Runewarden","Paladin","Infernal","Unnamable"],serverside:!0,preempt:!0},density:{command:"wear shackle",bals_req:["salve"],bals_used:["salve"],blocks:["death","slickness","sleeping"],serverside:!0},devilmark:{static:!0,command:"devilmark",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},diamondskin:{static:!0,command:"cast diamondskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},distortedaura:{static:!0,command:"distortaura",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},dragonarmour:{static:!0,command:"dragonarmour",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Dragon"],serverside:!0},dragonbreath:{command:"summon ice",bals_req:["balance","equilibrium","dragonbreath"],bals_used:["free","dragonbreath"],blocks:["death","prone","sleeping"],skills:["Dragon"],preempt:!0,serverside:!0},drunkensailor:{command:"drunkensailor",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},durability:{command:"intone tsuura",bals_req:["balance","equilibrium"],skills:["Depthswalker"],blocks:["death","sleeping","prone"],bals_used:["word"],serverside:!0},electricresist:{command:"activate electric resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},endure:{command:"endure",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["free"],serverside:!0,preempt:!0},enhancedform:{command:["amalgamate enhancement","imbibe enhancement"],bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!1,preempt:!0},evadeblock:{command:"evb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},eyes:{command:"mutate eyes",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},fireresist:{command:"activate fire resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},fangbarrier:{command:"apply quicksilver",bals_req:["salve","sileris"],bals_used:["salve","sileris"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0},fireshroud:{command:"ignite shroud",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0,skills:["Fire Elemental Lord"]},fury:{command:"fury on",bals_req:["balance"],bals_used:["equilibrium"],skills:["Runewarden","Unnamable"],serverside:!0},flying:{command:"fly",bals_req:["balance, equilibrium"],bals_used:["balance"],blocks:["prone","death","sleeping","entangled","transfixation","impaled","webbed","bound"],serverside:!1,clientOnly:!0},ghost:{static:!0,command:"conjure ghost",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},gripping:{command:"grip",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Unnamable","Shikudo","Bard","Blademaster","Jester","Shaman"],serverside:!0,preempt:!0},groundwatch:{command:"groundwatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},"guarding right leg":{command:"guard right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left leg":{command:"guard left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding right leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding right arm":{command:"guard right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right leg","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left arm":{command:"guard left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding right leg","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding head":{command:"guard head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding right leg","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding torso":{command:"guard torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding right leg","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},heartsfury:{command:"heartsfury",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},heldbreath:{command:"hold breath",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","asthma","sleeping"],preempt:!0,serverside:!0},hiding:{command:"hide",bals_req:["equilibrium","balance"],bals_used:["balance"],skills:["Serpent"],serverside:!0},hypersight:{command:"hypersight on",bals_req:["balance"],bals_used:["equilibrium"],serverside:!0},immunity:{command:"immunity",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},insomnia:{command:"insomnia",bals_req:["free"],bals_used:["free"],blocks:["death","hypersomnia","sleeping"],serverside:!0,preempt:!0},insulation:{command:"apply caloric",bals_req:["salve"],bals_used:["salve"],blocks:["death","sleeping","slickness","hypothermia"],serverside:!0},insufflate:{command:["get phial from pack","amalgamate insufflate potency 4 stability 1","imbibe insufflate"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},ironform:{static:!0,command:["get phial from pack","amalgamate petrifying potency 4 stability 1","imbibe petrifying"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},joints:{command:"mutate joints",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},kaiboost:{command:"kai boost",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],preempt:!0,serverside:!0},kaitrance:{command:"kai trance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},kola:{command:["outr quartz","eat quartz"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},lay:{command:"sing lay",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},levitating:{command:"sip levitation",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},lifevision:{static:!0,command:"lifevision",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},lipreading:{static:!0,command:"lipread",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},locketdeath:{command:"solicit locket for immortality",bals_req:["free"],bals_used:["free"],serverside:!1},magicresist:{command:"activate magic resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},blademastery:{command:"mastery on",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Unnamable"],preempt:!0,serverside:!0},meditate:{command:"meditate",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","impatience"],preempt:!1,serverside:!1},mercury:{static:!0,command:"educe mercury",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},metabolise:{command:"metabolise paralysis",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!1,preempt:!1},metawake:{command:"metawake on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","lullaby"],serverside:!0,preempt:!0},mindcloak:{command:"mind cloak on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],preempt:!0,skills:["Monk","Shikudo"],serverside:!0},mindnet:{command:"mindnet on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},mindseye:{static:!0,command:"touch mindseye",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},morimbuul:{command:"ldeck draw morimbuul",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],serverside:!1,preempt:!1},mounted:{command:"",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],preempt:!0,serverside:!1,clientOnly:!0},mouths:{command:"mutate mouths",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},nightsight:{command:"nightsight",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},numbness:{command:"numb",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"]},"parrying right leg":{command:"parry right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","guarding right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left leg":{command:"parry left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","guarding right leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying right arm":{command:"parry right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","guarding right leg","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left arm":{command:"parry left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","guarding right leg","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying head":{command:"parry head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","guarding right leg","parrying left","parrying right","parrying centre"]},"parrying torso":{command:"parry torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","guarding right leg","parrying head","parrying left","parrying right","parrying centre"]},"parrying left":{command:"trueparry left",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","guarding right leg","parrying right","parrying centre"]},"parrying right":{command:"trueparry right",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","guarding right leg","parrying centre"]},"parrying centre":{command:"trueparry centre",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","guarding right leg"]},pinchblock:{command:"pnb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},projectiles:{command:"projectiles on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],blocks:["death","sleeping","mounted"],preempt:!0,serverside:!0},poisonresist:{command:"sip venom",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},precision:{command:"intone trusad",bals_req:["balance","equilibrium"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},prismatic:{command:"strum lyre",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],serverside:!1},rebounding:{command:"smoke malachite",bals_req:["smoke","rebounding"],bals_used:["smoke","rebounding"],blocks:["death","asthma","sleeping"],serverside:!0},reflections:{command:"point wand235913 at me",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],preempt:!0,serverside:!1},regeneration:{command:"regeneration on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo"],blocks:["death","sleeping"],serverside:!0,preempt:!0},resistance:{command:"resistance",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Monk","Shikudo","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},scales:{static:!0,command:"scales",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0},secondsight:{static:!0,command:"secondsight",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},selfishness:{command:"selfishness",bals_req:["balance","equilibrium"],bals_used:["balance"],serverside:!0},shield:{command:"touch shield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},shintrance:{command:"shin trance",bals_req:["free"],bals_used:["free"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0,preempt:!0},shinclarity:{static:!0,command:"clarity",bals_req:["balance"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shinbinding:{static:!0,command:"shinbinding on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shipwarning:{command:"shipwarning on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0},shroud:{static:!0,command:"shroud",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Occultist","Serpent"],serverside:!0},softfocusing:{command:"softfocus on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0,preempt:!0},songbird:{command:"whistle for songbird",bals_req:["equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Bard"]},speed:{command:"sip speed",bals_req:["speed"],bals_used:["speed"],blocks:["death","anorexia","sleeping"],serverside:!0},splitmind:{command:"split mind",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},skysight:{command:"manifest skysight",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},skywatch:{command:"skywatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},stonefist:{static:!0,command:"cast stonefist",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},stoneskin:{static:!0,command:"cast stoneskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},sulphur:{static:!0,command:"educe sulphur",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},tekurastance:{command:"tekurastance",bals_req:["free"],bals_used:["balance"],skills:["Monk","Shikudo"]},telesense:{command:"telesense on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},temperance:{command:"sip frost",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},tempest:{command:"manifest tempest",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},mutatetentacles:{command:"mutate tentacles",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},thirdeye:{command:"thirdeye",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tin:{static:!0,command:"educe tin",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Alchemist"],serverside:!0},tentacles:{command:"tentacles",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Occultist"],serverside:!0},toughness:{command:"toughness",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},treewatch:{command:"treewatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tune:{command:"sing tune",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},twoartsstance:{command:"twoartsstance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Blademaster"]},vigilance:{command:"vigilance on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},vitality:{command:"vitality on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},weathering:{command:"weathering on",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Infernal","Paladin","Monk","Shikudo","Blademaster","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},weaving:{static:!0,command:"weaving on",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0}},normalizeDefCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefPriority=(e,t)=>{const a=Number(e);return Number.isFinite(a)?a<0?0:a>26?26:a:0},Z=Object.freeze(Object.fromEntries(Object.entries(J).map(([e,t])=>{const a=!1!==t.serverside;return[e,Object.freeze({...t,command:Object.freeze(normalizeDefCommand(t.command)),bals_req:Object.freeze(normalizeDefList(t.bals_req)),bals_used:Object.freeze(normalizeDefList(t.bals_used)),skills:Object.freeze(normalizeDefList(t.skills)),opps:Object.freeze(normalizeDefList(t.opps)),blocks:Object.freeze(t.blocks?[...t.blocks]:[]),serverside:a,preempt:!0===t.preempt,static:!0===t.static,clientOnly:!0===t.clientOnly,defaultPriority:normalizeDefPriority(t.defaultPriority,a)})]}))),ee=Object.freeze(Object.keys(Z).reduce((e,t)=>(e[t]=Number(Z[t].defaultPriority),e),{})),buildDefBySkillIndex=()=>{const e=Object.entries(Z).reduce((e,[t,a])=>{const n=a.skills;return Array.isArray(n)&&n.forEach(a=>{e[a]||(e[a]=[]),e[a].push(t)}),e},{});return Object.freeze(Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Object.freeze([...t])])))},te=(buildDefBySkillIndex(),Object.freeze({CHAR_VITALS:"nexsys4.gmcp.char.vitals",CHAR_STATUS:"nexsys4.gmcp.char.status",CHAR_AFFLICTIONS_LIST:"nexsys4.gmcp.char.afflictions.list",CHAR_AFFLICTIONS_ADD:"nexsys4.gmcp.char.afflictions.add",CHAR_AFFLICTIONS_REMOVE:"nexsys4.gmcp.char.afflictions.remove",CHAR_DEFENCES_LIST:"nexsys4.gmcp.char.defences.list",CHAR_DEFENCES_ADD:"nexsys4.gmcp.char.defences.add",CHAR_DEFENCES_REMOVE:"nexsys4.gmcp.char.defences.remove",IRE_RIFT_LIST:"nexsys4.gmcp.ire.rift.list",IRE_RIFT_CHANGE:"nexsys4.gmcp.ire.rift.change",CHAR_ITEMS_LIST:"nexsys4.gmcp.char.items.list",CHAR_ITEMS_DELTA:"nexsys4.gmcp.char.items.delta",ROOM_INFO:"nexsys4.gmcp.room.info",TARGET_INFO:"nexsys4.gmcp.target.info"})),isRecord$3=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),normalizeLocation=e=>String(e??"inv").trim().toLowerCase()||"inv",mergeDefinedRecord=(...e)=>e.reduce((e,t)=>(Object.entries(isRecord$3(t)?t:{}).forEach(([t,a])=>{void 0!==a&&(e[t]=a)}),e),{}),mergeResourceStats=(e=[],t=[])=>{const a=new Map;return[...e,...t].forEach(e=>{const t=String(e?.key||"").trim().toLowerCase();t&&a.set(t,e)}),[...a.values()]},mergeBalancePatches=(e=[],t=[])=>[...Array.isArray(e)?e:[],...Array.isArray(t)?t:[]],mergeStatusPayload=(e={},t={})=>{const a=isRecord$3(e)?e:{},n=isRecord$3(t)?t:{};return{...a,...n,status:{...isRecord$3(a.status)?a.status:{},...isRecord$3(n.status)?n.status:{}}}},mergeVitalsPayload=(e={},t={})=>{const a=isRecord$3(e)?e:{},n=isRecord$3(t)?t:{},s=isRecord$3(a.vitals)?a.vitals:{},i=isRecord$3(n.vitals)?n.vitals:{};return{...a,...n,vitals:{...s,...i,kind:i.kind||s.kind,vitals:mergeDefinedRecord(s.vitals,i.vitals),balances:mergeDefinedRecord(s.balances,i.balances),balancePatches:mergeBalancePatches(s.balancePatches,i.balancePatches),resourceStats:mergeResourceStats(Array.isArray(s.resourceStats)?s.resourceStats:[],Array.isArray(i.resourceStats)?i.resourceStats:[])}}},mergeTargetPayload=(e={},t={})=>{const a=isRecord$3(e)?e:{},n=isRecord$3(t)?t:{};return{...a,...n,target:mergeDefinedRecord(a.target,n.target)}},re=new Map([[te.CHAR_STATUS,{keyFor:()=>te.CHAR_STATUS,merge:mergeStatusPayload}],[te.CHAR_VITALS,{keyFor:()=>te.CHAR_VITALS,merge:mergeVitalsPayload}],[te.CHAR_AFFLICTIONS_LIST,{keyFor:()=>te.CHAR_AFFLICTIONS_LIST,merge:(e,t)=>t}],[te.CHAR_DEFENCES_LIST,{keyFor:()=>te.CHAR_DEFENCES_LIST,merge:(e,t)=>t}],[te.CHAR_ITEMS_LIST,{keyFor:({payload:e}={})=>`${te.CHAR_ITEMS_LIST}:${normalizeLocation(e?.location)}`,merge:(e,t)=>t}],[te.IRE_RIFT_LIST,{keyFor:()=>te.IRE_RIFT_LIST,merge:(e,t)=>t}],[te.TARGET_INFO,{keyFor:()=>te.TARGET_INFO,merge:mergeTargetPayload}]]),ae=new Set([te.CHAR_AFFLICTIONS_ADD,te.CHAR_AFFLICTIONS_REMOVE,te.CHAR_DEFENCES_ADD,te.CHAR_DEFENCES_REMOVE,te.CHAR_ITEMS_DELTA,te.IRE_RIFT_CHANGE]),createGmcpBlockBuffer=({coalesce:e=!0}={})=>{const t=[];return{enqueue:(e={})=>{const a=String(e.topic||"").trim();a&&t.push({topic:a,payload:Object.prototype.hasOwnProperty.call(e,"payload")?e.payload:null})},flush:()=>{if(!e){const e=[...t];return t.length=0,e}const a=new Map,n=[],s=[];return t.forEach(e=>{const t=re.get(e.topic);if(t){const n=t.keyFor(e),s=a.get(n);return void(s?a.set(n,{...s,payload:t.merge(s.payload,e.payload)}):a.set(n,e))}ae.has(e.topic)?s.push(e):n.push(e)}),t.length=0,[...a.values(),...n,...s]},size:()=>t.length}},createEventBus=({label:e="nexSys4.eventBus",debugEnabled:t=!1,traceLimit:a=200}={})=>{const n=new Map,s=new Set;let i=Boolean(t);const o=Math.max(1,Number(a||200)),l=[],pushTrace=(t,a={})=>{if(!i)return null;const n={at:Date.now(),type:t,detail:a};return l.push(n),l.length>o&&l.splice(0,l.length-o),console.log(`[${e}] ${t}`,a),n},on=(e,t)=>{const a=String(e||"").trim();if(!a||"function"!=typeof t)return()=>{};const s=n.get(a)||new Set;return s.add(t),n.set(a,s),pushTrace("on",{topic:a,listenerCount:s.size}),()=>off(a,t)},off=(e,t)=>{const a=String(e||"").trim(),s=n.get(a);if(!a||!s)return!1;const i=s.delete(t);return s.size||n.delete(a),pushTrace("off",{topic:a,removed:i,listenerCount:s.size}),i},onAny=e=>"function"!=typeof e?()=>{}:(s.add(e),pushTrace("onAny",{listenerCount:s.size}),()=>offAny(e)),offAny=e=>{const t=s.delete(e);return pushTrace("offAny",{removed:t,listenerCount:s.size}),t};return{on,off,onAny,offAny,emit:(e,t)=>{const a=String(e||"").trim();if(!a)return 0;const o=[...n.get(a)||[]],l=[...s];return i&&pushTrace("emit",{topic:a,listenerCount:o.length,anyListenerCount:l.length,payload:t}),o.forEach(e=>{try{e(t,a)}catch(n){console.error("nexSys4 event bus handler failed",{topic:a,error:n})}}),l.forEach(e=>{try{e(t,a)}catch(n){console.error("nexSys4 event bus global handler failed",{topic:a,error:n})}}),o.length+l.length},clear:()=>{n.clear(),s.clear()},setDebugEnabled(e){i=Boolean(e)},debugInfo:()=>({label:e,debugEnabled:i,topics:[...n.keys()],anyListenerCount:s.size,recentTrace:[...l]})}},ne=Object.freeze({RUNTIME_STARTED:"nexsys4.runtime.started",RUNTIME_STOPPED:"nexsys4.runtime.stopped",RAW_GMCP:"nexsys4.raw.gmcp",SYSTEM_VITALS_CHANGED:"nexsys4.system.vitals.changed",SYSTEM_HEALTH_CHANGED:"nexsys4.system.health.changed",SYSTEM_MANA_CHANGED:"nexsys4.system.mana.changed",SYSTEM_RAGE_CHANGED:"nexsys4.system.rage.changed",SYSTEM_BLEED_CHANGED:"nexsys4.system.bleed.changed",SYSTEM_STATUS_CHANGED:"nexsys4.system.status.changed",SYSTEM_CLASS_CHANGED:"nexsys4.system.class.changed",SYSTEM_TARGET_CHANGED:"nexsys4.system.target.changed",SYSTEM_ROOM_CHANGED:"nexsys4.system.room.changed",SYSTEM_ROOM_ITEMS_CHANGED:"nexsys4.system.room_items.changed",SYSTEM_RUNTIME_CHANGED:"nexsys4.system.runtime.changed",SYSTEM_PAUSE_CHANGED:"nexsys4.system.pause.changed",SYSTEM_PAUSED:"nexsys4.system.paused",SYSTEM_UNPAUSED:"nexsys4.system.unpaused",SYSTEM_LOADED:"nexsys4.system.loaded",SYSTEM_SETTINGS_CHANGED:"nexsys4.system.settings.changed",SYSTEM_BASELINE_CHANGED:"nexsys4.system.baseline.changed",SYSTEM_DEATH_DETECTED:"nexsys4.system.death.detected",SYSTEM_MOUNT_CHANGED:"nexsys4.system.mount.changed",SYSTEM_WIELDED_CHANGED:"nexsys4.system.wielded.changed",UI_CONFIG_CHANGED:"nexsys4.ui.config.changed",AFF_GOT:"nexsys4.aff.got",AFF_LOST:"nexsys4.aff.lost",AFF_STACK_CHANGED:"nexsys4.aff.stack.changed",AFF_PRIORITY_CHANGED:"nexsys4.aff.priority.changed",DEF_GOT:"nexsys4.def.got",DEF_LOST:"nexsys4.def.lost",DEF_PRIORITY_CHANGED:"nexsys4.def.priority.changed",BALANCE_GOT:"nexsys4.balance.got",BALANCE_LOST:"nexsys4.balance.lost",BALANCE_RESET:"nexsys4.balance.reset",BALANCE_DURATION_OBSERVED:"nexsys4.balance.duration.observed",BALANCE_TIMER_RESTARTED:"nexsys4.balance.timer.restarted",EQBAL_GOT:"nexsys4.eqbal.got",LIMB_HIT:"nexsys4.limb.hit",LIMB_RESET:"nexsys4.limb.reset",LIMB_STAGE_CHANGED:"nexsys4.limb.stage.changed",LIMB_DECAY:"nexsys4.limb.decay",CACHE_AMOUNT_CHANGED:"nexsys4.cache.amount.changed",CACHE_INVENTORY_LIST:"nexsys4.cache.inventory.list",CACHE_RIFT_LIST:"nexsys4.cache.rift.list",CACHE_PRECACHE_CHANGED:"nexsys4.cache.precache.changed",ITEM_ROOM_ADDED:"nexsys4.item.room.added",ITEM_ROOM_REMOVED:"nexsys4.item.room.removed",ITEM_ROOM_UPDATED:"nexsys4.item.room.updated",ITEM_ROOM_LIST:"nexsys4.item.room.list",ITEM_INV_ADDED:"nexsys4.item.inv.added",ITEM_INV_REMOVED:"nexsys4.item.inv.removed",ITEM_INV_UPDATED:"nexsys4.item.inv.updated",ITEM_INV_LIST:"nexsys4.item.inv.list",QUEUE_UPDATED:"nexsys4.queue.updated",QUEUE_FLUSHED:"nexsys4.queue.flushed",QUEUE_DEFERRED:"nexsys4.queue.deferred",QUEUE_CLEARED:"nexsys4.queue.cleared",QUEUE_SENT:"nexsys4.queue.sent",QUEUE_FIRED:"nexsys4.queue.fired",QUEUE_FIRED_ACK:"nexsys4.queue.fired.ack",SERVERSIDE_AFF_PRIORITY_SET:"nexsys4.serverside.aff.priority.set",SERVERSIDE_DEF_PRIORITY_SET:"nexsys4.serverside.def.priority.set",SERVERSIDE_DIRTY:"nexsys4.serverside.dirty",SERVERSIDE_EVALUATED:"nexsys4.serverside.evaluated",SERVERSIDE_RULE_CHANGED:"nexsys4.serverside.rule.changed",RULE_ADDED:"nexsys4.rule.added",RULE_REMOVED:"nexsys4.rule.removed",RULE_ENABLED:"nexsys4.rule.enabled",RULE_DISABLED:"nexsys4.rule.disabled",RULE_PACK_LOADED:"nexsys4.rule.pack.loaded",RULE_PACK_UNLOADED:"nexsys4.rule.pack.unloaded",RULE_ORDER_CHANGED:"nexsys4.rule.order.changed",RULE_ACTIVATED:"nexsys4.rule.activated",RULE_DEACTIVATED:"nexsys4.rule.deactivated"}),se=Object.freeze({IDLE:"IDLE",PROBING_SEPARATOR:"PROBING_SEPARATOR",BOOTING:"BOOTING",PROVISIONING_CURINGSET:"PROVISIONING_CURINGSET",AWAITING_SNAPSHOTS:"AWAITING_SNAPSHOTS",CAPTURING_SNAPSHOTS:"CAPTURING_SNAPSHOTS",RUNNING:"RUNNING",FAILED:"FAILED"}),isRuntimeReadyPhase=e=>e===se.RUNNING,ie=Object.freeze({OUTPUT_COMPLETE:"SystemOutputCompleteEvent",STARTUP_BEGIN:"CuringStartupBeginEvent",STARTUP_COMPLETE:"CuringStartupCompleteEvent",STARTUP_FINALIZED:"CuringStartupFinalizedEvent",CURINGSET_READY:"CuringSetReadyEvent"}),oe=Object.freeze(["IRE.Rift.Request","IRE.Time.Request","Char.Skills.Get","Char.Items.Inv","IRE.Time.Request","Comm.Channel.Players","IRE.Tasks.Request"]),buildStartupSnapshotCommands=()=>[`echo SystemEvent ${ie.STARTUP_BEGIN}`,"curing off","score","date","curing status","curing priority list","curing queue list","curing predictions","curing priority defence list","def","curing on",`echo SystemEvent ${ie.STARTUP_COMPLETE}`],buildStartupSnapshotBurst=()=>({gmcpRequests:[...oe],commands:buildStartupSnapshotCommands()}),le=Object.freeze(["status","affPriorities","defPriorities"]),normalizeTimeoutMs=(e,t=1e3)=>{const a=Number(e);return Number.isFinite(a)&&a>0?Math.floor(a):t},normalizeRetryCount=(e,t=0)=>{const a=Number(e);return Number.isFinite(a)&&a>=0?Math.floor(a):t},createStartupCoordinator=({adapter:e,systemModel:t,serverside:a,persistence:n,seedBaselineFromObservedStartup:s=()=>{},noticeCenter:i,buildPersistenceSnapshot:o,startupTimeoutMs:l=1e3,maxStartupRetries:c=0,publishStartupPhase:u=()=>{},publishLoaded:d=()=>{},releaseStartupPause:m=()=>!1,setRuntimePhase:p=(e,a={})=>{t.setRuntime({phase:e,...a})}})=>{let g=!1,h=0,b=null,y=null;const v=normalizeTimeoutMs(l),S=normalizeRetryCount(c),clearConvergenceTimer=()=>{b&&(e.clearTimeout(b),b=null)},getMissingRequiredTopics=()=>{if("function"==typeof a.getMissingStartupFlags)return a.getMissingStartupFlags(le);const e=a.getStartupStatus();return le.filter(t=>!e.flags?.[t])},formatMissingRequiredTopics=(e=[])=>e.length?` Missing required captures: ${e.join(", ")}.`:"",startConvergenceTimer=()=>{clearConvergenceTimer(),b=e.setTimeout(()=>{if(g)return;const e=getMissingRequiredTopics();retryOrFail(e.length?`Startup snapshots did not converge within ${v}ms.`:`Startup closing fence did not arrive within ${v}ms.`,{phase:"snapshot-timeout-retry",source:"startup-timeout",missingRequired:e})},v)},complete=(e="startup-check")=>{clearConvergenceTimer(),p(se.RUNNING,{startupFailureMessage:""}),s(),n.save(o()),u("startup-complete"),m({source:"startup-complete"}),d({source:"startup-complete",topic:ne.SYSTEM_LOADED}),i.publish("output","startup complete",{source:e})},fail=(e,{source:t="startup-failed",missingRequired:a=[]}={})=>{clearConvergenceTimer(),g=!0;const n=`${e}${formatMissingRequiredTopics(a)}`;return p(se.FAILED,{paused:!0,startupFailureMessage:n}),u("startup-failed"),i.publish("output",n,{force:!0,source:t,title:"startup failed: ",fg:"#fee2e2",bg:"#450a0a",titleFg:"#ffffff",titleBg:"#7f1d1d"}),!1},retryOrFail=(e,{phase:t,source:a,missingRequired:n=[]}={})=>!g&&(h>=S?fail(`${e} Exhausted ${S} startup retr${1===S?"y":"ies"}.`,{source:a,missingRequired:n}):(h+=1,requestSnapshots(y,t||"snapshot-retry",{source:a,retry:h,missingRequired:n}),!1)),requestSnapshots=(t,a="snapshot-request",n={})=>{if(y="function"==typeof t?t:y,"function"!=typeof y)return[];const s={source:"startup-snapshots",phase:a,attempt:h+1,retryCount:h,...n},{gmcpRequests:i,commands:o}=buildStartupSnapshotBurst();p(se.AWAITING_SNAPSHOTS),u(a),e.sendGmcp(i,s);const l=y(o,s);return startConvergenceTimer(),l};return{reset:()=>{g=!1,h=0,clearConvergenceTimer(),a.resetStartupStatus?.(),p(se.IDLE,{startupFailureMessage:""})},fail,requestSnapshots,handleFenceBegin:()=>!g&&(p(se.CAPTURING_SNAPSHOTS),u("snapshot-begin"),!0),handleFenceComplete:(e="snapshot:complete:text")=>{if(g)return!1;u("snapshot-complete");const t=a.getStartupStatus();t.flags.queue||a.updateObservedQueue([]),t.flags.predictions||a.updateObservedPredictions({});const n=getMissingRequiredTopics();return n.length?retryOrFail("Startup closing fence arrived before required snapshots converged.",{phase:"snapshot-retry",source:e,missingRequired:n}):(g=!0,complete(e),!0)},dispose(){clearConvergenceTimer()},isResolved:()=>g}},ce="nexsys4-default",normalizeCommand=e=>String(e||"").trim().toLowerCase().replace(/\s+/g," "),isServersideCommand=e=>{const t=normalizeCommand(e);return t.startsWith("curing ")||t.startsWith("curingset ")},normalizeSetName=e=>String(e||"").trim().toLowerCase(),toNumberMaybe=e=>{if("number"==typeof e&&Number.isFinite(e))return e;const t=Number(e);return Number.isFinite(t)?t:e},normalizeBoolean=e=>{if("boolean"==typeof e)return e;const t=String(e||"").trim().toLowerCase();return!!["on","yes","true","activated","enabled"].includes(t)||!["off","no","false","disabled"].includes(t)&&Boolean(e)},normalizeStatusValue=(e,t)=>{switch(e){case"enabled":case"reporting":case"afflictions":case"defences":case"sipping":case"transmutation":case"focus":case"useVault":case"clot":case"fallback":case"kaidoTransmute":case"customAffPriority":case"customDefPriority":case"batch":case"insomnia":return normalizeBoolean(t);case"focusOverHerbs":{if("boolean"==typeof t)return t;const e=String(t||"").trim().toLowerCase();return!!["focus","first","yes","on","true"].includes(e)||!["herbs","second","no","off","false"].includes(e)&&Boolean(t)}case"tree":{if("custom"===t)return"custom";if("boolean"==typeof t)return t?"on":"off";const e=String(t||"").trim().toLowerCase();return["custom","on","off"].includes(e)?e:["yes","activated","enabled","true"].includes(e)?"on":["no","disabled","false"].includes(e)?"off":e||"off"}case"sipPriority":return"mana"===String(t||"").trim().toLowerCase()?"mana":"health";default:return toNumberMaybe(t)}},createServersideContext=({affModel:e,defModel:t,balanceModel:a,systemModel:n,trackables:s,now:i})=>{const o=n.getRoom().items||{};let l=null;const isTarget=e=>Array.isArray(e)?e.some(e=>isTarget(e)):"function"==typeof n.isTarget&&n.isTarget(e);return{haveAff:t=>e.haveAff(t),haveAffs:(t=[])=>e.haveAffs(t),haveAnAff:(t=[])=>e.haveAnAff(t),affCount:t=>Number(e.get?.(t)?.count||0),affElapsed:t=>e.elapsed(t),sortedActiveAffs:()=>(null===l&&(l="function"==typeof e.currentSorted?e.currentSorted():[]),l),haveDef:e=>t.haveDef(e),haveDefs:(e=[])=>e.every(e=>t.haveDef(e)),haveADef:(e=[])=>e.some(e=>t.haveDef(e)),haveBal:e=>a.have(e),haveBals:(e=[])=>e.every(e=>a.have(e)),haveABal:(e=[])=>e.some(e=>a.have(e)),balElapsed:e=>a.elapsed(e),suspendCuring:(e={})=>({...e&&"object"==typeof e?e:{},suspendCuring:!0}),trackableElapsed:e=>{const t=s[e];return t?.have?i()-t.since:Number.POSITIVE_INFINITY},roomHasItem:e=>Boolean(o[e]),isTarget,isClass:e=>n.isClass(e)}},buildCountablePriorityDefaults=e=>"function"!=typeof e.getCountablePriorityNames?{}:e.getCountablePriorityNames().reduce((e,t)=>(e[t]=0,e),{}),normalizeServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26?t:0},isServersideAffPriorityNumber=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},canonicalAffPriority=e=>{const t=normalizeServersideAffPriority(e);return 26===t?0:t},buildBaselineAffPriorities=e=>({...e.list().reduce((t,a)=>(t[a]=normalizeServersideAffPriority(e.getPriority(a)),t),{}),...buildCountablePriorityDefaults(e)}),buildObservedAffPriorities=e=>({...e.list().reduce((e,t)=>(e[t]=0,e),{}),...buildCountablePriorityDefaults(e)}),buildBaselineDefPriorities=(e,t="")=>e.list().reduce((a,n)=>{const s=e.get(n);return!s?.serverside||s.static?a:e.isAvailableForClass(n,t)?(a[n]=e.getPriority(n),a):a},{}),buildObservedDefPriorities=(e,t="")=>e.list().reduce((a,n)=>e.get(n)?.serverside&&e.isAvailableForClass(n,t)?(a[n]=0,a):a,{}),buildBaselineCurePriorities=(e={})=>Object.entries(e).reduce((e,[t,a])=>(e[t]=Number(a.prio||0),e),{}),mergeWithResets=(e,t={})=>{const a={...e};return Object.entries(t).forEach(([t,n])=>{a[t]="RESET"!==n?n:e[t]}),a},createInitialServersideState=({baselineSettings:e,affModel:t,defModel:a,systemModel:n,cureTable:s})=>{const i=n?.getClass?.()||"",o=buildBaselineAffPriorities(t),l=buildBaselineDefPriorities(a,i),c=buildBaselineCurePriorities(s);return{baseline:{settings:{...e},affPriorities:o,defPriorities:l,curePriorities:c},sessionBaseline:{settings:{...e},affPriorities:{...o},defPriorities:{...l},curePriorities:{...c}},derived:{},desired:{},observed:{settings:{...e},affPriorities:buildObservedAffPriorities(t),defPriorities:buildObservedDefPriorities(a,i),curePriorities:buildBaselineCurePriorities(s),prioAff:null,manualQueue:[],predictions:{},prioritySet:""},pending:new Map,capture:{affPriorities:null,defPriorities:null,prioritySet:""},transient:{prioAff:null,manualQueue:[],predictions:{},staticDefRequests:{},fullPriorityReset:!1},diagnostics:{lastCommands:[],lastReasons:[],desyncCounter:0,recoveryCounter:0,commandRepeatCounter:0},curingsets:{sets:[],activeSet:"",priorSet:"",used:0,limit:0},startup:{flags:{status:!1,affPriorities:!1,defPriorities:!1,queue:!1,predictions:!1,curingsets:!1}},lastDiffCommands:[],rules:[],dirty:!0}},createCuringSetProvisioner=({adapter:e,serverside:t,dispatchCommands:a,setRuntimePhase:n=()=>{},publishStartupPhase:s=()=>{},options:i={}}={})=>{const o=`echo SystemEvent ${ie.CURINGSET_READY}`,l=Math.max(50,Number(i.curingSetProvisionTimeoutMs??i.startupTimeoutMs??1e3)),c=Math.max(1,Number(i.maxCuringSetProvisionAttempts??4));let u=!1,d=0,m=!1,p=null,g={onReady:()=>{},onAbort:()=>{}};const clearTimer=()=>{p&&(e?.clearTimeout?.(p),p=null)},settle=()=>{u=!1,clearTimer()},finishReady=()=>{const{onReady:e}=g;settle(),e({createdThisRun:m})},finishAbort=e=>{const{onAbort:t}=g;settle(),t(e)},sendProbe=(t,n)=>{clearTimer(),d+=1,a([...t,"curingset list",o],{source:"curingset-provision",reason:n,attempt:d}),p=e?.setTimeout?.(()=>{u&&finishAbort(`nexSys4 could not confirm its curing set within ${l}ms (no response from the game). Reload to retry.`)},l)},handleBarrier=()=>{if(!u)return;clearTimer();const e=t.getCuringSets?.()??{},a=(e.sets||[]).map(e=>normalizeSetName(e)),n=normalizeSetName(e.activeSet),s=Number(e.used||0),i=Number(e.limit||0),o=a.includes(ce);"nexsys4-default"!==n?d>=c?finishAbort(`nexSys4 could not secure its curing set after ${c} attempts. Reload to retry.`):o?sendProbe([`curingset switch ${ce}`],"switch"):i>0&&s>=i?finishAbort(`nexSys4 needs its own curing set but all ${i} slots are full. Delete a set or CURINGSET EXPAND (25cr), then reload.`):(m=!0,sendProbe([`curingset new ${ce}`,`curingset switch ${ce}`],"create")):finishReady()};return{start({onReady:e=()=>{},onAbort:t=()=>{}}={}){g={onReady:e,onAbort:t},u=!0,d=0,m=!1,n(se.PROVISIONING_CURINGSET),s("provision-curingset"),sendProbe([],"list")},handleBarrier,wasCreatedThisRun:()=>m,isActive:()=>u,dispose(){settle()}}},ue=Object.freeze({STARTED:"nexSys.start(): startup initiated.",ALREADY_STARTED:"nexSys.start(): runtime is already started.",STARTUP_PENDING:"nexSys.start(): runtime is already started; startup is still in progress.",STARTUP_FAILED:"nexSys.start(): runtime startup failed. Check the console and in-game notices.",SEPARATOR_PROBE:"nexSys.start(): command separator unknown; sending config to auto-detect. Startup will resume on capture."}),de=Object.freeze(["config","more","more"]),createRuntimeStartupOrchestrator=({adapter:e,systemModel:t,persistenceApi:a,startup:n,curingSetProvisioner:s,noticeCenter:i,syncDebugMode:o,isStarted:l,markStarted:c,setRuntimePhase:u,publishStartupPhase:d,attachEventWiring:m,promptPresenter:p,publishRuntimeStarted:g,hydrateCacheFromAdapterGmcp:h,commandDispatcher:b,debugOverride:y})=>{let v=null;const continueStartup=()=>{c(),u(se.BOOTING,{startupFailureMessage:""}),d("init"),g(),m(),p.start(),h(),s.start({onReady:()=>{n.requestSnapshots(b.sendCommands)},onAbort:e=>{n.fail(e,{source:"curingset-provision"})}})};return{dispose(){v&&(v(),v=null),s?.dispose?.()},start(){if(l()){const e=t.getRuntime().phase;return e===se.FAILED?ue.STARTUP_FAILED:e===se.RUNNING?ue.ALREADY_STARTED:ue.STARTUP_PENDING}if(v)return ue.SEPARATOR_PROBE;t.setSettings({commandSeparator:void 0},{setBaseline:!0}),a.loadPersistence(),void 0!==y&&t.setSettings({debug:Boolean(y)},{setBaseline:!0}),n.reset();const s=normalizeCommandSeparator(t.getSettings().commandSeparator),c=normalizeCommandSeparator(e.getCommandSeparator()),m=s||c;return o(),m?(t.getSettings().commandSeparator!==m&&t.setSettings({commandSeparator:m},{setBaseline:!0}),continueStartup(),ue.STARTED):(u(se.PROBING_SEPARATOR),d("separator-probe"),i.publish("output","Command separator not configured. Sending config to auto-detect...",{source:"separator-probe"}),v=e.addOnceTrigger({id:"nexsys4-separator-probe",regex:/\bCommandSeparator\s+(?<sep>\S+)/,action:({args:a})=>{const n=normalizeCommandSeparator(String(a.groups?.sep||"").trim());n&&(v=null,e.setSeparator(n),t.setSettings({commandSeparator:n},{setBaseline:!0}),continueStartup())}}),de.forEach(t=>{e.send([t],{source:"separator-probe"})}),ue.SEPARATOR_PROBE)}}},me=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],pe="nexsys4.parsed_gmcp_vitals",hasOwn$6=(e,t)=>Boolean(e)&&Object.prototype.hasOwnProperty.call(e,t),parseNumericVital=(e,t)=>{if(!hasOwn$6(e,t))return;const a=toNumber(e[t],NaN);return Number.isFinite(a)?a:void 0},parseResourceStat=e=>{const[t,a]=String(e).split(":");if(!t||void 0===a)return null;const n=t.trim().toLowerCase(),s=a.trim();if(!n)return null;const i=toNumber(s.endsWith("%")?s.slice(0,-1):s,NaN),o=toOptionalBooleanFromYesNo(s);return{key:n,value:Number.isFinite(i)?i:s,balanceState:Number.isFinite(i)?void 0:o}},toBalancePatches=(e={})=>Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>({id:e,have:t})),parseGmcpVitals=(e={})=>{const t=e&&"object"==typeof e&&!Array.isArray(e)?e:{},a=me.reduce((e,a)=>({...e,[a]:parseNumericVital(t,a)}),{}),n={balance:toOptionalBooleanFromYesNo(t.bal),equilibrium:toOptionalBooleanFromYesNo(t.eq)};return{kind:pe,vitals:a,balances:n,balancePatches:toBalancePatches(n),resourceStats:(Array.isArray(t.charstats)?t.charstats:[]).map(parseResourceStat).filter(Boolean)}},toParsedGmcpVitals=(e={})=>"nexsys4.parsed_gmcp_vitals"!==e?.kind?parseGmcpVitals(e):{...e,balancePatches:Array.isArray(e.balancePatches)?e.balancePatches:toBalancePatches(e.balances||{})},hasOwn$5=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isRecord$2=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),readFirstDefined=(e,t=[])=>{for(const a of t)if(hasOwn$5(e,a)&&void 0!==e[a]&&null!==e[a])return e[a]},parseAffName=(e={})=>{if("string"==typeof e)return e.toLowerCase();if(Array.isArray(e)){const t=e[0];if("string"==typeof t)return t.toLowerCase();const a=t&&"object"==typeof t?t:{};return String(a.affliction||a.defence||a.name||a.aff||a.def||"").toLowerCase()}const t=e&&"object"==typeof e?e:{};return String(t.affliction||t.defence||t.name||t.aff||t.def||"").toLowerCase()},parseRoomItems=(e={})=>Array.isArray(e?.items)?e.items.reduce((e,t)=>{const a=String(t?.name||t?.item||"").trim();return a?(e[a]=(e[a]||0)+1,e):e},{}):e?.items&&"object"==typeof e.items?{...e.items}:{},normalizeItemLocation$2=(e={},t=e?.item||e)=>String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),normalizeInventoryDeltaName=e=>"string"==typeof e?e:e?.name||e?.item||"",createInventoryDelta=(e,t={})=>{const a=t?.item||t,n=normalizeItemLocation$2(t,a);return{location:n,inventoryDelta:{id:a?.id??t?.id,location:n,name:normalizeInventoryDeltaName(a),icon:a?.icon??null,attrib:a?.attrib??null,amount:a?.amount??a?.count??a?.qty??t?.amount??t?.count,delta:a?.delta??t?.delta,action:e.split(".").pop(),direction:e.endsWith("remove")?"remove":e.endsWith("add")?"add":void 0},dirtyReason:`gmcp:${e}`}},hasInventoryIdentity=(e={})=>void 0!==e.id&&null!==e.id&&""!==e.id||Boolean(String(e.name||"").trim()),normalizeTargetRecord=(e={})=>{if(!isRecord$2(e))return{};const t={},a=readFirstDefined(e,["id","ID"]),n=readFirstDefined(e,["Text","text","short_desc"]),s=readFirstDefined(e,["HP","hp","hpperc"]);return void 0!==a&&(t.id=a),void 0!==n&&(t.text=n),void 0!==s&&(t.hp=s),t},createGmcpApplier=({emit:e=()=>{}}={})=>{const translate=(e={})=>{const t=[],emitTranslated=(e,a)=>{t.push({topic:e,payload:a})},a=normalizeTag(e.tag||e.rawTag||e.gmcp_method),n=e.payload;switch(a){case"char.vitals":emitTranslated(te.CHAR_VITALS,{vitals:parseGmcpVitals(n||{})});break;case"char.status":emitTranslated(te.CHAR_STATUS,{status:n||{}});break;case"char.afflictions.list":emitTranslated(te.CHAR_AFFLICTIONS_LIST,{afflictions:Array.isArray(n)?n:[]});break;case"char.afflictions.add":{const e=parseAffName(n);e&&emitTranslated(te.CHAR_AFFLICTIONS_ADD,{name:e});break}case"char.afflictions.remove":{const e=parseAffName(n);e&&emitTranslated(te.CHAR_AFFLICTIONS_REMOVE,{name:e});break}case"char.defences.list":emitTranslated(te.CHAR_DEFENCES_LIST,{defences:Array.isArray(n)?n:[]});break;case"char.defences.add":{const e=parseAffName(n);e&&emitTranslated(te.CHAR_DEFENCES_ADD,{name:e});break}case"char.defences.remove":{const e=parseAffName(n);e&&emitTranslated(te.CHAR_DEFENCES_REMOVE,{name:e});break}case"ire.rift.list":emitTranslated(te.IRE_RIFT_LIST,{rift:n||{}});break;case"ire.rift.change":emitTranslated(te.IRE_RIFT_CHANGE,{change:n||{}});break;case"char.items.list":emitTranslated(te.CHAR_ITEMS_LIST,{location:normalizeItemLocation$2(n),items:Array.isArray(n?.items)?n.items:[]});break;case"char.items.add":case"char.items.remove":case"char.items.update":{const e=createInventoryDelta(a,n||{}),t=hasInventoryIdentity(e.inventoryDelta)?e.inventoryDelta:null;emitTranslated(te.CHAR_ITEMS_DELTA,{inventoryDelta:t,dirtyReason:e.dirtyReason});break}case"room.info":emitTranslated(te.ROOM_INFO,{room:n||{},roomItems:parseRoomItems(n||{})});break;case"ire.target.info":emitTranslated(te.TARGET_INFO,{target:normalizeTargetRecord(n||{})})}return t};return{translate,apply(t){translate(t).forEach(({topic:t,payload:a})=>{e(t,a)})}}},ge=Object.freeze({inv:ne.ITEM_INV_LIST,room:ne.ITEM_ROOM_LIST}),fe=Object.freeze({inv:Object.freeze({add:ne.ITEM_INV_ADDED,remove:ne.ITEM_INV_REMOVED,update:ne.ITEM_INV_UPDATED}),room:Object.freeze({add:ne.ITEM_ROOM_ADDED,remove:ne.ITEM_ROOM_REMOVED,update:ne.ITEM_ROOM_UPDATED})}),normalizeItemLocation$1=e=>String(e||"").trim().toLowerCase()||"inv",createItemTopicNotifier=({publishPublic:e=()=>{}}={})=>{const notifyList=(t,a)=>{const n=ge[normalizeItemLocation$1(t)];n&&e(n,{location:normalizeItemLocation$1(t),items:Array.isArray(a)?a:[]})},notifyDelta=t=>{const a=normalizeItemLocation$1(t.location),n=String(t.action||t.direction||"").trim().toLowerCase(),s=fe[a]?.[n];s&&e(s,t)};return{notify({topic:e,payload:t}={}){e!==te.CHAR_ITEMS_DELTA?e===te.CHAR_ITEMS_LIST&&notifyList(t?.location,t?.items):t?.inventoryDelta&&notifyDelta(t.inventoryDelta)}}},fallbackClone=(e,t=new WeakMap)=>{if(null==e)return e;if("object"!=typeof e)return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e)){const a=[];return t.set(e,a),e.forEach(e=>a.push(fallbackClone(e,t))),a}if(e instanceof Set){const a=new Set;return t.set(e,a),[...e].forEach(e=>a.add(fallbackClone(e,t))),a}if(e instanceof Map){const a=new Map;return t.set(e,a),[...e.entries()].forEach(([e,n])=>{a.set(fallbackClone(e,t),fallbackClone(n,t))}),a}const a={};return t.set(e,a),Object.entries(e).forEach(([e,n])=>{"function"!=typeof n&&(a[e]=fallbackClone(n,t))}),a},deepClone$1=e=>{if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return fallbackClone(e)}},deepMerge=(e,t)=>{const a=Array.isArray(e)?[...e]:{...e||{}};return Object.entries(t||{}).forEach(([e,t])=>{!t||"object"!=typeof t||Array.isArray(t)||!a[e]||"object"!=typeof a[e]||Array.isArray(a[e])?a[e]=t:a[e]=deepMerge(a[e],t)}),a},deepFreeze=e=>e&&"object"==typeof e?(Object.isFrozen(e)||(Object.freeze(e),Object.keys(e).forEach(t=>deepFreeze(e[t]))),e):e,createSnapshotCache=({getVersion:e=()=>0,buildSnapshot:t=()=>({})}={})=>{let a=NaN,n=null;return()=>{const s=e();return n&&a===s||(a=s,n=deepFreeze(t())),n}},he=Object.freeze(["head","torso","leftarm","rightarm","leftleg","rightleg"]),be=Object.freeze({healthy:0,damaged:1,broken:2,mangled:3}),ye=new Set(Object.keys(be)),ve=Object.freeze({head:"head",torso:"torso",leftarm:"leftarm",rightarm:"rightarm",leftleg:"leftleg",rightleg:"rightleg"}),Se={brokenleftarm:{limb:"leftarm",stage:"broken"},brokenrightarm:{limb:"rightarm",stage:"broken"},brokenleftleg:{limb:"leftleg",stage:"broken"},brokenrightleg:{limb:"rightleg",stage:"broken"},damagedhead:{limb:"head",stage:"damaged"},damagedleftarm:{limb:"leftarm",stage:"damaged"},damagedrightarm:{limb:"rightarm",stage:"damaged"},damagedleftleg:{limb:"leftleg",stage:"damaged"},damagedrightleg:{limb:"rightleg",stage:"damaged"},mangledhead:{limb:"head",stage:"mangled"},mangledleftarm:{limb:"leftarm",stage:"mangled"},mangledrightarm:{limb:"rightarm",stage:"mangled"},mangledleftleg:{limb:"leftleg",stage:"mangled"},mangledrightleg:{limb:"rightleg",stage:"mangled"},mildtrauma:{limb:"torso",stage:"damaged"},serioustrauma:{limb:"torso",stage:"mangled"}},normalizeLimbId=e=>{const t=String(e||"").trim().toLowerCase().replace(/\s+/g,"");return ve[t]||t},buildAfflictionStageSnapshot=(e=[])=>{const t=he.reduce((e,t)=>(e[t]="healthy",e),{});return e.forEach(e=>{const a=Se[String(e||"").trim().toLowerCase()];if(!a)return;const n=t[a.limb]||"healthy";(be[a.stage]??0)>(be[n]??0)&&(t[a.limb]=a.stage)}),t},createLimbModel=({now:e=Date.now,setTimeoutFn:t,clearTimeoutFn:a,damageResetMs:n=18e4}={})=>{const s=new Set;let i=0;const o=new Map,l=new Map,c=he.reduce((t,a)=>(t[a]={id:a,percent:0,hits:0,stage:"healthy",updatedAt:e()},t),{}),emit=(e,t)=>{i+=1,t?.limb&&o.set(t.limb,(o.get(t.limb)??0)+1),s.forEach(a=>a(e,t))},cancelResetTimer=e=>{const t=l.get(e);null!=t&&(a(t),l.delete(e))},scheduleResetTimer=a=>{cancelResetTimer(a);const s=t(()=>{l.delete(a);const t=c[a];!t||t.percent<=0||(t.percent=0,t.hits=0,t.updatedAt=e(),emit("LimbDecay",{limb:a,value:deepClone$1(t)}))},n);l.set(a,s)},buildEntrySnapshot=(e={})=>({id:e.id,percent:e.percent,hits:e.hits,stage:e.stage,updatedAt:e.updatedAt}),u=new Map,getEntrySnapshot=e=>c[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>o.get(e)??0,buildSnapshot:()=>buildEntrySnapshot(c[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>he.reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),setStage=(t,a,n="manual")=>{const s=normalizeLimbId(t),i=String(a||"").trim().toLowerCase();if(!c[s]||!ye.has(i))return!1;if(c[s].stage===i)return!1;const o=c[s],l=o.stage;return o.stage=i,o.percent=0,o.hits=0,o.updatedAt=e(),cancelResetTimer(s),emit("LimbStageChanged",{limb:s,stage:i,previousStage:l,source:n,value:deepClone$1(o)}),!0},applyAfflictionTransition=(e,t)=>{const a=Se[String(e||"").toLowerCase()];return!!a&&(t?(setStage(a.limb,a.stage,"affliction"),!0):"damaged"===a.stage?(setStage(a.limb,"healthy","affliction"),!0):"mangled"===a.stage?(setStage(a.limb,"damaged","affliction"),!0):"broken"===a.stage&&(setStage(a.limb,"healthy","affliction"),!0))},syncFromAfflictions=(e=[],t="affliction-list")=>{const a=buildAfflictionStageSnapshot(e);return he.reduce((e,n)=>a[n]===c[n].stage?e:setStage(n,a[n],t)||e,!1)};return{onChange:e=>(s.add(e),()=>s.delete(e)),list:()=>[...he],snapshot:()=>d(),hit:(t,a,n="manual")=>{const s=normalizeLimbId(t),i=Number(a);if(!c[s]||!Number.isFinite(i)||i<=0)return!1;const o=c[s],l=o.stage;o.percent=Math.max(0,o.percent+i),o.hits+=1,o.updatedAt=e();let u=null;return"healthy"===o.stage&&o.percent>=100?(o.stage="damaged",o.percent=0,o.hits=0,u="damaged",cancelResetTimer(s)):"damaged"===o.stage&&o.percent>=100?(o.stage="mangled",o.percent=0,o.hits=0,u="mangled",cancelResetTimer(s)):scheduleResetTimer(s),emit("LimbHit",{limb:s,amount:i,source:n,transition:u,previousStage:l,value:deepClone$1(o)}),u&&emit("LimbStageChanged",{limb:s,stage:o.stage,previousStage:l,source:n,value:deepClone$1(o)}),!0},reset:(t,a="manual")=>{const n=normalizeLimbId(t);if(!c[n])return!1;const s=c[n],i=s.stage;return(0!==s.percent||0!==s.hits||"healthy"!==i)&&(s.percent=0,s.hits=0,s.stage="healthy",s.updatedAt=e(),cancelResetTimer(n),emit("LimbReset",{limb:n,source:a,previousStage:i,value:deepClone$1(s)}),"healthy"!==i&&emit("LimbStageChanged",{limb:n,stage:"healthy",previousStage:i,source:a,value:deepClone$1(s)}),!0)},setStage,applyAfflictionTransition,syncFromAfflictions,dispose(){he.forEach(cancelResetTimer)},get:e=>getEntrySnapshot(normalizeLimbId(e))}},buildLimbSnapshot=(e,t)=>{const a=e?.get?.(t);return a?{id:a.id,percent:a.percent,hits:a.hits,stage:a.stage}:null},didLimbChange=(e,t)=>Boolean(e&&t)&&(e.percent!==t.percent||e.hits!==t.hits||e.stage!==t.stage),syncTorsoTrauma=({affModel:e,serverside:t,stage:a,source:n,at:s})=>{switch(a){case"damaged":return e?.lose?.("serioustrauma",{source:n,at:s}),e?.got?.("mildtrauma",{source:n,at:s}),t?.removePrediction?.("serioustrauma"),t?.addPrediction?.("mildtrauma"),!0;case"mangled":return e?.lose?.("mildtrauma",{source:n,at:s}),e?.got?.("serioustrauma",{source:n,at:s}),t?.removePrediction?.("mildtrauma"),t?.addPrediction?.("serioustrauma"),!0;case"healthy":return e?.lose?.("mildtrauma",{source:n,at:s}),e?.lose?.("serioustrauma",{source:n,at:s}),t?.removePrediction?.("mildtrauma"),t?.removePrediction?.("serioustrauma"),!0;default:return!1}},buildObserveResult=(e,t,a,n=!1)=>({changed:didLimbChange(t,a)||n,traumaSynced:n,stageChanged:t?.stage!==a?.stage,limb:e,before:t,after:a}),applyObservedLimbHit=({limbModel:e,affModel:t,serverside:a,limb:n,amount:s,source:i="manual",at:o})=>{const l=normalizeLimbId(n),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.hit(l,s,i);const u=buildLimbSnapshot(e,l),d=didLimbChange(c,u),m=c.stage!==u?.stage,p=!("torso"!==l||!m)&&syncTorsoTrauma({affModel:t,serverside:a,stage:u?.stage,source:i,at:o});return{changed:d||p,traumaSynced:p,stageChanged:m,limb:l,before:c,after:u}},applyObservedLimbReset=({limbModel:e,affModel:t,serverside:a,limb:n,source:s="manual",at:i})=>{const o=normalizeLimbId(n),l=buildLimbSnapshot(e,o);return l?(e.reset(o,s),buildObserveResult(o,l,buildLimbSnapshot(e,o),"torso"===o&&syncTorsoTrauma({affModel:t,serverside:a,stage:"healthy",source:s,at:i}))):{changed:!1,traumaSynced:!1,stageChanged:!1,limb:o,before:null,after:null}},applyObservedLimbStage=({limbModel:e,affModel:t,serverside:a,limb:n,stage:s,source:i="manual",at:o})=>{const l=normalizeLimbId(n),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.setStage(l,s,i);const u=buildLimbSnapshot(e,l),d=c.stage!==u?.stage,m=!("torso"!==l||!d)&&syncTorsoTrauma({affModel:t,serverside:a,stage:u?.stage,source:i,at:o});return{changed:didLimbChange(c,u)||m,traumaSynced:m,stageChanged:d,limb:l,before:c,after:u}},xe=new Set(["char.items.add","char.items.remove","char.items.update"]),registerAdapterEvents=({register:e,options:t,queueTranslatedGmcp:a,publishPublic:n,publishPublicScoped:s,markDirty:i,flushCycle:o,outputCycle:l,startup:c,curingSetProvisioner:u,curingSetGuard:d,curingMasterSwitch:m,queueController:p,serverside:g,balanceModel:h,adapter:b,systemModel:y,affModel:v,cacheModel:S,limbModel:x,savePersistence:C})=>{e("GmcpEvent",e=>{a(e);const s=normalizeTag(e?.tag||e?.rawTag||e?.gmcp_method);!0===t.publishRawGmcp&&n(ne.RAW_GMCP,{source:"adapter-gmcp",tag:s,payload:e?.payload??e?.gmcp_args??null}),xe.has(s)||i("gmcp-buffered")}),e("PromptEvent",()=>o("prompt")),e("ForcePopulateEvent",()=>o("force")),e("SystemOutputCompleteEvent",()=>{l.markComplete()&&o("output-complete")}),e(ie.CURINGSET_READY,()=>{u?.handleBarrier()}),e(ie.STARTUP_BEGIN,()=>{c.handleFenceBegin()}),e(ie.STARTUP_COMPLETE,()=>{c.handleFenceComplete("snapshot:complete:text")}),e("QueueFiredTextEvent",e=>{e?.queueName&&p.acknowledgeFired(e.queueName)}),e("QueueSentTextEvent",e=>{const t=e?.queueId||e?.queueName||e?.queueType;t&&p.acknowledgeSent(t,e)}),e("AllQueuesClearedTextEvent",()=>{p.listQueues().forEach(e=>{p.clear(e)})}),e("CommandSeparatorChangedTextEvent",({separator:e}={})=>{const t=normalizeCommandSeparator(e);t&&(b?.setSeparator(t),y?.setSettings({commandSeparator:t},{setBaseline:!0}),C?.())}),e("BalanceStateTextEvent",e=>{const t=String(e?.id||"").trim().toLowerCase();if(!t)return;const a=String(e?.reason||e?.source||"text"),n=Number(e?.durationSeconds);if(!0!==e?.have){if(!1===e?.have){if(Number.isFinite(n)&&n>0)return void h.observeServerUse(t,n,{source:a});h.lose(t,a)}}else h.gain(t,a)}),e("CacheRiftOutTextEvent",(e={})=>{const t=S?.observeRiftOutText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-out:${t.name}`)}),e("CacheRiftInTextEvent",(e={})=>{const t=S?.observeRiftInText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-in:${t.name}`)}),e("CacheRiftFullTextEvent",(e={})=>{const t=S?.invalidateRiftSnapshot?.({source:e.source||"text-trigger"});b?.sendGmcp?.(["IRE.Rift.Request"],{source:"cache-rift-full-text"}),t&&i("text:cache-rift-resync")}),e("CacheInventoryEmptyTextEvent",(e={})=>{const t=S?.observeInventoryEmptyText?.({item:e.item,source:e.source||"text-trigger"});t?.name&&(i(`text:cache-empty:${t.name}`),b?.sendGmcp?.(["Char.Items.Inv"],{source:"cache-inventory-empty-text",item:e.item||"",name:t.name}))}),e("CacheCurativeConsumedTextEvent",(e={})=>{const t=S?.observeCurativeConsumedText?.({item:e.item,amount:e.amount,source:e.source||"text-trigger"});t?.name&&i(`text:cache-consume:${t.name}`)}),e("CacheInventoryDeltaTextEvent",(e={})=>{const t=S?.observeInventoryDeltaText?.({item:e.item,amount:e.amount,delta:e.delta,source:e.source||"text-trigger"});t?.name&&i(`text:cache-${t.delta>0?"add":"remove"}:${t.name}`)}),e("LimbDamageTextEvent",e=>{const t=applyObservedLimbHit({limbModel:x,affModel:v,serverside:g,limb:e?.limb,amount:e?.amount,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&t.stageChanged&&i(`text-limb-torso:${t.after?.stage||"unknown"}`)}),e("LimbResetTextEvent",e=>{const t=applyObservedLimbReset({limbModel:x,affModel:v,serverside:g,limb:e?.limb,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&i("text-limb-torso:healthy")}),e("ServersideStatusTextEvent",(e={})=>{"enabled"!==String(e.key||"").trim().toLowerCase()?g.parseStatusLine(e):m?.observeConfirmation(Boolean(e.value))}),e("ServersideStatusSnapshotCompleteTextEvent",()=>{g.markStartupCaptured("status")}),e("ServersideAffPrioSnapshotOpenTextEvent",e=>{g.beginObservedAffPrioritySnapshot(e?.set||"")}),e("ServersideAffPrioSnapshotCompleteTextEvent",()=>{g.completeObservedAffPrioritySnapshot()}),e("ServersideDefPrioSnapshotOpenTextEvent",e=>{g.beginObservedDefPrioritySnapshot(e?.set||"")}),e("ServersideDefPrioSnapshotCompleteTextEvent",()=>{g.completeObservedDefPrioritySnapshot()}),e("ServersideAffPrioTextEvent",e=>{if(!e?.aff)return;const t=Number(e.prio),a=g.updateObservedAffPriority(e.aff,t);if("live-confirmation"===e.source){const n="function"==typeof v?.normalizePriorityName?v.normalizePriorityName(e.aff):String(e.aff||"").toLowerCase();s(ne.SERVERSIDE_AFF_PRIORITY_SET,{id:n,priority:t,source:"live-confirmation",accepted:a},n)}}),e("ServersideDefPrioTextEvent",e=>{if(!e?.def)return;const t=String(e.def||"").toLowerCase(),a=Number(e.prio),n=g.updateObservedDefPriority(t,a);"live-confirmation"===e.source&&s(ne.SERVERSIDE_DEF_PRIORITY_SET,{id:t,priority:a,source:"live-confirmation",accepted:n},t)}),e("ServersideQueueListTextEvent",e=>{g.updateObservedQueue(e?.queue||[])}),e("ServersidePredictionsTextEvent",e=>{g.updateObservedPredictions(e?.predictions||{})}),e("ServersideCuringSetsTextEvent",e=>{g.observeCuringSets({sets:e?.sets||[],activeSet:e?.activeSet||"",used:e?.used,limit:e?.limit})}),e("ServersideCuringSetSwitchedTextEvent",e=>{d?.handleSwitched({set:e?.set||""})}),e("SnappedGotTrackableEvent",()=>{g.setTrackable("snapTrack",!0,{source:"text",label:"Snapped"}),b.setTimeout(()=>{g.setTrackable("snapTrack",!1,{source:"timer",label:"Snapped"})},8e3)})},Ce={short:{rl:"right leg",ll:"left leg",ra:"right arm",la:"left arm",h:"head",tt:"torso",c:"centre",l:"left",r:"right"},long:{"right leg":"rl","left leg":"ll","right arm":"ra","left arm":"la",head:"h",torso:"tt",centre:"c",left:"l",right:"r"}},ke=["e","w","s","n","ne","se","sw","nw","in","out","d","u"],Ae={e:"east",w:"west",s:"south",n:"north",ne:"northeast",se:"southeast",sw:"southwest",nw:"northwest",in:"in",out:"out",down:"down",d:"down",u:"up",up:"up"},Ee={e:"west",w:"east",s:"north",n:"south",ne:"southwest",se:"northwest",sw:"northeast",nw:"southeast",in:"out",out:"in",down:"up",d:"up",u:"down",up:"down"},_e={east:"e",west:"w",south:"s",north:"n",northeast:"ne",northwest:"nw",southeast:"se",southwest:"sw",in:"in",out:"out",down:"d",up:"up"},we=["Alchemist","Apostate","Bard","Blademaster","Depthswalker","Dragon","Druid","Infernal","Jester","Magi","Monk","Shikudo","Occultist","Paladin","Pariah","Priest","Psion","Runewarden","Sentinel","Serpent","Shaman","Sylvan","Unnamable","Air Elemental Lord","Earth Elemental Lord","Fire Elemental Lord","Water Elemental Lord"],normalizeClassName=(e="")=>{const t=String(e||"").trim();return t?/\bdragon\b/i.test(t)?"Dragon":we.find(e=>e.toLowerCase()===t.toLowerCase())||t:""},classesMatch=(e="",t="")=>normalizeClassName(e).toLowerCase()===normalizeClassName(t).toLowerCase(),classListIncludes=(e=[],t="")=>{const a=Array.isArray(e)?e:e?[e]:[];if(!a.length)return!0;const n=normalizeClassName(t).toLowerCase();return a.some(e=>normalizeClassName(e).toLowerCase()===n)},hasOwn$4=(e,t)=>Object.prototype.hasOwnProperty.call(e||{},t),normalizeCommandList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeStringList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizePrioritySeed=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},normalizeDefenseConfig=(e={})=>{const t=!1!==e.serverside;return deepFreeze({...deepClone$1(e),command:normalizeCommandList(e.command),bals_req:normalizeStringList(e.bals_req),bals_used:normalizeStringList(e.bals_used),blocks:deepClone$1(e.blocks||[]),skills:normalizeStringList(e.skills),opps:normalizeStringList(e.opps),serverside:t,preempt:!0===e.preempt,static:!0===e.static,clientOnly:!0===e.clientOnly,defaultPriority:normalizePrioritySeed(e.defaultPriority)})},createDefEntry=(e,t,a,n)=>({id:e,have:!1,lastChangeAt:0,order:t,seedStatic:a.static,defaultPriority:n,priorityOverride:null,command:a.command,bals_req:a.bals_req,bals_used:a.bals_used,blocks:a.blocks,skills:a.skills,opps:a.opps,serverside:a.serverside,preempt:a.preempt,static:a.static,clientOnly:a.clientOnly}),resolveDefensePriority=(e={})=>null===e.priorityOverride||void 0===e.priorityOverride?Number(e.defaultPriority??-1):Number(e.priorityOverride),matchesClass=(e=[],t="")=>!e||!e.length||(Array.isArray(t)?t.some(t=>classListIncludes(e,t)):classListIncludes(e,t)),isActiveStaticPriority=e=>{const t=Number(e);return Number.isFinite(t)&&t>0},createInitialDefenseState=({defTable:e={},defPrios:t={}}={})=>{const a=Object.keys(e),n={},s={};return a.forEach((a,i)=>{const o=normalizeDefenseConfig(e[a]),l=hasOwn$4(t,a)?normalizePrioritySeed(t[a]):o.defaultPriority;s[a]=l,n[a]=createDefEntry(a,i,o,l)}),{list:a,state:n,defaultPrios:s}},normalizeObservedDefenseId=e=>("string"==typeof e?e:String(e?.name||e?.id||e||"")).toLowerCase().replace(/\s*\(([^)]+)\)/g," $1").trim(),normalizeItemLocation=e=>String(e||"").trim().toLowerCase()||"inv",registerGmcpBridges=({registerGmcpListener:e,systemModel:t,balanceModel:a,affModel:n,defModel:s,cacheModel:i,limbModel:o,serverside:l,adapter:c,markDirty:u})=>{const requestInventoryResync=e=>{c?.sendGmcp?.(["Char.Items.Inv"],{source:e})};e(te.CHAR_VITALS,({vitals:e}={})=>{t.updateVitals(e),a.applyVitals(e),u("gmcp:vitals")}),e(te.CHAR_STATUS,({status:e}={})=>{t.updateStatus(e||{}),u("gmcp:status")}),e(te.CHAR_AFFLICTIONS_LIST,({afflictions:e}={})=>{const t=Array.isArray(e)?e:[];n.applyList(t),"function"==typeof o?.syncFromAfflictions&&"function"==typeof n?.currentSorted&&o.syncFromAfflictions(n.currentSorted(),"gmcp-list"),u("gmcp:aff-list")}),e(te.CHAR_AFFLICTIONS_ADD,({name:e}={})=>{e&&(n.got(e,{source:"gmcp-add"}),"function"==typeof o?.syncFromAfflictions&&"function"==typeof n?.currentSorted?o.syncFromAfflictions(n.currentSorted(),"gmcp-add"):o.applyAfflictionTransition(e,!0),u(`gmcp:aff-add:${e}`))}),e(te.CHAR_AFFLICTIONS_REMOVE,({name:e}={})=>{e&&(n.lose(e,{source:"gmcp-remove"}),"function"==typeof o?.syncFromAfflictions&&"function"==typeof n?.currentSorted?o.syncFromAfflictions(n.currentSorted(),"gmcp-remove"):o.applyAfflictionTransition(e,!1),l.getTransientPrioAff()===e&&l.clearPrioAff(),u(`gmcp:aff-remove:${e}`))}),e(te.CHAR_DEFENCES_LIST,({defences:e}={})=>{s.applyList(Array.isArray(e)?e:[],"gmcp-list"),u("gmcp:def-list")}),e(te.CHAR_DEFENCES_ADD,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);if(t){if(t.startsWith("parrying "))for(const e of s.list())e!==t&&e.startsWith("parrying ")&&s.get(e)?.have&&s.setHave(e,!1,"gmcp-parry-implied-remove");s.setHave(t,!0,"gmcp-add"),"mindseye"===t&&requestInventoryResync("cache-visibility-resync:mindseye"),u(`gmcp:def-add:${t}`)}}),e(te.CHAR_DEFENCES_REMOVE,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);t&&(s.setHave(t,!1,"gmcp-remove"),"blindness"===t&&requestInventoryResync("cache-visibility-resync:blindness"),u(`gmcp:def-remove:${t}`))}),e(te.IRE_RIFT_LIST,({rift:e}={})=>{i.observeRiftSnapshot?.(e||{}),u("gmcp:rift-list")}),e(te.IRE_RIFT_CHANGE,({change:e}={})=>{const t=i.observeRiftChange?.(e||{});t?.name&&u(`gmcp:rift-change:${t.name}`)}),e(te.CHAR_ITEMS_LIST,({items:e,location:a}={})=>{const n=normalizeItemLocation(a),s=Array.isArray(e)?e:[];if("inv"===n){i.observeInventorySnapshot?.(s);const toWieldedItem=e=>e?{id:e.id??null,name:String(e.name||""),icon:e.icon||null}:null;t.updateWielded("left",toWieldedItem(s.find(e=>"l"===e.attrib))),t.updateWielded("right",toWieldedItem(s.find(e=>"L"===e.attrib)))}u("gmcp:items-list")}),e(te.CHAR_ITEMS_DELTA,({inventoryDelta:e}={})=>{if(e){const a=normalizeItemLocation(e.location),n="inv"===a||"room"===a?i.observeItemDelta?.(e):null;if(n?.changed&&n.name&&u(`gmcp:room-pickup:${n.name}`),"inv"===a&&"update"===e.action){const{id:a,name:n,icon:s,attrib:i}=e,o=t.getChar().wielded;o.left?.id===a&&"l"!==i&&t.updateWielded("left",null),o.right?.id===a&&"L"!==i&&t.updateWielded("right",null),"l"===i?t.updateWielded("left",{id:a,name:n,icon:s}):"L"===i&&t.updateWielded("right",{id:a,name:n,icon:s})}}}),e(te.ROOM_INFO,({room:e,roomItems:a}={})=>{t.updateRoom(e||{}),t.setRoomItems(a||{}),u("gmcp:room-info")}),e(te.TARGET_INFO,({target:e}={})=>{t.updateTarget(e||{}),u("gmcp:target")})},normalizeBridgeSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),isSystemOutputBalance=(e={})=>"systemoutput"===normalizeBridgeSegment(e?.id),Te=Object.freeze(["balance","equilibrium"]),getCounterpartEqbalBalance=e=>{const t=normalizeBridgeSegment(e);return Te.includes(t)?"balance"===t?"equilibrium":"balance":null},buildEqbalRecoveredPayload=(e,t={})=>{const a=normalizeBridgeSegment(t?.id),n=getCounterpartEqbalBalance(a);return n&&e?.have?.(a)&&e.have(n)?{...t,id:"eqbal",have:!0,recoveredId:a,balances:{balance:Boolean(e.have("balance")),equilibrium:Boolean(e.have("equilibrium"))}}:null},getRecoveredBalanceSeconds=(e={})=>{const t=Number(e?.durationMs);if(Number.isFinite(t)&&t>0)return t/1e3;const a=Number(e?.lastLostAtMs),n=Number(e?.lastGotAtMs);return Number.isFinite(a)&&Number.isFinite(n)&&n>a?(n-a)/1e3:Number(e?.durationSeconds??e?.baseDurationSeconds)},formatBalanceNotice=(e={})=>{const t=String(e?.id||"").trim(),a=getRecoveredBalanceSeconds(e);return t?!Number.isFinite(a)||a<=0?t:`${t}(${a.toFixed(2)})`:""},shouldEchoPriorityChange=(e={})=>["manual","public-api"].includes(String(e?.source||"").toLowerCase()),formatPriorityNotice=(e={},t)=>{const a=String(t||"").trim(),n=Number(e?.priority??e?.value),s=normalizeBridgeSegment(e?.domain),i=s&&"keepup"!==s?` (${s})`:!0===e?.static?" (static)":"";return a?Number.isFinite(n)?`${a} ${n}${i}`:`${a}${i}`:""},Pe=Object.freeze({RuleAdded:ne.RULE_ADDED,RuleRemoved:ne.RULE_REMOVED,RuleEnabled:ne.RULE_ENABLED,RuleDisabled:ne.RULE_DISABLED,RulePackLoaded:ne.RULE_PACK_LOADED,RulePackUnloaded:ne.RULE_PACK_UNLOADED,RuleOrderChanged:ne.RULE_ORDER_CHANGED}),Me=Object.freeze({hp:{topic:ne.SYSTEM_HEALTH_CHANGED,maxKey:"maxhp"},mp:{topic:ne.SYSTEM_MANA_CHANGED,maxKey:"maxmp"},rage:{topic:ne.SYSTEM_RAGE_CHANGED},bleed:{topic:ne.SYSTEM_BLEED_CHANGED}}),buildVitalResourcePayload=(e={},t,{maxKey:a}={})=>{const n=e.changedFields?.[t];if(!n)return null;const s=n.current,i=n.previous;return{max:a?e.current?.[a]:s,current:s,previous:i,diff:s-i}},publishVitalResourceTopics=(e,t={})=>{Object.entries(Me).forEach(([a,n])=>{const s=buildVitalResourcePayload(t,a,n);s&&e(n.topic,s)})},registerSystemModelBridge=({registerModelListener:e,publishPublic:t,syncDebugMode:a,systemModel:n,serverside:s,handleVitalsSideEffects:i})=>{e(n.onChange((e,n={})=>{switch(e){case"VitalsUpdated":t(ne.SYSTEM_VITALS_CHANGED,n),publishVitalResourceTopics(t,n),i();break;case"StatusUpdated":t(ne.SYSTEM_STATUS_CHANGED,n);break;case"ClassChanged":s.setBaselineFromRuntime(),t(ne.SYSTEM_CLASS_CHANGED,n);break;case"TargetUpdated":t(ne.SYSTEM_TARGET_CHANGED,n);break;case"RoomUpdated":t(ne.SYSTEM_ROOM_CHANGED,n);break;case"RoomItemsUpdated":t(ne.SYSTEM_ROOM_ITEMS_CHANGED,n);break;case"RuntimeStateChanged":t(ne.SYSTEM_RUNTIME_CHANGED,n);break;case"PauseStateChanged":t(ne.SYSTEM_PAUSE_CHANGED,n),t(n.paused?ne.SYSTEM_PAUSED:ne.SYSTEM_UNPAUSED,n);break;case"SettingsChanged":n.changedKeys?.includes("debug")&&a(),t(ne.SYSTEM_SETTINGS_CHANGED,n);break;case"BaselineIntentChanged":t(ne.SYSTEM_BASELINE_CHANGED,n);break;case"WieldedUpdated":t(ne.SYSTEM_WIELDED_CHANGED,n);break;case"MountUpdated":t(ne.SYSTEM_MOUNT_CHANGED,n);break;case"DeathDetected":t(ne.SYSTEM_DEATH_DETECTED,n)}}))},registerAfflictionModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,systemModel:s,affModel:i,serverside:o})=>{e(i.onChange((e,l={})=>{switch("AffGot"!==e&&"AffLost"!==e||"aeon"!==l?.name||s.setRuntime({aeonLocked:i.haveAff("aeon")}),e){case"AffGot":a(ne.AFF_GOT,l,l.name),n.publish("affGot",l.name,{...l,action:"got"});break;case"AffLost":a(ne.AFF_LOST,l,l.name),n.publish("affLost",l.name,{...l,action:"lost"}),o.getTransientPrioAff()===l.name&&o.clearPrioAff();break;case"AffStackChanged":a(ne.AFF_STACK_CHANGED,l,l.name);break;case"AffPriorityChanged":t(ne.AFF_PRIORITY_CHANGED,l),shouldEchoPriorityChange(l)&&n.publish("priority",formatPriorityNotice(l,l.name),{...l,action:"set",subject:"aff"})}}))},registerDefenseModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,defModel:s})=>{e(s.onChange((e,s={})=>{switch(e){case"DefGot":a(ne.DEF_GOT,s,s.id),n.publish("defGot",s.id,{...s,action:"got"});break;case"DefLost":a(ne.DEF_LOST,s,s.id),n.publish("defLost",s.id,{...s,action:"lost"});break;case"DefPriorityChanged":t(ne.DEF_PRIORITY_CHANGED,s),shouldEchoPriorityChange(s)&&n.publish("priority",formatPriorityNotice(s,s.id),{...s,action:"set",subject:"def"})}}))},registerBalanceModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,balanceModel:s})=>{e(s.onChange((e,i={})=>{switch(e){case"BalanceGot":a(ne.BALANCE_GOT,i,i.id);{const e=buildEqbalRecoveredPayload(s,i);e&&t(ne.EQBAL_GOT,e)}isSystemOutputBalance(i)||n.publish("balanceRecovered",formatBalanceNotice(i),{...i,action:"got"});break;case"BalanceLost":a(ne.BALANCE_LOST,i,i.id),n.publish("balanceLost",i.id,{...i,action:"lost"});break;case"BalanceReset":a(ne.BALANCE_RESET,i,i.id);break;case"BalanceDurationObserved":a(ne.BALANCE_DURATION_OBSERVED,i,i.id);break;case"BalanceLossTimerRestarted":t(ne.BALANCE_TIMER_RESTARTED,i)}}))},registerLimbModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:a,limbModel:n})=>{e(n.onChange((e,n={})=>{switch(e){case"LimbHit":a(ne.LIMB_HIT,n,n.limb);break;case"LimbReset":a(ne.LIMB_RESET,n,n.limb);break;case"LimbStageChanged":a(ne.LIMB_STAGE_CHANGED,n,n.limb);break;case"LimbDecay":t(ne.LIMB_DECAY,n)}}))},registerCacheModelBridge=({registerModelListener:e,publishPublic:t,cacheModel:a})=>{e(a.onChange((e,a={})=>{switch(e){case"CacheAmountChanged":t(ne.CACHE_AMOUNT_CHANGED,a);break;case"CacheInventoryListApplied":t(ne.CACHE_INVENTORY_LIST,a);break;case"CacheRiftListApplied":t(ne.CACHE_RIFT_LIST,a);break;case"CacheDesiredPrecacheChanged":t(ne.CACHE_PRECACHE_CHANGED,a)}}))},registerQueueModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,queueController:s})=>{e(s.onChange((e,i={})=>{switch(e){case"QueueFlushed":t(ne.QUEUE_FLUSHED,i),n.publish("output",`Queue sent: ${i.queueId}`,i);break;case"QueueDeferred":t(ne.QUEUE_DEFERRED,i);break;case"QueueUpdated":t(ne.QUEUE_UPDATED,i);break;case"QueueCleared":t(ne.QUEUE_CLEARED,i);break;case"QueueSentAcknowledged":{const e=s.getQueue(i.queueId)?.name||i.queueName||i.queueId;a(ne.QUEUE_SENT,{...i,queueName:e},e);break}case"QueueFiredAcknowledged":{const e=s.getQueue(i.queueId)?.name||i.queueId;t(ne.QUEUE_FIRED_ACK,i),a(ne.QUEUE_FIRED,{...i,queueName:e},e);break}}}))},registerServersideModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,serverside:s,runtimeControl:i,systemModel:o,onServersideDirty:l})=>{let c=new Set;const syncRuleSuspendPause=(e=[])=>{c=new Set((e||[]).filter(Boolean).map(e=>String(e)));const t=c.size>0;o?.getRuntime?.().rulesSuspended!==t&&(o?.setRuntime?.({rulesSuspended:t}),i?.syncCuringState?.({source:"rule-suspend"}))},addRuleSuspend=e=>{e&&!c.has(String(e))&&syncRuleSuspendPause([...c,String(e)])},removeRuleSuspend=e=>{if(!e||!c.has(String(e)))return;const t=new Set(c);t.delete(String(e)),syncRuleSuspendPause([...t])};e(s.onChange((e,s={})=>{const i=Pe[e];if(i)t(i,s);else switch(e){case"TrackableGot":n.publish("trackableGot",s.label||s.name,{...s,action:"got"});break;case"TrackableLost":n.publish("trackableLost",s.label||s.name,{...s,action:"lost"});break;case"ServersideDirty":l?.(s),t(ne.SERVERSIDE_DIRTY,s);break;case"ServersideEvaluated":syncRuleSuspendPause(s.suspendingRules||[],s.source),t(ne.SERVERSIDE_EVALUATED,s);break;case"RuleSuspendActivated":addRuleSuspend(s.id);break;case"RuleSuspendDeactivated":removeRuleSuspend(s.id);break;case"RuleActivated":s.suspendsCuring&&addRuleSuspend(s.id),a(ne.RULE_ACTIVATED,s,s.id);break;case"RuleDeactivated":s.suspendsCuring&&removeRuleSuspend(s.id),a(ne.RULE_DEACTIVATED,s,s.id)}}))},registerModelEventBridges=({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,syncDebugMode:s,systemModel:i,affModel:o,defModel:l,balanceModel:c,cacheModel:u,limbModel:d,queueController:m,serverside:p,runtimeControl:g,handleVitalsSideEffects:h,onServersideDirty:b})=>{registerSystemModelBridge({registerModelListener:e,publishPublic:t,syncDebugMode:s,systemModel:i,serverside:p,handleVitalsSideEffects:h}),registerAfflictionModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,systemModel:i,affModel:o,serverside:p}),registerDefenseModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,defModel:l}),registerBalanceModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,balanceModel:c}),registerLimbModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:a,limbModel:d}),registerCacheModelBridge({registerModelListener:e,publishPublic:t,cacheModel:u}),registerQueueModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,queueController:m}),registerServersideModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:a,noticeCenter:n,serverside:p,runtimeControl:g,systemModel:i,onServersideDirty:b})},De="Flying above ",Re=new Set(["dragon","air elemental lord","earth elemental lord","fire elemental lord","water elemental lord"]),registerCrossModelBridges=({registerModelListener:e,systemModel:t,defModel:a})=>{e(t.onChange((e,t={})=>{if("RoomUpdated"===e){const e=String(t?.current?.name||"").startsWith(De);return void a.setHave("flying",e,"room-info")}"ClassChanged"===e&&Re.has(String(t?.class||"").toLowerCase())&&a.setHave("mounted",!1,"class-change")}))},createRuntimeEventWiring=({adapter:e,internalEvents:t})=>{let a=[];const addUnsubscriber=e=>{"function"==typeof e&&a.push(e)},dispose=()=>{a.forEach(e=>{try{e()}catch(t){console.error("nexSys4 unsubscribe failure",t)}}),a=[]};return{attach:({options:a,queueTranslatedGmcp:n,publishPublic:s,publishPublicScoped:i,noticeCenter:o,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:m,cacheModel:p,limbModel:g,queueController:h,serverside:b,markDirty:y,invalidateOutput:v,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:k,curingSetGuard:A,curingMasterSwitch:E,runtimeControl:_,savePersistence:w})=>{dispose();const register=(t,a)=>{addUnsubscriber(e.on(t,a))},registerModelListener=e=>{addUnsubscriber(e)},registerGmcpListener=(e,a)=>{registerModelListener(t.on(e,a))};registerAdapterEvents({register,options:a,queueTranslatedGmcp:n,publishPublic:s,publishPublicScoped:i,markDirty:y,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:k,curingSetGuard:A,curingMasterSwitch:E,runtimeControl:_,queueController:h,serverside:b,balanceModel:m,adapter:e,systemModel:c,affModel:u,cacheModel:p,limbModel:g,savePersistence:w}),register("OutboundCommandsEvent",(e={})=>{if("output-cycle"!==e?.context?.source)return;const t=Array.isArray(e.commands)?e.commands.filter(Boolean).map(e=>String(e)):[];if(!t.length)return;const a=c.getSettings().commandSeparator||"|";o.publish("output",`(${t.join(a)})`,{action:"commands",commands:t,source:e?.context?.cycleSource||e?.context?.source||"output-cycle"})}),registerGmcpBridges({registerGmcpListener,systemModel:c,balanceModel:m,affModel:u,defModel:d,cacheModel:p,limbModel:g,serverside:b,adapter:e,markDirty:y}),registerModelEventBridges({registerModelListener,publishPublic:s,publishPublicScoped:i,noticeCenter:o,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:m,cacheModel:p,limbModel:g,queueController:h,serverside:b,runtimeControl:_,handleVitalsSideEffects:_.handleVitalsSideEffects,onServersideDirty:v}),registerCrossModelBridges({registerModelListener,systemModel:c,defModel:d})},dispose}},createRuntimeControlApi=({systemModel:e,serverside:t,queueController:a,noticeCenter:n,markDirty:s,onResume:i,dispatchCommands:o,curingMasterSwitch:l})=>{let c=!1;const buildSystemEventCommand=e=>e?`echo SystemEvent ${e}`:null,syncServersideCuring=(e,t={})=>{if("function"!=typeof o)return[];const a=e?"curing off":"curing on";if(e&&!1===l?.getObservedEnabled())return[];if(!e&&!0===l?.getObservedEnabled())return[];l?.markExpected(a);const n=buildSystemEventCommand(t.completionEvent);return o(n?[a,n]:[a],{source:t.source||(e?"runtime-pause":"runtime-unpause")})},syncCuringState=(t={})=>{const a=e.getRuntime();return syncServersideCuring(a.paused||a.rulesSuspended,t)},setPaused=(t,n={})=>{const o=Boolean(t),l=e.getRuntime();return l.paused===o?(n.forceCuringSync&&syncCuringState(n),!1):!(!o&&!isRuntimeReadyPhase(l.phase))&&(e.setRuntime({paused:o}),s(o?"paused":"unpaused"),syncCuringState(n),o||(a.flushDeferred(),i?.(n.source||"unpause")),!0)},ensureSlowModeRule=()=>{t.lifecycle.add({id:"runtime-slow-mode",pack:"runtime",evaluate:()=>e.getRuntime().slowMode?{settings:{sipHealthAt:30,sipManaAt:20,mossHealthAt:20,mossManaAt:20,batch:!1}}:null})};return{setPaused,syncCuringState,setSlowMode(t){const a=Boolean(t);return e.getRuntime().slowMode!==a&&(e.setRuntime({slowMode:a}),ensureSlowModeRule(),s(a?"slow-on":"slow-off"),!0)},handleVitalsSideEffects(){const t=e.getChar().dead;t&&!c&&(setPaused(!0,{source:"death-detected"}),n.publish("output","Death detected. Pausing nexSys runtime.",{source:"death-detected"})),!t&&c&&(setPaused(!1,{source:"death-recover"}),n.publish("output","Resurrection detected. Resuming nexSys runtime.",{source:"death-recover"})),c=t}}},Oe="curing on",Ne="curing off",createCuringMasterSwitch=({setPaused:e,noticeCenter:t})=>{let a=null,n=null;return{getObservedEnabled:()=>a,markExpected(e){const t=String(e||"").trim().toLowerCase();return(t===Oe||t===Ne)&&(n=t,!0)},observeConfirmation(s){const i=Boolean(s);return a=i,n===(i?Oe:Ne)?(n=null,{attributed:!0,enabled:i}):(n=null,i?e(!1,{source:"user-curing-on"}):(e(!0,{source:"user-curing-off"}),t.publish("output","Manual `curing off` detected. nexSys is paused and will not re-enable curing; send `curing on` to resume.",{source:"user-curing-off"})),{attributed:!1,enabled:i})}}},createCuringSetGuard=({serverside:e,systemModel:t,noticeCenter:a})=>{let n=!1,s=!1;const isRunningSession=()=>isRuntimeReadyPhase(t.getRuntime().phase),markNexsysSwitch=()=>{s=!0},unload=({remove:t=!0}={})=>{const a=e.getCuringSets?.()??{},s=(a.sets||[]).map(e=>normalizeSetName(e)).filter(Boolean),i=normalizeSetName(a.priorSet),o=i&&"nexsys4-default"!==i&&s.includes(i)?i:s.find(e=>e&&"nexsys4-default"!==e)||"",l=[];o&&(markNexsysSwitch(),e.switchCuringSet(o),l.push(`curingset switch ${o}`));const c=t||!o;return c&&(e.deleteCuringSet(ce),l.push(`curingset delete ${ce}`)),n=!1,{restoreTarget:o,removed:c,commands:l}};return{handleSwitched:({set:t}={})=>{const i=normalizeSetName(t);if(!i)return;const o=s;s=!1,e.observeActiveCuringSet?.(i),isRunningSession()&&("nexsys4-default"!==i?o||n||(n=!0,a.publish("output",`nexSys paused — curing set is now ${i}; nexSys operates only in ${ce} and will resume when you switch back.`,{source:"curingset-foreign",force:!0})):n&&(n=!1,a.publish("output",`nexSys resumed — curing set is back to ${ce}.`,{source:"curingset-foreign-resume",force:!0})))},markNexsysSwitch,unload,isForeignPaused:()=>n}},isRecord$1=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),isSupportedPersistenceSchemaVersion=e=>2===Number(e),createEmptyPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:{},affSettings:{defaults:{}},defSettings:{defaults:{},static:{}},cacheSettings:{precache:{}}}),Ie=t.z.record(t.z.string(),t.z.unknown()).catch(()=>({})),Le=t.z.object({schemaVersion:t.z.coerce.number().refine(isSupportedPersistenceSchemaVersion),systemSettings:Ie,affSettings:t.z.object({defaults:Ie}).catch(()=>({defaults:{}})),defSettings:t.z.object({defaults:Ie,static:Ie}).catch(()=>({defaults:{},static:{}})),cacheSettings:t.z.object({precache:Ie}).catch(()=>({precache:{}}))}),normalizePersistenceSnapshot=(e,{assumeCurrentVersion:t=!1}={})=>{const a=t&&isRecord$1(e)&&null==e.schemaVersion?{...e,schemaVersion:2}:e,n=Le.safeParse(a);return n.success?n.data:createEmptyPersistenceSnapshot()},createRuntimePersistenceApi=({persistence:e,systemModel:t,affModel:a,defModel:n,cacheModel:s,serverside:i,syncDebugMode:o,markDirty:l})=>{const c=0,u=26,d={hasStoredSnapshot:!1,sourceKey:e?.key||"nexSys4Settings"},sanitizeSystemSettings=(e={})=>{const{customPromptEnabled:t,prompt:a,...n}=e||{},s=normalizeCommandSeparator(n.commandSeparator);if(s?n.commandSeparator=s:delete n.commandSeparator,n.ss&&"object"==typeof n.ss){const{enabled:e,...t}=n.ss;n.ss=t}return n},normalizePersistedDefPriority=e=>{const t=Number(e);return Number.isInteger(t)?t<c?c:t>u?u:t:c},buildAffDefaultMap=()=>a.list().reduce((e,t)=>(e[t]=a.getDefaultPriority(t),e),{}),countablePriorityNameSet=()=>new Set(a.getCountablePriorityNames?.()||[]),buildDefDefaultMap=()=>Object.entries(n.getDefaultPriorities()).reduce((e,[t,a])=>(e[t]=normalizePersistedDefPriority(a),e),{}),buildDefStaticOverrideMap=()=>({...n.getStaticOverrides?.()||{}}),buildCacheDefaultSnapshot=()=>s.getDesiredPrecache(),isValidServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},normalizeStoredAffDefaults=(e={})=>{const t=countablePriorityNameSet();return Object.entries(e).reduce((e,[n,s])=>{const i="function"==typeof a.normalizePriorityName?a.normalizePriorityName(n):String(n||"").trim().toLowerCase();if(!i)return e;if(t.has(i))return e;const o=a.getDefaultPriority(i);return isValidServersideAffPriority(o)&&!isValidServersideAffPriority(s)?(e[i]=o,e):(e[i]=s,e)},{})},normalizeStoredDefPriorities=(e={})=>Object.entries(e).reduce((e,[t,a])=>(e[t]=normalizePersistedDefPriority(a),e),{}),normalizeStoredDefStatics=(e={})=>Object.entries(e).reduce((e,[t,a])=>(!0!==a&&!1!==a||(e[t]=a),e),{}),buildPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:sanitizeSystemSettings(t.getSettings()),affSettings:{defaults:buildAffDefaultMap()},defSettings:{defaults:buildDefDefaultMap(),static:buildDefStaticOverrideMap()},cacheSettings:{precache:buildCacheDefaultSnapshot()}}),applyStoredSnapshot=(e={})=>{const l=sanitizeSystemSettings(e.systemSettings||{});t.setSettings(l,{setBaseline:!0}),t.setBaselineIntent({ss:l.ss||{}});const c=e.affSettings?.defaults;c&&Object.entries(normalizeStoredAffDefaults(c)).forEach(([e,t])=>{a.setDefaultPriority(e,t,"persistence")});const u=normalizeStoredDefStatics(e.defSettings?.static);Object.entries(u).forEach(([e,t])=>{n.setStatic(e,t,"persistence")});const d=normalizeStoredDefPriorities(e.defSettings?.defaults);Object.entries(d).forEach(([e,t])=>{n.setDefaultPriority(e,t,"persistence")}),e.cacheSettings?.precache&&s.setDesiredPrecache(e.cacheSettings.precache),i.setBaselineFromRuntime(),o()},loadStoredSnapshot=()=>"function"==typeof e.read?e.read():{key:e?.key||"nexSys4Settings",exists:!1,snapshot:e.load()};return{buildPersistenceSnapshot,loadPersistence(){const{key:t,exists:a,snapshot:n}=loadStoredSnapshot();return d.hasStoredSnapshot=Boolean(a),d.sourceKey=t||e?.key||"nexSys4Settings",applyStoredSnapshot(n),{key:d.sourceKey,exists:d.hasStoredSnapshot,snapshot:n}},seedBaselineFromObservedStartup({skipObservedAdoption:e=!1}={}){if(d.hasStoredSnapshot)return!1;if(e)return!1;const s=i.getObserved?.()||{},l=sanitizeSystemSettings({ss:s.settings||{}});Object.keys(l).length&&t.setSettings(l,{setBaseline:!0});const c=countablePriorityNameSet();return Object.entries(s.affPriorities||{}).forEach(([e,t])=>{c.has(String(e||"").toLowerCase())||isValidServersideAffPriority(t)&&a.setDefaultPriority(e,t,"startup-observed-baseline")}),Object.entries(s.defPriorities||{}).forEach(([e,t])=>{n.get(e)&&n.setDefaultPriority(e,normalizePersistedDefPriority(t),"startup-observed-baseline")}),i.setBaselineFromRuntime(),o(),!0},savePersistence(){const t=buildPersistenceSnapshot();return e.save(t),i.setBaselineFromRuntime(),l("persistence-save"),t}}},evaluateBlockCondition=(e,t)=>Array.isArray(e)?e.every(e=>t(e)):t(e),isBlocked=(e=[],t)=>e.some(e=>evaluateBlockCondition(e,t)),isActiveDefensePriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=25},createDefensePlanner=({defModel:e,balanceModel:t,affModel:a,systemModel:n})=>({plan:({includeStaticIds:s=[]}={})=>{const i=n.getClass(),o=new Set(s),l=e.list().map(t=>e.get(t)).filter(Boolean).map(t=>({entry:t,priority:e.getPriority(t.id)})).sort((e,t)=>e.priority!==t.priority?e.priority-t.priority:e.entry.order-t.entry.order),c=new Set,u={serverside:[],client:[]};return l.forEach(({entry:n,priority:s})=>{if(!isActiveDefensePriority(s)||c.has(n.id)||n.have)return;if(!e.isAvailableForClass(n.id,i))return;if(n.static&&!o.has(n.id))return;if(isBlocked(n.blocks,e=>a.haveAff(e)))return;if(!n.bals_req.every(e=>t.have(e)))return;n.opps.forEach(e=>c.add(e));const l=n.serverside?u.serverside:u.client;n.command.forEach(e=>{l.push({source:"defense",defense:n.id,command:e,prio:s,serverside:n.serverside,preempt:n.preempt,static:n.static})})}),{serverside:u.serverside,client:u.client,all:[...u.serverside,...u.client]}}}),dedupeCommandIntents=(e=[])=>{const t=new Map,a=[];return e.forEach(e=>{const n=e?.command,s=t.get(n);if(s)return void(!0===e?.requiresCompletion&&(s.requiresCompletion=!0));const i={...e};t.set(n,i),a.push(i)}),a},createOutputPlanner=({systemModel:e,serverside:t,defensePlanner:a,precachePlanner:n})=>({plan({source:s="prompt",injectedCommands:i=[],suppressedServersideCommands:o=[]}={}){const l=e.getRuntime(),c=t.evaluate({emitCommands:!1,source:s}),u=o.length?c.commands.filter(e=>!o.includes(e)):c.commands,d=t.getStaticDefRequests(),m=[];a.plan({includeStaticIds:Object.keys(d)}).client.forEach(e=>m.push(e)),l.slowMode||l.aeonLocked||n.plan().forEach(e=>m.push(e)),u.forEach(e=>{m.push({source:"serverside",command:e,requiresCompletion:!0})}),i.forEach(e=>{m.push({source:"injected",command:e})});const p=dedupeCommandIntents(m);return{intents:p,commands:p.map(e=>e.command),serversideCommands:u}}}),createPrecachePlanner=({cacheModel:e})=>({plan:()=>e.getPrecacheCommands().map(e=>({source:"precache",command:e,requiresCompletion:!0}))}),createQueueState=()=>Object.entries(j).reduce((e,[t,a])=>(e[t]={...deepClone$1(a),id:t,items:[],prepend:[],pending:!1,lastSignature:"",deferred:!1},e),{}),splitCommandValue=(e,t="|")=>{const a=String(t||"|")||"|";return String(e).split(a).map(e=>e.trim()).filter(Boolean)},normalizeCommands=(e,t="|")=>e?Array.isArray(e)?e.flatMap(e=>null==e?[]:splitCommandValue(e,t)).filter(Boolean):splitCommandValue(e,t):[],hasQueuedItems=e=>e.items.length>0||e.prepend.length>0,buildLogicalCommands=e=>[`echo SystemEvent ${e.name}QueueFired`,...e.pre,...e.prepend,...e.items,...e.post].filter(Boolean),clearQueueState=e=>{e.items=[],e.prepend=[],e.pending=!1,e.lastSignature="",e.deferred=!1},resolveQueueId=(e,t)=>{if(e[t])return t;const a=String(t||"").replace(/QueueFired$/i,"").toLowerCase();return Object.keys(e).find(t=>{const n=e[t];return n.name.toLowerCase()===a||n.type.toLowerCase()===a})||null},hasLocalQueueState=(e={})=>(e.items||[]).length>0||(e.prepend||[]).length>0||e.pending||e.deferred||Boolean(e.lastSignature),clearLocalQueueState=e=>{if(!e)return!1;const t=hasLocalQueueState(e);return clearQueueState(e),t},markQueueDeferred=e=>{if(!e)return!1;const t=!e.deferred||!e.pending;return e.deferred=!0,e.pending=!0,t},markQueueAwaitingAck=(e,t)=>{if(!e)return!1;const a=e.lastSignature!==t||!0!==e.pending||!1!==e.deferred;return e.lastSignature=t,e.pending=!0,e.deferred=!1,a},createQueueMutationApi=({state:e,emit:t,flush:a,getSeparator:n,markStateChanged:s=()=>{}})=>{const resolveSeparator=()=>("function"==typeof n?n():"|")||"|",haveSameCommands=(e=[],t=[])=>e.length===t.length&&e.every((e,a)=>e===t[a]),clear=(a,n={})=>{const i=e[a];return!!i&&(!!clearLocalQueueState(i)&&(s(a),t("QueueCleared",{queueId:a,remote:Boolean(n.remote),command:n.command||null}),!0))};return{add(n,i,o={}){const l=e[n];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;return c.forEach(e=>{l.items.includes(e)&&!o.allowDuplicate||(l.items.push(e),u=!0)}),!!u&&(s(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(l)}),!1!==o.autoFlush&&a(n),!0)},addClear(n,i,o={}){const l=e[n];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());return!(!c.length||haveSameCommands(l.items,c))&&(l.items=c,s(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(l)}),!1!==o.autoFlush&&a(n),!0)},prepend(n,i,o={}){const l=e[n];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;for(let e=c.length-1;e>=0;e-=1){const t=c[e];l.prepend.includes(t)&&!o.allowDuplicate||(l.prepend.unshift(t),u=!0)}return!!u&&(s(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(l)}),!1!==o.autoFlush&&a(n),!0)},clear,setPreCommands(a,n=[]){const i=e[a];if(!i)return!1;const o=normalizeCommands(n,resolveSeparator());return!haveSameCommands(i.pre,o)&&(i.pre=o,s(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(i)}),!0)},setPostCommands(a,n=[]){const i=e[a];if(!i)return!1;const o=normalizeCommands(n,resolveSeparator());return!haveSameCommands(i.post,o)&&(i.post=o,s(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(i)}),!0)}}},chunkCommands=(e=[],t=20)=>{const a=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],n=Math.max(1,Number(t||20)),s=[];for(let i=0;i<a.length;i+=n)s.push(a.slice(i,i+n));return s},chunkCommandsWithTrailing=(e=[],{maxEntries:t=20,trailing:a=[]}={})=>{const n=chunkCommands(e,t),s=chunkCommands(a,t).flat();if(!s.length)return n;if(!n.length)return chunkCommands(s,t);const i=n[n.length-1];return i.length+s.length<=Math.max(1,Number(t||20))?(i.push(...s),n):[...n,...chunkCommands(s,t)]},createQueueFlushApi=({state:e,emit:t,send:a,getRuntimeState:n,getSeparator:s,maxEntriesPerSubmission:i,onQueueFired:o,markStateChanged:l=()=>{}})=>{const buildRemoteClearCommand=e=>`clearqueue ${e.type}`,buildStackPlan=(e=[])=>({type:"stackPlan",commands:e.filter(Boolean).map(e=>String(e))}),markExcludedQueuesCleared=(t=[])=>{t.forEach(t=>{const a=e[t];a&&clearLocalQueueState(a)&&l(t)})},deferQueue=(e,a)=>(markQueueDeferred(a)&&l(e),t("QueueDeferred",{queueId:e,queue:deepClone$1(a)}),[]),flush=(o,c={})=>{const u=e[o];if(!u||!hasQueuedItems(u))return[];const d=n?n():{paused:!1,phase:se.RUNNING,settings:{}};if(!isRuntimeReadyPhase(d.phase))return deferQueue(o,u);const m=Boolean(d.settings?.queueWhilePaused);if((d.paused||d.rulesSuspended)&&!m)return deferQueue(o,u);const p=buildLogicalCommands(u),g=p.join("");if(!c.force&&g===u.lastSignature)return[];const h=[],b=[];u.exclusions.forEach(t=>{const a=e[t];a&&hasQueuedItems(a)&&(h.push(buildRemoteClearCommand(a)),b.push(t))});const y="function"==typeof s?s():"|",v=chunkCommands(p,Math.max(1,i-h.length)).map((e,t)=>{const a=`queue ${0===t?"addclear":"add"} ${u.type} ${e.join(y)}`;return t>0||!h.length?buildStackPlan([a]):buildStackPlan([...h,a])});return markQueueAwaitingAck(u,g)&&l(o),markExcludedQueuesCleared(b),a(v,{source:"queue-controller",queueId:o,excludedIds:b}),t("QueueFlushed",{queueId:o,plans:v,signature:g}),v};return{flush,clearQueue:n=>{const s=e[n];if(!s)return!1;const i=buildRemoteClearCommand(s);clearLocalQueueState(s)&&l(n),t("QueueCleared",{queueId:n,remote:!0,command:i});const o=[buildStackPlan([i])];return a(o,{source:"queue-controller",queueId:n,remote:!0,action:"clear-queue"}),o},flushDeferred(){const t=[];return Object.keys(e).forEach(a=>{e[a].deferred&&flush(a,{force:!0}).length&&t.push(a)}),t},flushAll(){const t=[];return Object.keys(e).forEach(e=>{const a=flush(e);a.length&&t.push({queueId:e,plans:a})}),t},acknowledgeSent(a,n={}){const s=resolveQueueId(e,a);if(!s)return!1;const i=e[s];return t("QueueSentAcknowledged",{...n,queueId:s,queueType:i?.type||n.queueType||""}),!0},acknowledgeFired(a){const n=resolveQueueId(e,a);if(!n)return!1;const s=e[n],i=s?deepClone$1(s):null;return clearLocalQueueState(e[n])&&l(n),o?.({queueId:n,queue:i}),t("QueueFiredAcknowledged",{queueId:n}),!0}}},createQueueController=({send:e,getRuntimeState:t,getSeparator:a,maxEntriesPerSubmission:n=20,onQueueFired:s}={})=>{const i=new Set,o=createQueueState();let l=0;const c=new Map,markStateChanged=e=>{l+=1,e&&c.set(e,(c.get(e)??0)+1)},emit=(e,t)=>{i.forEach(a=>a(e,t))},buildQueueSnapshot=(e={})=>({id:e.id,name:e.name,type:e.type,pre:[...e.pre||[]],post:[...e.post||[]],exclusions:[...e.exclusions||[]],items:[...e.items||[]],prepend:[...e.prepend||[]],pending:Boolean(e.pending),lastSignature:e.lastSignature||"",deferred:Boolean(e.deferred)}),u=new Map,getQueueSnapshot=e=>o[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>c.get(e)??0,buildSnapshot:()=>buildQueueSnapshot(o[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>l,buildSnapshot:()=>Object.keys(o).reduce((e,t)=>(e[t]=getQueueSnapshot(t),e),{})}),m=createQueueFlushApi({state:o,emit,send:e,getRuntimeState:t,getSeparator:a,maxEntriesPerSubmission:n,onQueueFired:s,markStateChanged}),p=createQueueMutationApi({state:o,emit,flush:m.flush,getSeparator:a,markStateChanged});return{onChange:e=>(i.add(e),()=>i.delete(e)),listQueues:()=>Object.keys(o),getQueue:e=>getQueueSnapshot(e),snapshot:()=>d(),add:p.add,addClear:p.addClear,prepend:p.prepend,clear:p.clear,clearQueue:m.clearQueue,flush:m.flush,flushAll:m.flushAll,flushDeferred:m.flushDeferred,acknowledgeSent:m.acknowledgeSent,acknowledgeFired:m.acknowledgeFired,setPreCommands:p.setPreCommands,setPostCommands:p.setPostCommands}},normalizeRule=(e,t="runtime")=>{if(!e?.id)throw new Error("Rule must include an id");if("function"!=typeof e.evaluate)throw new Error(`Rule "${e.id}" must expose evaluate(context)`);const a=Array.isArray(e.tags)?e.tags.map(e=>String(e).trim().toLowerCase()).filter(Boolean):[];return{id:String(e.id),enabled:!1!==e.enabled,terminal:!0===e.terminal,pack:e.pack||t,tags:a,meta:deepClone$1(e.meta||{}),evaluate:e.evaluate}},stripMasterSwitchSetting=(e={})=>{const{enabled:t,...a}=e||{};return a},mergeOverlay=(e,t={})=>t?(["affPriorities","defPriorities","curePriorities","settings","predictions"].forEach(a=>{if(!t[a])return;const n="settings"===a?stripMasterSwitchSetting(t[a]):t[a];e[a]={...e[a]||{},...n}}),void 0!==t.prioAff&&(e.prioAff=t.prioAff),Array.isArray(t.manualQueue)&&(e.manualQueue=[...t.manualQueue]),t.commands?.length&&(e.commands=[...e.commands||[],...t.commands]),e):e,createEmptyOverlay=()=>({affPriorities:{},defPriorities:{},curePriorities:{},settings:{},predictions:{},commands:[],prioAff:void 0,manualQueue:void 0}),diffRuleActivity=(e,t)=>{const a=[];return e.forEach((e,n)=>{t.has(n)||a.push({...e,from:!0,to:!1})}),t.forEach((t,n)=>{e.has(n)||a.push({...t,from:!1,to:!0})}),a},diffRuleSuspension=(e,t)=>{const a=[];return e.forEach((e,n)=>{e.suspendsCuring&&!t.get(n)?.suspendsCuring&&a.push({...e,from:!0,to:!1})}),t.forEach((t,n)=>{t.suspendsCuring&&!e.get(n)?.suspendsCuring&&a.push({...t,from:!1,to:!0})}),a},createRuleRegistry=(e=[])=>{const t=[],a=new Set,n=new Map,emit=(e,t)=>{a.forEach(a=>{try{a(e,t)}catch(n){console.error("nexSys4 rule registry listener failed",{event:e,error:n})}})},findIndex=e=>t.findIndex(t=>t.id===e),synthesizeDeactivation=(e,t)=>{const a=String(e);if(!n.has(a))return!1;const s=n.get(a);return n.delete(a),emit("RuleDeactivated",{...s,source:t}),!0},addRule=(e,a={})=>{const n=normalizeRule(e,a.pack);return!(findIndex(n.id)>=0)&&(Number.isInteger(a.index)&&a.index>=0&&a.index<t.length?t.splice(a.index,0,n):t.push(n),emit("RuleAdded",{id:n.id,pack:n.pack}),!0)},removeRule=e=>{const a=findIndex(e);if(a<0)return!1;synthesizeDeactivation(e,"removed");const[n]=t.splice(a,1);return emit("RuleRemoved",{id:n.id,pack:n.pack}),!0},setEnabled=(e,a)=>{const n=findIndex(e);return!(n<0)&&(t[n].enabled!==a&&(t[n].enabled=a,a||synthesizeDeactivation(e,"disabled"),emit(a?"RuleEnabled":"RuleDisabled",{id:e}),!0))},setPackEnabled=(e,a)=>{let n=!1;return t.forEach(t=>{t.pack===e&&(n=setEnabled(t.id,a)||n)}),n},loadPack=(e,t=[])=>{let a=!1;return t.forEach(t=>{a=addRule({...t,pack:e},{pack:e})||a}),a&&emit("RulePackLoaded",{packId:e}),a},unloadPack=e=>{const a=t.filter(t=>t.pack===e).map(e=>e.id);return!!a.length&&(a.forEach(e=>removeRule(e)),emit("RulePackUnloaded",{packId:e,count:a.length}),!0)},reorder=(e=[])=>{if(!Array.isArray(e)||!e.length)return!1;const a=new Set(t.map(e=>e.id)),n=new Set(e);if(e.length!==t.length||n.size!==t.length)return!1;if([...a].some(e=>!n.has(e)))return!1;const s=t.reduce((e,t)=>(e[t.id]=t,e),{});return t.length=0,e.forEach(e=>t.push(s[e])),emit("RuleOrderChanged",{order:[...e]}),!0},evaluate=(e={})=>{const a=createEmptyOverlay(),s=[],i=new Map;for(const n of t){if(!n.enabled)continue;const t=n.evaluate(e);if(t&&(s.push(n.id),i.set(n.id,{id:n.id,pack:n.pack,meta:n.meta,suspendsCuring:!0===t.suspendCuring}),mergeOverlay(a,t),n.terminal))break}a.commands=Array.from(new Set(a.commands||[]));const o=diffRuleActivity(n,i),l=diffRuleSuspension(n,i);return n.clear(),i.forEach((e,t)=>n.set(t,e)),{overlay:a,applied:s,transitions:o,suspendTransitions:l,suspendingRules:[...i.values()].filter(e=>e.suspendsCuring).map(e=>e.id)}};return e.forEach(e=>addRule(e,{pack:e.pack||"general"})),{onChange:e=>(a.add(e),()=>a.delete(e)),addRule,removeRule,enableRule:e=>setEnabled(e,!0),disableRule:e=>setEnabled(e,!1),enablePack:e=>setPackEnabled(e,!0),disablePack:e=>setPackEnabled(e,!1),loadPack,unloadPack,reorder,evaluate,list:()=>t.map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:n.has(e.id),suspendsCuring:Boolean(n.get(e.id)?.suspendsCuring),pack:e.pack,tags:[...e.tags],meta:deepClone$1(e.meta)}))}},createSettingCommand=(e,t)=>Object.freeze({commandId:e,buildCommand:t}),je=Object.freeze({afflictions:createSettingCommand("curing-afflictions",e=>`curing afflictions ${boolWord(e)}`),defences:createSettingCommand("curing-defences",e=>`curing defences ${boolWord(e)}`),sipping:createSettingCommand("curing-sipping",e=>`curing sipping ${boolWord(e)}`),transmutation:createSettingCommand("curing-transmutation",e=>`curing transmutation ${boolWord(e)}`),sipHealthAt:createSettingCommand("curing-siphealth",e=>`curing siphealth ${e}`),sipManaAt:createSettingCommand("curing-sipmana",e=>`curing sipmana ${e}`),mossHealthAt:createSettingCommand("curing-mosshealth",e=>`curing mosshealth ${e}`),mossManaAt:createSettingCommand("curing-mossmana",e=>`curing mossmana ${e}`),sipPriority:createSettingCommand("curing-priority-mode",e=>`curing priority ${String(e||"health").toLowerCase()}`),focus:createSettingCommand("curing-focus-enabled",e=>`curing focus ${boolWord(e)}`),focusOverHerbs:createSettingCommand("curing-focus-priority-mode",e=>"curing focus "+(e?"first":"second")),tree:createSettingCommand("curing-tree",e=>{const t=String(e||"on").toLowerCase();return["on","off","custom"].includes(t)?`curing tree ${t}`:null}),useVault:createSettingCommand("curing-usevault",e=>`curing usevault ${boolWord(e)}`),clot:createSettingCommand("curing-useclot",e=>`curing useclot ${boolWord(e)}`),clotAt:createSettingCommand("curing-clotat",e=>`curing clotat ${e}`),fallback:createSettingCommand("curing-fallback",e=>`curing fallback ${boolWord(e)}`),kaidoTransmute:createSettingCommand("curing-kaidotransmute",e=>e?"curing kaidotransmute":null),batch:createSettingCommand("curing-batch",e=>`curing batch ${boolWord(e)}`),fracturesAbove:createSettingCommand("curing-healthaffsabove",e=>`curing healthaffsabove ${e}`),manaThreshold:createSettingCommand("curing-manathreshold",e=>`curing manathreshold ${e}`)}),sameArray=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let a=0;a<e.length;a+=1)if(e[a]!==t[a])return!1;return!0},mapDiff=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].filter(a=>e[a]!==t[a]),normalizePredictionMap=(e={})=>Array.isArray(e)?e.reduce((e,t)=>(e[t]=!0,e),{}):{...e},toGamePriorityToken=e=>isServersideAffPriorityNumber(e)?String(Number(e)):String(26),createServersideDiffPlanner=({baseline:e={},getBaseline:t,getAffPriorityCommandName:a,getDefPriorityTokens:n}={})=>{const resolveBaseline=()=>"function"==typeof t?t()||{}:e,resolveAffPriorityCommandName=e=>{if("function"==typeof a){const t=a(e);if(t)return String(t)}return String(e)},resolveDefPriorityTokens=(e,t)=>{if(!isServersideAffPriorityNumber(t))return["reset"];if("function"==typeof n){const a=n(e,Number(t));if(Array.isArray(a)&&a.length)return a.map(e=>String(e));if(null!=a&&!1!==a)return[String(a)]}return[String(Number(t))]},normalizeDesiredDefPriority=e=>"RESET"===e||void 0===e?0:isServersideAffPriorityNumber(e)?Number(e):0;return{build:({desired:e={},observed:t={}}={})=>{const a=resolveBaseline(),n=a.settings||{},s=a.affPriorities||{},i=[],o=[],l=e.settings||{};mapDiff(l,t.settings||{}).sort().forEach(e=>{const t=je[e];if(!t)return;const a=t.buildCommand(l[e]);a&&(i.push(a),o.push(`settings:${e}`))});const c=e.affPriorities||{},u=t.affPriorities||{};!0===e.fullPriorityReset&&(i.push("curing priority reset"),o.push("aff-priority:reset-all"));const resolveDesiredAffPriority=e=>{const t=c[e];return"RESET"===t||void 0===t?s[e]??0:t},d=[...new Set([...Object.keys(c),...Object.keys(u)])].filter(e=>canonicalAffPriority(resolveDesiredAffPriority(e))!==canonicalAffPriority(u[e])).sort().map(e=>[e,toGamePriorityToken(resolveDesiredAffPriority(e))]);if(d.length){const e=d.flatMap(([e,t])=>[resolveAffPriorityCommandName(e),String(t)]);i.push(`curing priority ${e.join(" ")}`),d.forEach(([e])=>o.push(`aff-priority:${e}`))}const m=e.defPriorities||{},p=t.defPriorities||{},g=[...new Set([...Object.keys(m),...Object.keys(p)])].filter(e=>normalizeDesiredDefPriority(m[e])!==Number(p[e]??0)).sort().map(e=>{const t=m[e];return"RESET"===t||void 0===t?[e,["reset"],`def-priority-reset:${e}`]:isServersideAffPriorityNumber(t)?[e,resolveDefPriorityTokens(e,t),`def-priority:${e}`]:[e,["reset"],`def-priority-reset:${e}`]});if(g.length){const e=g.flatMap(([e,t])=>[e,...t]);i.push(`curing priority defence ${e.join(" ")}`),g.forEach(([,,e])=>o.push(e))}const h=e.prioAff;h!==t.prioAff&&(h?(i.push(`curing prioaff ${h}`),o.push(`prioaff:${h}`)):(i.push("curing prioaff none"),o.push("prioaff:clear")));const b=e.manualQueue||[];sameArray(b,t.manualQueue||[])||(i.push("curing queue reset"),b.forEach((e,t)=>{i.push(`curing queue insert ${t+1} ${e}`)}),o.push("manual-queue:reconcile"));const y=normalizePredictionMap(e.predictions),v=normalizePredictionMap(t.predictions);return[...new Set([...Object.keys(y),...Object.keys(v)])].sort().forEach(e=>{const t=Boolean(y[e]);t!==Boolean(v[e])&&(i.push(`${t?"curing predict":"curing unpredict"} ${e}`),o.push(`prediction:${e}`))}),{commands:Array.from(new Set(i)),reasonCodes:o,baseSettings:n}},getBaseSettings:()=>resolveBaseline().settings||{},getBaseAff:()=>resolveBaseline().affPriorities||{},getBaseDef:()=>resolveBaseline().defPriorities||{}}},qe=Object.freeze({BALANCE:"balance",EQUILIBRIUM:"equilibrium",ENTITY:"entity",FOCUS:"focus",FREE:"free",WRITHE:"writhe"}),hasAny=(e,t)=>e.haveAnAff(t),hasAll=(e,t)=>e.haveAffs(t),emergencyClassRules=e=>{const t={},a=!e.haveBal(qe.FOCUS)||e.haveAff("impatience");return t.fitness=e.isClass(["Runewarden","Monk","Blademaster","Infernal","Paladin","Sentinel","Druid"])&&e.haveAff("asthma")&&(hasAny(e,["slickness","hellsight"])&&hasAny(e,["paralysis","clumsiness","sensitivity"])||hasAny(e,["damagedhead","mangledhead","damagedleftleg","damagedrightleg"])&&hasAny(e,["paralysis","clumsiness","sensitivity","slickness","hellsight","disloyalty"]))?100:"RESET",t.dragonheal=e.isClass("Dragon")&&hasAll(e,["asthma","slickness","anorexia"])&&a?100:"RESET",t.dragonflex="RESET",e.isClass("Dragon")&&(hasAll(e,["entangled","webbed"])||hasAny(e,["entangled","webbed"])&&(e.haveBal(qe.BALANCE)&&!e.haveBal(qe.WRITHE)||e.haveAff("transfixation")))&&(t.dragonflex=100),t.bloodboil=e.isClass("Magi")&&hasAll(e,["asthma","slickness"])&&(hasAny(e,["hypochondria","paralysis"])||e.haveAff("anorexia")&&a)?100:"RESET",t.dwinnu=e.isClass("Bard")&&(hasAll(e,["webbed","entangled"])||hasAny(e,["webbed","entangled"])&&e.haveAff("transfixation"))?100:"RESET",t.salt=e.isClass("Alchemist")&&(hasAll(e,["asthma","slickness","anorexia"])&&a||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.shrugging=e.isClass("Serpent")&&(hasAll(e,["asthma","slickness","anorexia"])&&a||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.fool=e.isClass("Occultist")&&(hasAll(e,["asthma","slickness","anorexia"])&&a||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t.alleviate=e.isClass("Blademaster")&&(hasAll(e,["asthma","slickness","anorexia"])&&a||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t},createDefaultServersideRulePack=()=>[{id:"aeon-threshold-and-priority",pack:"general",evaluate:e=>e.haveAff("aeon")?{settings:{sipHealthAt:30,sipManaAt:10,mossHealthAt:0,mossManaAt:0,batch:!1,clotAt:5e3},affPriorities:{asthma:3,weariness:4,anorexia:5,impatience:7,paralysis:8}}:null},{id:"focus-balance-priority-shift",pack:"general",evaluate:e=>e.haveBal(qe.FOCUS)?null:{affPriorities:{stupidity:9,recklessness:12,dizziness:14,shyness:14}}},{id:"scytherus-paralysis",pack:"general",evaluate:e=>hasAll(e,["scytherus","paralysis"])?{affPriorities:{scytherus:2}}:null},{id:"confusion-disrupted",pack:"general",evaluate:e=>hasAll(e,["confusion","disrupted"])&&(e.haveBal(qe.FOCUS)||e.haveAff("impatience"))&&!e.haveAff("whisperingmadness")?{affPriorities:{confusion:2}}:null},{id:"impatience-snaptrack",pack:"general",evaluate:e=>e.haveAff("impatience")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{impatience:2}}:null},{id:"hypochondria-impatience",pack:"general",evaluate:e=>hasAll(e,["impatience","hypochondria"])?{affPriorities:{hypochondria:1}}:e.haveAff("hypochondria")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{hypochondria:2}}:null},{id:"slickness-asthma-sensitivity-group",pack:"general",evaluate:e=>{const t=hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t&&!e.haveAff("anorexia")?{affPriorities:{slickness:2}}:null}},{id:"asthma-hellsight-slickness",pack:"general",evaluate:e=>{const t=!hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t||hasAll(e,["hellsight","asthma"])?{affPriorities:{asthma:2}}:null}},{id:"darkshade-lightwall",pack:"general",evaluate:e=>e.haveAff("darkshade")&&e.affElapsed("darkshade")>1e4&&e.roomHasItem("a lightwall")?{affPriorities:{darkshade:2}}:null},{id:"prone-sensitivity-legdamage",pack:"general",evaluate:e=>hasAll(e,["prone","sensitivity"])&&hasAny(e,["damagedleftleg","damagedrightleg"])?{affPriorities:{sensitivity:2}}:null},{id:"conflagration-burning",pack:"general",evaluate:e=>{if(!e.haveAff("conflagration")||!hasAny(e,["brokenleftleg","brokenrightleg","damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]))return null;const t=hasAny(e,["damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]);return e.haveAff("prone")&&!t?{affPriorities:{burning:7}}:{affPriorities:{burning:4}}}},{id:"cadmus-focus-toggle",pack:"general",evaluate:e=>({settings:{focus:!e.haveAff("cadmuscurse")}})},{id:"scalded-blindness-defence",pack:"general",evaluate:e=>e.haveAff("scalded")?{defPriorities:{blindness:0}}:null},{id:"class-emergency-cures",pack:"general",evaluate:e=>({curePriorities:emergencyClassRules(e)})}],$e=Object.freeze(["status","affPriorities","defPriorities"]),Be=Object.freeze({reportingcommands:"reporting",afflictions:"afflictions",defences:"defences",sipping:"sipping",transmutation:"transmutation",siphealth:"sipHealthAt",siphealthat:"sipHealthAt",sipmana:"sipManaAt",sipmanaat:"sipManaAt",mosshealth:"mossHealthAt",mosshealthat:"mossHealthAt",mossmana:"mossManaAt",mossmanaat:"mossManaAt",priority:"sipPriority",sippriority:"sipPriority",focus:"focus",focusoverherbs:"focusOverHerbs",tree:"tree",usevault:"useVault",useclot:"clot",clot:"clot",clotat:"clotAt",clotabove:"clotAbove",fallback:"fallback",kaidotransmute:"kaidoTransmute",customcuringpriority:"customAffPriority",customdefencepriority:"customDefPriority",batch:"batch",healthaffsabove:"fracturesAbove",fracturesabove:"fracturesAbove",manathreshold:"manaThreshold",insomnia:"insomnia"}),Fe=Object.freeze(new Set(["status","enabled"])),createServersideObservationApi=({state:e,affModel:t,defModel:a,systemModel:n,emit:s,markDirty:i,replaceBucket:o,maybeResolveFullPriorityReset:l,normalizeAffPriorityName:c=e=>String(e||"").toLowerCase()})=>{const getMissingStartupFlags=(t=Object.keys(e.startup.flags))=>t.filter(t=>t in e.startup.flags&&!e.startup.flags[t]),u=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>({...e.startup.flags})}),d=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>{const e=u(),t=getMissingStartupFlags($e);return{ready:Object.values(e).every(Boolean),requiredReady:0===t.length,missingRequired:t,flags:e}}}),markStartupCaptured=t=>t in e.startup.flags&&!e.startup.flags[t]&&(o("startup",{...e.startup,flags:{...e.startup.flags,[t]:!0}}),s("ServersideStartupSnapshotCaptured",{topic:t,flags:u()}),!0),updateObservedSetting=(t,a)=>{if(e.observed.settings[t]!==a){if(o("observed",{...e.observed,settings:{...e.observed.settings,[t]:a}}),e.startup.flags.status){const n=e.derived?.settings?.[t];void 0!==n&&"RESET"!==n||o("sessionBaseline",{...e.sessionBaseline,settings:{...e.sessionBaseline.settings,[t]:a}})}i(`observed-setting:${t}`)}},normalizeCaptureSetName=e=>String(e||"").trim().toLowerCase(),isCaptureSetOwned=e=>{const t=e||"";return""===t||"nexsys4-default"===t},completeObservedAffPrioritySnapshot=()=>{const t=e.capture.affPriorities,a=e.capture.prioritySet||"";if(e.capture.affPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(a))return!1;o("observed",{...e.observed,affPriorities:t,prioritySet:a}),l(),i("observed-aff-priority-snapshot")}return markStartupCaptured("affPriorities"),!0},completeObservedDefPrioritySnapshot=()=>{const t=e.capture.defPriorities,a=e.capture.prioritySet||"";if(e.capture.defPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(a))return!1;o("observed",{...e.observed,defPriorities:t,prioritySet:a}),i("observed-def-priority-snapshot")}return markStartupCaptured("defPriorities"),!0},updateObservedQueue=(t=[])=>{const a=t||[],n=e.observed.manualQueue,s=a.length===n.length&&a.every((e,t)=>e===n[t]);markStartupCaptured("queue"),s||(o("observed",{...e.observed,manualQueue:[...a]}),i("observed-manual-queue"))},updateObservedPredictions=(t={})=>{const a=t||{},n=e.observed.predictions,s=Object.keys(a),l=s.length===Object.keys(n).length&&s.every(e=>a[e]===n[e]);markStartupCaptured("predictions"),l||(o("observed",{...e.observed,predictions:{...a}}),i("observed-predictions"))},parseStatusLine=({key:e,value:t})=>{const a=String(e||"").trim();if(Fe.has(a.toLowerCase()))return;const n=Be[a.toLowerCase()]||a;updateObservedSetting(n,normalizeStatusValue(n,t))};return{markStartupCaptured,resetStartupStatus:()=>{const t=Object.keys(e.startup.flags).reduce((e,t)=>(e[t]=!1,e),{});return e.capture.affPriorities=null,e.capture.defPriorities=null,o("startup",{...e.startup,flags:t}),s("ServersideStartupReset",{flags:u()}),!0},isStartupReady:()=>Object.values(e.startup.flags).every(Boolean),getStartupStatus:()=>d(),getMissingStartupFlags,beginObservedAffPrioritySnapshot:(a="")=>(e.capture.affPriorities=buildObservedAffPriorities(t),e.capture.prioritySet=normalizeCaptureSetName(a),!0),completeObservedAffPrioritySnapshot,updateObservedSetting,updateObservedAffPriority:(t,a)=>{const n=e.capture.affPriorities||e.observed.affPriorities,s=String(t||"").toLowerCase(),u=c(t);if(!u)return!1;if(!Object.prototype.hasOwnProperty.call(n,u))return!1;const d=normalizeServersideAffPriority(a);if(e.capture.affPriorities)return s&&s!==u&&delete n[s],n[u]=d,!0;const m={...e.observed.affPriorities};if(s&&s!==u&&delete m[s],m[u]=d,o("observed",{...e.observed,affPriorities:m}),l(),e.startup.flags.affPriorities){const t=e.derived?.affPriorities?.[u];void 0!==t&&"RESET"!==t||o("sessionBaseline",{...e.sessionBaseline,affPriorities:{...e.sessionBaseline.affPriorities,[u]:d}})}return i(`observed-aff-priority:${u}`),!0},beginObservedDefPrioritySnapshot:(t="")=>(e.capture.defPriorities=buildObservedDefPriorities(a,n.getClass()),e.capture.prioritySet=normalizeCaptureSetName(t),!0),completeObservedDefPrioritySnapshot,updateObservedDefPriority:(t,s)=>{const l=e.capture.defPriorities||e.observed.defPriorities,c=String(t||"").toLowerCase(),u=a.get(c);if(!u?.serverside)return!1;if(!a.isAvailableForClass(c,n.getClass()))return!1;const d="RESET"===String(s).toUpperCase()?0:Number(s);if(!Number.isFinite(d))return!1;if(e.capture.defPriorities)return l[c]=d,!0;if(o("observed",{...e.observed,defPriorities:{...e.observed.defPriorities,[c]:d}}),e.startup.flags.defPriorities){const t=e.derived?.defPriorities?.[c];if(void 0===t||"RESET"===t){const t={...e.sessionBaseline.defPriorities};u.static?delete t[c]:t[c]=d,o("sessionBaseline",{...e.sessionBaseline,defPriorities:t})}}return i(`observed-def-priority:${c}`),!0},updateObservedQueue,updateObservedPredictions,parseStatusLine}},createServersideTransientApi=({state:e,trackables:t,now:a,markDirty:n,emit:s,replaceBucket:i,normalizeAffName:o=e=>String(e||"").toLowerCase()})=>({setTrackable(e,i,o={}){const l=String(e||"").trim();if(!l)return!1;t[l]||(t[l]={have:!1,since:0});const c=Boolean(i);if(t[l].have===c)return!1;const u=a();return t[l].have=c,t[l].since=c?u:0,s(c?"TrackableGot":"TrackableLost",{name:l,label:String(o.label||l),have:c,at:u,since:t[l].since,source:String(o.source||"manual")}),n(`trackable:${l}`),!0},setPrioAff(t){const a=t?o(t):null;return e.transient.prioAff!==a&&(i("transient",{...e.transient,prioAff:a}),n("prioaff"),!0)},clearPrioAff:()=>!!e.transient.prioAff&&(i("transient",{...e.transient,prioAff:null}),n("prioaff-clear"),!0),requestPriorityReset:()=>!e.transient.fullPriorityReset&&(i("transient",{...e.transient,fullPriorityReset:!0}),n("priority-reset-request"),!0),requestStaticDefPriorities(t={}){let a=!1;const s={...e.transient.staticDefRequests};return Object.entries(t||{}).forEach(([e,t])=>{const n=String(e||"").trim().toLowerCase(),i=Number(t);!n||!Number.isInteger(i)||i<1||i>25||s[n]!==i&&(s[n]=i,a=!0)}),a&&(i("transient",{...e.transient,staticDefRequests:s}),n("static-def-request")),a},clearStaticDefPriorities(t){const a=Array.isArray(t)?t.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean):Object.keys(e.transient.staticDefRequests);let s=e.transient.staticDefRequests;a.forEach(t=>{Object.prototype.hasOwnProperty.call(s,t)&&(s===e.transient.staticDefRequests&&(s={...e.transient.staticDefRequests}),delete s[t])});const o=i("transient",{...e.transient,staticDefRequests:s});return o&&n("static-def-clear"),o},addPrediction(t){const a=String(t||"").toLowerCase();return!(!a||e.transient.predictions[a])&&(i("transient",{...e.transient,predictions:{...e.transient.predictions,[a]:!0}}),n(`prediction-add:${a}`),!0)},removePrediction(t){const a=String(t||"").toLowerCase();if(!a||!e.transient.predictions[a])return!1;const s={...e.transient.predictions};return delete s[a],i("transient",{...e.transient,predictions:s}),n(`prediction-remove:${a}`),!0},manualQueueAdd(t){const a=String(t||"").toLowerCase();return!(!a||e.transient.manualQueue.includes(a))&&(i("transient",{...e.transient,manualQueue:[...e.transient.manualQueue,a]}),n("manual-queue-add"),!0)},manualQueueInsert(t,a){const s=String(a||"").toLowerCase(),o=Math.max(1,Math.min(20,Number(t||1)));if(!s||e.transient.manualQueue.includes(s))return!1;const l=[...e.transient.manualQueue];return l.splice(o-1,0,s),i("transient",{...e.transient,manualQueue:l}),n("manual-queue-insert"),!0},manualQueueRemove(t){const a=String(t||"").toLowerCase(),s=e.transient.manualQueue.indexOf(a);if(s<0)return!1;const o=[...e.transient.manualQueue];return o.splice(s,1),i("transient",{...e.transient,manualQueue:o}),n("manual-queue-remove"),!0},manualQueueReset:()=>!!e.transient.manualQueue.length&&(i("transient",{...e.transient,manualQueue:[]}),n("manual-queue-reset"),!0)}),shallowCopyDesired=e=>({settings:{...e.settings},affPriorities:{...e.affPriorities},defPriorities:{...e.defPriorities},curePriorities:{...e.curePriorities},manualQueue:[...e.manualQueue||[]],predictions:{...e.predictions},prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:[...e.injectedCommands||[]],appliedRules:[...e.appliedRules||[]],suspendingRules:[...e.suspendingRules||[]]}),copyRuleTransitionPayload=(e,t)=>({id:e.id,pack:e.pack,meta:e.meta,source:t,suspendsCuring:!0===e.suspendsCuring}),areCommandSequencesEqual=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let a=0;a<e.length;a+=1)if(e[a]!==t[a])return!1;return!0},createServersideEvaluationApi=({state:e,affModel:t,defModel:a,balanceModel:n,systemModel:s,cureTable:i,ruleRegistry:o,diffPlanner:l,sendCommands:c,emit:u,markDirty:d,replaceBucket:m,refreshRulesBucket:p,now:g,trackables:h,options:b})=>{const clearResolvedPending=()=>{const t=b.pendingTimeoutMs||12e3,a=g();let n=e.pending;for(const[s,i]of e.pending.entries())a-i>t&&(n===e.pending&&(n=new Map(e.pending)),n.delete(s));return m("pending",n)},markPendingCommands=(t=[],a={})=>{const n=t.map(e=>normalizeCommand(e)).filter(e=>e&&isServersideCommand(e));if(n.length){const t=g(),a=new Map(e.pending);n.forEach(e=>a.set(e,t)),m("pending",a)}return n.length&&u("ServersidePendingUpdated",{commands:[...n],context:{...a}}),n},filterServersideDefPriorities=(e={})=>{const t=s.getClass();return Object.entries(e||{}).reduce((e,[n,s])=>{const i=a.get(n);return!i?.serverside||i.static?e:a.isAvailableForClass(n,t)?(e[n]=s,e):e},{})},buildRequestedStaticDefPriorities=()=>{const t=s.getClass(),n=e.transient.staticDefRequests||{};let i=n;const removeRequest=e=>{i===n&&(i={...n}),delete i[e]},o=Object.entries(n).reduce((e,[n,s])=>{const i=a.get(n);if(!i?.static)return removeRequest(n),e;if(a.haveDef(n)||!a.isAvailableForClass(n,t))return removeRequest(n),e;if(!i.serverside)return e;const o=a.getPriority(n),l=isServersideAffPriorityNumber(o)?o:s;return!isServersideAffPriorityNumber(l)||Number(l)>=26?(removeRequest(n),e):(e[n]=Number(l),e)},{});return i!==n&&m("transient",{...e.transient,staticDefRequests:i}),o},emitRuleTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleActivated",{...copyRuleTransitionPayload(e,t)})})},emitRuleSuspendTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleSuspendDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleSuspendActivated",{...copyRuleTransitionPayload(e,t)})})},resolveDesired=()=>{const i=createServersideContext({affModel:t,defModel:a,balanceModel:n,systemModel:s,trackables:h,now:g}),l=o.evaluate(i);return p?.(),m("derived",l.overlay),m("desired",{settings:{...e.sessionBaseline.settings,...l.overlay.settings},affPriorities:mergeWithResets(e.sessionBaseline.affPriorities,l.overlay.affPriorities),defPriorities:{...mergeWithResets(e.sessionBaseline.defPriorities,filterServersideDefPriorities(l.overlay.defPriorities)),...buildRequestedStaticDefPriorities()},curePriorities:mergeWithResets(e.sessionBaseline.curePriorities,l.overlay.curePriorities),manualQueue:Array.isArray(l.overlay.manualQueue)?[...l.overlay.manualQueue]:[...e.transient.manualQueue],predictions:{...e.transient.predictions,...l.overlay.predictions},prioAff:null!==e.transient.prioAff&&void 0!==e.transient.prioAff?e.transient.prioAff:l.overlay.prioAff||null,fullPriorityReset:e.transient.fullPriorityReset,injectedCommands:l.overlay.commands||[],appliedRules:l.applied,suspendingRules:l.suspendingRules||[]}),{desired:e.desired,evaluation:l}};return{markPendingCommands,maybeResolveFullPriorityReset:()=>!!e.transient.fullPriorityReset&&(!!Object.keys(e.sessionBaseline.affPriorities).every(t=>(e.observed.affPriorities[t]??e.sessionBaseline.affPriorities[t])===e.sessionBaseline.affPriorities[t])&&(m("transient",{...e.transient,fullPriorityReset:!1}),u("ServersideFullPriorityResetResolved",{fullPriorityReset:!1}),!0)),evaluate({emitCommands:t=!0,source:a="prompt"}={}){clearResolvedPending();const{desired:n,evaluation:s}=resolveDesired(),i=l.build({desired:n,observed:e.observed});let o=[...n.injectedCommands,...i.commands].filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));const d=Math.max(1,Number(b.maxCommandsPerCycle||40));let p=e.diagnostics.recoveryCounter;o.length>d&&(o=o.slice(0,d),p+=1);const g=(i.commands||[]).filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));let h=g.length&&areCommandSequencesEqual(e.lastDiffCommands||[],g)?e.diagnostics.commandRepeatCounter+1:0,y=e.diagnostics.desyncCounter;return h>=(b.desyncCommandRepeats||3)&&(y+=1,p+=1,o.push("curing status","curing priority list","curing priority defence list","curing queue list","curing predictions"),h=0),t&&o.length&&(c(o,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:a}),markPendingCommands(o,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:a})),e.lastDiffCommands=[...g],m("diagnostics",{...e.diagnostics,lastCommands:[...o],lastReasons:[...i.reasonCodes],desyncCounter:y,recoveryCounter:p,commandRepeatCounter:h}),e.dirty=!1,u("ServersideEvaluated",{source:a,desired:shallowCopyDesired(n),commands:[...o],reasons:[...i.reasonCodes],suspendingRules:[...s.suspendingRules||[]]}),emitRuleSuspendTransitions(s.suspendTransitions,a),emitRuleTransitions(s.transitions,a),{desired:shallowCopyDesired(n),commands:o,reasons:i.reasonCodes}},setBaselineFromRuntime(){const{enabled:n,...o}=s.getBaselineIntent().ss||{},l=s.getClass(),c={...e.baseline,settings:{...e.baseline.settings,...o},affPriorities:buildBaselineAffPriorities(t),defPriorities:buildBaselineDefPriorities(a,l),curePriorities:buildBaselineCurePriorities(i)};m("baseline",c);const u=buildObservedDefPriorities(a,l),p=Object.keys(u).reduce((t,a)=>(t[a]=e.observed.defPriorities[a]??u[a],t),{});m("observed",{...e.observed,defPriorities:p}),m("sessionBaseline",{settings:{...c.settings},affPriorities:{...c.affPriorities},defPriorities:{...c.defPriorities},curePriorities:{...c.curePriorities}}),d("baseline-refresh")},getCurePriority(t){const a=String(t||"").toLowerCase();return e.desired.curePriorities?.[a]??e.baseline.curePriorities[a]??0},observeOutbound:(e=[])=>markPendingCommands(e,{source:"observe-outbound"})}},createServersideCuringSetApi=({state:e,sendCommands:t,markPendingCommands:a,markDirty:n,markStartupCaptured:s,replaceBucket:i})=>{const issueCuringSetCommand=(e,n)=>{const s=normalizeCommand(e);return!!s&&(t([s],{source:"serverside-curingset",reason:n}),a([s],{source:"serverside-curingset",reason:n}),!0)};return{switchCuringSet(t){const a=normalizeSetName(t);if(!a)return!1;const s=issueCuringSetCommand(`curingset switch ${a}`,"switch");return s&&(i("curingsets",{...e.curingsets,activeSet:a}),n("curingset-switch")),s},deleteCuringSet(e){const t=normalizeSetName(e);return!!t&&issueCuringSetCommand(`curingset delete ${t}`,"delete")},observeActiveCuringSet(t){const a=normalizeSetName(t);if(!a||a===normalizeSetName(e.curingsets.activeSet))return!1;const s=i("curingsets",{...e.curingsets,activeSet:a});return s&&n("curingset-active"),s},observeCuringSets({sets:t=[],activeSet:a="",used:o,limit:l}={}){const c=[...new Set((t||[]).map(e=>normalizeSetName(e)).filter(Boolean))],u=normalizeSetName(a),d=Number(o),m=Number(l),p=Number.isFinite(d)?d:e.curingsets.used,g=Number.isFinite(m)?m:e.curingsets.limit,h=e.curingsets.priorSet||(u&&"nexsys4-default"!==u?u:"");i("curingsets",{...e.curingsets,sets:c,activeSet:u,priorSet:h,used:p,limit:g}),s("curingsets"),n("curingset-observed")}}},ze=new Set(["RuleActivated","RuleDeactivated","RuleAdded","RuleRemoved","RuleEnabled","RuleDisabled","RulePackLoaded","RulePackUnloaded","RuleOrderChanged"]),Ge=Object.freeze(["baseline","sessionBaseline","derived","desired","observed","transient","pending","diagnostics","curingsets","startup","rules"]),areBucketValuesEqual=(e,t)=>{if(Object.is(e,t))return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;if(e instanceof Date||t instanceof Date)return e instanceof Date&&t instanceof Date&&e.getTime()===t.getTime();if(Array.isArray(e)||Array.isArray(t))return!(!Array.isArray(e)||!Array.isArray(t))&&(e.length===t.length&&e.every((e,a)=>areBucketValuesEqual(e,t[a])));if(e instanceof Map||t instanceof Map){if(!(e instanceof Map&&t instanceof Map))return!1;if(e.size!==t.size)return!1;const a=[...e.entries()],n=[...t.entries()];for(let e=0;e<a.length;e+=1){const[t,s]=a[e],[i,o]=n[e];if(!Object.is(t,i)||!areBucketValuesEqual(s,o))return!1}return!0}const a=Object.keys(e),n=Object.keys(t);return a.length===n.length&&a.every(a=>Object.prototype.hasOwnProperty.call(t,a)&&areBucketValuesEqual(e[a],t[a]))},createServersideController=({adapter:e,dispatchCommands:t,affModel:a,defModel:n,balanceModel:s,systemModel:i,cureTable:o={},options:l={}}={})=>{if("function"!=typeof t)throw new Error("createServersideController requires a dispatchCommands function.");const now=()=>e.now(),c=t,u={snapTrack:{have:!1,since:0}},{enabled:d,...m}=i.getBaselineIntent().ss||{},p=createInitialServersideState({baselineSettings:{afflictions:!0,defences:!0,sipping:!0,transmutation:!0,fallback:!0,kaidoTransmute:!1,...m},affModel:a,defModel:n,systemModel:i,cureTable:o}),g=new Set,emit=(e,t)=>{g.forEach(a=>a(e,t))},markDirty=(e="state-change")=>{p.dirty=!0,emit("ServersideDirty",{reason:e})},replaceBucket=(e,t)=>!areBucketValuesEqual(p[e],t)&&(p[e]=t,!0),h=createRuleRegistry(createDefaultServersideRulePack()),refreshRulesBucket=()=>replaceBucket("rules",h.list());refreshRulesBucket();const b=createServersideDiffPlanner({getBaseline:()=>p.baseline,getAffPriorityCommandName:"function"==typeof a?.formatPriorityCommandName?e=>a.formatPriorityCommandName(e):void 0,getDefPriorityTokens:(e,t)=>{const a=[String(Number(t))];return!0===n.get(e)?.preempt&&a.push("preempt"),a}}),y="function"==typeof a?.normalizeName?e=>a.normalizeName(e):e=>String(e||"").toLowerCase(),v="function"==typeof a?.normalizePriorityName?e=>a.normalizePriorityName(e):e=>String(e||"").toLowerCase(),S=createServersideEvaluationApi({state:p,affModel:a,defModel:n,balanceModel:s,systemModel:i,cureTable:o,ruleRegistry:h,diffPlanner:b,sendCommands:c,emit,markDirty,replaceBucket,refreshRulesBucket,now,trackables:u,options:l}),x=createServersideObservationApi({state:p,affModel:a,defModel:n,systemModel:i,emit,markDirty,replaceBucket,maybeResolveFullPriorityReset:S.maybeResolveFullPriorityReset,normalizeAffPriorityName:v}),C=createServersideTransientApi({state:p,trackables:u,now,markDirty,emit,replaceBucket,normalizeAffName:y}),k=createServersideCuringSetApi({state:p,sendCommands:c,markPendingCommands:S.markPendingCommands,markDirty,markStartupCaptured:x.markStartupCaptured,replaceBucket}),requestSnapshotSync=()=>c(["curing status","curing priority list","curing queue list","curing predictions","curingset list","curing priority defence list"],{source:"serverside-snapshot-sync"}),applyLifecycleChange=e=>(e&&markDirty("rule-lifecycle"),e);h.onChange((e,t)=>{refreshRulesBucket(),ze.has(e)?emit(e,t):markDirty("rule-engine-change")});const copyRecord=(e={})=>({...e||{}}),copyArray=(e=[])=>[...e||[]],copyRuleOverlay=(e={})=>({affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),settings:copyRecord(e.settings),predictions:copyRecord(e.predictions),commands:copyArray(e.commands),prioAff:e.prioAff,manualQueue:Array.isArray(e.manualQueue)?[...e.manualQueue]:void 0}),copyDesiredSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:copyArray(e.injectedCommands),appliedRules:copyArray(e.appliedRules),suspendingRules:copyArray(e.suspendingRules)}),copyObservedSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioritySet:e.prioritySet||""}),copyTransientSnapshot=(e={})=>({prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),staticDefRequests:copyRecord(e.staticDefRequests),fullPriorityReset:Boolean(e.fullPriorityReset)}),copyDiagnosticsSnapshot=(e={})=>({lastCommands:copyArray(e.lastCommands),lastReasons:copyArray(e.lastReasons),desyncCounter:Number(e.desyncCounter||0),recoveryCounter:Number(e.recoveryCounter||0),commandRepeatCounter:Number(e.commandRepeatCounter||0)}),copyCuringSetSnapshot=(e={})=>({sets:copyArray(e.sets),activeSet:e.activeSet||"",priorSet:e.priorSet||"",used:Number(e.used||0),limit:Number(e.limit||0)}),copyRulesSnapshot=(e=[])=>(e||[]).map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:e.isActive,suspendsCuring:Boolean(e.suspendsCuring),pack:e.pack,tags:Array.isArray(e.tags)?[...e.tags]:[],meta:deepClone$1(e.meta||{})})),A=createSnapshotCache({getVersion:()=>p.baseline,buildSnapshot:()=>({settings:copyRecord(p.baseline.settings),affPriorities:copyRecord(p.baseline.affPriorities),defPriorities:copyRecord(p.baseline.defPriorities),curePriorities:copyRecord(p.baseline.curePriorities)})}),E=createSnapshotCache({getVersion:()=>p.sessionBaseline,buildSnapshot:()=>({settings:copyRecord(p.sessionBaseline.settings),affPriorities:copyRecord(p.sessionBaseline.affPriorities),defPriorities:copyRecord(p.sessionBaseline.defPriorities),curePriorities:copyRecord(p.sessionBaseline.curePriorities)})}),_=createSnapshotCache({getVersion:()=>p.derived,buildSnapshot:()=>copyRuleOverlay(p.derived)}),w=createSnapshotCache({getVersion:()=>p.desired,buildSnapshot:()=>copyDesiredSnapshot(p.desired)}),T=createSnapshotCache({getVersion:()=>p.observed,buildSnapshot:()=>copyObservedSnapshot(p.observed)}),P=createSnapshotCache({getVersion:()=>p.transient,buildSnapshot:()=>copyTransientSnapshot(p.transient)}),M=createSnapshotCache({getVersion:()=>p.pending,buildSnapshot:()=>[...p.pending.entries()]}),D=createSnapshotCache({getVersion:()=>p.diagnostics,buildSnapshot:()=>copyDiagnosticsSnapshot(p.diagnostics)}),R=createSnapshotCache({getVersion:()=>p.curingsets,buildSnapshot:()=>copyCuringSetSnapshot(p.curingsets)}),O={baseline:A,sessionBaseline:E,derived:_,desired:w,observed:T,transient:P,pending:M,diagnostics:D,curingsets:R,startup:createSnapshotCache({getVersion:()=>p.startup,buildSnapshot:()=>({flags:copyRecord(p.startup.flags)})}),rules:createSnapshotCache({getVersion:()=>p.rules,buildSnapshot:()=>copyRulesSnapshot(p.rules)})};let N=null;const getSnapshot=()=>{const e=Ge.reduce((e,t)=>(e[t]=O[t](),e),{});return N&&Ge.every(t=>N[t]===e[t])||(N=deepFreeze(e)),N},acknowledgeCommand=e=>acknowledgeCommands([e]),acknowledgeCommands=(e=[])=>{let t=p.pending;return e.forEach(e=>{const a=normalizeCommand(e);a&&t.has(a)&&(t===p.pending&&(t=new Map(p.pending)),t.delete(a))}),replaceBucket("pending",t)};return{onChange:e=>(g.add(e),()=>g.delete(e)),markDirty,evaluate:S.evaluate,isDirty:()=>p.dirty,getTransientPrioAff:()=>p.transient.prioAff,getStaticDefRequests:()=>P().staticDefRequests,getObserved:()=>T(),getCuringSets:()=>R(),snapshot:()=>getSnapshot(),isStartupReady:x.isStartupReady,getStartupStatus:x.getStartupStatus,getMissingStartupFlags:x.getMissingStartupFlags,markStartupCaptured:x.markStartupCaptured,resetStartupStatus:x.resetStartupStatus,setBaselineFromRuntime:S.setBaselineFromRuntime,getCurePriority:S.getCurePriority,requestSnapshotSync,beginObservedAffPrioritySnapshot:x.beginObservedAffPrioritySnapshot,completeObservedAffPrioritySnapshot:x.completeObservedAffPrioritySnapshot,updateObservedSetting:x.updateObservedSetting,updateObservedAffPriority:x.updateObservedAffPriority,beginObservedDefPrioritySnapshot:x.beginObservedDefPrioritySnapshot,completeObservedDefPrioritySnapshot:x.completeObservedDefPrioritySnapshot,updateObservedDefPriority:x.updateObservedDefPriority,updateObservedQueue:x.updateObservedQueue,updateObservedPredictions:x.updateObservedPredictions,parseStatusLine:x.parseStatusLine,setTrackable:C.setTrackable,setPrioAff:C.setPrioAff,clearPrioAff:C.clearPrioAff,requestPriorityReset:C.requestPriorityReset,requestStaticDefPriorities:C.requestStaticDefPriorities,clearStaticDefPriorities:C.clearStaticDefPriorities,addPrediction:C.addPrediction,removePrediction:C.removePrediction,manualQueueAdd:C.manualQueueAdd,manualQueueInsert:C.manualQueueInsert,manualQueueRemove:C.manualQueueRemove,manualQueueReset:C.manualQueueReset,switchCuringSet:k.switchCuringSet,deleteCuringSet:k.deleteCuringSet,observeCuringSets:k.observeCuringSets,observeActiveCuringSet:k.observeActiveCuringSet,acknowledgeCommand,acknowledgeCommands,markPendingCommands:S.markPendingCommands,observeOutbound:S.observeOutbound,lifecycle:{add:(e,t)=>applyLifecycleChange(h.addRule(e,t)),remove:e=>applyLifecycleChange(h.removeRule(e)),enable:e=>applyLifecycleChange(h.enableRule(e)),disable:e=>applyLifecycleChange(h.disableRule(e)),enablePack:e=>applyLifecycleChange(h.enablePack(e)),disablePack:e=>applyLifecycleChange(h.disablePack(e)),load:(e,t)=>applyLifecycleChange(h.loadPack(e,t)),unload:e=>applyLifecycleChange(h.unloadPack(e)),reorder:e=>applyLifecycleChange(h.reorder(e)),list:()=>h.list()}}},createCommandDispatcher=({adapter:e}={})=>{const t=[],a=200,isDebugEnabled=()=>"function"==typeof e?.isDebugEnabled&&e.isDebugEnabled(),normalizeCommands=(e=[])=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],resolveSeparator=()=>("function"==typeof e?.getCommandSeparator?e.getCommandSeparator():"|")||"|",normalizeStackPlan=e=>{if(e&&"object"==typeof e&&!Array.isArray(e)){if("stackPlan"!==e.type)return null;const t=normalizeCommands(e.commands);return t.length?{type:"stackPlan",commands:t}:null}const t=normalizeCommands(e);return t.length?{type:"stackPlan",commands:t}:null},normalizeStackPlans=(e=[])=>{if(Array.isArray(e))return e.map(normalizeStackPlan).filter(Boolean);const t=normalizeStackPlan(e);return t?[t]:[]},serializeStackPlan=e=>e.commands.join(resolveSeparator()),recordDispatch=({mode:n,commands:s=[],context:i={},stackIndex:o=1,stackCount:l=1,stackPlan:c=null}={})=>{const u=normalizeCommands(s);if(!u.length)return[];const d={mode:n,commands:[...u],context:{...i},at:e.now(),stackIndex:o,stackCount:l,stackPlan:c?{type:c.type,commands:[...c.commands]}:null};return t.push(d),!isDebugEnabled()&&t.length>a&&t.splice(0,t.length-a),u},sendCommands=(t=[],a={})=>{const n=recordDispatch({mode:"commands",commands:t,context:a});return n.length?(e.send(n,a),n):[]};return{send:sendCommands,sendCommands,sendStackPlan:(t=[],a={})=>{const n=normalizeStackPlans(t);return n.length?(n.forEach((t,s)=>{const i={...a,stackIndex:s+1,stackCount:n.length};recordDispatch({mode:"stack-plan",commands:t.commands,context:i,stackIndex:s+1,stackCount:n.length,stackPlan:t}),e.send(serializeStackPlan(t),i)}),n.map(e=>({type:e.type,commands:[...e.commands]}))):[]},normalizeCommands,history:()=>t.map(e=>({mode:e.mode,commands:[...e.commands],context:{...e.context},at:e.at,stackIndex:e.stackIndex,stackCount:e.stackCount,stackPlan:e.stackPlan?{type:e.stackPlan.type,commands:[...e.stackPlan.commands]}:null}))}},He=Object.freeze({freeQueue:[{balanceId:qe.BALANCE,minDurationMs:250},{balanceId:qe.EQUILIBRIUM,minDurationMs:250}],fullQueue:[{balanceId:qe.BALANCE,minDurationMs:250},{balanceId:qe.EQUILIBRIUM,minDurationMs:250}],classQueue:[{balanceId:qe.ENTITY,minDurationMs:500}]}),createQueueFiredSideEffects=({balanceModel:e,now:t})=>({queueId:a})=>{const n=He[a]||[];if(!n.length)return[];const s=t();return n.filter(({balanceId:t,minDurationMs:a})=>!1===e.have(t)&&e.computeDurationMs(t)>Number(a||0)).map(({balanceId:t})=>(e.restartLossTimer(t,`queue-fired-resync:${a}`,s),t))},createDomainControllers=({adapter:e,seedData:t,options:a={},now:n,models:s})=>{const{systemModel:i,affModel:o,balanceModel:l,defModel:c,cacheModel:u}=s,d=createCommandDispatcher({adapter:e}),m=createQueueFiredSideEffects({balanceModel:l,now:n}),p=createQueueController({send:d.sendStackPlan,getRuntimeState:()=>{const e=i.getRuntime();return{paused:e.paused,phase:e.phase,settings:i.getSettings()}},getSeparator:()=>i.getSettings().commandSeparator,maxEntriesPerSubmission:Number(a.maxEntriesPerSubmission||20),onQueueFired:m}),g=createServersideController({adapter:e,dispatchCommands:d.sendCommands,affModel:o,defModel:c,balanceModel:l,systemModel:i,cureTable:t.cureTable,options:{maxCommandsPerCycle:Number(a.maxSsCommandsPerCycle||40)}}),h=createDefensePlanner({defModel:c,balanceModel:l,affModel:o,systemModel:i}),b=createPrecachePlanner({cacheModel:u});return{commandDispatcher:d,queueController:p,serverside:g,defensePlanner:h,precachePlanner:b,outputPlanner:createOutputPlanner({systemModel:i,serverside:g,defensePlanner:h,precachePlanner:b})}},secondsToMs$1=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds$1=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createBalanceState=(e={})=>{const t={};return Object.entries(e||{}).forEach(([e,a])=>{t[e]={id:e,have:!0,baseDurationMs:secondsToMs$1(a.length),config:deepFreeze(deepClone$1(a||{})),lastLostAtMs:0,lastGotAtMs:0,activeDurationMs:0,expectedReadyAtMs:0,lastRecoveredDurationMs:0,lastServerDurationMs:0,callbacks:{},timer:null}}),t},createBalancePayload=(e,t={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastServerDurationMs:e.lastServerDurationMs,...t}),createBalanceMutationApi=({state:e,emit:t,now:a,setTimeoutFn:n,clearTimeoutFn:s,computeDurationMs:i})=>{const clearTimer=e=>{e.timer&&(s?.(e.timer),e.timer=null)},normalizeDurationMs=(e={},t=0)=>Number.isFinite(Number(e.durationMs))?Math.max(0,Math.round(Number(e.durationMs))):Number.isFinite(Number(e.durationSeconds))?secondsToMs$1(e.durationSeconds):Math.max(0,Math.round(Number(t)||0)),o=1e3,scheduleRecovery=(e,t)=>{clearTimer(e),!n||e.have||e.expectedReadyAtMs<=0||(e.timer=n(()=>{gain(e.id,"timer",a())},Math.max(0,e.expectedReadyAtMs+o-t)))},applyServerDuration=(e,t)=>{e.lastServerDurationMs=t},emitDurationObserved=(e,a,n,s)=>{t("BalanceDurationObserved",createBalancePayload(e,{source:s,atMs:n,durationMs:a,durationSeconds:msToSeconds$1(a)}))},createTimingPayload=(e,t,a,n)=>createBalancePayload(e,{reason:t,atMs:a,durationMs:n,durationSeconds:msToSeconds$1(n)});function gain(n,s="manual",i=a()){const o=e[n];if(!o||o.have)return!1;const l=o.activeDurationMs;return o.have=!0,o.lastGotAtMs=i,o.lastRecoveredDurationMs=Math.max(0,i-o.lastLostAtMs),o.activeDurationMs=0,o.expectedReadyAtMs=0,clearTimer(o),o.callbacks.onStop?.(o),t("BalanceGot",createTimingPayload(o,s,i,o.lastRecoveredDurationMs||l)),!0}const lose=(n,s="manual",o=a(),l={})=>{const c=e[n];if(!c||!c.have)return!1;const u=normalizeDurationMs(l,i(n));return c.have=!1,c.lastLostAtMs=o,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?o+u:0,!0===l.serverDuration&&applyServerDuration(c,u),c.callbacks.onStart?.(c),!1!==l.autoRegain?scheduleRecovery(c,o):clearTimer(c),t("BalanceLost",createTimingPayload(c,s,o,u)),!0},observeServerUse=(t,n,s={})=>{const i=e[t],o=secondsToMs$1(n);if(!i||o<=0)return!1;const l=s.atMs??s.at??a(),c=String(s.source||"serverside-duration");if(i.have){const e=lose(t,c,l,{durationMs:o,serverDuration:!0,autoRegain:s.autoRegain});return e&&emitDurationObserved(i,o,l,c),e}return applyServerDuration(i,o),i.activeDurationMs=o,i.expectedReadyAtMs=i.lastLostAtMs+o,!1!==s.autoRegain?scheduleRecovery(i,l):clearTimer(i),emitDurationObserved(i,o,l,c),!0};return{gain,lose,restartLossTimer:(n,s="manual",o=a(),l={})=>{const c=e[n];if(!c||c.have)return!1;const u=normalizeDurationMs(l,i(n));return c.lastLostAtMs=o,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?o+u:0,!0===l.serverDuration&&applyServerDuration(c,u),!1!==l.autoRegain?scheduleRecovery(c,o):clearTimer(c),t("BalanceLossTimerRestarted",createTimingPayload(c,s,o,u)),!0},observeServerUse,reset(n,s="reset"){const i=e[n];return!!i&&(clearTimer(i),i.have=!0,i.lastGotAtMs=a(),i.activeDurationMs=0,i.expectedReadyAtMs=0,i.callbacks.onReset?.(i),t("BalanceReset",createBalancePayload(i,{reason:s})),!0)},setCallback(t,a={}){const n=e[t];return!!n&&(n.callbacks={...n.callbacks,...a},!0)},applyVitals(t={}){const n=toParsedGmcpVitals(t);n.balancePatches.forEach(({id:e,have:t})=>{if(!e||void 0===t)return;const n=a();t?gain(e,"gmcp-vitals",n):lose(e,"gmcp-vitals",n)}),n.resourceStats.forEach(({key:t,balanceState:n})=>{e[t]&&void 0!==n&&(n?gain(t,"gmcp-charstat",a()):lose(t,"gmcp-charstat",a()))})},dispose(){Object.values(e).forEach(clearTimer)}}},createBalanceQueryApi=({state:e,now:t,haveAff:a,getVersion:n=()=>0,getEntryVersion:s=()=>n()})=>{const buildEntrySnapshot=(e={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,baseDurationSeconds:msToSeconds$1(e.baseDurationMs),config:e.config,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,activeDurationSeconds:msToSeconds$1(e.activeDurationMs),expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(e.lastRecoveredDurationMs),lastServerDurationMs:e.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(e.lastServerDurationMs)}),i=new Map,getEntrySnapshot=t=>e[t]?(i.has(t)||i.set(t,createSnapshotCache({getVersion:()=>s(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),i.get(t)()):null,o=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),computeDurationMs=t=>{const n=e[t];if(!n)return 0;let s=Number(n.baseDurationMs||0);const i=n.config.aff_modifiers||{};return Object.entries(i).forEach(([e,t])=>{if(!a(e))return;const n=Number(t.multiplier??1),i=secondsToMs$1(t.offset??0);s=Math.round(s*n+i)}),Math.max(0,s)},elapsedMs=(a,n=t())=>{const s=e[a];return s?s.have?Math.max(0,n-s.lastGotAtMs):Math.max(0,n-s.lastLostAtMs):0},remainingMs=(a,n=t())=>{const s=e[a];return!s||s.have?0:s.expectedReadyAtMs>0?Math.max(0,s.expectedReadyAtMs-n):Math.max(0,s.activeDurationMs-elapsedMs(a,n))},timing=(a,n=t())=>{const s=e[a];if(!s)return null;const i=elapsedMs(a,n),o=remainingMs(a,n),l=computeDurationMs(a);return{id:s.id,have:s.have,atMs:n,elapsedMs:i,elapsedSeconds:msToSeconds$1(i),remainingMs:o,remainingSeconds:msToSeconds$1(o),baseDurationMs:s.baseDurationMs,baseDurationSeconds:msToSeconds$1(s.baseDurationMs),computedDurationMs:l,computedDurationSeconds:msToSeconds$1(l),activeDurationMs:s.activeDurationMs,activeDurationSeconds:msToSeconds$1(s.activeDurationMs),expectedReadyAtMs:s.expectedReadyAtMs,lastLostAtMs:s.lastLostAtMs,lastGotAtMs:s.lastGotAtMs,lastRecoveredDurationMs:s.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(s.lastRecoveredDurationMs),lastServerDurationMs:s.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(s.lastServerDurationMs)}};return{list:()=>Object.keys(e),snapshot:()=>o(),get:e=>getEntrySnapshot(e),have:t=>Boolean(e[t]?.have),elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,a=t())=>msToSeconds$1(elapsedMs(e,a)),remaining:remainingMs,remainingMs,remainingSeconds:(e,a=t())=>msToSeconds$1(remainingMs(e,a)),timing,computeDuration:computeDurationMs,computeDurationMs,computeDurationSeconds:e=>msToSeconds$1(computeDurationMs(e))}},createBalanceModel=({balanceTable:e,now:t,setTimeoutFn:a,clearTimeoutFn:n,haveAff:s=()=>!1}={})=>{const i=createBalanceState(e),o=new Set;let l=0;const c=new Map,emit=(e,t)=>{l+=1,t?.id&&c.set(t.id,(c.get(t.id)??0)+1),o.forEach(a=>a(e,t))},u=createBalanceQueryApi({state:i,now:t,haveAff:s,getVersion:()=>l,getEntryVersion:e=>c.get(e)??0}),d=createBalanceMutationApi({state:i,emit,now:t,setTimeoutFn:a,clearTimeoutFn:n,computeDurationMs:u.computeDurationMs});return{onChange:e=>(o.add(e),()=>o.delete(e)),list:u.list,snapshot:u.snapshot,get:u.get,have:u.have,elapsed:u.elapsed,elapsedMs:u.elapsedMs,elapsedSeconds:u.elapsedSeconds,remaining:u.remaining,remainingMs:u.remainingMs,remainingSeconds:u.remainingSeconds,timing:u.timing,computeDuration:u.computeDuration,computeDurationMs:u.computeDurationMs,computeDurationSeconds:u.computeDurationSeconds,gain:d.gain,lose:d.lose,restartLossTimer:d.restartLossTimer,observeServerUse:d.observeServerUse,reset:d.reset,setCallback:d.setCallback,applyVitals:d.applyVitals,dispose:d.dispose}},asSet=(e={})=>Array.isArray(e)?new Set(e.map(e=>String(e).toLowerCase())):new Set(Object.keys(e).map(e=>String(e).toLowerCase())),Ue=0,Ve=1,createAfflictionReference=(e,t={})=>{const a=String(e||"").trim().toLowerCase();if(!a)return{raw:a,name:a,count:null,hasExplicitCount:!1,isCountable:!1};if(t[a])return{raw:a,name:a,count:null,hasExplicitCount:!1,isCountable:!0};const n=a.match(/^(.*?)(?:\s*\((\d+)\)|(\d+))$/),s=Number(n?.[2]??n?.[3]),i=n?.[1]?.trim();return n&&t[i]?{raw:a,name:i,count:s,hasExplicitCount:!0,isCountable:!0}:{raw:a,name:a,count:null,hasExplicitCount:!1,isCountable:!1}},normalizeAfflictionName=(e,t={})=>createAfflictionReference(e,t).name,normalizeAfflictionPriorityName=(e,t={})=>{const a=createAfflictionReference(e,t);return a.isCountable&&a.hasExplicitCount&&Number(a.count)>1?`${a.name}${a.count}`:a.name},formatAfflictionPriorityCommandName=(e,t={})=>{const a=createAfflictionReference(e,t);return a.isCountable?a.hasExplicitCount?`${a.name}${a.count}`:`${a.name}1`:a.name},createAffEntry=(e,t,a,n=null)=>({name:e,have:!1,count:0,min:Number(n?.min??Ue),max:Number(n?.max??Ve),since:0,lastChangeAt:0,order:t,defaultPriority:a,priorityOverride:null,timer:null}),createInitialAfflictionState=(e={})=>{const t=e.types?.countable||{},a=[...e.list||[]].reduce((e,a)=>{const n=normalizeAfflictionName(a,t);return n&&!e.includes(n)&&e.push(n),e},[]),n=Object.entries(e.prios||{}).reduce((e,[a,n])=>{const s=normalizeAfflictionName(a,t);return s&&(e[s]=n),e},{}),s={};return a.forEach((e,a)=>{s[e]=createAffEntry(e,a,n[e]??100,t[e]||null)}),{list:a,defaultPrios:n,state:s,timedConfig:e.types?.timed||{},countableConfig:t,uncurableSet:asSet(e.types?.uncurable||{})}},ensureAffEntry=(e,t,a={},n)=>{const s=normalizeAfflictionName(n,a);return e[s]||(e[s]=createAffEntry(s,Object.keys(e).length,t[s]??100,a[s]||null)),e[s]},toPriorityNumber=e=>{const t=Number(e);return Number.isFinite(t)?t:null},getPriorityValue=e=>e?e.priorityOverride??e.defaultPriority:null,getDefaultPriorityValue=e=>e?.defaultPriority??null,setPriorityValue=(e,t)=>e.priorityOverride===t?{changed:!1,priority:t}:(e.priorityOverride=t,{changed:!0,priority:t}),resetPriorityValue=e=>{const t=e.defaultPriority;return null===e.priorityOverride||void 0===e.priorityOverride?{changed:!1,priority:t}:(e.priorityOverride=null,{changed:!0,priority:t})},setDefaultPriorityValue=(e,t,{shouldSyncCurrentPriorityToDefault:a=e=>null===e.priorityOverride||void 0===e.priorityOverride,syncCurrentPriorityToDefault:n=()=>{}}={})=>{const s=e.defaultPriority;if(s===t)return{changed:!1,currentChanged:!1,priority:t,previousDefaultPriority:s};const i=a(e);return e.defaultPriority=t,i&&n(e,t),{changed:!0,currentChanged:i,priority:t,previousDefaultPriority:s}},createAfflictionPriorityApi=({state:e,defaultPrios:t,countableConfig:a,emit:n})=>{const getEntry=(n,{ensure:s=!1}={})=>s?ensureAffEntry(e,t,a,n):e[normalizeAfflictionName(n,a)]||null;return{ensureAff:e=>getEntry(e,{ensure:!0}),getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):100},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):100},setPriority(e,t,a="manual"){const s=toPriorityNumber(t);if(null===s)return!1;const i=getEntry(e,{ensure:!0}),o=setPriorityValue(i,s);return!!o.changed&&(n("AffPriorityChanged",{name:i.name,source:a,priority:o.priority,defaultPriority:i.defaultPriority}),!0)},resetPriority(e,t="manual"){const a=getEntry(e,{ensure:!0}),s=resetPriorityValue(a);return!!s.changed&&(n("AffPriorityChanged",{name:a.name,source:t,priority:s.priority,defaultPriority:a.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,t,a="manual"){const s=toPriorityNumber(t);if(null===s)return!1;const i=getEntry(e,{ensure:!0}),o=setDefaultPriorityValue(i,s);return!!o.changed&&(n("AffDefaultPriorityChanged",{name:i.name,source:a,priority:o.priority,previousDefaultPriority:o.previousDefaultPriority,currentPriority:getPriorityValue(i)}),o.currentChanged&&n("AffPriorityChanged",{name:i.name,source:a,priority:o.priority,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createAfflictionLifecycleApi=({state:e,defaultPrios:t,timedConfig:a,countableConfig:n,emit:s,now:i,setTimeoutFn:o,clearTimeoutFn:l})=>{const clearTimer=e=>{e.timer&&(l?.(e.timer),e.timer=null)},emitAffGot=(e,t,a)=>{s("AffGot",{name:e.name,at:t,source:a,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitAffLost=(e,t,a)=>{s("AffLost",{name:e.name,at:t,source:a,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitStackChanged=(e,t)=>{s("AffStackChanged",{name:e.name,count:e.count,min:e.min,max:e.max,have:e.have,at:t})},clampCount=(e,t)=>{const a=Number(t);return Number.isFinite(a)?Math.max(e.min,Math.min(e.max,a)):e.count},scheduleTimedExpiry=e=>{const t=a[e.name];if(!t)return;clearTimer(e);const n=Math.round(1e3*Number(t.length||0));n<=0||!o||(e.timer=o(()=>{lose(e.name,{source:"timed-expiry",at:i()})},n))},applyCountableState=(e,t,a={})=>{const n=a.at??i(),s=a.source||"manual",o=e.have;return e.count=clampCount(e,t),e.have=e.count>0,e.have&&!o&&(e.since=n),e.lastChangeAt=n,emitStackChanged(e,n),!o&&e.have?emitAffGot(e,n,s):o&&!e.have&&emitAffLost(e,n,s),o},got=(a,s={})=>{const o=createAfflictionReference(a,n),l=ensureAffEntry(e,t,n,o.name),c=s.at??i(),u=s.source||"manual",d=l.have;if(n[l.name]){const e=Number(s.count);return applyCountableState(l,Number.isFinite(e)?e:o.hasExplicitCount?o.count:l.count+Number(s.countDelta??1),{at:c,source:u}),l.have?scheduleTimedExpiry(l):clearTimer(l),!0}return!d&&(l.have=!0,l.count=1,l.since=c,l.lastChangeAt=c,scheduleTimedExpiry(l),emitAffGot(l,c,u),!0)},lose=(a,s={})=>{const o=ensureAffEntry(e,t,n,createAfflictionReference(a,n).name),l=s.at??i(),c=s.source||"manual",u=o.have;if(n[o.name]){const e=Number(s.count);return applyCountableState(o,Number.isFinite(e)?e:Number.isFinite(Number(s.countDelta))?o.count-Math.abs(Number(s.countDelta)):0,{at:l,source:c}),clearTimer(o),!0}return!!u&&(o.have=!1,o.count=0,o.lastChangeAt=l,clearTimer(o),emitAffLost(o,l,c),!0)};return{got,lose,applyList(t=[]){const a=new Set,s=new Map,i=new Set;(t||[]).forEach(e=>{const t=createAfflictionReference("string"==typeof e?e:String(e?.name||e?.affliction||e||""),n);if(t.name){if(n[t.name])return t.hasExplicitCount?(i.add(t.name),void s.set(t.name,Math.max(s.get(t.name)??0,t.count))):void(i.has(t.name)||s.set(t.name,(s.get(t.name)??0)+1));a.add(t.name)}}),Object.keys(e).forEach(t=>{n[t]?s.has(t)?got(t,{source:"gmcp-list",count:s.get(t)}):(e[t].have||e[t].count>0)&&lose(t,{source:"gmcp-list"}):a.has(t)?got(t,{source:"gmcp-list"}):e[t].have&&lose(t,{source:"gmcp-list"})})},dispose(){Object.values(e).forEach(clearTimer)}}},secondsToMs=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createAfflictionQueryApi=({state:e,list:t,timedConfig:a,countableConfig:n,uncurableSet:s,getPriority:i,now:o,getVersion:l=()=>0,getEntryVersion:c=()=>l()})=>{const buildEntrySnapshot=(e={})=>({name:e.name,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride}),u=new Map,getEntrySnapshot=t=>e[t]?(u.has(t)||u.set(t,createSnapshotCache({getVersion:()=>c(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),u.get(t)()):null,d=createSnapshotCache({getVersion:l,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),elapsedMs=(t,a=o())=>{const s=e[normalizeAfflictionName(t,n)];return s?.have?Math.max(0,a-s.since):0},durationMs=e=>{const t=a[normalizeAfflictionName(e,n)];return t?secondsToMs(t.length):0},remainingMs=(t,a=o())=>{const s=normalizeAfflictionName(t,n),i=e[s],l=durationMs(s);return!i?.have||l<=0?0:Math.max(0,l-elapsedMs(s,a))},timing=(t,a=o())=>{const s=normalizeAfflictionName(t,n),i=e[s];if(!i)return null;const l=elapsedMs(s,a),c=durationMs(s),u=remainingMs(s,a);return{name:s,have:i.have,atMs:a,sinceMs:i.since,lastChangeAtMs:i.lastChangeAt,elapsedMs:l,elapsedSeconds:msToSeconds(l),timedDurationMs:c,timedDurationSeconds:msToSeconds(c),remainingMs:u,remainingSeconds:msToSeconds(u)}};return{snapshot:()=>d(),get:e=>getEntrySnapshot(normalizeAfflictionName(e,n)),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],getCountablePriorityNames:()=>Object.entries(n).flatMap(([e,t])=>{const a=Math.max(0,Number(t?.max??0)),n=[];for(let s=2;s<=a;s+=1)n.push(`${e}${s}`);return n}),normalizeName:e=>normalizeAfflictionName(e,n),normalizePriorityName:e=>normalizeAfflictionPriorityName(e,n),formatPriorityCommandName:e=>formatAfflictionPriorityCommandName(e,n),haveAff(t){const a=normalizeAfflictionName(t,n);return Boolean(e[a]?.have)},haveAffs:(t=[])=>t.every(t=>{const a=normalizeAfflictionName(t,n);return Boolean(e[a]?.have)}),haveAnAff:(t=[])=>t.some(t=>{const a=normalizeAfflictionName(t,n);return Boolean(e[a]?.have)}),currentSorted:()=>Object.values(e).filter(e=>e.have).sort((e,t)=>{const a=i(e.name),n=i(t.name);return a!==n?a-n:e.order-t.order}).map(e=>e.name),isCountable(e){const t=normalizeAfflictionName(e,n);return Boolean(n[t])},isTimed(e){const t=normalizeAfflictionName(e,n);return Boolean(a[t])},isUncurable(e){const t=normalizeAfflictionName(e,n);return s.has(t)},elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,t=o())=>msToSeconds(elapsedMs(e,t)),remaining:remainingMs,remainingMs,remainingSeconds:(e,t=o())=>msToSeconds(remainingMs(e,t)),timing}},createAfflictionModel=({affTable:e,now:t,setTimeoutFn:a,clearTimeoutFn:n}={})=>{const{list:s,defaultPrios:i,state:o,timedConfig:l,countableConfig:c,uncurableSet:u}=createInitialAfflictionState(e),d=new Set;let m=0;const p=new Map,emit=(e,t)=>{m+=1,t?.name&&p.set(t.name,(p.get(t.name)??0)+1),d.forEach(a=>a(e,t))},getEntryVersion=e=>p.get(e)??0,g=createAfflictionPriorityApi({state:o,defaultPrios:i,countableConfig:c,emit}),h=createAfflictionLifecycleApi({state:o,defaultPrios:i,timedConfig:l,countableConfig:c,emit,now:t,setTimeoutFn:a,clearTimeoutFn:n}),b=createAfflictionQueryApi({state:o,list:s,timedConfig:l,countableConfig:c,uncurableSet:u,getPriority:g.getPriority,now:t,getVersion:()=>m,getEntryVersion});return{onChange:e=>(d.add(e),()=>d.delete(e)),snapshot:b.snapshot,get:b.get,list:b.list,getCountablePriorityNames:b.getCountablePriorityNames,normalizeName:b.normalizeName,normalizePriorityName:b.normalizePriorityName,formatPriorityCommandName:b.formatPriorityCommandName,got:h.got,lose:h.lose,applyList:h.applyList,setPriority:g.setPriority,resetPriority:g.resetPriority,getPriority:g.getPriority,getDefaultPriority:g.getDefaultPriority,setDefaultPriority:g.setDefaultPriority,haveAff:b.haveAff,haveAffs:b.haveAffs,haveAnAff:b.haveAnAff,currentSorted:b.currentSorted,isCountable:b.isCountable,isTimed:b.isTimed,isUncurable:b.isUncurable,elapsed:b.elapsed,elapsedMs:b.elapsedMs,elapsedSeconds:b.elapsedSeconds,remaining:b.remaining,remainingMs:b.remainingMs,remainingSeconds:b.remainingSeconds,timing:b.timing,dispose:h.dispose}},createDefenseLifecycleApi=({state:e,emit:t})=>{const consumeStaticPriority=(a,n="manual",s={})=>{const i=e[a];return!(!i?.static||!isActiveStaticPriority(resolveDefensePriority(i)))&&(i.priorityOverride=0,t("DefPriorityChanged",{id:a,value:0,source:n,consumed:!0,static:!0,defaultPriority:i.defaultPriority,...s}),!0)},setHave=(a,n,s="manual",i=Date.now())=>{const o=e[a];if(!o||o.have===n)return!1;o.have=n,o.lastChangeAt=i;const l={id:a,source:s,at:i,have:o.have,lastChangeAt:o.lastChangeAt,static:o.static,serverside:o.serverside,preempt:o.preempt};return t(n?"DefGot":"DefLost",l),n&&consumeStaticPriority(a,s,{triggeredByGain:!0}),!0};return{consumeStaticPriority,setHave,setStatic:(a,n,s="manual")=>{const i=e[a];if(!i)return!1;const o=Boolean(n);if(i.static===o)return!1;const l=i.static,c=resolveDefensePriority(i);let u=!1,d=!1;return i.static=o,o&&i.have&&isActiveStaticPriority(c)?(i.priorityOverride=0,d=!0,u=resolveDefensePriority(i)!==c):o||0!==i.priorityOverride||(i.priorityOverride=null,u=resolveDefensePriority(i)!==c),t("DefStaticChanged",{id:a,value:o,previousValue:l,source:s,have:i.have,static:i.static,seedStatic:i.seedStatic,defaultPriority:i.defaultPriority,currentPriority:resolveDefensePriority(i),serverside:i.serverside,preempt:i.preempt}),u&&t("DefPriorityChanged",{id:a,value:resolveDefensePriority(i),source:s,static:i.static,defaultPriority:i.defaultPriority,staticChanged:!0,consumed:d}),!0},setCommand:(a,n,s="manual")=>{const i=e[a];if(!i)return!1;const o=normalizeCommandList(n);return i.command=o,t("DefCommandChanged",{id:a,value:o,source:s}),!0},applyList(t=[],a="gmcp-list"){const n=new Set;(t||[]).forEach(e=>{const t=normalizeObservedDefenseId(e);t&&n.add(t)}),Object.keys(e).forEach(t=>{n.has(t)?(setHave(t,!0,a),e[t].static&&consumeStaticPriority(t,a,{observedActive:!0})):e[t].have&&!e[t].clientOnly&&setHave(t,!1,a)})}}},toDefensePriorityNumber=e=>{const t=toPriorityNumber(e);return null===t?null:t<0?0:t>26?26:t},createDefensePriorityApi=({state:e,emit:t,consumeStaticPriority:a})=>{const getEntry=t=>e[t]||null;return{getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):-1},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):-1},setPriority(e,n,s="manual"){const i=toDefensePriorityNumber(n);if(null===i)return!1;const o=getEntry(e);if(!o)return!1;if(o.static&&!0===o.have&&isActiveStaticPriority(i))return a(e,s,{ignoredWhileActive:!0});const l=setPriorityValue(o,i);return!!l.changed&&(t("DefPriorityChanged",{id:o.id,value:l.priority,source:s,static:o.static,defaultPriority:o.defaultPriority}),!0)},resetPriority(e,n="manual"){const s=getEntry(e);if(!s)return!1;if(s.static&&!0===s.have)return a(e,n,{reset:!0,ignoredWhileActive:!0});const i=resetPriorityValue(s);return!!i.changed&&(t("DefPriorityChanged",{id:s.id,value:i.priority,source:n,static:s.static,defaultPriority:s.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,a,n="manual"){const s=toDefensePriorityNumber(a);if(null===s)return!1;const i=getEntry(e);if(!i)return!1;const o=setDefaultPriorityValue(i,s);return!!o.changed&&(t("DefDefaultPriorityChanged",{id:i.id,value:o.priority,source:n,static:i.static,previousDefaultPriority:o.previousDefaultPriority,currentPriority:getPriorityValue(i)}),o.currentChanged&&t("DefPriorityChanged",{id:i.id,value:o.priority,source:n,static:i.static,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createDefenseQueryApi=({state:e,list:t,getVersion:a=()=>0,getEntryVersion:n=()=>a()})=>{const buildDefEntrySnapshot=(e={})=>({id:e.id,have:e.have,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride,priority:resolveDefensePriority(e),command:e.command,bals_req:e.bals_req,bals_used:e.bals_used,blocks:e.blocks,skills:e.skills,opps:e.opps,serverside:e.serverside,preempt:e.preempt,static:e.static,clientOnly:e.clientOnly}),s=new Map,getDefSnapshot=t=>e[t]?(s.has(t)||s.set(t,createSnapshotCache({getVersion:()=>n(t),buildSnapshot:()=>buildDefEntrySnapshot(e[t])})),s.get(t)()):null,i=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((t,a)=>(t[a]=resolveDefensePriority(e[a]),t),{})}),o=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((t,a)=>(t[a]=Number(e[a].defaultPriority??-1),t),{})}),l=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((t,a)=>(t[a]=Boolean(e[a]?.static),t),{})}),c=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((t,a)=>(Boolean(e[a]?.static)!==Boolean(e[a]?.seedStatic)&&(t[a]=Boolean(e[a]?.static)),t),{})}),u=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getDefSnapshot(t),e),{})});return{snapshot:()=>u(),get:e=>getDefSnapshot(e),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],isAvailableForClass:(t,a="")=>matchesClass(e[t]?.skills,a),haveDef:t=>Boolean(e[t]?.have),getPriority(t){const a=e[t];return a?resolveDefensePriority(a):-1},getDefaultPriority:t=>Number(e[t]?.defaultPriority??-1),getPriorities:()=>i(),getDefaultPriorities:()=>o(),getStatics:()=>l(),getStaticOverrides:()=>c(),isStatic:t=>Boolean(e[t]?.static)}},createDefenseModel=({defTable:e={},defPrios:t={}}={})=>{const{state:a,list:n}=createInitialDefenseState({defTable:e,defPrios:t}),s=new Set;let i=0;const o=new Map,emit=(e,t)=>{i+=1,t?.id&&o.set(t.id,(o.get(t.id)??0)+1),s.forEach(a=>a(e,t))},getEntryVersion=e=>o.get(e)??0,l=createDefenseLifecycleApi({state:a,emit}),c=createDefensePriorityApi({state:a,emit,consumeStaticPriority:l.consumeStaticPriority}),u=createDefenseQueryApi({state:a,list:n,getVersion:()=>i,getEntryVersion});return{onChange:e=>(s.add(e),()=>s.delete(e)),snapshot:u.snapshot,get:u.get,list:u.list,isAvailableForClass:u.isAvailableForClass,haveDef:u.haveDef,isStatic:u.isStatic,setStatic:l.setStatic,setCommand:l.setCommand,setHave:l.setHave,applyList:l.applyList,setPriority:c.setPriority,setDefaultPriority:c.setDefaultPriority,resetPriority:c.resetPriority,getPriority:c.getPriority,getDefaultPriority:c.getDefaultPriority,getDefaultPriorities:u.getDefaultPriorities,getPriorities:u.getPriorities,getStatics:u.getStatics,getStaticOverrides:u.getStaticOverrides}},Ye=1e4,Qe=["brokenleftarm","damagedleftarm","mangledleftarm"],We=["brokenrightarm","damagedrightarm","mangledrightarm"],createCachePrecacheSupport=({state:e,haveAff:t=()=>!1}={})=>{const isPrecacheBlocked=()=>{const e=Qe.some(e=>t(e)),a=We.some(e=>t(e));return!(!e||!a)},buildPrecacheCommands=()=>isPrecacheBlocked()?[]:e.hydration.inventoryKnown&&e.hydration.riftKnown?Object.entries(e.desiredPrecache).flatMap(([t,a])=>{const n=toNumber(e.inventory[t],0),s=toNumber(e.rift[t],0),i=Math.max(0,toNumber(e.riftCapacity,Ye)),o=Math.max(0,toNumber(a,0)),l=Math.max(0,o-n),c=Math.max(0,n-o),u=Math.min(l,s),d=Math.max(0,i-s);return u>0?[`outr ${u} ${t}`]:c>0&&d>0?[`inr ${Math.min(c,d)} ${t}`]:[]}):[];return{getPrecacheCommands:()=>buildPrecacheCommands(),isPrecacheBlocked,isHydrated:()=>e.hydration.inventoryKnown&&e.hydration.riftKnown,getTotal:t=>toNumber(e.inventory[t],0)+toNumber(e.rift[t],0)}},findCaseInsensitiveKey=(e={},t="")=>{if(!e||"object"!=typeof e)return null;const a=String(t).toLowerCase();return Object.keys(e).find(e=>String(e).toLowerCase()===a)||null},createCacheNameNormalizer=({cacheTable:e={},cacheNames:t={}}={})=>{const a=t.herb_name_to_herb||{},n=new Set(Object.keys(e)),toCount=(e,t=1)=>Math.max(0,toNumber(e,t)),resolveName=e=>{if(!e)return"";const t=String(e).trim().toLowerCase();return a[t]||t},resolveCountedName=e=>{const t=resolveName(e);if(n.has(t)||!t.endsWith("s"))return t;const a=resolveName(t.slice(0,-1));return n.has(a)?a:t},parseNameAndAmount=(e,t)=>{const a=String(e||"").trim().toLowerCase();if(!a)return{name:"",amount:Math.max(0,toNumber(t,1))};const s=a.match(/^a group of\s+(\d+)\s+(.+)$/);if(s){const[,e,a]=s,i=resolveCountedName(a);if(n.has(i))return{name:i,amount:toCount(t,toNumber(e,1))}}const i=a.match(/^(\d+)\s+(.+)$/);if(i){const[,e,a]=i,s=resolveCountedName(a);if(n.has(s))return{name:s,amount:toCount(t,toNumber(e,1))}}return{name:resolveCountedName(a),amount:toCount(t,1)}};return{resolveName,parseNameAndAmount,normalizeName:e=>parseNameAndAmount(e).name}},readGmcpPath=(e={},t=[])=>{const a=findCaseInsensitiveKey(e,t.join("."));if(a)return e[a];let n=e;for(const s of t){if(!n||"object"!=typeof n)return;const e=findCaseInsensitiveKey(n,s);if(!e)return;n=n[e]}return n},createCacheStateSupport=({state:e,emit:t=()=>{},cacheTable:a={},cacheNames:n={}}={})=>{const{parseNameAndAmount:s,normalizeName:i}=createCacheNameNormalizer({cacheTable:a,cacheNames:n}),o={invAddsById:new Map,roomRemovesById:new Map,appliedIds:new Set},normalizeItemId=e=>null==e||""===e?"":String(e),adjustInventoryAmount=(a,n,s="inventory-delta")=>!(!a||!(a in e.inventory))&&(e.inventory[a]=Math.max(0,e.inventory[a]+toNumber(n,0)),t("CacheAmountChanged",{bucket:"inventory",name:a,amount:e.inventory[a],source:s}),!0),parseInventoryEntry=(e={})=>{const t=e?.item||e,a=s(t?.name||t?.item||t,t?.amount??t?.count??t?.qty??e?.amount??e?.count??e?.qty);return{id:normalizeItemId(t?.id??e?.id),location:String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),name:a.name,amount:a.amount,icon:t?.icon??e?.icon,attrib:t?.attrib??e?.attrib}},storeInventoryCurative=(t={})=>{if(!t.id||!t.name||!(t.name in e.inventory))return!1;const a={name:t.name,amount:t.amount,location:t.location||"inv"};return void 0!==t.icon&&null!==t.icon&&(a.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(a.attrib=t.attrib),e.inventoryCurativesById[t.id]=a,!0},deleteInventoryCurative=t=>{const a=normalizeItemId(t);return!(!a||!(a in e.inventoryCurativesById))&&(delete e.inventoryCurativesById[a],!0)},deleteInventoryCurativesByName=t=>{let a=!1;return Object.entries(e.inventoryCurativesById).forEach(([n,s])=>{s?.name===t&&(delete e.inventoryCurativesById[n],a=!0)}),a},emitInventoryIdentityChanged=()=>{t("CacheInventoryIdentityChanged",{...e.inventoryCurativesById})},buildResult=({changed:e=!1,identityChanged:t=!1,name:a="",amount:n=0,delta:s=0,source:i=""}={})=>({changed:e,identityChanged:t,name:a,amount:n,delta:s,source:i}),readInventorySnapshot=(e={})=>{const t=readGmcpPath(e,["Char","Items","List"]);if(void 0!==t)return t;const a=readGmcpPath(e,["Items","Inv"]);return void 0!==a?{location:"inv",items:a}:void 0},setAmount=(a,n,s,o="manual")=>{const l=i(n);if(!l||!(l in e[a]))return!1;const c=Math.max(0,toNumber(s,e[a][l]));return e[a][l]=c,t("CacheAmountChanged",{bucket:a,name:l,amount:c,source:o}),!0},setRiftCapacity=(a,n="manual")=>{const s=toNumber(e.riftCapacity,Ye),i=Math.max(0,toNumber(a,s));return i!==e.riftCapacity&&(e.riftCapacity=i,t("CacheRiftCapacityChanged",{amount:i,source:n}),!0)},observeInventorySnapshot=(a=[])=>{const n={...e.inventory},s={};Object.keys(n).forEach(e=>{n[e]=0}),(a||[]).forEach(e=>{const t=parseInventoryEntry(e);if("inv"===t.location&&t.name&&t.name in n&&(n[t.name]+=t.amount,t.id)){const e={name:t.name,amount:t.amount,location:t.location};void 0!==t.icon&&null!==t.icon&&(e.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(e.attrib=t.attrib),s[t.id]=e}}),e.inventory=n,e.inventoryCurativesById=s,e.hydration.inventoryKnown=!0,t("CacheInventoryListApplied",{...e.inventory})},applyRoomPickupTransfer=t=>{if(!t||o.appliedIds.has(t))return null;const a=o.invAddsById.get(t),n=o.roomRemovesById.get(t);if(!a||!n)return null;const s=a.name&&a.name in e.inventory,i=Math.max(0,toNumber(a.amount,0)),l=n.name&&n.name in e.inventory,c=Math.max(0,toNumber(n.amount,0)),u=s&&i>0?a:l&&c>0?n:null;if(o.invAddsById.delete(t),o.roomRemovesById.delete(t),o.appliedIds.add(t),!u)return null;const d=Math.max(0,toNumber(u.amount,0));return!u.name||!(u.name in e.inventory)||d<=0?null:adjustInventoryAmount(u.name,d,"gmcp:room-pickup")?buildResult({changed:!0,name:u.name,amount:d,delta:d,source:"gmcp:room-pickup"}):null},observeRoomPickupCandidate=(e,t)=>{if(!e.id||o.appliedIds.has(e.id))return null;if("inv"===e.location&&"add"===t)o.invAddsById.set(e.id,e);else{if("room"!==e.location||"remove"!==t)return null;o.roomRemovesById.set(e.id,e)}return applyRoomPickupTransfer(e.id)},observeRiftSnapshot=(a={})=>{const n=a.items||a,i=Array.isArray(n)?n:Object.entries(n).map(([e,t])=>({name:e,amount:t})),o={...e.rift};Object.keys(o).forEach(e=>{o[e]=0}),i.forEach(e=>{const t=s(e.name||e.item||e,e.amount??e.count??e.qty??0);t.name&&t.name in o&&(o[t.name]=t.amount)}),e.rift=o,e.hydration.riftKnown=!0,t("CacheRiftListApplied",{...e.rift})},hydrateFromGmcp=(e={})=>{let t=!1;const a=readInventorySnapshot(e);void 0!==a&&(Array.isArray(a)?(observeInventorySnapshot(a),t=!0):"inv"===String(a?.location??a?.Location??"inv").toLowerCase()&&(observeInventorySnapshot(a?.items||[]),t=!0));const n=readGmcpPath(e,["IRE","Rift","List"]);return void 0!==n&&(observeRiftSnapshot(n||{}),t=!0),t};return{observeInventorySnapshot,observeItemDelta:(t={})=>{const a=parseInventoryEntry(t),n=String(t.action||"").toLowerCase(),s=String(t.direction||"").toLowerCase(),i=n||s;let o=!1;if("inv"===a.location){const t=a.id&&e.inventoryCurativesById[a.id]||null;"add"===i?a.name&&a.name in e.inventory&&(o=storeInventoryCurative(a),o&&emitInventoryIdentityChanged()):"remove"===i?(o=!!t&&deleteInventoryCurative(a.id),o&&emitInventoryIdentityChanged()):"update"===i?a.name&&a.name in e.inventory?(o=storeInventoryCurative(a),o&&emitInventoryIdentityChanged()):t&&(o=deleteInventoryCurative(a.id),o&&emitInventoryIdentityChanged()):a.name&&a.name in e.inventory&&(o=storeInventoryCurative(a),o&&emitInventoryIdentityChanged())}const l=observeRoomPickupCandidate(a,i);return l?{...l,identityChanged:o}:buildResult({identityChanged:o})},observeRiftSnapshot,observeRiftChange:(t={})=>{const a=t.amount??t.count??t.qty;if(null==a||""===a)return!1;const n=s(t.name||t.item||t.desc||t,a);return!(!n.name||!(n.name in e.rift))&&(setAmount("rift",n.name,n.amount,"gmcp:rift-change"),{name:n.name,riftAmount:e.rift[n.name]})},observeRiftOutText:({item:t,name:a,amount:n=1,riftAmount:i}={})=>{const o=s(t||a,n);if(!o.name||!(o.name in e.inventory)||!(o.name in e.rift))return!1;const l=Math.max(0,toNumber(n,o.amount));return!(l<=0)&&(adjustInventoryAmount(o.name,l,"text:rift-out"),setAmount("rift",o.name,i,"text:rift-out"),{name:o.name,amount:l,riftAmount:e.rift[o.name]})},observeRiftInText:({item:t,name:a,amount:n=1,riftAmount:i,atCapacity:o=!1}={})=>{const l=s(t||a,n);if(!l.name||!(l.name in e.inventory)||!(l.name in e.rift))return!1;const c=Math.max(0,toNumber(n,l.amount));return!(c<=0)&&(adjustInventoryAmount(l.name,-c,"text:rift-in"),setAmount("rift",l.name,i,"text:rift-in"),o&&setRiftCapacity(i,"text:rift-in-max"),{name:l.name,amount:c,riftAmount:e.rift[l.name],riftCapacity:e.riftCapacity})},invalidateRiftSnapshot:({source:a="rift-resync"}={})=>!!e.hydration.riftKnown&&(e.hydration.riftKnown=!1,t("CacheRiftSnapshotInvalidated",{source:a}),!0),observeInventoryDeltaText:({item:t,name:a,amount:n,delta:i,source:o="text:inventory"}={})=>{const l=s(t||a,n);if(!l.name||!(l.name in e.inventory))return!1;const c=Math.max(0,toNumber(n,l.amount)),u=toNumber(i,0);if(c<=0||0===u)return!1;const d=u>0?c:-c;return adjustInventoryAmount(l.name,d,o),{name:l.name,amount:c,delta:d,inventoryAmount:e.inventory[l.name]}},observeInventoryEmptyText:({item:t,name:a,source:n="text:inventory-empty"}={})=>{const i=s(t||a,0);if(!i.name||!(i.name in e.inventory))return!1;const o=e.inventory[i.name],l=deleteInventoryCurativesByName(i.name);return l&&emitInventoryIdentityChanged(),setAmount("inventory",i.name,0,n),{changed:0!==o||l,identityChanged:l,name:i.name,amount:0,delta:-o,inventoryAmount:e.inventory[i.name],source:n}},observeCurativeConsumedText:({item:t,name:a,amount:n=1}={})=>{const i=s(t||a,n);if(!i.name||!(i.name in e.inventory))return!1;const o=Math.max(0,toNumber(n,i.amount));return!(o<=0)&&(adjustInventoryAmount(i.name,-o,"text:consume"),{name:i.name,amount:o,inventoryAmount:e.inventory[i.name]})},completeObservationBlock:()=>{o.invAddsById.clear(),o.roomRemovesById.clear(),o.appliedIds.clear()},hydrateFromGmcp,setDesiredPrecache:(a={})=>{Object.entries(a).forEach(([t,a])=>{t in e.desiredPrecache&&(e.desiredPrecache[t]=Math.max(0,toNumber(a,0)))}),t("CacheDesiredPrecacheChanged",{...e.desiredPrecache})}}},createCacheModel=({cacheTable:e={},cacheNames:t={},haveAff:a=()=>!1,haveDef:n=()=>!1}={})=>{const s=new Set;let i=0;const o={inventory:{...e},rift:{...e},riftCapacity:Ye,inventoryCurativesById:{},desiredPrecache:Object.keys(e).reduce((e,t)=>(e[t]=0,e),{}),hydration:{inventoryKnown:!1,riftKnown:!1}},emit=(e,t)=>{i+=1,s.forEach(a=>a(e,t))},l=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>({inventory:{...o.inventory},rift:{...o.rift},riftCapacity:o.riftCapacity,inventoryCurativesById:Object.entries(o.inventoryCurativesById).reduce((e,[t,a])=>(e[t]={...a},e),{}),desiredPrecache:{...o.desiredPrecache},hydration:{...o.hydration}})});return{onChange:e=>(s.add(e),()=>s.delete(e)),snapshot:()=>l(),...createCacheStateSupport({state:o,emit,cacheTable:e,cacheNames:t}),...createCachePrecacheSupport({state:o,haveAff:a,haveDef:n}),getDesiredPrecache:()=>({...o.desiredPrecache})}},Ke={loadOnLogin:!1,flushSafetyMs:250,maxSendPerChunk:20,queueWhilePaused:!1,overrideTab:!1,customPrompt:!0,debug:!1,notices:{affGot:!0,affLost:!0,defGot:!0,defLost:!0,balanceLost:!1,balanceRecovered:!1,trackableGot:!1,trackableLost:!1,priority:!0,output:!1},ss:{transmutation:!0,sipPriority:"health",sipHealthAt:80,sipManaAt:70,mossHealthAt:90,mossManaAt:80,focus:!0,focusOverHerbs:!0,tree:"on",clot:!0,clotAt:19,fracturesAbove:35,manaThreshold:10,batch:!0}},Xe={paused:!0,rulesSuspended:!1,slowMode:!1,aeonLocked:!1,phase:se.IDLE,startupFailureMessage:""},Je={name:"",class:"",race:"",color:"",hp:0,maxhp:0,mp:0,maxmp:0,ep:0,maxep:0,wp:0,maxwp:0,bleed:0,rage:0,dead:!1,mount:null,wielded:{left:null,right:null}},Ze={id:"",text:"",isPlayer:null,hp:""},et={id:null,name:"",exits:{},items:{}},getChangedPatchKeys=(e={},t,a)=>Object.keys(e||{}).filter(e=>JSON.stringify(a[e])!==JSON.stringify(t[e])),createSystemConfigApi=({state:e,emit:t})=>({getRuntime:()=>e.runtime,getSettings:()=>e.settings,getBaselineIntent:()=>e.baselineIntent,setRuntime(a={}){const n=e.runtime,s=deepMerge(e.runtime,a),i=Object.keys(s).filter(e=>s[e]!==n[e]);if(!i.length)return!1;const o=n.paused;return e.runtime=s,e.runtime.paused!==o&&t("PauseStateChanged",{paused:e.runtime.paused}),t("RuntimeStateChanged",{current:e.runtime,changedKeys:i}),!0},setSettings(a={},n={}){const s=e.settings,i=deepMerge(e.settings,a),o=getChangedPatchKeys(a,s,i);return!!o.length&&(e.settings=i,n.setBaseline&&(e.baselineIntent=deepMerge(e.baselineIntent,a)),t("SettingsChanged",{current:e.settings,patch:a,changedKeys:o}),!0)},setBaselineIntent(a={}){const n=e.baselineIntent,s=deepMerge(e.baselineIntent,a),i=getChangedPatchKeys(a,n,s);return!!i.length&&(e.baselineIntent=s,t("BaselineIntentChanged",{current:e.baselineIntent,patch:a,changedKeys:i}),!0)}}),shallowEqualRecord=(e={},t={})=>{const a=Object.keys(e||{}),n=Object.keys(t||{});return a.length===n.length&&a.every(a=>e[a]===t[a])},collectChangedFields=(e={})=>{const t={};return Object.entries(e).forEach(([e,[a,n]])=>{a!==n&&(t[e]={previous:a,current:n})}),t},tt=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],hasOwn$3=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isDragonClass=(e="")=>/\bdragon\b/i.test(String(e||"")),getDragonColor=(e="")=>{const t=String(e||"").trim().split(/\s+/).filter(Boolean),a=t.findIndex(e=>"dragon"===e.toLowerCase()),n=a>0?t[a-1]:"";return n?n[0].toUpperCase()+n.slice(1).toLowerCase():""},normalizeStatusClass=({className:e="",race:t="",classProvided:a=!1,raceProvided:n=!1}={})=>{const s=String(e||"").trim(),i=String(t||"").trim(),o=isDragonClass(s),l=isDragonClass(i);return o||!a&&n&&l?{className:"Dragon",color:getDragonColor(s)||getDragonColor(i)}:{className:normalizeClassName(s),color:""}},createSystemCharacterApi=({state:e,emit:t})=>({updateVitals(a={}){const n=toParsedGmcpVitals(a),s=n.resourceStats.filter(({balanceState:e})=>void 0===e),i={dead:e.char.dead};tt.forEach(t=>{i[t]=e.char[t]}),s.forEach(({key:t})=>{t in i||(i[t]=e.char[t])}),tt.forEach(t=>{void 0!==n.vitals[t]&&(e.char[t]=n.vitals[t])}),s.forEach(({key:t,value:a})=>{e.char[t]=a}),e.char.dead=e.char.hp<=0;const o={dead:[i.dead,e.char.dead]};tt.forEach(t=>{o[t]=[i[t],e.char[t]]}),s.forEach(({key:t})=>{o[t]=[i[t],e.char[t]]});const l=collectChangedFields(o);return!!Object.keys(l).length&&(t("VitalsUpdated",{current:e.char,hpDiff:e.char.hp-i.hp,mpDiff:e.char.mp-i.mp,changedFields:l}),e.char.dead&&!i.dead&&t("DeathDetected",{hp:e.char.hp,previousHp:i.hp}),!0)},updateStatus(a={}){const n={name:e.char.name,class:e.char.class,race:e.char.race,color:e.char.color};hasOwn$3(a,"name")&&(e.char.name=a.name??""),hasOwn$3(a,"race")&&(e.char.race=a.race??"");const s=hasOwn$3(a,"class"),i=hasOwn$3(a,"race");if(s||i){const t=normalizeStatusClass({className:s?a.class:e.char.class,race:e.char.race,classProvided:s,raceProvided:i});e.char.class=t.className,e.char.color=t.color}const o=collectChangedFields({name:[n.name,e.char.name],class:[n.class,e.char.class],race:[n.race,e.char.race],color:[n.color,e.char.color]});return!!Object.keys(o).length&&(n.class!==e.char.class&&t("ClassChanged",{class:e.char.class,previousClass:n.class}),t("StatusUpdated",{current:e.char,changedFields:o}),!0)},updateWielded(a,n){if("left"!==a&&"right"!==a)return!1;const s=e.char.wielded[a],i=n?{id:n.id??null,name:String(n.name||""),icon:n.icon||null}:null;return(null!==s||null!==i)&&((!s||!i||s.id!==i.id||s.name!==i.name)&&(e.char.wielded[a]=i,t("WieldedUpdated",{side:a,current:i,previous:s}),!0))},updateMount(a){const n=e.char.mount,s=a?{name:String(a.name||""),id:a.id??null}:null;return n!==s&&((!n||!s||n.name!==s.name||n.id!==s.id)&&(e.char.mount=s,t("MountUpdated",{current:s,previous:n}),!0))},getChar:()=>e.char,getClass:()=>e.char.class,checkClass:t=>classesMatch(e.char.class,t),isClass:t=>void 0===t||!!t&&(Array.isArray(t)?t.some(t=>classesMatch(e.char.class,t)):classesMatch(e.char.class,t))}),rt=["Text","text","short_desc"],hasOwn$2=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),getProvidedValue=(e,t,a,n="")=>{for(const s of t)if(hasOwn$2(e,s))return e[s]??n;return a},deriveIsPlayer=e=>"-1"===String(e),createSystemTargetApi=({state:e,emit:t})=>({updateTarget(a={}){const n=e.target,s={id:getProvidedValue(a,["id","ID"],n.id),text:getProvidedValue(a,rt,n.text),hp:getProvidedValue(a,["HP","hp","hpperc"],n.hp)};if(s.isPlayer=deriveIsPlayer(s.id),s.id===n.id&&s.text===n.text&&s.hp===n.hp&&s.isPlayer===n.isPlayer)return!1;e.target=s;const i=rt.some(e=>hasOwn$2(a,e)),o=s.id!==n.id||s.text!==n.text;return!(!i||!o)&&(t("TargetUpdated",{current:e.target,changedFields:collectChangedFields({id:[n.id,s.id],text:[n.text,s.text],isPlayer:[n.isPlayer,s.isPlayer],hp:[n.hp,s.hp]})}),!0)},isTarget(t){if(null==t)return!1;const a=String(t).toLowerCase();return e.target.text.toLowerCase()===a||String(e.target.id).toLowerCase()===a}}),hasOwn$1=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),createSystemRoomApi=({state:e,emit:t})=>({getRoom:()=>e.room,updateRoom(a={}){const n=e.room,s={id:hasOwn$1(a,"num")?a.num:n.id,name:hasOwn$1(a,"name")?a.name??"":n.name,exits:hasOwn$1(a,"exits")?{...a.exits??{}}:n.exits,items:n.items},i=collectChangedFields({id:[n.id,s.id],name:[n.name,s.name]});return shallowEqualRecord(n.exits,s.exits)||(i.exits={previous:n.exits,current:s.exits}),!!Object.keys(i).length&&(e.room=s,t("RoomUpdated",{current:e.room,changedFields:i}),!0)},setRoomItems(a={}){const n={...a};return!shallowEqualRecord(e.room.items,n)&&(e.room.items=n,t("RoomItemsUpdated",{current:e.room.items}),!0)}}),createSystemModel=(e={})=>{const t={settings:deepMerge(Ke,e.settings||{}),baselineIntent:deepMerge(Ke,e.baselineIntent||{}),runtime:deepMerge(Xe,e.runtime||{}),char:deepMerge(Je,e.char||{}),target:deepMerge(Ze,e.target||{}),room:deepMerge(et,e.room||{})};t.runtime={...t.runtime};const a=new Set;let n=0;const emit=(e,t)=>{n+=1,a.forEach(a=>a(e,t))},s=createSystemConfigApi({state:t,emit}),i=createSystemCharacterApi({state:t,emit}),o=createSystemTargetApi({state:t,emit}),l=createSystemRoomApi({state:t,emit}),copySettingsBucket=(e={})=>({...e,notices:{...e.notices||{}},ss:{...e.ss||{}}}),copyCharSnapshot=(e={})=>({...e,mount:e.mount?{...e.mount}:null,wielded:{left:e.wielded?.left?{...e.wielded.left}:null,right:e.wielded?.right?{...e.wielded.right}:null}}),copyTargetSnapshot=(e={})=>({...e}),copyRoomSnapshot=(e={})=>({...e,exits:{...e.exits||{}},items:{...e.items||{}}}),c=createSnapshotCache({getVersion:()=>n,buildSnapshot:()=>({settings:copySettingsBucket(t.settings),baselineIntent:copySettingsBucket(t.baselineIntent),runtime:{...t.runtime},char:copyCharSnapshot(t.char),target:copyTargetSnapshot(t.target),room:copyRoomSnapshot(t.room)})});return{onChange:e=>(a.add(e),()=>a.delete(e)),snapshot:()=>c(),getRuntime:s.getRuntime,getSettings:s.getSettings,getBaselineIntent:s.getBaselineIntent,setRuntime:s.setRuntime,setSettings:s.setSettings,setBaselineIntent:s.setBaselineIntent,updateVitals:i.updateVitals,updateStatus:i.updateStatus,updateWielded:i.updateWielded,updateMount:i.updateMount,getChar:i.getChar,getClass:i.getClass,checkClass:i.checkClass,isClass:i.isClass,updateTarget:o.updateTarget,isTarget:o.isTarget,getRoom:l.getRoom,updateRoom:l.updateRoom,setRoomItems:l.setRoomItems}},createModels=({adapter:e,seedData:t,options:a={},now:n})=>{const s=Boolean(a.debug),i=createSystemModel({settings:{debug:s},baselineIntent:{debug:s}}),o=createAfflictionModel({affTable:t.affTable,now:n,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),l=createBalanceModel({balanceTable:t.balanceTable,haveAff:e=>o.haveAff(e),now:n,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),c=createDefenseModel({defTable:t.defTable,defPrios:t.defPrios});return{systemModel:i,affModel:o,balanceModel:l,defModel:c,cacheModel:createCacheModel({cacheTable:t.cacheTable,cacheNames:t.cacheNames,haveAff:e=>o.haveAff(e),haveDef:e=>c.haveDef(e)}),limbModel:createLimbModel({now:n,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout})}},at="parry",nt=25,resetParryPriorities=e=>{Object.keys(Ce.long).forEach(t=>{e.setDefaultPriority(`parrying ${t}`,0,at),e.get(`guarding ${t}`)&&e.setDefaultPriority(`guarding ${t}`,0,at)})},createCombatDomainService=({affModel:e,defModel:t,limbModel:a,systemModel:n,queueController:s,serverside:i})=>({observeLimbHit:({limb:t,amount:n,source:s="manual",at:o}={})=>applyObservedLimbHit({limbModel:a,affModel:e,serverside:i,limb:t,amount:n,source:s,at:o}),observeLimbReset:({limb:t,source:n="manual",at:s}={})=>applyObservedLimbReset({limbModel:a,affModel:e,serverside:i,limb:t,source:n,at:s}),observeLimbStage:({limb:t,stage:n,source:s="manual",at:o}={})=>applyObservedLimbStage({limbModel:a,affModel:e,serverside:i,limb:t,stage:n,source:s,at:o}),parry(e){resetParryPriorities(t);const a=Ce.short[e]||e,i=t.get(`guarding ${a}`);let o;return i&&n.isClass(i.skills)?(t.setDefaultPriority(`guarding ${a}`,nt,at),o=`guard ${a}`):(t.setDefaultPriority(`parrying ${a}`,nt,at),n.isClass("Dragon")?(t.setCommand(`parrying ${a}`,`clawparry ${a}`,at),o=`clawparry ${a}`):(t.setCommand(`parrying ${a}`,`parry ${a}`,at),o=`parry ${a}`)),s.prepend("freeQueue",o),{limbName:a,command:o}}}),isRecordValue=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),hasSupportedSchemaVersion=e=>isRecordValue(e)&&isSupportedPersistenceSchemaVersion(e.schemaVersion),createPersistenceStore=({adapter:e,key:t="nexSys4Settings",noticeCenter:a}={})=>{let n=!1;const noticeSchemaResetIfNeeded=e=>{n||!isRecordValue(e)||null==e.schemaVersion||isSupportedPersistenceSchemaVersion(e.schemaVersion)||(n=!0,a?.publish?.("persistence","Saved nexSys4 settings were in an older format and have been reset to defaults.",{force:!0}))},read=()=>{const a=e.getVariable(t);return noticeSchemaResetIfNeeded(a),{key:t,exists:hasSupportedSchemaVersion(a),snapshot:deepClone$1(normalizePersistenceSnapshot(a))}},load=()=>read().snapshot,save=(a={})=>{const n=deepClone$1(normalizePersistenceSnapshot(a,{assumeCurrentVersion:!0}));return e.setVariable(t,n),deepClone$1(n)};return{key:t,read,load,save}},createNoticeCenter=({adapter:e,systemModel:t})=>({publish:(a,n,s={})=>{const i=t.getSettings().notices||{},{force:o=!1,...l}=s;(o||!1!==i[a])&&e.notice(String(n),{category:a,...l})}}),st=Object.freeze({PLANNED:"planned",SENT:"sent",AWAITING_COMPLETION:"awaiting-completion",COMPLETED:"completed",EXPIRED:"expired",RECOVERING:"recovering"}),createOutputCycle=({adapter:e,dispatchCommands:t,systemModel:a,serverside:n,outputPlanner:s,noticeCenter:i,options:o={}}={})=>{const now=()=>e?.now?.()??Date.now();let l=[],c="",u=1,d=null,m=null,p=null,g=[];const h=`echo SystemEvent ${ie.OUTPUT_COMPLETE}`,b=Math.max(50,Number(o.outputCompletionTimeoutMs||1e3)),y=Math.max(0,Number(o.maxOutputRecoveryAttempts??2)),clearCompletionTimer=()=>{p&&(e?.clearTimeout?.(p),p=null)},recordBatchState=(e,t,a={})=>{if(!e)return null;const n=now();return e.state=t,e.stateHistory.push({state:t,at:n}),Object.assign(e,a),e},snapshotBatch=e=>e?{id:e.id,source:e.source,state:e.state,stateHistory:e.stateHistory.map(e=>({...e})),completionRequired:e.completionRequired,recoveryAttempts:e.recoveryAttempts,maxRecoveryAttempts:e.maxRecoveryAttempts,commands:[...e.commands],dispatchedCommands:[...e.dispatchedCommands],serversideCommands:[...e.serversideCommands],batchCount:e.batchCount,createdAt:e.createdAt,sentAt:e.sentAt??null,completedAt:e.completedAt??null,expiredAt:e.expiredAt??null,lastRecoveryAt:e.lastRecoveryAt??null}:null,storeLastBatch=e=>{m=snapshotBatch(e)},createBatch=({source:e,intents:t=[],commands:a,serversideCommands:n,maxCommands:s})=>{const i=t.some(e=>!0===e?.requiresCompletion),o=i?a.filter(e=>e!==h):[...a],l=i?chunkCommandsWithTrailing(o,{maxEntries:s,trailing:[h]}):chunkCommands(o,s);return{id:u++,source:e,state:st.PLANNED,stateHistory:[{state:st.PLANNED,at:now()}],completionRequired:i,recoveryAttempts:0,maxRecoveryAttempts:y,commands:[...o],dispatchedCommands:i?[...o,h]:[...o],serversideCommands:[...n],batches:l,batchCount:l.length,createdAt:now(),observedOutbound:!1}},dispatchBatchBatches=(e,a,n={})=>{a.forEach((s,i)=>{t(s,{source:n.source||"output-cycle",cycleSource:e.source,batch:i+1,batchCount:a.length,outputBatchId:e.id,outputBatchState:e.state,recoveryAttempt:n.recoveryAttempt||0})})},scheduleCompletionTimeout=t=>{clearCompletionTimer(),p=e?.setTimeout?.(()=>{if(d&&d.id===t.id&&d.completionRequired){if(recordBatchState(d,st.EXPIRED,{expiredAt:now()}),c="",d.recoveryAttempts>=d.maxRecoveryAttempts)return i?.publish?.("output",`Output completion confirmation expired after ${d.maxRecoveryAttempts} recovery probe(s).`,{force:!0}),storeLastBatch(d),d=null,void clearCompletionTimer();d.recoveryAttempts+=1,recordBatchState(d,st.RECOVERING,{lastRecoveryAt:now()}),dispatchBatchBatches(d,[[h]],{source:"output-cycle-recovery",recoveryAttempt:d.recoveryAttempts}),scheduleCompletionTimeout(d)}},b)};return{planAndSend:({source:e="prompt"}={})=>{const t=a.getRuntime(),i=a.getSettings();if(t.paused||t.rulesSuspended)return t.rulesSuspended&&n.evaluate({emitCommands:!1,source:`${e}:rule-suspend-check`}),[];const o=n.getCuringSets?.().activeSet||"";if(o&&"nexsys4-default"!==o)return[];if(d)return[];const u="output-complete"===e?[...g]:[];g=[];const m=s.plan({source:e,injectedCommands:l,suppressedServersideCommands:u});if(a.getRuntime().paused||a.getRuntime().rulesSuspended)return l=[],[];if(!m.commands.length)return l=[],[];const p=Math.max(1,Number(i.maxSendPerChunk||20)),h=createBatch({source:e,intents:m.intents,commands:m.commands,serversideCommands:m.serversideCommands,maxCommands:p}),b=h.dispatchedCommands.join("");return b===c?[]:(h.serversideCommands.length&&!h.observedOutbound&&(n.observeOutbound(h.serversideCommands),h.observedOutbound=!0),recordBatchState(h,st.SENT,{sentAt:now()}),dispatchBatchBatches(h,h.batches),c=b,h.completionRequired?(d=h,recordBatchState(d,st.AWAITING_COMPLETION),scheduleCompletionTimeout(d)):(recordBatchState(h,st.COMPLETED,{completedAt:now()}),storeLastBatch(h)),l=[],m.commands)},markComplete:()=>!!d&&(clearCompletionTimer(),g=[...d.serversideCommands],d.serversideCommands.length&&n.acknowledgeCommands(d.serversideCommands),recordBatchState(d,st.COMPLETED,{completedAt:now()}),storeLastBatch(d),d=null,!0),isWaitingForCompletion:()=>d?.state===st.AWAITING_COMPLETION||d?.state===st.RECOVERING,isBlockingOutput:()=>Boolean(d),getLifecycleState:()=>({activeBatch:snapshotBatch(d),lastBatch:snapshotBatch(m)}),invalidate(){c=""},injectCommands(e=[]){l=[...l,...e.filter(Boolean)]},dispose(){clearCompletionTimer(),d=null,g=[]}}},createRuntimeServices=({adapter:e,options:t={},models:a,controllers:n})=>{const{systemModel:s,affModel:i,defModel:o,limbModel:l}=a,{commandDispatcher:c,queueController:u,serverside:d,defensePlanner:m,precachePlanner:p,outputPlanner:g}=n,h=createNoticeCenter({adapter:e,systemModel:s});return{persistence:createPersistenceStore({adapter:e,key:t.persistenceKey||"nexSys4Settings",noticeCenter:h}),combatService:createCombatDomainService({affModel:i,defModel:o,limbModel:l,systemModel:s,queueController:u,serverside:d}),noticeCenter:h,defensePlanner:m,precachePlanner:p,outputCycle:createOutputCycle({adapter:e,dispatchCommands:c.sendCommands,systemModel:s,serverside:d,outputPlanner:g,noticeCenter:h,options:t})}},createRuntimeDependencies=({adapter:e,seedData:t,options:a={}})=>{const now=()=>e.now(),n=createModels({adapter:e,seedData:t,options:a,now}),s=createDomainControllers({adapter:e,seedData:t,options:a,now,models:n}),i=createRuntimeServices({adapter:e,options:a,models:n,controllers:s});return{now,...s,...n,...i}},createRuntimeFlushCoordinator=({adapter:e,systemModel:t,serverside:a,outputCycle:n,flushGmcpBuffer:s})=>{const now=()=>e?.now?.()??Date.now(),i={started:!1,safetyTimer:null,dirty:!1,flushing:!1,dirtyAt:null},clearSafetyTimer=()=>{i.safetyTimer&&(e.clearTimeout(i.safetyTimer),i.safetyTimer=null)},isRuntimeReady=()=>isRuntimeReadyPhase(t.getRuntime().phase),hasPendingSafetyWork=()=>{const e="function"!=typeof a.isDirty||a.isDirty();return i.dirty&&e},scheduleSafetyFlush=()=>{const a=t.getSettings(),n=Number(a.flushSafetyMs||120),s=Number(a.flushSafetyMaxWaitMs||500),o=now();i.dirtyAt||(i.dirtyAt=o),clearSafetyTimer();const l=o-i.dirtyAt,c=l>=s?0:Math.min(n,s-l);i.safetyTimer=e.setTimeout(()=>{i.safetyTimer=null,hasPendingSafetyWork()?(i.dirtyAt=null,flushCycle("safety-flush")):i.dirtyAt=null},c)},invalidateOutput=()=>{i.dirty=!0,n.invalidate?.()},markDirty=(e="dirty")=>{if(invalidateOutput(),a.markDirty(e),!isRuntimeReady())return clearSafetyTimer(),void(i.dirtyAt=null);i.flushing||n.isBlockingOutput?.()||scheduleSafetyFlush()},flushCycle=(e="prompt")=>{if(!i.started||i.flushing)return[];if(clearSafetyTimer(),!isRuntimeReady())return[];i.flushing=!0;try{if(s(),t.getRuntime().paused)return i.dirty=!1,[];const a=n.planAndSend({source:e});return i.dirty=n.isBlockingOutput()&&0===a.length,i.dirty||(i.dirtyAt=null),a}finally{i.flushing=!1}};return{start(){i.started=!0},stop(){i.started=!1,i.dirty=!1,i.flushing=!1,i.dirtyAt=null,clearSafetyTimer()},isStarted:()=>i.started,isFlushing:()=>i.flushing,invalidateOutput,markDirty,flushCycle}},cell=(e="",t="",a="")=>({text:e,fg:t,bg:a}),createDefaultCureColors=()=>({antimony:{fg:"olive",bg:""},argentum:{fg:"royalblue",bg:""},arsenic:{fg:"",bg:""},aurum:{fg:"ForestGreen",bg:""},azurite:{fg:"",bg:""},bisemutum:{fg:"",bg:""},calamine:{fg:"",bg:""},calcite:{fg:"slategray",bg:""},cinnabar:{fg:"greenyellow",bg:""},cuprum:{fg:"DeepSkyBlue",bg:""},ferrum:{fg:"DarkOrange",bg:""},gypsum:{fg:"",bg:""},magnesium:{fg:"Red",bg:""},plumbum:{fg:"Gold",bg:""},potash:{fg:"",bg:""},quartz:{fg:"",bg:""},quicksilver:{fg:"",bg:""},realgar:{fg:"firebrick",bg:""},stannum:{fg:"Tan",bg:""},caloric:{fg:"darkseagreen",bg:""},mending:{fg:"orchid",bg:""},epidermal:{fg:"sienna",bg:""},restoration:{fg:"darkviolet",bg:""},health:{fg:"lightpink",bg:""},writhe:{fg:"PaleGoldenRod",bg:"darkslategray"}}),createDefaultVars=()=>({blackout:!1,paused:cell("","red"),retard:cell("","blue"),aeon:cell("","red"),h:cell("0","green"),m:cell("0","green"),e:cell("0","green"),w:cell("0","green"),maxh:cell(""),maxm:cell(""),maxe:cell(""),maxw:cell(""),ph:cell("100%","green"),pm:cell("100%","green"),pe:cell("100%"),pw:cell("100%"),diffh:cell("","green"),diffm:cell("","green"),diffhp:cell("","green"),diffmp:cell("","green"),target:cell("","pink"),targetHP:cell("","green"),eq:cell(""),bal:cell(""),c:cell(""),k:cell(""),d:cell(""),b:cell(""),shield:cell("","cyan"),prismatic:cell("","magenta"),rage:cell("","red"),karma:cell("","green"),essence:cell("","purple"),kai:cell("","blue")}),createDefaultAffs=(e=createDefaultCureColors())=>({addiction:{text:"add",...e.ferrum},aeon:{text:"ae",...e.cinnabar},agoraphobia:{text:"agor",...e.argentum},amnesia:{text:"amn",fg:"",bg:""},anorexia:{text:"ANO",...e.epidermal},asthma:{text:"AST",...e.aurum},blackout:{text:"bo",fg:"",bg:""},blindness:{text:"unb",...e.arsenic},bound:{text:"bnd",...e.writhe},brokenleftarm:{text:"la1",...e.mending},brokenleftleg:{text:"ll1",...e.mending},brokenrightarm:{text:"ra1",...e.mending},brokenrightleg:{text:"rl1",...e.mending},bruisedribs:{text:"ribs",fg:"",bg:""},burning:{text:"burn",...e.mending},calcifiedskull:{text:"calh",...e.restoration},calcifiedtorso:{text:"calt",...e.restoration},claustrophobia:{text:"clau",...e.stannum},clumsiness:{text:"clu",...e.aurum},concussion:{text:"conc",...e.restoration},confusion:{text:"con",...e.stannum},corruption:{text:"corr",fg:"",bg:""},crackedribs:{text:"cr",...e.health},crushedthroat:{text:"cru",...e.mending},daeggerimpale:{text:"daeg",...e.writhe},damage:{text:"dmg",fg:"tomato",bg:""},damagedleftarm:{text:"la2",...e.restoration},damagedleftleg:{text:"ll2",...e.restoration},damagedrightarm:{text:"ra2",...e.restoration},damagedrightleg:{text:"rl2",...e.restoration},damagedhead:{text:"hd2",...e.restoration},darkshade:{text:"dark",...e.ferrum},dazed:{text:"dzd",...e.cinnabar},dazzled:{text:"dzl",...e.mending},deadening:{text:"dea",...e.cinnabar},deafness:{text:"und",...e.calamine},dehydrated:{text:"deh",fg:"",bg:""},dementia:{text:"dem",...e.stannum},depression:{text:"dep",...e.plumbum},deteriorate:{text:"det",fg:"",bg:""},disloyalty:{text:"disl",...e.realgar},disrupted:{text:"disr",fg:"",bg:""},dissonance:{text:"disso",...e.plumbum},dizziness:{text:"diz",...e.plumbum},enscorcelled:{text:"ensor",fg:"",bg:""},entangled:{text:"entgl",...e.writhe},epilepsy:{text:"epi",...e.plumbum},fear:{text:"fear",fg:"",bg:""},flushings:{text:"flush",...e.ferrum},fratricide:{text:"frat",...e.ferrum},frozen:{text:"frz",...e.caloric},generosity:{text:"gen",...e.cuprum},grievouswounds:{text:"grv",...e.health},guilt:{text:"gui",...e.argentum},haemophilia:{text:"haem",...e.ferrum},hallucinations:{text:"hall",...e.stannum},hamstrung:{text:"hms",fg:"",bg:""},healthleech:{text:"hthl",...e.aurum},heartseed:{text:"heart",...e.restoration},hellsight:{text:"hell",...e.realgar},horror:{text:"hor",...e.plumbum},hypersomnia:{text:"hypers",...e.stannum},hypochondria:{text:"hypoch",...e.lobelia},hypothermia:{text:"hypoth",...e.restoration},icefisted:{text:"ice",fg:"",bg:""},impaled:{text:"impl",...e.writhe},impatience:{text:"IMPAT",...e.plumbum},indifference:{text:"ind",...e.cuprum},insomnia:{text:"insomnia",fg:"",bg:""},itching:{text:"itch",...e.epidermal},justice:{text:"just",...e.cuprum},kkractlebrand:{text:"kkr",...e.health},laceratedthroat:{text:"lac2",...e.restoration},latched:{text:"latch",...e.health},lethargy:{text:"let",...e.ferrum},lightbind:{text:"light",fg:"",bg:""},loneliness:{text:"lon",...e.argentum},lovers:{text:"love",...e.cuprum},manaleech:{text:"man",...e.realgar},mangledleftarm:{text:"la3",...e.restoration},mangledleftleg:{text:"ll3",...e.restoration},mangledrightarm:{text:"ra3",...e.restoration},mangledrightleg:{text:"rl3",...e.restoration},mangledhead:{text:"hd3",...e.restoration},masochism:{text:"maso",...e.argentum},mildtrauma:{text:"tor1",...e.restoration},mycalium:{text:"myc",...e.plumbum},nausea:{text:"nau",...e.ferrum},numbedleftarm:{text:"nbla",fg:"",bg:""},numbedrightarm:{text:"nbra",fg:"",bg:""},pacified:{text:"pac",...e.cuprum},paralysis:{text:"PAR",...e.magnesium},paranoia:{text:"prn",...e.stannum},parasite:{text:"prs",...e.aurum},peace:{text:"pea",...e.cuprum},phlogisticated:{text:"phlog",fg:"",bg:""},pinshot:{text:"psh",fg:"",bg:""},pressure:{text:"pres",...e.calcite},prone:{text:"pr",fg:"",bg:""},pyramides:{text:"pyra",...e.magnesium},pyre:{text:"pyre",...e.cuprum},rebbies:{text:"reb",...e.aurum},recklessness:{text:"reck",...e.argentum},retardation:{text:"ret",fg:"",bg:""},retribution:{text:"retr",...e.cuprum},revealed:{text:"rev",fg:"",bg:""},sandfever:{text:"sand",...e.plumbum},scalded:{text:"scald",...e.epidermal},scytherus:{text:"scy",...e.ferrum},selarnia:{text:"sel",...e.mending},sensitivity:{text:"sen",...e.aurum},serioustrauma:{text:"tor2",...e.restoration},shadowmadness:{text:"shad",...e.plumbum},shivering:{text:"shiv",...e.caloric},shyness:{text:"shy",...e.plumbum},skullfractures:{text:"sf",...e.health},slashedthroat:{text:"lac1",...e.epidermal},sleeping:{text:"slp",fg:"",bg:""},slickness:{text:"SLI",...e.magnesium},slimeobscure:{text:"nkh",fg:"",bg:""},spiritburn:{text:"spirB",...e.argentum},spiritwrack:{text:"spirW",fg:"",bg:""},stupidity:{text:"st",...e.plumbum},stuttering:{text:"stut",...e.epidermal},homunculusmercury:{text:"merc",fg:"",bg:""},temperedcholeric:{text:"choH",...e.antimony},temperedmelancholic:{text:"melaH",...e.antimony},temperedphlegmatic:{text:"phleH",...e.antimony},temperedsanguine:{text:"sanH",...e.antimony},tenderskin:{text:"tend",...e.argentum},tension:{text:"tens",...e.cinnabar},timeflux:{text:"tmfx",fg:"",bg:""},timeloop:{text:"tmlp",...e.cuprum},tonguetied:{text:"tngt",...e.restoration},torntendons:{text:"tt",...e.health},transfixation:{text:"trfx",...e.writhe},unweavingbody:{text:"unwB",...e.ferrum},unweavingspirit:{text:"unwS",...e.cinnabar},unweavingmind:{text:"unwM",...e.plumbum},vertigo:{text:"vert",...e.argentum},vitrified:{text:"vitri",fg:"",bg:""},voidfisted:{text:"void",fg:"",bg:""},voyria:{text:"voy",fg:"",bg:""},weariness:{text:"wea",...e.aurum},webbed:{text:"web",...e.writhe},whisperingmadness:{text:"mad",...e.argentum},wristfractures:{text:"wf",...e.health}}),createDefaultPromptState=()=>{const e=createDefaultCureColors();return{vars:createDefaultVars(),affs:createDefaultAffs(e),cureColors:e}},it={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},escapeHtml=e=>String(e??"").replace(/[&<>"']/g,e=>it[e]),renderChunk=(e,t="",a="")=>{if(""===e||null==e)return"";const n=[];return t&&n.push(`color:${t}`),a&&n.push(`background-color:${a}`),`<span${n.length?` style="${n.join(";")}"`:""}>${escapeHtml(e)}</span>`},createPromptBuilder=({vars:e,affs:t,cureColors:a,renderAffsHtml:n,renderDiffHtml:s,renderTargetHtml:i,renderVarHtml:o,renderChunkHtml:l=renderChunk})=>{const c=[],u={vars:e,affs:t,cureColors:a,add(t,a,n){if(""===t||null==t)return u;const s="string"==typeof t?e[t]:null;return s&&"object"==typeof s&&"text"in s?c.push("function"==typeof o?o(t):l(s.text,s.fg,s.bg)):c.push(l(t,a,n)),u},addHTML:e=>(e&&c.push(String(e)),u),addAffs:()=>(c.push(n()),u),addDiff:()=>(c.push(s()),u),addTarget:()=>(c.push(i()),u),toHTML:()=>`<span class="nexsys-prompt">${c.join("")}</span>`};return u},ot=new Set(["diffh","diffm","diffhp","diffmp"]),lt=new Set(["target","targetHP"]),getCellSignature=(e={})=>`${String(e.text??"")}\0${String(e.fg??"")}\0${String(e.bg??"")}`,createPromptRenderer=({state:e,getComposer:t,getSortedAffNames:a,getAffSnapshot:n,renderChunkHtml:s=renderChunk})=>{const i=new Map,o=new Map,l=new Map,c=new Map;let u="",d="",m="",p="",g=!0,h=!0,b=!0,y=!0,v=null,S=Boolean(e.vars.blackout),x=[];const markPromptDirty=()=>{y=!0},markVarsDirty=(t=[])=>{Array.isArray(t)&&t.length&&(t.forEach(t=>{const a=e.vars[t];a&&"object"==typeof a&&"text"in a&&o.delete(t),ot.has(t)&&(h=!0),lt.has(t)&&(b=!0)}),y=!0)},syncExternalVarMutations=()=>{let t=!1;const a=new Set;Object.keys(e.vars||{}).forEach(n=>{a.add(n);const s=e.vars[n];if(!s||"object"!=typeof s||!("text"in s))return void((o.has(n)||i.has(n))&&(o.delete(n),i.delete(n),t=!0));const l=getCellSignature(s);o.get(n)!==l&&(o.delete(n),i.delete(n),t=!0,ot.has(n)&&(h=!0),lt.has(n)&&(b=!0))}),[...o.keys()].forEach(e=>{a.has(e)||(o.delete(e),i.delete(e),t=!0,ot.has(e)&&(h=!0),lt.has(e)&&(b=!0))});const n=Boolean(e.vars.blackout);n!==S&&(S=n,t=!0),t&&(y=!0)},syncExternalAffMutations=()=>{if(g||!x.length)return;let t=!1;x.forEach(a=>{const n=getCellSignature(e.affs[a]||{});l.get(a)!==n&&(t=!0)}),t&&(g=!0,y=!0)},syncExternalCureColorMutations=()=>{let t=!1;const a=new Set;Object.keys(e.cureColors||{}).forEach(n=>{a.add(n);const s=getCellSignature(e.cureColors[n]||{});c.get(n)!==s&&(t=!0)}),[...c.keys()].forEach(e=>{a.has(e)||(t=!0)}),t&&(y=!0)},renderVarHtml=t=>{const a=e.vars[t];if(!a||"object"!=typeof a||!("text"in a))return"";const n=getCellSignature(a);return o.get(t)===n&&i.has(t)||(i.set(t,s(a.text,a.fg,a.bg)),o.set(t,n)),i.get(t)||""},buildAffsHtml=()=>{const t=a()||[],{affs:i}=e;if(x=[...t],l.clear(),!t.length)return'<span class="nexsys-prompt-affs mono"></span>';const o=[s("[","brown")];for(let e=0;e<t.length;e+=1){const a=t[e],c=i[a]||{text:a,fg:"",bg:""},u="function"==typeof n&&n(a)||{},d=Number(u.max)>1&&Number.isFinite(Number(u.count))?`(${Number(u.count)})`:"";l.set(a,getCellSignature(i[a]||{}));const m=e<t.length-1?" ":"";o.push(s(`${c.text}${d}${m}`,c.fg,c.bg))}return o.push(s("]","brown")),`<span class="nexsys-prompt-affs mono">${o.join("")}</span>`},renderAffsHtml=()=>(g&&(u=buildAffsHtml(),g=!1),u),renderDiffHtml=()=>{if(h){const t=e.vars.diffh||{},a=e.vars.diffhp||{},n=e.vars.diffm||{},i=e.vars.diffmp||{},o=[];t.text&&(o.push(s(`${t.text}h`,t.fg,t.bg)),a.text&&o.push(s(`(${a.text})`,a.fg,a.bg))),n.text&&(o.length&&o.push(s(", ")),o.push(s(`${n.text}m`,n.fg,n.bg)),i.text&&o.push(s(`(${i.text})`,i.fg,i.bg))),d=o.join(""),h=!1}return d},renderTargetHtml=()=>{if(b){const t=e.vars.target||{},a=e.vars.targetHP||{},n=[];(t.text||a.text)&&(n.push(s(" [")),t.text&&n.push(renderVarHtml("target")),t.text&&a.text&&n.push(s(": ")),a.text&&n.push(renderVarHtml("targetHP")),n.push(s("] "))),m=n.join(""),b=!1}return m},resetTransients=()=>{const{vars:t}=e,a=["diffh","diffm","diffhp","diffmp"].filter(e=>{const a=t[e];return!(!a||""===a.text)&&(a.text="",!0)});a.length&&markVarsDirty(a)};return{render(){const a=t();if("function"!=typeof a)return"";if(syncExternalVarMutations(),syncExternalAffMutations(),syncExternalCureColorMutations(),!y&&a===v)return p;const n=createPromptBuilder({vars:e.vars,affs:e.affs,cureColors:e.cureColors,renderAffsHtml,renderDiffHtml,renderTargetHtml,renderVarHtml,renderChunkHtml:s});try{a(n)}catch(i){return console.error("nexSys4 prompt compose error",i),""}return p=n.toHTML(),y=!1,v=a,Object.keys(e.cureColors||{}).forEach(t=>{c.set(t,getCellSignature(e.cureColors[t]||{}))}),[...c.keys()].forEach(t=>{t in(e.cureColors||{})||c.delete(t)}),resetTransients(),p},markAffsDirty(){g=!0,y=!0},isAffDirty:()=>g,markDiffDirty(){h=!0,y=!0},markTargetDirty(){b=!0,y=!0},markVarsDirty,markPromptDirty,isPromptDirty:()=>y}},defaultCompose=e=>{const{vars:t}=e;t.blackout?e.add("-","reset"):(e.add("paused"),e.add("aeon"),e.add("retard"),e.add("h"),e.add(`(${t.ph.text}), `,t.h.fg,t.h.bg),e.add("m"),e.add(`(${t.pm.text}) `,t.m.fg,t.m.bg),t.rage.text&&Number(t.rage.text)>0&&e.add(`${t.rage.text}R `,t.rage.fg,t.rage.bg),t.karma.text&&e.add(`${t.karma.text}K `,t.karma.fg,t.karma.bg),e.add("eq"),e.add("bal"),e.add("|"),e.add("c"),e.add("k"),e.add("d"),e.add("b"),e.add(" "),e.addAffs(),e.addDiff())},ct=new Set(["diffh","diffm","diffhp","diffmp"]),ut=new Set(["target","targetHP"]),dt=Object.freeze(["deafness","blindness","insomnia"]),clampPct=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>100?100:t:0},colorGradation=e=>{const t=clampPct(e),a=t<75?50:Math.abs(t-100)/2+25;return`hsl(${(1.2*t).toFixed(0)}, 100%, ${a}%)`},colorPercentage=e=>{const t=Number(e)||0;return t>75?"green":t>=33?"yellow":"red"},createPromptPresenter=({publicEvents:e,affModel:t,defModel:a,balanceModel:n,systemModel:s,renderPrompt:i}={})=>{const o=createDefaultPromptState();let l=defaultCompose;const isPromptDefTracked=e=>"function"==typeof a?.get?Boolean(a.get(e)):"function"==typeof a?.haveDef,c=dt.filter(isPromptDefTracked),u=new Set(c),haveDef=e=>Boolean(a?.haveDef?.(e)),d=createPromptRenderer({state:o,getComposer:()=>l,getSortedAffNames:()=>{const e=t?.currentSorted&&t.currentSorted()||[],a=new Set,n=[];return e.forEach(e=>{u.has(e)||a.has(e)||(a.add(e),n.push(e))}),c.forEach(e=>{haveDef(e)||a.has(e)||(a.add(e),n.push(e))}),n},getAffSnapshot:e=>t?.get?.(e)||null}),isRecord=e=>e&&"object"==typeof e&&!Array.isArray(e),isCellLike=e=>isRecord(e)&&("text"in e||"fg"in e||"bg"in e),normalizeCellField=e=>null==e?"":String(e),getVarRegion=e=>ct.has(e)?"diff":ut.has(e)?"target":"",ensureVarCell=e=>{const t=o.vars[e];if(t&&"object"==typeof t&&"text"in t)return t;if(e in o.vars)return null;const a={text:"",fg:"",bg:""};return o.vars[e]=a,d.markPromptDirty(),a},applyCell=(e,t={},a={})=>{const n=a.create?ensureVarCell(e):o.vars[e];if(!n||"object"!=typeof n||!("text"in n))return!1;let s=!1;if("text"in t){const e=normalizeCellField(t.text);n.text!==e&&(n.text=e,s=!0)}if("fg"in t){const e=normalizeCellField(t.fg);n.fg!==e&&(n.fg=e,s=!0)}if("bg"in t){const e=normalizeCellField(t.bg);n.bg!==e&&(n.bg=e,s=!0)}return!!s&&(d.markVarsDirty([e]),"diff"===a.region&&d.markDiffDirty(),"target"===a.region&&d.markTargetDirty(),!0)},applyFlag=(e,t)=>{const a=Boolean(t);return o.vars[e]!==a&&(o.vars[e]=a,d.markPromptDirty(),!0)},updateBalanceGlyphs=()=>{applyCell("eq",{text:n?.have?.(qe.EQUILIBRIUM)?"e":""}),applyCell("bal",{text:n?.have?.(qe.BALANCE)?"x":""})},updateDefGlyphs=()=>{applyCell("c",{text:haveDef("cloak")?"c":""}),applyCell("k",{text:haveDef("kola")?"k":""}),applyCell("d",{text:haveDef("deafness")?"d":""}),applyCell("b",{text:haveDef("blindness")?"b":""}),applyCell("shield",{text:haveDef("shield")?"(":""}),applyCell("prismatic",{text:haveDef("prismatic")?"[":""})},pctOf=(e,t)=>{const a=Number(e)||0,n=Number(t)||0;return n>0?100*a/n:0},onVitals=(e={})=>{const t=e.current||s?.snapshot?.().char||{},a=pctOf(t.hp,t.maxhp),n=pctOf(t.mp,t.maxmp),i=pctOf(t.ep,t.maxep),o=pctOf(t.wp,t.maxwp);applyCell("h",{text:t.hp??"",fg:colorGradation(a)}),applyCell("m",{text:t.mp??"",fg:colorGradation(n)}),applyCell("e",{text:t.ep??"",fg:colorGradation(i)}),applyCell("w",{text:t.wp??"",fg:colorGradation(o)}),applyCell("maxh",{text:t.maxhp??""}),applyCell("maxm",{text:t.maxmp??""}),applyCell("maxe",{text:t.maxep??""}),applyCell("maxw",{text:t.maxwp??""}),applyCell("ph",{text:`${a.toFixed(1)}%`}),applyCell("pm",{text:`${n.toFixed(1)}%`}),applyCell("pe",{text:`${i.toFixed(1)}%`}),applyCell("pw",{text:`${o.toFixed(1)}%`});const l=Number(e.hpDiff||0),c=Number(e.mpDiff||0),u=Number(t.maxhp)||0,d=Number(t.maxmp)||0;if(l){const e=l<0?"red":"green";applyCell("diffh",{text:`${l>0?"+":""}${l}`,fg:e},{region:"diff"}),applyCell("diffhp",{text:u?`${(l/u*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}if(c){const e=c<0?"red":"green";applyCell("diffm",{text:`${c>0?"+":""}${c}`,fg:e},{region:"diff"}),applyCell("diffmp",{text:d?`${(c/d*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}"karma"in t&&applyCell("karma",{text:t.karma??""}),"rage"in t&&applyCell("rage",{text:t.rage??""}),"essence"in t&&applyCell("essence",{text:t.essence??""}),"kai"in t&&applyCell("kai",{text:t.kai??""}),applyFlag("blackout",t.dead)},onRuntimeChange=()=>{const e=s?.snapshot?.().runtime||{};applyCell("retard",{text:e.slowMode?"(r)":""}),applyCell("paused",{text:e.paused?"(p)":""}),applyCell("aeon",{text:e.aeonLocked?"(a)":""})},onTargetChange=()=>{const e=s?.snapshot?.().target||{};applyCell("target",{text:e.text||""},{region:"target"}),applyCell("targetHP",{text:e.hp||""},{region:"target"});const t=parseInt(e.hp,10);Number.isFinite(t)&&applyCell("targetHP",{fg:colorGradation(t)},{region:"target"})},onAffEvent=(e={})=>{"aeon"===e?.name&&applyCell("aeon",{text:t?.haveAff?.("aeon")?"(a)":""}),d.markAffsDirty()},onDefEvent=(e={})=>{updateDefGlyphs(),u.has(e?.id)&&d.markAffsDirty()},onBalanceEvent=()=>updateBalanceGlyphs(),m=[];let p=!1;const subscribe=(t,a)=>{if(!e||"function"!=typeof e.on)return;const n=e.on(t,a);"function"==typeof n&&m.push(n)};return{start:()=>{p||(p=!0,subscribe(ne.SYSTEM_VITALS_CHANGED,onVitals),subscribe(ne.SYSTEM_RUNTIME_CHANGED,onRuntimeChange),subscribe(ne.SYSTEM_PAUSE_CHANGED,onRuntimeChange),subscribe(ne.SYSTEM_TARGET_CHANGED,onTargetChange),subscribe(ne.AFF_GOT,onAffEvent),subscribe(ne.AFF_LOST,onAffEvent),subscribe(ne.AFF_STACK_CHANGED,onAffEvent),subscribe(ne.AFF_PRIORITY_CHANGED,()=>d.markAffsDirty()),subscribe(ne.DEF_GOT,onDefEvent),subscribe(ne.DEF_LOST,onDefEvent),subscribe(ne.BALANCE_GOT,onBalanceEvent),subscribe(ne.BALANCE_LOST,onBalanceEvent),subscribe(ne.BALANCE_RESET,onBalanceEvent),subscribe(ne.BALANCE_TIMER_RESTARTED,onBalanceEvent),updateDefGlyphs(),updateBalanceGlyphs(),onRuntimeChange())},stop:()=>{m.forEach(e=>{try{e()}catch(t){console.error("nexSys4 prompt presenter unsubscribe failed",t)}}),m.length=0,p=!1},render:(e={})=>{const t=d.render();return"function"==typeof i?i(t,e):t},markAffsDirty:()=>d.markAffsDirty(),markPromptDirty:()=>d.markPromptDirty(),patchVars:(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,a])=>{const n=o.vars[e],s=getVarRegion(e);"boolean"!=typeof n?"boolean"!=typeof a||void 0!==n?t=applyCell(e,isCellLike(a)?a:{text:a},{create:!0,region:s})||t:o.vars[e]!==a&&(o.vars[e]=a,d.markPromptDirty(),t=!0):t=applyFlag(e,a)||t}),t},patchAffs:(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,a])=>{if(null===a)return void(e in o.affs&&(delete o.affs[e],t=!0));const n=isCellLike(a)?a:{text:a},s=o.affs[e],i=s&&"object"==typeof s?s:o.affs[e]={text:"",fg:"",bg:""};["text","fg","bg"].forEach(e=>{if(!(e in n))return;const a=normalizeCellField(n[e]);i[e]!==a&&(i[e]=a,t=!0)})}),t&&d.markAffsDirty(),t},patchCureColors:(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,a])=>{if(null===a)return void(e in o.cureColors&&(delete o.cureColors[e],t=!0));const n=isRecord(a)?a:{fg:a},s=o.cureColors[e],i=s&&"object"==typeof s?s:o.cureColors[e]={fg:"",bg:""};["fg","bg"].forEach(e=>{if(!(e in n))return;const a=normalizeCellField(n[e]);i[e]!==a&&(i[e]=a,t=!0)})}),t&&d.markPromptDirty(),t},colorGradation,colorPercentage,get vars(){return o.vars},get affs(){return o.affs},get cureColors(){return o.cureColors},get compose(){return l},set compose(e){l="function"==typeof e?e:defaultCompose,d.markPromptDirty()},_state:o,_onVitals:onVitals,_onAffEvent:onAffEvent,_onDefEvent:onDefEvent,_onBalanceEvent:onBalanceEvent,_onRuntimeChange:onRuntimeChange,_onTargetChange:onTargetChange}},mt=Object.freeze({INTERNAL:"internal",JS:"js",EVENTSTREAM:"eventstream"}),pt=Object.freeze({STABLE:"stable",EXPERIMENTAL:"experimental",DEPRECATED:"deprecated"}),gt=/^nexsys4(\.[a-z0-9_-]+)+$/,ft=Object.freeze(Object.values(mt)),ht=Object.freeze(Object.values(pt)),bt=Object.freeze({[mt.INTERNAL]:Object.freeze([null,mt.INTERNAL]),[mt.JS]:Object.freeze([null,mt.INTERNAL,mt.JS]),[mt.EVENTSTREAM]:Object.freeze([null,mt.INTERNAL,mt.JS,mt.EVENTSTREAM])}),topicEntry=(e,t,a={})=>{const n=a.scopedAudience??null,s={audience:e,scopedAudience:n,stability:a.stability??pt.STABLE,description:t};return null!=n&&a.scopedPayloadKey&&(s.scopedPayloadKey=a.scopedPayloadKey),Object.freeze(s)},eventStreamTopic=(e,t={})=>topicEntry(mt.EVENTSTREAM,e,t),jsTopic=(e,t={})=>topicEntry(mt.JS,e,t),scopedEventStreamTopic=(e,t)=>eventStreamTopic(e,{scopedAudience:mt.EVENTSTREAM,scopedPayloadKey:t}),isScopedAudienceAllowed=(e,t)=>{const a=bt[e];return Array.isArray(a)&&a.includes(t)},validateRegistryEntry=(e,t)=>{if(!gt.test(e))throw new Error(`Invalid topic registry key "${e}": expected lowercase dotted nexsys4.* form.`);if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(`Invalid registry entry for "${e}": expected an object.`);if(!ft.includes(t.audience))throw new Error(`Invalid audience for "${e}": received "${t.audience}".`);if(!("scopedAudience"in t))throw new Error(`Missing scopedAudience metadata for "${e}".`);if(null!=t.scopedAudience&&!ft.includes(t.scopedAudience))throw new Error(`Invalid scopedAudience for "${e}": received "${t.scopedAudience}".`);if(!isScopedAudienceAllowed(t.audience,t.scopedAudience??null))throw new Error(`Invalid scopedAudience for "${e}": "${t.scopedAudience}" exceeds base audience "${t.audience}".`);if(null!=t.scopedAudience&&("string"!=typeof t.scopedPayloadKey||!t.scopedPayloadKey.trim()))throw new Error(`Missing scopedPayloadKey for scoped topic "${e}".`);if(!ht.includes(t.stability))throw new Error(`Invalid stability for "${e}": received "${t.stability}".`);if("string"!=typeof t.description||!t.description.trim())throw new Error(`Invalid description for "${e}": expected a non-empty string.`)},validateTopicRegistry=(e,t=Object.values(ne))=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Invalid topic registry: expected an object.");for(const a of t)if(!Object.prototype.hasOwnProperty.call(e,a))throw new Error(`Missing registry entry for "${a}".`);for(const a of Object.keys(e)){if(!t.includes(a))throw new Error(`Unexpected registry entry for "${a}".`);validateRegistryEntry(a,e[a])}return!0},yt=Object.freeze({[ne.RUNTIME_STARTED]:eventStreamTopic("Runtime startup completed."),[ne.RUNTIME_STOPPED]:eventStreamTopic("Runtime shutdown completed."),[ne.RAW_GMCP]:eventStreamTopic("Raw GMCP payload observed at the adapter boundary."),[ne.SYSTEM_VITALS_CHANGED]:eventStreamTopic("Character vitals changed."),[ne.SYSTEM_HEALTH_CHANGED]:eventStreamTopic("Health changed."),[ne.SYSTEM_MANA_CHANGED]:eventStreamTopic("Mana changed."),[ne.SYSTEM_RAGE_CHANGED]:eventStreamTopic("Rage changed."),[ne.SYSTEM_BLEED_CHANGED]:eventStreamTopic("Bleed changed."),[ne.SYSTEM_STATUS_CHANGED]:eventStreamTopic("Character status snapshot changed."),[ne.SYSTEM_CLASS_CHANGED]:eventStreamTopic("Character class changed."),[ne.SYSTEM_TARGET_CHANGED]:eventStreamTopic("Current target changed."),[ne.SYSTEM_ROOM_CHANGED]:eventStreamTopic("Current room changed."),[ne.SYSTEM_ROOM_ITEMS_CHANGED]:eventStreamTopic("Visible room items changed."),[ne.SYSTEM_RUNTIME_CHANGED]:jsTopic("Runtime implementation state changed."),[ne.SYSTEM_PAUSE_CHANGED]:eventStreamTopic("Runtime pause state changed."),[ne.SYSTEM_PAUSED]:eventStreamTopic("Runtime paused."),[ne.SYSTEM_UNPAUSED]:eventStreamTopic("Runtime unpaused."),[ne.SYSTEM_LOADED]:eventStreamTopic("Startup game-state initialization completed."),[ne.SYSTEM_SETTINGS_CHANGED]:jsTopic("Runtime settings changed."),[ne.SYSTEM_BASELINE_CHANGED]:jsTopic("Baseline intent changed."),[ne.SYSTEM_DEATH_DETECTED]:eventStreamTopic("Death was detected from character state."),[ne.SYSTEM_MOUNT_CHANGED]:eventStreamTopic("Mounted state changed."),[ne.SYSTEM_WIELDED_CHANGED]:eventStreamTopic("Wielded equipment changed."),[ne.UI_CONFIG_CHANGED]:jsTopic("Configuration dialog open state changed."),[ne.AFF_GOT]:scopedEventStreamTopic("Affliction became active.","name"),[ne.AFF_LOST]:scopedEventStreamTopic("Affliction was cured or removed.","name"),[ne.AFF_STACK_CHANGED]:scopedEventStreamTopic("Affliction stack count changed.","name"),[ne.AFF_PRIORITY_CHANGED]:jsTopic("Affliction priority changed."),[ne.DEF_GOT]:scopedEventStreamTopic("Defence became active.","id"),[ne.DEF_LOST]:scopedEventStreamTopic("Defence expired or was removed.","id"),[ne.DEF_PRIORITY_CHANGED]:jsTopic("Defence priority changed."),[ne.BALANCE_GOT]:scopedEventStreamTopic("Balance became available.","id"),[ne.BALANCE_LOST]:scopedEventStreamTopic("Balance was consumed or lost.","id"),[ne.BALANCE_RESET]:scopedEventStreamTopic("Balance timing was reset.","id"),[ne.BALANCE_DURATION_OBSERVED]:scopedEventStreamTopic("Observed balance recovery duration changed.","id"),[ne.BALANCE_TIMER_RESTARTED]:jsTopic("Balance loss timer was restarted without a state flip."),[ne.EQBAL_GOT]:eventStreamTopic("Balance and equilibrium are both available."),[ne.LIMB_HIT]:scopedEventStreamTopic("Limb damage was recorded.","limb"),[ne.LIMB_RESET]:scopedEventStreamTopic("Limb tracking was reset.","limb"),[ne.LIMB_STAGE_CHANGED]:scopedEventStreamTopic("Limb damage stage changed.","limb"),[ne.LIMB_DECAY]:jsTopic("Limb damage counter reset after 3 minutes of no hits."),[ne.CACHE_AMOUNT_CHANGED]:eventStreamTopic("Cached item counts changed."),[ne.CACHE_INVENTORY_LIST]:eventStreamTopic("Inventory cache snapshot applied."),[ne.CACHE_RIFT_LIST]:eventStreamTopic("Rift cache snapshot applied."),[ne.CACHE_PRECACHE_CHANGED]:jsTopic("Desired precache state changed."),[ne.ITEM_ROOM_ADDED]:eventStreamTopic("An item appeared in the current room."),[ne.ITEM_ROOM_REMOVED]:eventStreamTopic("An item left the current room."),[ne.ITEM_ROOM_UPDATED]:eventStreamTopic("A current-room item changed."),[ne.ITEM_ROOM_LIST]:eventStreamTopic("Current-room item list snapshot received."),[ne.ITEM_INV_ADDED]:eventStreamTopic("An item was added to inventory."),[ne.ITEM_INV_REMOVED]:eventStreamTopic("An item was removed from inventory."),[ne.ITEM_INV_UPDATED]:eventStreamTopic("An inventory item changed."),[ne.ITEM_INV_LIST]:eventStreamTopic("Inventory item list snapshot received."),[ne.QUEUE_UPDATED]:jsTopic("Queue contents changed."),[ne.QUEUE_FLUSHED]:jsTopic("Queue flush decision completed."),[ne.QUEUE_DEFERRED]:jsTopic("Queue execution was deferred."),[ne.QUEUE_CLEARED]:jsTopic("Queue contents were cleared."),[ne.QUEUE_SENT]:scopedEventStreamTopic("A queue submission was accepted by the server.","queueName"),[ne.QUEUE_FIRED]:scopedEventStreamTopic("A queue fire was acknowledged for a named queue.","queueName"),[ne.QUEUE_FIRED_ACK]:eventStreamTopic("Queue fire acknowledgement was recorded."),[ne.SERVERSIDE_AFF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside affliction priority confirmation was observed.","id"),[ne.SERVERSIDE_DEF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside defence priority confirmation was observed.","id"),[ne.SERVERSIDE_DIRTY]:jsTopic("Serverside reconciliation dirty flag changed."),[ne.SERVERSIDE_EVALUATED]:jsTopic("Serverside evaluation completed."),[ne.SERVERSIDE_RULE_CHANGED]:jsTopic("Legacy generic serverside rule-change signal reserved for compatibility."),[ne.RULE_ADDED]:jsTopic("Serverside rule was added to the registry."),[ne.RULE_REMOVED]:jsTopic("Serverside rule was removed from the registry."),[ne.RULE_ENABLED]:jsTopic("Serverside rule was enabled."),[ne.RULE_DISABLED]:jsTopic("Serverside rule was disabled."),[ne.RULE_PACK_LOADED]:jsTopic("Serverside rule pack was loaded."),[ne.RULE_PACK_UNLOADED]:jsTopic("Serverside rule pack was unloaded."),[ne.RULE_ORDER_CHANGED]:jsTopic("Serverside rule evaluation order changed."),[ne.RULE_ACTIVATED]:scopedEventStreamTopic("Serverside rule became active.","id"),[ne.RULE_DEACTIVATED]:scopedEventStreamTopic("Serverside rule stopped being active.","id")});validateTopicRegistry(yt);var buildExactTopicSet=e=>new Set(Object.keys(e||{})),buildScopedBaseMap=e=>{const t=new Map;return Object.entries(e||{}).forEach(([e,a])=>{null!=a?.scopedAudience&&t.set(e,a.scopedAudience)}),t},createEventStreamPublisher=({adapter:e,registry:t,globallyEnabled:a,rawGmcpEnabled:n})=>{const s=buildExactTopicSet(t),i=buildScopedBaseMap(t),resolveAudience=e=>{const a=String(e||"").trim();if(!a)return null;if(s.has(a))return t[a].audience;const n=a.lastIndexOf(".");if(n<0)return null;const o=a.slice(0,n);return i.get(o)??null},isAllowed=(e,t)=>!!a&&(t===mt.EVENTSTREAM&&!(e===ne.RAW_GMCP&&!n)),evaluate=(t,a)=>{const n=String(t||"").trim();return!!isAllowed(n,resolveAudience(n))&&("function"==typeof e?.raiseToEventStream&&e.raiseToEventStream(n,a))};return{attach:e=>e&&"function"==typeof e.onAny?e.onAny((e,t)=>{evaluate(t,e)}):()=>{},evaluate,resolveAudience,debugInfo:()=>({globallyEnabled:Boolean(a),rawGmcpEnabled:Boolean(n),exactTopicCount:s.size,scopedBaseCount:i.size})}},normalizeScopedTopicSegment=e=>{const t=String(e||"").trim().toLowerCase();return t?t.replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""):""},normalizePublishedPayload=(e={})=>e&&"object"==typeof e&&!Array.isArray(e)?e:{value:e},normalizeMessage=(e,t={},a)=>{const n=normalizePublishedPayload(t);return{...n,topic:e,at:n.at??a()}},createRuntimeEventPorts=({adapter:e,internalEvents:t,publicEvents:a,now:n})=>{const publishPublic=(e,t={})=>{const s=normalizeMessage(e,t,n);return a.emit(e,s),s},publishPublicScoped=(e,t={},a)=>{const n=publishPublic(e,t),s=normalizeScopedTopicSegment(a);return s?(publishPublic(`${e}.${s}`,n),n):n};return{publishPublic,publishPublicScoped,publishInternal:(e,a={})=>{const s=normalizeMessage(e,a,n);return t.emit(e,s),s},publishAdapterLocal:(t,a={})=>("function"==typeof e?.emitLocal&&e.emitLocal(t,a),a)}},createRuntimeEngine=({adapter:e,seedData:t,options:a={}})=>{const n=resolveAdapterCapabilities(e),{now:s,commandDispatcher:i,systemModel:o,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:m,persistence:p,queueController:g,serverside:h,combatService:b,noticeCenter:y,defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C}=createRuntimeDependencies({adapter:e,seedData:t,options:a}),k=createGmcpBlockBuffer({coalesce:!1!==a.coalesceGmcp}),A=createEventBus({label:"nexSys4.internal"}),E=createEventBus({label:"nexSys4.public"}),_=createPromptPresenter({publicEvents:E,affModel:l,defModel:u,balanceModel:c,systemModel:o,renderPrompt:(t,a={})=>n.promptRender?e.renderPrompt(t,a):t}),w=createEventStreamPublisher({adapter:e,registry:yt,globallyEnabled:!1!==a.publishToEventStream,rawGmcpEnabled:!0===a.publishRawGmcp}),T=createRuntimeEventPorts({adapter:e,internalEvents:A,publicEvents:E,now:s});w.attach(E);const setRuntimePhase=(e,t={})=>o.setRuntime({phase:e,...t}),syncDebugMode=()=>{const t=Boolean(o.getSettings().debug);return n.debugToggle&&e.setDebugEnabled(t),A.setDebugEnabled?.(t),E.setDebugEnabled?.(t),t},P=T.publishPublic,M=T.publishPublicScoped,D=T.publishAdapterLocal,publishStartupPhase=e=>D("StartupPhaseEvent",{phase:e});let R;const O=createCuringSetProvisioner({adapter:e,serverside:h,dispatchCommands:i.sendCommands,setRuntimePhase,publishStartupPhase,options:a}),N=createStartupCoordinator({adapter:e,systemModel:o,serverside:h,persistence:p,seedBaselineFromObservedStartup:()=>B.seedBaselineFromObservedStartup({skipObservedAdoption:O.wasCreatedThisRun()}),noticeCenter:y,buildPersistenceSnapshot:()=>B.buildPersistenceSnapshot(),startupTimeoutMs:a.startupTimeoutMs,maxStartupRetries:a.maxStartupRetries,startupFinalizeTimeoutMs:a.startupFinalizeTimeoutMs,maxStartupFinalizeRecoveryAttempts:a.maxStartupFinalizeRecoveryAttempts,publishStartupPhase,publishLoaded:e=>P(ne.SYSTEM_LOADED,e),releaseStartupPause:e=>R.setPaused(!1,e),setRuntimePhase}),I=createGmcpApplier({emit:(e,t)=>A.emit(e,t)}),L=createItemTopicNotifier({publishPublic:P}),queueTranslatedGmcp=e=>{I.translate(e).forEach(e=>{L.notify(e),k.enqueue(e)})},hydrateCacheFromAdapterGmcp=()=>{if(!n.gmcpSnapshot)return!1;const t=e.getGMCP();return!(!t||"object"!=typeof t)&&(d.hydrateFromGmcp?.(t)??!1)},j=createRuntimeFlushCoordinator({adapter:e,systemModel:o,serverside:h,outputCycle:C,flushGmcpBuffer:()=>{k.flush().forEach(({topic:e,payload:t})=>{A.emit(e,t)}),d.completeObservationBlock?.({source:"runtime-flush"})}}),q=createCuringMasterSwitch({setPaused:(e,t)=>R.setPaused(e,t),noticeCenter:y,now:s,options:a});R=createRuntimeControlApi({systemModel:o,serverside:h,queueController:g,noticeCenter:y,curingMasterSwitch:q,dispatchCommands:i.sendCommands,markDirty:j.markDirty,onResume:e=>{j.isFlushing()||j.flushCycle(e)}});const $=createCuringSetGuard({serverside:h,systemModel:o,runtimeControl:R,noticeCenter:y}),B=createRuntimePersistenceApi({persistence:p,systemModel:o,affModel:l,defModel:u,cacheModel:d,serverside:h,syncDebugMode,markDirty:j.markDirty}),F=createRuntimeEventWiring({adapter:e,internalEvents:A}),z=createRuntimeStartupOrchestrator({adapter:e,systemModel:o,persistenceApi:B,startup:N,curingSetProvisioner:O,noticeCenter:y,syncDebugMode,isStarted:j.isStarted,markStarted:j.start,setRuntimePhase,publishStartupPhase,attachEventWiring:()=>{F.attach({options:a,queueTranslatedGmcp,publishPublic:P,publishPublicScoped:M,noticeCenter:y,syncDebugMode,systemModel:o,affModel:l,defModel:u,balanceModel:c,cacheModel:d,limbModel:m,queueController:g,serverside:h,markDirty:j.markDirty,invalidateOutput:j.invalidateOutput,flushCycle:j.flushCycle,outputCycle:C,startup:N,curingSetProvisioner:O,curingSetGuard:$,curingMasterSwitch:q,runtimeControl:R,savePersistence:B.savePersistence})},promptPresenter:_,publishRuntimeStarted:()=>P(ne.RUNTIME_STARTED,{source:"runtime-start"}),hydrateCacheFromAdapterGmcp,runtimeControl:R,commandDispatcher:i,debugOverride:a.bootstrapDebugOverride}),stop=()=>{z.dispose(),j.isStarted()&&(P(ne.RUNTIME_STOPPED,{source:"runtime-stop"}),j.stop(),N.dispose?.(),C.dispose?.(),F.dispose(),setRuntimePhase(se.IDLE,{paused:!0,startupFailureMessage:""}),_.stop(),l.dispose?.(),c.dispose?.(),m.dispose(),A.clear(),E.clear(),w.attach(E),n.destroy&&e.destroy())};let G=null;const snapshot=()=>{const e=o.snapshot(),t=l.snapshot(),a=c.snapshot(),n=u.snapshot(),s=d.snapshot(),i=m.snapshot(),p=g.snapshot(),b=h.snapshot();return G&&G.system===e&&G.affs===t&&G.balances===a&&G.defs===n&&G.cache===s&&G.limbs===i&&G.queues===p&&G.serverside===b||(G={system:e,affs:t,balances:a,defs:n,cache:s,limbs:i,queues:p,serverside:b}),G};return{start:z.start,stop,flushCycle:j.flushCycle,savePersistence:B.savePersistence,setPaused:R.setPaused,setSlowMode:R.setSlowMode,setConfigOpen:(e,t="runtime-ui")=>P(ne.UI_CONFIG_CHANGED,{open:Boolean(e),source:t}),get paused(){return o.getRuntime().paused},snapshot,adapter:e,models:{systemModel:o,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:m},services:{combat:b},planners:{defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C},queueController:g,serverside:h,curingSetGuard:$,noticeCenter:y,persistence:p,commandDispatcher:i,promptPresenter:_,topics:ne,onEvent:(e,t)=>E.on(e,t),offEvent:(e,t)=>E.off(e,t),markDirty:j.markDirty,ingestGmcp(e,t){queueTranslatedGmcp({tag:e,payload:t}),!0===a.publishRawGmcp&&P(ne.RAW_GMCP,{source:"manual-gmcp",tag:String(e||"").trim().toLowerCase(),payload:t}),j.markDirty(`manual-gmcp:${e}`)},evaluateNow:(e="manual")=>j.flushCycle(e),addOutputCommands(e=[]){C.injectCommands(Array.isArray(e)?e:[e]),j.markDirty("manual-output-inject")},dispatchCommands:i.sendCommands,debugInfo:()=>({adapter:e.debugInfo?.()??null,internalEvents:A.debugInfo?.()??null,publicEvents:E.debugInfo?.()??null,eventStreamPublisher:w.debugInfo?.()??null})}},toArray=e=>Array.isArray(e)?e:[e],normalizeQueueKey=e=>String(e||"").trim(),createPublicCommandApi=({runtime:e})=>{const t=e.queueController,a=t.listQueues().map(e=>({queueId:e,meta:t.getQueue(e)||{}})),n=new Map,s=new Map,resolveQueueId=e=>{const t=normalizeQueueKey(e);return s.get(t)||t},getQueueHandle=e=>{const t=resolveQueueId(e);return n.get(t)||null},inspectQueue=e=>t.getQueue(resolveQueueId(e)),addQueue=(e,a,n)=>t.add(resolveQueueId(e),a,n),addClearQueue=(e,a,n)=>t.addClear(resolveQueueId(e),a,n),prependQueue=(e,a,n)=>t.prepend(resolveQueueId(e),a,n),clearLocalQueue=e=>t.clear(resolveQueueId(e)),clearGameQueue=e=>t.clearQueue(resolveQueueId(e)),flushQueue=(e,a)=>t.flush(resolveQueueId(e),a),isQueued=(e,t)=>{if(!t)return!1;const a=inspectQueue(e);return!!a&&(a.items.includes(t)||a.prepend.includes(t))};a.forEach(({queueId:e,meta:t})=>{n.set(e,{get id(){return e},get queueId(){return e},get name(){return inspectQueue(e)?.name||t.name||""},get type(){return inspectQueue(e)?.type||t.type||""},get exclusions(){return inspectQueue(e)?.exclusions||t.exclusions||[]},inspect:()=>inspectQueue(e),state:()=>inspectQueue(e),add:(t,a)=>addQueue(e,t,a),addClear:(t,a)=>addClearQueue(e,t,a),prepend:(t,a)=>prependQueue(e,t,a),clear:()=>clearLocalQueue(e),clearQueue:()=>clearGameQueue(e),flush:t=>flushQueue(e,t),isQueued:t=>isQueued(e,t)}),s.set(e,e),t.name&&s.set(t.name,e)});const i={controller:t,listQueues:()=>t.listQueues(),inspect:e=>inspectQueue(e),get:e=>getQueueHandle(e),add:(e,t,a)=>addQueue(e,t,a),addClear:(e,t,a)=>addClearQueue(e,t,a),prepend:(e,t,a)=>prependQueue(e,t,a),clear:e=>clearLocalQueue(e),clearQueue:e=>clearGameQueue(e),flush:(e,t)=>flushQueue(e,t),flushAll:()=>t.flushAll(),isQueued:(e,t)=>isQueued(e,t)},o={listQueues:()=>i.listQueues(),inspect:e=>i.inspect(e),get:e=>i.get(e)},l={};return a.forEach(({queueId:e,meta:t})=>{const a=n.get(e);a&&(l[e]=a,o[e]=a,t.name&&(o[t.name]=a))}),{queue:i,queues:o,...l,sendCmd:(t,a={})=>e.dispatchCommands([t],{source:"public-api",...a}),setTarget(t){const a=String(t??"").trim();if(!a)return{target:"",dispatched:!1,dispatchResult:null};const n=e.dispatchCommands(["settarget "+a],{source:"set-target"});return{target:a,dispatched:Boolean(n),dispatchResult:n}},sendInline:(t=[],a={})=>e.dispatchCommands(toArray(t),{source:"public-api-inline",...a}),addOutput(t=[]){e.addOutputCommands(toArray(t))},evaluateNow:(t="public-api")=>e.evaluateNow(t)}},vt="nexSys4",St="https://unpkg.com/nexsys4/dist/nexSys4.nxs",xt="khaseem",Ct=Object.freeze(["nexSys4.userSettings"]),kt=1e4,At=Object.freeze({fg:"red"}),toLowerName=e=>String(e??"").trim().toLowerCase(),safeCall=e=>{try{return e()}catch{return null}},clonePackageItem=e=>{if(!e||"object"!=typeof e)return null;if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return e}},getReflexes=e=>safeCall(()=>e?.reflexes?.())??null,getPackageRegistry=e=>{const t=safeCall(()=>e?.packages?.());if("function"==typeof t?.get)return t;const a=safeCall(()=>getReflexes(e)?.packages?.());return"function"==typeof a?.get?a:null},getInstalledPackage=(e,t)=>safeCall(()=>getPackageRegistry(e)?.get(t))??null,findGroupByName=(e,t)=>{if(!Array.isArray(e))return null;const a=toLowerName(t);return e.find(e=>toLowerName(e?.name)===a)??null},capturePreservedGroups=(e,t)=>t.map(t=>{const a=findGroupByName(e?.items,t);return a?{name:t,data:clonePackageItem(a)}:null}).filter(Boolean),applyPreservedGroup=(e,t,a)=>{const n=findGroupByName(e?.items,t.name);n&&t.data&&("function"!=typeof n.apply?"object"==typeof n&&Object.assign(n,clonePackageItem(t.data)):n.apply(t.data,a))},enableShippedGroups=(e,t)=>{if(!Array.isArray(e?.items))return;const a=new Set(t.map(toLowerName));e.items.filter(e=>"group"===e?.type&&!a.has(toLowerName(e.name))).forEach(e=>{e.enabled=!0})},reportUpdateError=({adapter:e,consoleObj:t,message:a,nexusClient:n})=>{t.error(a),"function"!=typeof e?.notice?n?.display?.(a):e.notice(a,At)},createAbortSignal=({AbortControllerCtor:e,setTimeoutFn:t,timeoutMs:a})=>{if(!e||a<=0)return{signal:void 0,timeout:null};const n=new e,s=t(()=>n.abort(),a);return{signal:n.signal,timeout:s}},updateNxs=async({adapter:e=null,clearTimeoutFn:t=clearTimeout,consoleObj:a=console,fetchFn:n=globalThis.fetch,nexusClient:s=globalThis.nexusclient,packageName:i=vt,preservedGroupNames:o=Ct,setTimeoutFn:l=setTimeout,skipCharacterName:c=xt,timeoutMs:u=kt,url:d=St}={})=>{if(c&&toLowerName(s?.charname)===toLowerName(c))return null;let m=null;try{if("function"!=typeof n)throw new Error("fetch is not available.");const e=getInstalledPackage(s,i);if(!e||"function"!=typeof e.apply)throw new Error(`${i} package is not installed in Nexus.`);const t=capturePreservedGroups(e,o),{signal:a,timeout:c}=createAbortSignal({AbortControllerCtor:globalThis.AbortController,setTimeoutFn:l,timeoutMs:u});m=c;const p=await n(d,{cache:"no-store",...a?{signal:a}:{}});if(!p?.ok)throw new Error(`${i} update failed: ${p?.status??"unknown"} ${p?.statusText??""}`.trim());const g=await p.json(),h=getReflexes(s);e.apply(g,h);const b=getInstalledPackage(s,i)??e;return t.forEach(e=>applyPreservedGroup(b,e,h)),enableShippedGroups(b,o),g}catch(p){return reportUpdateError({adapter:e,consoleObj:a,message:"AbortError"===p?.name?`${i} update timed out. Check your connection.`:`${i} update error: ${p?.message??String(p)}`,nexusClient:s}),null}finally{null!==m&&t(m)}},createPublicControlApi=({runtime:e,getModels:t})=>{const applySettings=(a={})=>(t().systemModel.setSettings(a,{setBaseline:!0}),e.savePersistence());return{pause:()=>e.setPaused(!0),unpause:()=>e.setPaused(!1),pauseToggle:()=>e.setPaused(!e.paused),setSlowMode:t=>e.setSlowMode(t),slowOn:()=>e.setSlowMode(!0),slowOff:()=>e.setSlowMode(!1),applySettings,setDebug:e=>applySettings({debug:Boolean(e)}),debugOn:()=>applySettings({debug:!0}),debugOff:()=>applySettings({debug:!1}),debug:()=>({runtime:e.snapshot(),internals:e.debugInfo?.()??null}),start:e.start,stop:e.stop,updateNxs:(t={})=>updateNxs({adapter:e.adapter,...t})}},resolveAudienceFor=(e,t)=>{const a=String(e||"").trim();if(!a)return null;if(Object.prototype.hasOwnProperty.call(t,a))return t[a].audience;const n=a.lastIndexOf(".");return n<0?null:t[a.slice(0,n)]?.scopedAudience??null},isPublicAudience=e=>e===mt.JS||e===mt.EVENTSTREAM,defaultIsDevMode=()=>{try{const e=globalThis.process?.env?.NODE_ENV;return!!e&&"production"!==e}catch{return!1}},defaultWarn=e=>{console.warn(e)},createPublicEventApi=({runtime:e,registry:t=yt,isDevMode:a=defaultIsDevMode,warn:n=defaultWarn})=>{const s={on(s,i){const o=String(s||"").trim();return o&&"function"==typeof i?isPublicAudience(resolveAudienceFor(o,t))?e.onEvent(o,i):(a()&&n(`[nexSys4] topic "${o}" is not a public topic`),()=>{}):()=>{}},off(t,a){const n=String(t||"").trim();return!!n&&e.offEvent(n,a)}};return{events:s,on:s.on,off:s.off}},createPublicMutationApi=({runtime:e,getModels:t})=>{const a=e.services.combat,normalizeServersidePriority=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},samePriorityMaps=(e={},t={})=>{const a=new Set([...Object.keys(e||{}),...Object.keys(t||{})]);for(const n of a)if(normalizeServersidePriority(e?.[n])!==normalizeServersidePriority(t?.[n]))return!1;return!0},resetPriorities=(e=[],t,a="public-api")=>{let n=!1;return e.forEach(e=>{t(e,a)&&(n=!0)}),n},buildAffPriorityTarget=e=>{const t=e.list().reduce((t,a)=>(t[a]=normalizeServersidePriority(e.getPriority?.(a)),t),{});return e.getCountablePriorityNames?.().forEach(e=>{t[e]=0}),t},buildDefPriorityTarget=(e,t)=>{const a=t.snapshot?.().char?.class||"";return e.list().reduce((t,n)=>{const s=e.get(n);return!s?.serverside||s.static?t:"function"!=typeof e.isAvailableForClass||e.isAvailableForClass(n,a)?(t[n]=normalizeServersidePriority(e.getPriority?.(n)),t):t},{})},restorePersistedPriorities=({restoreAffs:a=!1,restoreDefs:n=!1,reason:s})=>{const{affModel:i,defModel:o,systemModel:l}=t();let c=!1;a&&(c=resetPriorities(i.list(),(e,t)=>i.resetPriority(e,t))||c),n&&(c=resetPriorities(o.list(),(e,t)=>o.resetPriority(e,t))||c);const u=e.serverside.snapshot?.(),d=a?buildAffPriorityTarget(i):null,m=n?buildDefPriorityTarget(o,l):null,p=Boolean(u&&(a&&!samePriorityMaps(u.sessionBaseline?.affPriorities,d)||n&&!samePriorityMaps(u.sessionBaseline?.defPriorities,m)));return!(!c&&!p)&&(refreshServersideBaseline(),e.markDirty(s),!0)},refreshServersideBaseline=()=>{e.serverside.setBaselineFromRuntime?.()},applyMutation=(t,a)=>!!t&&(refreshServersideBaseline(),e.markDirty(a),!0),applyDirtyOnly=(t,a)=>!!t&&(e.markDirty(a),!0);return{updateAffPriority:(e,a)=>applyMutation(t().affModel.setPriority(e,a,"public-api"),"api-aff-priority"),updateAffDefault:(e,a)=>applyMutation(t().affModel.setDefaultPriority(e,a,"public-api"),"api-aff-default"),resetAffPriority:e=>applyMutation(t().affModel.resetPriority(e,"public-api"),"api-aff-priority-reset"),resetAllAffPriorities:()=>restorePersistedPriorities({restoreAffs:!0,reason:"api-aff-priority-reset-all"}),updateDefPriority:(e,a)=>applyMutation(t().defModel.setPriority(e,a,"public-api"),"api-def-priority"),updateDefDefault:(e,a)=>applyMutation(t().defModel.setDefaultPriority(e,a,"public-api"),"api-def-default"),updateDefStatic:(e,a)=>applyMutation(t().defModel.setStatic(e,a,"public-api"),"api-def-static"),updateDefCommand:(e,a)=>applyMutation(t().defModel.setCommand(e,a,"public-api"),"api-def-command"),resetDefPriority:e=>applyMutation(t().defModel.resetPriority(e,"public-api"),"api-def-priority-reset"),resetAllDefPriorities:()=>restorePersistedPriorities({restoreDefs:!0,reason:"api-def-priority-reset-all"}),resetAllPriorities:()=>restorePersistedPriorities({restoreAffs:!0,restoreDefs:!0,reason:"api-priority-reset-all"}),defup(){const a=t().defModel,n={};let s=!1;for(const e of a.list()){const t=a.get(e);if(!t||t.have)continue;a.resetPriority(e,"defup")&&(s=!0);const i=a.get(e),o=normalizeServersidePriority(a.getPriority(e));i?.static&&o>=1&&o<=25&&(n[e]=o)}const i=e.serverside.requestStaticDefPriorities?.(n)??!1;return(s||i)&&(refreshServersideBaseline(),e.markDirty("api-defup")),s||i},defoff(){const a=t().defModel;let n=!1;for(const e of a.list()){const t=a.get(e);t&&!t.have&&(a.setPriority(e,0,"defoff")&&(n=!0))}const s=e.serverside.clearStaticDefPriorities?.()??!1;return(n||s)&&(refreshServersideBaseline(),e.markDirty("api-defoff")),n||s},setPrecache:(a={})=>(t().cacheModel.setDesiredPrecache(a),e.markDirty("api-precache"),e.savePersistence()),prioAff:t=>applyDirtyOnly(e.serverside.setPrioAff(t),"api-prioaff"),clearPrioAff:()=>applyDirtyOnly(e.serverside.clearPrioAff(),"api-prioaff-clear"),parry(t){a.parry(t),refreshServersideBaseline(),e.markDirty("api-parry")}}},Et="public-observe",freezeHandles=(e=[],t)=>Object.freeze(e.reduce((e,a)=>(e[a]=Object.freeze(t(a)),e),{})),getObserveSource=(e={})=>String(e?.source||Et),getObserveAt=(e={})=>e?.atMs??e?.at,getAffSnapshotState=(e,t)=>({have:e.haveAff(t),count:e.get(t)?.count??0}),didAffStateChange=(e,t)=>e.have!==t.have||e.count!==t.count,createPublicObserveApi=({runtime:e,getModels:t})=>{const a=t(),n=a.affModel,s=a.defModel,i=a.balanceModel,o=a.limbModel,l=a.systemModel,c=e.services.combat,u=freezeHandles(n.list?.()||[],t=>({got(a={}){const s=getAffSnapshotState(n,t);return n.got(t,{...a,source:getObserveSource(a)}),!!didAffStateChange(s,getAffSnapshotState(n,t))&&("function"==typeof o?.syncFromAfflictions&&"function"==typeof n?.currentSorted?o.syncFromAfflictions(n.currentSorted(),"affliction"):o?.applyAfflictionTransition?.(t,!0),e.markDirty(`api-observe-aff-got:${t}`),!0)},lost(a={}){const s=getAffSnapshotState(n,t);return n.lose(t,{...a,source:getObserveSource(a)}),!!didAffStateChange(s,getAffSnapshotState(n,t))&&("function"==typeof o?.syncFromAfflictions&&"function"==typeof n?.currentSorted?o.syncFromAfflictions(n.currentSorted(),"affliction"):o?.applyAfflictionTransition?.(t,!1),e.markDirty(`api-observe-aff-lost:${t}`),!0)}})),d=freezeHandles(s.list?.()||[],t=>({got:(a={})=>!!s.setHave(t,!0,getObserveSource(a),getObserveAt(a))&&(e.markDirty(`api-observe-def-got:${t}`),!0),lost:(a={})=>!!s.setHave(t,!1,getObserveSource(a),getObserveAt(a))&&(e.markDirty(`api-observe-def-lost:${t}`),!0)})),m=freezeHandles(i.list?.()||[],t=>{const observeServerUse=(a,n={})=>{const s=i.observeServerUse(t,a,{...n,source:getObserveSource({...n,source:n.source||"server-duration-observe"})});return s&&e.markDirty(`api-observe-balance-used:${t}`),s};return{got(a={}){const n=i.gain(t,getObserveSource(a),getObserveAt(a));return n&&e.markDirty(`api-observe-balance-got:${t}`),n},lost(a={}){const n=i.lose(t,getObserveSource(a),getObserveAt(a));return n&&e.markDirty(`api-observe-balance-lost:${t}`),n},used:observeServerUse,serverUsed:observeServerUse,observeServerUse}}),createObservedLimbHit=(e,t={},a)=>c.observeLimbHit({limb:e,amount:a,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbReset=(e,t={})=>c.observeLimbReset({limb:e,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbStage=(e,t,a={})=>c.observeLimbStage({limb:e,stage:t,source:getObserveSource(a),at:getObserveAt(a)}),p=freezeHandles(o?.list?.()||[],t=>({hit(a,n={}){const s=createObservedLimbHit(t,n,a);return s.changed&&"torso"===s.limb&&s.stageChanged&&e.markDirty(`api-observe-limb-torso:${s.after?.stage||"unknown"}`),s.changed},reset(a={}){const n=createObservedLimbReset(t,a);return n.changed&&"torso"===n.limb&&e.markDirty("api-observe-limb-torso:healthy"),n.changed},setStage(a,n={}){const s=createObservedLimbStage(t,a,n);return s.changed&&"torso"===s.limb&&s.stageChanged&&e.markDirty(`api-observe-limb-torso:${s.after?.stage||"unknown"}`),s.changed}})),markObservedLimbResult=t=>(t.changed&&"torso"===t.limb&&t.stageChanged?e.markDirty(`api-observe-limb-torso:${t.after?.stage||"unknown"}`):t.changed&&"torso"===t.limb&&"healthy"===t.after?.stage?e.markDirty("api-observe-limb-torso:healthy"):t.changed&&e.markDirty(`api-observe-limb:${t.limb}`),t.changed),g=Object.freeze({...p,get(e){if(!e)return null;const t=o?.get?.(e);return t?.id&&p[t.id]||null},list:()=>Object.keys(p),hit:(e,t,a={})=>markObservedLimbResult(createObservedLimbHit(e,a,t)),reset:(e,t={})=>markObservedLimbResult(createObservedLimbReset(e,t)),setStage:(e,t,a={})=>markObservedLimbResult(createObservedLimbStage(e,t,a))}),h=Object.freeze({set(t={}){const a=l.updateMount({name:String(t.name||""),id:t.id??null});return a&&e.markDirty("api-observe-mount-set"),a},clear(){const t=l.updateMount(null);return t&&e.markDirty("api-observe-mount-clear"),t}});return{observe:Object.freeze({affs:u,defs:d,balances:m,limbs:g,mount:h})}},createPublicPromptApi=({runtime:e,control:t})=>{const a=e?.promptPresenter;if(!a)return{prompt:null};const getSystemModel=()=>e?.models?.systemModel;let n=null;return n={colorGradation:a.colorGradation,colorPercentage:a.colorPercentage,render:e=>a.render(e),getCustomPrompt:()=>a.render({source:"legacy-getCustomPrompt"}),markAffsDirty:()=>a.markAffsDirty(),markPromptDirty:()=>a.markPromptDirty?.(),patchVars:(e={})=>(a.patchVars?.(e),n),patchAffs:(e={})=>(a.patchAffs?.(e),n),patchCureColors:(e={})=>(a.patchCureColors?.(e),n),applyPreset:e=>"function"==typeof e?(e(n),a.markPromptDirty?.(),n):(!e||"object"!=typeof e||Array.isArray(e)||("cureColors"in e&&n.patchCureColors(e.cureColors),"affs"in e&&n.patchAffs(e.affs),"vars"in e&&n.patchVars(e.vars),"compose"in e&&(n.compose=e.compose),"enabled"in e&&(n.enabled=e.enabled)),n),get vars(){return a.vars},get affs(){return a.affs},get cureColors(){return a.cureColors},get compose(){return a.compose},set compose(e){a.compose=e},get enabled(){const e=getSystemModel()?.snapshot?.().settings||{};return Boolean(e.customPrompt)},set enabled(e){t?.applySettings?.({customPrompt:Boolean(e)})}},{prompt:n}},createPublicLineApi=({lineUtils:e={}})=>({replace:e.replace,replaceHTML:e.replaceHTML,replaceWord:e.replaceWord,replaceWordHTML:e.replaceWordHTML,nextLine:e.nextLine,checkLine:e.checkLine,prevLine:e.prevLine,prependNotice:e.prependNotice,say:e.say}),normalizeScopedSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),createPublicRulesApi=({runtime:e})=>({add:(t,a)=>e.serverside.lifecycle.add(t,a),remove:t=>e.serverside.lifecycle.remove(t),enable:t=>e.serverside.lifecycle.enable(t),disable:t=>e.serverside.lifecycle.disable(t),enablePack:t=>e.serverside.lifecycle.enablePack(t),disablePack:t=>e.serverside.lifecycle.disablePack(t),load:(t,a)=>e.serverside.lifecycle.load(t,a),unload:t=>e.serverside.lifecycle.unload(t),reorder:t=>e.serverside.lifecycle.reorder(t),list:()=>e.serverside.lifecycle.list(),bindTransition(t,a={}){const n=normalizeScopedSegment(t);if(!n)return()=>{};const s=e.topics||{},i=[];return"function"==typeof a.onActivate&&i.push(e.onEvent(`${s.RULE_ACTIVATED||"nexsys4.rule.activated"}.${n}`,a.onActivate)),"function"==typeof a.onDeactivate&&i.push(e.onEvent(`${s.RULE_DEACTIVATED||"nexsys4.rule.deactivated"}.${n}`,a.onDeactivate)),()=>{i.forEach(e=>e?.())}}}),createPublicServersideApi=({runtime:e})=>({predictions:{add:t=>e.serverside.addPrediction(t),remove:t=>e.serverside.removePrediction(t)},ssQueue:{add:t=>e.serverside.manualQueueAdd(t),insert:(t,a)=>e.serverside.manualQueueInsert(t,a),remove:t=>e.serverside.manualQueueRemove(t),reset:()=>e.serverside.manualQueueReset()},ss:{syncSnapshots:()=>e.serverside.requestSnapshotSync(),startupStatus:()=>e.serverside.getStartupStatus(),unload:(t={})=>e.curingSetGuard.unload(t)}}),createPublicStateApi=({runtime:e,getModels:t})=>{const{systemModel:a,affModel:n,defModel:s,balanceModel:i,limbModel:o}=t();return{snapshot:e.snapshot,getTarget:()=>a.snapshot().target,topics:e.topics,haveAff:e=>n.haveAff(e),affElapsedMs:e=>n.elapsedMs(e),affElapsedSeconds:e=>n.elapsedSeconds(e),affRemainingMs:e=>n.remainingMs(e),affRemainingSeconds:e=>n.remainingSeconds(e),affTiming:e=>n.timing(e),haveAffs:e=>n.haveAffs(toArray(e)),haveAnAff:e=>n.haveAnAff(toArray(e)),haveDef:e=>s.haveDef(e),haveDefs:e=>toArray(e).every(e=>s.haveDef(e)),haveAnyDef:e=>toArray(e).some(e=>s.haveDef(e)),haveBal:e=>i.have(e),haveBals:e=>toArray(e).every(e=>i.have(e)),haveAnyBal:e=>toArray(e).some(e=>i.have(e)),balElapsedMs:e=>i.elapsedMs(e),balElapsedSeconds:e=>i.elapsedSeconds(e),balRemainingMs:e=>i.remainingMs(e),balRemainingSeconds:e=>i.remainingSeconds(e),balTiming:e=>i.timing(e),getLimb:e=>o?.get?.(e)||null,listLimbs:()=>o?.list?.()||[],getClass:()=>a.getClass(),checkClass:e=>a.checkClass(e),isClass:e=>a.isClass(e),isTarget:e=>a.isTarget(e)}},isRecord=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),cloneAndFreezeCells=(e={})=>{const t={};for(const[a,n]of Object.entries(e))t[a]=isRecord(n)?Object.freeze({...n}):n;return Object.freeze(t)},buildPromptSnapshot=e=>e?Object.freeze({vars:cloneAndFreezeCells(e.vars),affs:cloneAndFreezeCells(e.affs),cureColors:cloneAndFreezeCells(e.cureColors)}):null,createPublicApi=({runtime:e,lineUtils:t={}})=>{const getModels=()=>e.models,a=createPublicStateApi({runtime:e,getModels}),n=createPublicEventApi({runtime:e}),s=createPublicControlApi({runtime:e,getModels}),i=createPublicCommandApi({runtime:e}),o=createPublicMutationApi({runtime:e,getModels}),l=createPublicObserveApi({runtime:e,getModels}),c=createPublicRulesApi({runtime:e}),u=createPublicServersideApi({runtime:e}),d=createPublicPromptApi({runtime:e,control:s}),m=createPublicLineApi({lineUtils:t}),{systemModel:p,affModel:g,defModel:h,balanceModel:b,limbModel:y,cacheModel:v}=getModels(),S=Object.freeze(Object.create(null,{system:{enumerable:!0,get:()=>p.snapshot()},target:{enumerable:!0,get:()=>p.snapshot().target},class:{enumerable:!0,get:()=>p.snapshot().char.class},affs:{enumerable:!0,get:()=>g.snapshot()},defs:{enumerable:!0,get:()=>h.snapshot()},balances:{enumerable:!0,get:()=>b.snapshot()},limbs:{enumerable:!0,get:()=>y.snapshot()},queue:{enumerable:!0,get:()=>e.queueController.snapshot()},cache:{enumerable:!0,get:()=>v.snapshot()},prompt:{enumerable:!0,get:()=>buildPromptSnapshot(e.promptPresenter)},serverside:{enumerable:!0,get:()=>e.serverside.snapshot()}})),x=Object.freeze({on:n.events.on,off:n.events.off,topics:e.topics}),C=Object.freeze({affs:l.observe.affs,defs:l.observe.defs,balances:l.observe.balances,limbs:l.observe.limbs,mount:Object.freeze({set:l.observe.mount.set,reset:l.observe.mount.clear})}),k=Object.freeze({openConfig:(t="api.ui.openConfig")=>e.setConfigOpen(!0,t),closeConfig:(t="api.ui.closeConfig")=>e.setConfigOpen(!1,t),setConfigOpen:(t,a="api.ui.setConfigOpen")=>e.setConfigOpen(Boolean(t),a)}),A={...i.queue,...i.queues,list:i.queue.listQueues};return{state:S,api:{affs:{have:a.haveAff,haveAll:a.haveAffs,haveAny:a.haveAnAff,elapsedMs:a.affElapsedMs,elapsedSeconds:a.affElapsedSeconds,remainingMs:a.affRemainingMs,remainingSeconds:a.affRemainingSeconds,timing:a.affTiming,setPriority:o.updateAffPriority,setDefaultPriority:o.updateAffDefault,resetPriority:o.resetAffPriority,resetAllPriorities:o.resetAllAffPriorities},defs:{have:a.haveDef,haveAll:a.haveDefs,haveAny:a.haveAnyDef,setPriority:o.updateDefPriority,setDefaultPriority:o.updateDefDefault,setStatic:o.updateDefStatic,setCommand:o.updateDefCommand,resetPriority:o.resetDefPriority,resetAllPriorities:o.resetAllDefPriorities,defup:o.defup,defoff:o.defoff,parry:o.parry},balances:{have:a.haveBal,haveAll:a.haveBals,haveAny:a.haveAnyBal,elapsedMs:a.balElapsedMs,elapsedSeconds:a.balElapsedSeconds,remainingMs:a.balRemainingMs,remainingSeconds:a.balRemainingSeconds,timing:a.balTiming},limbs:{get:a.getLimb,list:a.listLimbs},target:{get:a.getTarget,set:i.setTarget,is:a.isTarget},class:{get:a.getClass,is:a.isClass,check:a.checkClass},command:{send:i.sendCmd,sendInline:i.sendInline,addOutput:i.addOutput,evaluateNow:i.evaluateNow},queue:A,rules:c,prompt:d.prompt,observe:C,ui:k,line:m,control:{...s},ss:{predictions:u.predictions,queue:{add:u.ssQueue.add,insert:u.ssQueue.insert,remove:u.ssQueue.remove,clear:u.ssQueue.reset},syncSnapshots:u.ss.syncSnapshots,startupStatus:u.ss.startupStatus,unload:u.ss.unload,precache:{set:o.setPrecache},prioAff:{set:o.prioAff,reset:o.clearPrioAff}}},events:x}},generateChunk=(e,t,a)=>{const n=document.createElement("span");return n.style.color=t,n.style.backgroundColor=a,n.textContent=e,n},cloneTrustedHtmlNodes=e=>{const t=document.createElement("template");return t.innerHTML=String(e??""),[...t.content.childNodes].map(e=>e.cloneNode(!0))},replaceWordNodes=(e,t,a)=>{const n=String(t??"");if(!n)return!1;const s=document.createTreeWalker(e,globalThis.NodeFilter?.SHOW_TEXT??4),i=[];for(;s.nextNode();)i.push(s.currentNode);let o=!1;return i.forEach(e=>{const t=e?.textContent||"";if(!e?.parentNode||!t.includes(n))return;const s=document.createDocumentFragment();let i=0;for(;i<t.length;){const e=t.indexOf(n,i);if(-1===e){s.append(t.slice(i));break}e>i&&s.append(t.slice(i,e)),a().forEach(e=>s.appendChild(e)),i=e+n.length,o=!0}e.replaceWith(s)}),o},updateCurrentFormattedLine=e=>{const t=document.createElement("span");t.innerHTML=globalThis.nexusclient.current_line.parsed_line.formatted();const a=e(t);return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.innerHTML,a},replace$1=(...e)=>{const t=document.createElement("span");for(let a=0;a<e.length;a+=3)t.appendChild(generateChunk(e[a],e[a+1],e[a+2]));return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.outerHTML,!0},replaceHTML=e=>(globalThis.nexusclient.current_line.parsed_line.formatted=()=>e,!0),replaceWord=(e,t,a,n)=>updateCurrentFormattedLine(s=>replaceWordNodes(s,e,()=>[generateChunk(t,a,n)])),replaceWordHTML=(e,t)=>updateCurrentFormattedLine(a=>replaceWordNodes(a,e,()=>cloneTrustedHtmlNodes(t))),matchPattern=(e,t)=>"string"==typeof t?e.includes(t):t instanceof RegExp&&t.test(e),prevLine=e=>{const{current_block:t,current_line:a}=globalThis.nexusclient,n=t.indexOf(a);return!(n<=0)&&matchPattern(t[n-1].parsed_line.text(),e)},nextLine=e=>{const{current_block:t,current_line:a}=globalThis.nexusclient,n=t.indexOf(a);return!(n>=t.length-1)&&matchPattern(t[n+1].parsed_line.text(),e)},checkLine=(e,t)=>{const{current_block:a,current_line:n}=globalThis.nexusclient,s=a.indexOf(n)+t;return!(s<0||s>a.length-1)&&matchPattern(a[s].parsed_line.text(),e)},prependNotice=(...e)=>{const t=document.createElement("span");for(let a=0;a<e.length;a+=3)t.appendChild(generateChunk(e[a],e[a+1],e[a+2]));return globalThis.nexSys.prepend_line={timestamp:globalThis.nexusclient.current_block[1].timestamp,timestamp_ms:globalThis.nexusclient.current_block[1].timestamp_ms,parsed_line:{text:()=>t.outerHTML,formatted:()=>t.outerHTML}},t.outerHTML},say=e=>{const t=new SpeechSynthesisUtterance;t.voice=globalThis.speechSynthesis.getVoices().find(e=>"Google UK English Female"===e.voiceURI)||globalThis.speechSynthesis.getVoices().find(e=>"en-US"===e.lang),t.rate=1.1,t.pitch=1.3,t.text=e,globalThis.speechSynthesis.speaking&&globalThis.speechSynthesis.cancel(),setTimeout(()=>globalThis.speechSynthesis.speak(t),10)},_t={affTable:V,balanceTable:Y,cacheTable:D,cacheNames:{herb_name_to_herb:T,mineral_to_herb:P,herb_to_mineral:M,herb_names:_,herb_names_group:w,mineral_names:A,mineral_names_group:E},cureTable:K,defTable:Z,defPrios:ee},wt=Object.freeze({affCount:Array.isArray(V?.list)?V.list.length:0,cureCount:Object.keys(K||{}).length,defCount:Object.keys(Z||{}).length,balanceCount:Object.keys(Y||{}).length,cacheCount:Object.keys(D||{}).length}),createNexSys=({adapter:e,adapterType:t="nexus",options:a={}}={})=>{installStringPrototypeHelpers();const n={...a.adapterOptions||{}};void 0===n.debug&&(n.debug=a.debug??!1),void 0===n.startupGag&&(n.startupGag=a.startupGag??!0);const s=assertAdapterContract(e||("mock"===t?createMockAdapter(n):createNexusAdapter(n))),i=createRuntimeEngine({adapter:s,seedData:_t,options:a}),{state:o,api:l,events:c}=createPublicApi({runtime:i,lineUtils:{replace:replace$1,replaceHTML,replaceWord,replaceWordHTML,nextLine,checkLine,prependNotice,prevLine,say}});return{version:"1.1.0",seedMeta:wt,tables:{limbs:Ce,dirs:ke,dirMap:Ae,oppdirs:Ee,shortDirs:_e,classList:we},adapter:s,runtime:i,state:o,api:l,events:c}},clearGlobalNexSys=()=>{if("undefined"==typeof globalThis)return;const e=globalThis.nexSys,t=e?.api?.control?.stop;if(e&&"function"==typeof t)try{t()}catch(a){console.error("nexSys4 failed to stop the existing global runtime during reinstall",a)}try{delete globalThis.nexSys}catch{globalThis.nexSys=void 0}},installGlobalNexSys=(e={})=>{clearGlobalNexSys();const t=createNexSys(e);return globalThis.nexSys=t,t.api.control.start(),t},Tt=Object.freeze({coalesceGmcp:!0,publishToEventStream:!0,publishRawGmcp:!1,debug:!1,startupTimeoutMs:2500,maxStartupRetries:3,maxEntriesPerSubmission:20,pendingTimeoutMs:12e3,desyncCommandRepeats:3,maxSsCommandsPerCycle:40}),bootstrapNexus$1=(e={})=>{const{forceNew:t,...a}=e,n=Object.prototype.hasOwnProperty.call(a,"debug");return uninstallNexusClientOverrides(),installNexusClientOverrides(),installGlobalNexSys({adapterType:"nexus",options:{...Tt,...a,bootstrapDebugOverride:n?Boolean(a.debug):void 0}})},Pt=Symbol.for("nexsys4.startup.installed"),Mt="font_stacks_original",getNexusclient=()=>globalThis.nexusclient&&"object"==typeof globalThis.nexusclient?globalThis.nexusclient:null,mountGui=e=>{if(!globalThis.ReactDOM||!globalThis.React)return!1;document.getElementById("modal-root")||document.body.appendChild(Object.assign(document.createElement("div"),{id:"modal-root"})),document.getElementById("nexsys-modal")?.remove();const t=Object.assign(document.createElement("div"),{id:"nexsys-modal"});return document.getElementById("modal-root").appendChild(t),globalThis.ReactDOM.createRoot(t).render(globalThis.React.createElement(e.component,{nexSys:e})),!0},injectFonts=()=>{const e=document.getElementsByTagName("head")[0],t=document.createElement("link");t.rel="stylesheet",t.href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap",e.appendChild(t);const a=document.createElement("link");a.rel="stylesheet",a.href="https://fonts.googleapis.com/css?family=Roboto%20Mono:300,400,500,700&display=swap",e.appendChild(a)},patchFontStacks=e=>{const t=e.settings();if(void 0!==t[Mt])return;const a=document.getElementsByTagName("head")[0],n=document.getElementById("nexSysCSS")||document.createElement("style");n.id="nexSysCSS",n.parentNode||a.appendChild(n),t[Mt]=t.font_stacks,t.font_stacks=function(){return n.textContent=`.timestamp {font-family: ${t.font_stack}}`,[{name:"RobotoMono",stack:"Roboto Mono,Consolas,monospace"},{name:"Consolas",stack:"Consolas,RobotoMono,monospace"},{name:"Verdana",stack:"Verdana, Geneva, sans-serif"},{name:"Lucida",stack:"'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Geneva, Verdana, sans-serif"},{name:"Arial",stack:"Arial, 'Helvetica Neue', Helvetica, sans-serif"},{name:"Futura",stack:"Futura, 'Trebuchet MS', Arial, sans-serif"},{name:"Book Antiqua",stack:"'Book Antiqua', Palatino, 'Palatino Linotype', 'Palatino LT STD', Georgia, serif"},...t[Mt]()]}},initializeSettings=e=>{void 0===e.variables().vars.nexSys4Settings&&(e.variables().vars.nexSys4Settings={})},startupNexus=()=>{const e=getNexusclient();return!!e&&(e[Pt]||(injectFonts(),patchFontStacks(e),initializeSettings(e),e[Pt]=!0),mountGui(globalThis.nexSys),!0)},Dt=(0,b.createContext)(null);function useNexSys(){return(0,b.useContext)(Dt)}var Rt=__commonJSMin(e=>{var t=Symbol.for("react.transitional.element");Symbol.for("react.fragment");function jsxProd(e,a,n){var s=null;if(void 0!==n&&(s=""+n),void 0!==a.key&&(s=""+a.key),"key"in a)for(var i in n={},a)"key"!==i&&(n[i]=a[i]);else n=a;return a=n.ref,{$$typeof:t,type:e,key:s,ref:void 0!==a?a:null,props:n}}e.jsx=jsxProd,e.jsxs=jsxProd}),Ot=__commonJSMin((e,t)=>{t.exports=Rt()})();function NexSysProvider({nexSys:e,children:t}){return(0,Ot.jsx)(Dt.Provider,{value:e,children:t})}var Nt=(0,s.createTheme)({palette:{mode:"dark",text:{primary:"#FFF5D6",secondary:"#C0B090",muted:"#706050",accent:"#FFD700"},background:{primary:"#0d0d0d",panel:"#141414",header:"#1a1a1a",modal:"#1e1e1e"},primary:{main:"#FFD700"}},typography:{fontFamily:"Roboto Mono, Consolas, monospace",fontSize:13},components:{MuiSwitch:{defaultProps:{size:"small"}},MuiTextField:{defaultProps:{size:"small"}},MuiSelect:{defaultProps:{size:"small"}},MuiPopover:{styleOverrides:{paper:{background:"#000",border:"1px solid #fff"}}},MuiDialog:{styleOverrides:{paper:({theme:e})=>({backgroundImage:"none",border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius})}}}}),It=!1;function useDialogOpen(e){const[t,a]=(0,b.useState)(It);return(0,b.useEffect)(()=>e?.events?.on?.(ne.UI_CONFIG_CHANGED,({open:e})=>{a(Boolean(e))})??void 0,[e]),[t,a]}var cloneSettings=(e={})=>(0,i.produce)(e,()=>{}),toFiniteNumber=(e,t=0)=>{const a=Number(e);return Number.isFinite(a)?a:t},toPriority=e=>toFiniteNumber(e,0),toConfigPriority=e=>Math.max(0,Math.min(26,toPriority(e))),toQuantity=e=>Math.max(0,toFiniteNumber(e,0)),isBlankInput=e=>""===e,toDraftConfigPriority=(e,t=0)=>{if(isBlankInput(e))return"";const a=Number(e);return Number.isFinite(a)?Math.max(0,Math.min(26,a)):t},normalizePriorityDraft=(e={})=>Object.entries(e).reduce((e,[t,a])=>(e[t]=toConfigPriority(a),e),{}),buildAffPriorityDraft=(e={})=>Object.entries(e).reduce((e,[t,a])=>(e[t]=toPriority(a?.defaultPriority),e),{}),buildDefPriorityDraft=(e={})=>Object.entries(e).reduce((e,[t,a])=>(e[t]=toConfigPriority(a?.defaultPriority),e),{}),buildDefStaticDraft=(e={})=>Object.entries(e).reduce((e,[t,a])=>(e[t]=Boolean(a?.static),e),{}),buildPrecacheDraft=(e={})=>Object.entries(e?.desiredPrecache??{}).reduce((e,[t,a])=>(e[t]=toQuantity(a),e),{}),buildDraft=(e={})=>({settings:cloneSettings(e.system?.settings??{}),affPriorities:buildAffPriorityDraft(e.affs??{}),defPriorities:buildDefPriorityDraft(e.defs??{}),defStatics:buildDefStaticDraft(e.defs??{}),desiredPrecache:buildPrecacheDraft(e.cache??{})}),keysChangedFrom=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].filter(a=>e[a]!==t[a]);function useSettingsForm(e){const[t]=(0,b.useState)(()=>buildDraft(e?.runtime?.snapshot?.()??{})),[a,n]=(0,b.useState)(()=>t.settings),[s,o]=(0,b.useState)(()=>t.affPriorities),[l,c]=(0,b.useState)(()=>t.defPriorities),[u,d]=(0,b.useState)(()=>t.defStatics),[m,p]=(0,b.useState)(()=>t.desiredPrecache);return{pending:a,set:(0,b.useCallback)((e,t)=>{n(a=>a?(0,i.produce)(a,a=>{const n=e.split(".");let s=a;for(let e=0;e<n.length-1;e+=1)s[n[e]]&&"object"==typeof s[n[e]]||(s[n[e]]={}),s=s[n[e]];s[n[n.length-1]]=t}):a)},[]),affPriorities:s,setAffPriority:(0,b.useCallback)((e,t)=>{o(a=>({...a,[e]:toConfigPriority(t)}))},[]),defPriorities:l,setDefPriority:(0,b.useCallback)((e,t)=>{c(a=>{const n=a?.[e]??0;return{...a,[e]:toDraftConfigPriority(t,n)}})},[]),defStatics:u,setDefStatic:(0,b.useCallback)((e,t)=>{d(a=>({...a,[e]:Boolean(t)}))},[]),desiredPrecache:m,setPrecache:(0,b.useCallback)((e,t)=>{p(a=>({...a,[e]:toQuantity(t)}))},[]),commit:(0,b.useCallback)(()=>{if(!e)return;const n=t;keysChangedFrom(s,n.affPriorities).forEach(t=>{e.api?.affs?.setDefaultPriority?.(t,s[t])});const i=normalizePriorityDraft(l);keysChangedFrom(i,n.defPriorities).forEach(t=>{e.api?.defs?.setDefaultPriority?.(t,i[t])}),keysChangedFrom(u,n.defStatics).forEach(t=>{e.api?.defs?.setStatic?.(t,u[t])});const o=keysChangedFrom(m,n.desiredPrecache).reduce((e,t)=>(e[t]=m[t]??0,e),{});Object.keys(o).length&&e.api?.ss?.precache?.set?.(o),a&&e.api?.control?.applySettings?.(a)},[a,s,l,u,m,t,e])}}function LabelledSwitch({label:e,checked:t,onChange:a}){return(0,Ot.jsx)(n.FormControlLabel,{control:(0,Ot.jsx)(n.Switch,{checked:Boolean(t),onChange:e=>a(e.target.checked),size:"small"}),label:e,sx:{ml:0,mr:0,gap:.5,alignItems:"center",userSelect:"none","& .MuiSwitch-root":{mr:.5},"& .MuiFormControlLabel-label":{fontSize:11,lineHeight:1.25}}})}function ThresholdSlider({label:e,value:t,onChange:a,min:s=0,max:i=100,step:o=5,unit:l="%"}){return(0,Ot.jsxs)(n.Box,{sx:{mb:1},children:[(0,Ot.jsxs)(n.Typography,{variant:"body2",sx:{mb:.5,fontSize:11,lineHeight:1.3},children:[e,": ",t,l]}),(0,Ot.jsx)(n.Slider,{value:t,min:s,max:i,step:o,onChange:(e,t)=>a(t),size:"small",sx:{color:"primary.main"}})]})}var Lt="50px",jt={minWidth:95,height:25,px:1,fontSize:11,lineHeight:1};function SectionHeader({children:e}){return(0,Ot.jsx)(n.Typography,{variant:"overline",sx:{display:"block",color:"primary.main",mt:2,mb:.5,fontWeight:700},children:e})}function SystemSettingsTab({pending:e,set:t}){return e?(0,Ot.jsxs)(n.Box,{sx:{display:"flex",flexWrap:"wrap",alignItems:"flex-start",columnGap:{xs:2,md:Lt},rowGap:2,pt:1},children:[(0,Ot.jsxs)(n.Box,{sx:{flexGrow:0,flexShrink:0,flexBasis:{xs:"100%",md:250},width:{xs:"100%",md:250},minWidth:0},children:[(0,Ot.jsx)(SectionHeader,{children:"nexSys Config"}),(0,Ot.jsxs)(n.Box,{sx:{display:"flex",flexDirection:"column"},children:[(0,Ot.jsx)(LabelledSwitch,{label:"Load on login",checked:!!e.loadOnLogin,onChange:e=>t("loadOnLogin",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Queue while paused",checked:e.queueWhilePaused,onChange:e=>t("queueWhilePaused",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Override Tab target",checked:e.overrideTab,onChange:e=>t("overrideTab",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Custom Prompt",checked:e.customPrompt,onChange:e=>t("customPrompt",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Debug output",checked:e.debug,onChange:e=>t("debug",e)})]}),(0,Ot.jsx)(SectionHeader,{children:"Notices (Echo)"}),(0,Ot.jsxs)(n.Box,{sx:{display:"flex",flexDirection:"column"},children:[(0,Ot.jsx)(LabelledSwitch,{label:"Affliction gained",checked:e.notices?.affGot,onChange:e=>t("notices.affGot",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Affliction lost",checked:e.notices?.affLost,onChange:e=>t("notices.affLost",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Defence gained",checked:e.notices?.defGot,onChange:e=>t("notices.defGot",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Defence lost",checked:e.notices?.defLost,onChange:e=>t("notices.defLost",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Balance lost",checked:e.notices?.balanceLost,onChange:e=>t("notices.balanceLost",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Balance recovered",checked:e.notices?.balanceRecovered,onChange:e=>t("notices.balanceRecovered",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Trackable gained",checked:e.notices?.trackableGot,onChange:e=>t("notices.trackableGot",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Trackable lost",checked:e.notices?.trackableLost,onChange:e=>t("notices.trackableLost",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Priority changes",checked:e.notices?.priority,onChange:e=>t("notices.priority",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"General output",checked:e.notices?.output,onChange:e=>t("notices.output",e)})]})]}),(0,Ot.jsxs)(n.Box,{sx:{flexGrow:0,flexShrink:0,flexBasis:{xs:"100%",md:190},width:{xs:"100%",md:190},minWidth:0},children:[(0,Ot.jsx)(SectionHeader,{children:"Curing Method"}),(0,Ot.jsxs)(n.Box,{sx:{mb:1},children:[(0,Ot.jsx)(n.Typography,{variant:"caption",sx:{display:"block",mb:.5,opacity:.7},children:"Curing type"}),(0,Ot.jsxs)(n.ToggleButtonGroup,{exclusive:!0,size:"small",value:e.ss?.transmutation?"transmutation":"concoctions",onChange:(e,a)=>a&&t("ss.transmutation","transmutation"===a),sx:{"& .MuiToggleButton-root":jt},children:[(0,Ot.jsx)(n.ToggleButton,{value:"transmutation",children:"Transmutation"}),(0,Ot.jsx)(n.ToggleButton,{value:"concoctions",children:"Concoctions"})]})]}),(0,Ot.jsxs)(n.Box,{sx:{mb:1},children:[(0,Ot.jsx)(n.Typography,{variant:"caption",sx:{display:"block",mb:.5,opacity:.7},children:"Sip priority"}),(0,Ot.jsxs)(n.ToggleButtonGroup,{exclusive:!0,size:"small",value:e.ss?.sipPriority??"health",onChange:(e,a)=>a&&t("ss.sipPriority",a),sx:{"& .MuiToggleButton-root":jt},children:[(0,Ot.jsx)(n.ToggleButton,{value:"health",children:"Health"}),(0,Ot.jsx)(n.ToggleButton,{value:"mana",children:"Mana"})]})]}),(0,Ot.jsxs)(n.Box,{sx:{display:"flex",flexDirection:"column",mt:1},children:[(0,Ot.jsx)(LabelledSwitch,{label:"Batching",checked:e.ss?.batch,onChange:e=>t("ss.batch",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Tree Tattoo",checked:"on"===e.ss?.tree,onChange:e=>t("ss.tree",e?"on":"off")}),(0,Ot.jsx)(LabelledSwitch,{label:"Focus",checked:e.ss?.focus,onChange:e=>t("ss.focus",e)}),e.ss?.focus&&(0,Ot.jsx)(LabelledSwitch,{label:"Focus over Herbs",checked:e.ss?.focusOverHerbs,onChange:e=>t("ss.focusOverHerbs",e)}),(0,Ot.jsx)(LabelledSwitch,{label:"Blood clotting",checked:e.ss?.clot,onChange:e=>t("ss.clot",e)}),e.ss?.clot&&(0,Ot.jsx)(n.Box,{sx:{ml:1,mt:2,mb:.5},children:(0,Ot.jsx)(n.TextField,{label:"Clot above",value:e.ss?.clotAt??"",onChange:e=>t("ss.clotAt",Number(e.target.value)||0),type:"number",size:"small",sx:{width:100,maxWidth:"100%"},slotProps:{htmlInput:{min:0}}})})]})]}),(0,Ot.jsxs)(n.Box,{sx:{flexGrow:0,flexShrink:0,flexBasis:{xs:"100%",md:250},width:{xs:"100%",md:250},minWidth:0},children:[(0,Ot.jsx)(SectionHeader,{children:"Thresholds"}),(0,Ot.jsx)(ThresholdSlider,{label:"Sip health at",value:e.ss?.sipHealthAt??0,onChange:e=>t("ss.sipHealthAt",e)}),(0,Ot.jsx)(ThresholdSlider,{label:"Sip mana at",value:e.ss?.sipManaAt??0,onChange:e=>t("ss.sipManaAt",e)}),(0,Ot.jsx)(n.Divider,{sx:{my:1,opacity:.3}}),(0,Ot.jsx)(ThresholdSlider,{label:"Moss health at",value:e.ss?.mossHealthAt??0,onChange:e=>t("ss.mossHealthAt",e)}),(0,Ot.jsx)(ThresholdSlider,{label:"Moss mana at",value:e.ss?.mossManaAt??0,onChange:e=>t("ss.mossManaAt",e)}),(0,Ot.jsx)(n.Divider,{sx:{my:1,opacity:.3}}),(0,Ot.jsx)(ThresholdSlider,{label:"Cure fractures above",value:e.ss?.fracturesAbove??0,onChange:e=>t("ss.fracturesAbove",e)}),(0,Ot.jsx)(ThresholdSlider,{label:"Use mana abilities above",value:e.ss?.manaThreshold??0,onChange:e=>t("ss.manaThreshold",e)})]})]}):null}function useNexSysSnapshot(e){return(0,b.useSyncExternalStore)((0,b.useCallback)(t=>{const a=e.events.topics,n=[a.SYSTEM_SETTINGS_CHANGED,a.SYSTEM_STATUS_CHANGED,a.SYSTEM_CLASS_CHANGED,a.AFF_PRIORITY_CHANGED,a.DEF_PRIORITY_CHANGED,a.CACHE_PRECACHE_CHANGED,a.SYSTEM_RUNTIME_CHANGED];return n.forEach(a=>e.events.on(a,t)),()=>n.forEach(a=>e.events.off(a,t))},[e]),e.runtime.snapshot,e.runtime.snapshot)}var qt=Object.freeze({}),$t=new Set(Object.keys(V?.types?.nonServerside??{}));function buildColumns(e,t={}){return(0,i.produce)({},a=>{for(let e=0;e<=25;e++)a[`col-${e}`]={id:`col-${e}`,label:0===e?"Ignored 26":`Prio ${e}`,priority:e,affs:[]};for(const[n,s]of Object.entries(e)){if($t.has(n))continue;const e=Number(t[n]??s.defaultPriority??0);!Number.isFinite(e)||e>26||a[`col-${Math.max(0,Math.min(25,26===e?0:e))}`].affs.push(n)}})}function findContainer(e,t){return t[e]?e:Object.keys(t).find(a=>t[a].affs.includes(e))??null}function useAffPriorities(e,t={}){const[a,n]=(0,b.useState)(null),[s,c]=(0,b.useState)(null),u=(0,b.useRef)(null),d=useNexSysSnapshot(e)?.affs??qt,{affPriorities:m=qt,setAffPriority:p}=t,g=(0,b.useMemo)(()=>buildColumns(d,m),[d,m]);return{columns:s??g,activeId:a,sensors:(0,o.useSensors)((0,o.useSensor)(o.PointerSensor,{activationConstraint:{distance:4}}),(0,o.useSensor)(o.KeyboardSensor,{coordinateGetter:l.sortableKeyboardCoordinates})),onDragStart:(0,b.useCallback)(({active:e})=>{n(String(e.id));const t=(0,i.produce)(g,()=>{});u.current=t,c(t)},[g]),onDragOver:(0,b.useCallback)(({active:e,over:t})=>{if(!t)return;const a=String(e.id),n=String(t.id),s=u.current;if(!s)return;const o=findContainer(a,s),d=findContainer(n,s);if(!o||!d)return;let m;if(o===d){const e=s[o].affs,t=e.indexOf(a),c=e.indexOf(n);if(-1===t||-1===c||t===c)return;m=(0,i.produce)(s,a=>{a[o].affs=(0,l.arrayMove)(e,t,c)})}else m=(0,i.produce)(s,e=>{const t=e[o].affs,s=e[d].affs;if(-1===t.indexOf(a))return;const i=s.indexOf(n),l=-1===i?s.length:i;e[o].affs=t.filter(e=>e!==a),e[d].affs=[...s.slice(0,l),a,...s.slice(l)]});u.current=m,c(m)},[]),onDragEnd:(0,b.useCallback)(({active:e,over:t})=>{n(null);const a=u.current;if(u.current=null,c(null),!t||!a)return;const s=String(e.id),i=findContainer(s,a);if(!i)return;const o=a[i]?.priority??0;o!==(g[findContainer(s,g)]?.priority??0)&&p?.(s,o)},[g,p]),onDragCancel:(0,b.useCallback)(()=>{n(null),u.current=null,c(null)},[])}}var Bt={antimony:"olive",argentum:"royalblue",aurum:"ForestGreen",calcite:"slategray",cinnabar:"greenyellow",cuprum:"DeepSkyBlue",ferrum:"DarkOrange",magnesium:"Red",plumbum:"Gold",realgar:"firebrick",stannum:"Tan",caloric:"darkseagreen",mending:"orchid",epidermal:"sienna",restoration:"darkviolet",health:"lightpink",writhe:"PaleGoldenRod"},Ft={ginseng:"ferrum",bloodroot:"magnesium",kelp:"aurum",hawthorn:"calamine",lobelia:"argentum",bellwort:"cuprum",ginger:"antimony",bayberry:"arsenic",ash:"stannum",goldenseal:"plumbum",pear:"calcite",elm:"cinnabar",valerian:"realgar",skullcap:"azurite",moss:"potash",kola:"quartz",sileris:"quicksilver",cohosh:"gypsum"};function resolveCureColor(e){if(e in Bt)return Bt[e]??null;const t=Ft[e];if(t)return Bt[t]??null;const a=e.match(/^(caloric|mending|epidermal|restoration|health)\b/);return a?Bt[a[1]]??null:null}var zt=["bound","daeggerimpale","entangled","impaled","transfixation","webbed","icebound"],Gt={};for(const[xn,Cn]of Object.entries(X))for(const e of Cn){const t=resolveCureColor(e);if(t){Gt[xn]=t;break}}for(const xn of zt)Gt[xn]||(Gt[xn]=Bt.writhe);function getAffColor(e){return Gt[e]??null}function AffChip({name:e,isDragging:t=!1}){const a=getAffColor(e);return(0,Ot.jsx)(n.Chip,{label:e,size:"small",sx:{fontSize:13,height:22,mb:.25,padding:.5,opacity:t?.4:1,cursor:"grab",bgcolor:"rgba(0,0,0,0.5)",color:a??"text.secondary",border:"1px solid "+(a?a+"55":"rgba(255,255,255,0.2)"),"& .MuiChip-label":{px:.75},"&:active":{cursor:"grabbing"}}})}function SortableAffChip({name:e}){const{attributes:t,listeners:a,setNodeRef:s,transform:i,transition:o,isDragging:u}=(0,l.useSortable)({id:e});return(0,Ot.jsx)(n.Box,{ref:s,...t,...a,sx:{transform:c.CSS.Transform.toString(i),transition:o,touchAction:"none"},children:(0,Ot.jsx)(AffChip,{name:e,isDragging:u})})}function PriorityColumn({column:e}){const t=0===e.priority,{setNodeRef:a}=(0,o.useDroppable)({id:e.id});return(0,Ot.jsxs)(n.Box,{sx:{minWidth:125,maxWidth:125,border:"1px solid",borderColor:t?"rgba(255,255,255,0.1)":"rgba(79,195,247,0.2)",borderRadius:1,p:.5,bgcolor:t?"rgba(0,0,0,0.2)":"rgba(79,195,247,0.04)",flexShrink:0},children:[(0,Ot.jsx)(n.Typography,{variant:"caption",sx:{display:"block",textAlign:"center",fontWeight:700,color:t?"text.secondary":"primary.main",mb:.5,fontSize:13},children:e.label}),(0,Ot.jsx)(l.SortableContext,{items:e.affs,strategy:l.verticalListSortingStrategy,children:(0,Ot.jsx)(n.Box,{ref:a,sx:{minHeight:28,display:"flex",flexDirection:"column"},children:e.affs.map(e=>(0,Ot.jsx)(SortableAffChip,{name:e},e))})})]})}function AffPrioritiesTab({settingsForm:e}){const{columns:t,activeId:a,sensors:s,onDragStart:i,onDragOver:l,onDragEnd:c,onDragCancel:u}=useAffPriorities(useNexSys(),e);return(0,Ot.jsx)(n.Box,{sx:{py:1},children:(0,Ot.jsx)(n.Box,{sx:{display:"inline-flex",gap:.75,alignItems:"flex-start"},children:(0,Ot.jsxs)(o.DndContext,{sensors:s,collisionDetection:o.closestCorners,onDragStart:i,onDragOver:l,onDragEnd:c,onDragCancel:u,children:[Object.keys(t).map(e=>(0,Ot.jsx)(PriorityColumn,{column:t[e]},e)),(0,Ot.jsx)(o.DragOverlay,{children:a?(0,Ot.jsx)(AffChip,{name:a}):null})]})})})}function r(e){var t,a,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(a=r(e[t]))&&(n&&(n+=" "),n+=a)}else for(a in e)e[a]&&(n&&(n+=" "),n+=a);return n}function clsx(){for(var e,t,a=0,n="",s=arguments.length;a<s;a++)(e=arguments[a])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}function composeClasses(e,t,a=void 0){const n={};for(const s in e){const i=e[s];let o="",l=!0;for(let e=0;e<i.length;e+=1){const n=i[e];n&&(o+=(!0===l?"":" ")+t(n),l=!1,a&&a[n]&&(o+=" "+a[n]))}n[s]=o}return n}function formatMuiErrorMessage(e,...t){const a=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>a.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${a} for the full message.`}function capitalize$1(e){if("string"!=typeof e)throw new Error(formatMuiErrorMessage(7));return e.charAt(0).toUpperCase()+e.slice(1)}var Ht=capitalize$1;function fastDeepAssign(e,t){const a=Array.isArray(t),n=Array.isArray(e);return isPrimitive(t)?t:isPrimitiveOrBuiltIn(e)?clone(t):a&&n?mergeArray(e,t):a!==n?clone(t):mergeObject(e,t)}function cloneArray(e){let t=0;const a=e.length,n=new Array(a);for(t=0;t<a;t+=1)n[t]=clone(e[t]);return n}function cloneObject(e){const t={};for(const a in e)t[a]=clone(e[a]);return t}function mergeArray(e,t){const a=e.length;for(let n=0;n<t.length;n+=1)e[a+n]=clone(t[n]);return e}function isMergeableObject(e){return!("object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date)}function isPrimitive(e){return"object"!=typeof e||null===e}function isPrimitiveOrBuiltIn(e){return"object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date}function clone(e){return isMergeableObject(e)?Array.isArray(e)?cloneArray(e):cloneObject(e):e}function mergeObject(e,t){for(const a in t)e[a]=a in e?fastDeepAssign(e[a],t[a]):clone(t[a]);return e}function isObjectEmpty(e){if(null==e)return!0;for(const t in e)return!1;return!0}var Ut=__commonJSMin(e=>{Symbol.for("react.transitional.element"),Symbol.for("react.portal");var t=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),n=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),i=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.suspense_list"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),m=(Symbol.for("react.view_transition"),Symbol.for("react.client.reference"));e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===t||e===n||e===a||e===l||e===c||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===u||e.$$typeof===i||e.$$typeof===s||e.$$typeof===o||e.$$typeof===m||void 0!==e.getModuleId)}}),Vt=__commonJSMin((e,t)=>{t.exports=Ut()})();function isPlainObject(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function deepClone(e){if(b.isValidElement(e)||(0,Vt.isValidElementType)(e)||!isPlainObject(e))return e;const t={};return Object.keys(e).forEach(a=>{t[a]=deepClone(e[a])}),t}function deepmerge(e,t,a={clone:!0}){const n=a.clone?{...e}:e;return isPlainObject(e)&&isPlainObject(t)&&Object.keys(t).forEach(s=>{b.isValidElement(t[s])||(0,Vt.isValidElementType)(t[s])?n[s]=t[s]:isPlainObject(t[s])&&Object.prototype.hasOwnProperty.call(e,s)&&isPlainObject(e[s])?n[s]=deepmerge(e[s],t[s],a):a.clone?n[s]=isPlainObject(t[s])?deepClone(t[s]):t[s]:n[s]=t[s]}),n}var Yt=/min-width:\s*([0-9.]+)/;function sortContainerQueries(e,t){if(!e.containerQueries||!hasContainerQuery(t))return t;const a=[];for(const s in t)s.startsWith("@container")&&a.push(s);a.sort((e,t)=>+(e.match(Yt)?.[1]||0)-+(t.match(Yt)?.[1]||0));const n=t;for(let s=0;s<a.length;s+=1){const e=a[s],t=n[e];delete n[e],n[e]=t}return n}function hasContainerQuery(e){for(const t in e)if(t.startsWith("@container"))return!0;return!1}function isCqShorthand(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function getContainerQuery(e,t){const a=t.match(/^@([^/]+)?\/?(.+)?$/);if(!a)return null;const[,n,s]=a,i=Number.isNaN(+n)?n||0:+n;return e.containerQueries(s).up(i)}function cssContainerQueries(e){const toContainerQuery=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function attachCq(t,a){t.up=(...t)=>toContainerQuery(e.breakpoints.up(...t),a),t.down=(...t)=>toContainerQuery(e.breakpoints.down(...t),a),t.between=(...t)=>toContainerQuery(e.breakpoints.between(...t),a),t.only=(...t)=>toContainerQuery(e.breakpoints.only(...t),a),t.not=(...t)=>{const n=toContainerQuery(e.breakpoints.not(...t),a);return n.includes("not all and")?n.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):n}}const t={},containerQueries=e=>(attachCq(t,e),t);return attachCq(containerQueries),{...e,containerQueries}}var sortBreakpointsValues=e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function createBreakpoints(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:a="px",step:n=5,...s}=e,i=sortBreakpointsValues(t),o=Object.keys(i);function up(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${a})`}function down(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-n/100}${a})`}function between(e,s){const i=o.indexOf(s);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${a}) and (max-width:${(-1!==i&&"number"==typeof t[o[i]]?t[o[i]]:s)-n/100}${a})`}function only(e){return o.indexOf(e)+1<o.length?between(e,o[o.indexOf(e)+1]):up(e)}function not(e){const t=o.indexOf(e);return 0===t?up(o[1]):t===o.length-1?down(o[t]):between(e,o[o.indexOf(e)+1]).replace("@media","@media not all and")}const l=[];for(let c=0;c<o.length;c+=1)l.push(up(o[c]));return{keys:o,values:i,up,down,between,only,not,unit:a,internal_mediaKeys:l,...s}}var Qt={},Wt={xs:0,sm:600,md:900,lg:1200,xl:1536},Kt=createBreakpoints({values:Wt}),Xt={containerQueries:e=>({up:t=>{let a="number"==typeof t?t:Wt[t]||t;return"number"==typeof a&&(a=`${a}px`),e?`@container ${e} (min-width:${a})`:`@container (min-width:${a})`}})};function handleBreakpoints(e,t,a){const n={};return iterateBreakpoints(n,e.theme,t,(e,t,s)=>{const i=a(t,s);e?n[e]=i:fastDeepAssign(n,i)})}function iterateBreakpoints(e,t,a,n){if(t??=Qt,Array.isArray(a)){const s=t.breakpoints??Kt;for(let t=0;t<a.length;t+=1)buildBreakpoint(e,s.up(s.keys[t]),a[t],void 0,n);return e}if("object"==typeof a){const s=t.breakpoints??Kt,i=s.values??Wt;for(const o in a)if(isCqShorthand(s.keys,o)){const s=getContainerQuery(t.containerQueries?t:Xt,o);s&&buildBreakpoint(e,s,a[o],o,n)}else if(o in i)buildBreakpoint(e,s.up(o),a[o],o,n);else{const t=o;e[t]=a[t]}return e}return n(void 0,a),e}function buildBreakpoint(e,t,a,n,s){e[t]??={},s(t,a,n)}function createEmptyBreakpointObject(e=Kt){const{internal_mediaKeys:t}=e,a={};for(let n=0;n<t.length;n+=1)a[t[n]]={};return a}function removeUnusedBreakpoints(e,t){const a=e.internal_mediaKeys;for(let n=0;n<a.length;n+=1){const e=a[n];isObjectEmpty(t[e])&&delete t[e]}return t}function hasBreakpoint(e,t){if(Array.isArray(t))return!0;if("object"==typeof t&&null!==t){for(let n=0;n<e.keys.length;n+=1)if(e.keys[n]in t)return!0;const a=Object.keys(t);for(let t=0;t<a.length;t+=1)if(isCqShorthand(e.keys,a[t]))return!0}return!1}function getStyleValue2(e,t,a,n){let s;return s="function"==typeof e?e(a):Array.isArray(e)?e[a]||a:"string"==typeof a&&getPath(e,a,!0,n)||a,t&&(s=t(s,a,e)),s}function getPath(e,t,a=!0,n=void 0){if(!e||!t)return null;const s=t.split(".");if(e.vars&&a){const t=getPathImpl(e.vars,s,n);if(null!=t)return t}return getPathImpl(e,s,n)}function getPathImpl(e,t,a=void 0){let n,s=e,i=0;for(;i<t.length;){if(null==s)return s;n=s,s=s[t[i]],i+=1}if(a&&void 0===s){const e=t[t.length-1],s=`${a}${"default"===e?"":capitalize$1(e)}`;return n?.[s]}return s}function style$1(e){const{prop:t,cssProperty:a=e.prop,themeKey:n,transform:s}=e,fn=e=>{if(null==e[t])return null;const i=e[t],o=getPath(e.theme,n)||{};return handleBreakpoints(e,i,e=>{const n=getStyleValue2(o,s,e,t);return!1===a?n:{[a]:n}})};return fn.propTypes={},fn.filterProps=[t],fn}var Jt={internal_cache:{}},Zt={m:"margin",p:"padding"},er={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},tr={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},rr={};for(const xn in Zt)rr[xn]=[Zt[xn]];for(const xn in Zt)for(const e in er){const t=Zt[xn],a=er[e],n=Array.isArray(a)?a.map(e=>t+e):[t+a];rr[xn+e]=n}for(const xn in tr)rr[xn]=rr[tr[xn]];var ar=new Set(["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"]),nr=new Set(["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"]),sr=new Set([...ar,...nr]);function createUnaryUnit(e,t,a,n){const s=getPath(e,t,!0)??a;return"number"==typeof s||"string"==typeof s?e=>"string"==typeof e?e:"string"==typeof s?s.startsWith("var(")&&0===e?0:s.startsWith("var(")&&1===e?s:`calc(${e} * ${s})`:s*e:Array.isArray(s)?e=>{if("string"==typeof e)return e;const t=s[Math.abs(e)];return e>=0?t:"number"==typeof t?-t:"string"==typeof t&&t.startsWith("var(")?`calc(-1 * ${t})`:`-${t}`}:"function"==typeof s?s:()=>{}}function createUnarySpacing(e){return createUnaryUnit(e,"spacing",8,"spacing")}function getValue(e,t){return"string"==typeof t||null==t?t:e(t)}var ir=[""];function style(e,t){const a=e.theme??Jt,n=a?.internal_cache?.unarySpacing??createUnarySpacing(a),s={};for(const i in e){if(!t.has(i))continue;const a=rr[i]??(ir[0]=i,ir),o=e[i];iterateBreakpoints(s,e.theme,o,(e,t)=>{const i=e?s[e]:s;for(let s=0;s<a.length;s+=1)i[a[s]]=getValue(n,t)})}return s}function margin(e){return style(e,ar)}function padding(e){return style(e,nr)}function spacing(e){return style(e,sr)}function compose(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(a=>{e[a]=t}),e),{}),fn=e=>{const a={};for(const n in e)t[n]&&fastDeepAssign(a,t[n](e));return a};return fn.propTypes={},fn.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),fn}function borderTransform(e){return"number"!=typeof e?e:`${e}px solid`}function createBorderStyle(e,t){return style$1({prop:e,themeKey:"borders",transform:t})}margin.propTypes={},margin.filterProps=ar,padding.propTypes={},padding.filterProps=nr,spacing.propTypes={},spacing.filterProps=sr;var or=createBorderStyle("border",borderTransform),lr=createBorderStyle("borderTop",borderTransform),cr=createBorderStyle("borderRight",borderTransform),ur=createBorderStyle("borderBottom",borderTransform),dr=createBorderStyle("borderLeft",borderTransform),mr=createBorderStyle("borderColor"),pr=createBorderStyle("borderTopColor"),gr=createBorderStyle("borderRightColor"),fr=createBorderStyle("borderBottomColor"),hr=createBorderStyle("borderLeftColor"),br=createBorderStyle("outline",borderTransform),yr=createBorderStyle("outlineColor"),borderRadius=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=createUnaryUnit(e.theme,"shape.borderRadius",4,"borderRadius"),styleFromPropValue=e=>({borderRadius:getValue(t,e)});return handleBreakpoints(e,e.borderRadius,styleFromPropValue)}return null};borderRadius.propTypes={},borderRadius.filterProps=["borderRadius"];compose(or,lr,cr,ur,dr,mr,pr,gr,fr,hr,borderRadius,br,yr);var gap=e=>{if(void 0!==e.gap&&null!==e.gap){const t=createUnaryUnit(e.theme,"spacing",8,"gap"),styleFromPropValue=e=>({gap:getValue(t,e)});return handleBreakpoints(e,e.gap,styleFromPropValue)}return null};gap.propTypes={},gap.filterProps=["gap"];var columnGap=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=createUnaryUnit(e.theme,"spacing",8,"columnGap"),styleFromPropValue=e=>({columnGap:getValue(t,e)});return handleBreakpoints(e,e.columnGap,styleFromPropValue)}return null};columnGap.propTypes={},columnGap.filterProps=["columnGap"];var rowGap=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=createUnaryUnit(e.theme,"spacing",8,"rowGap"),styleFromPropValue=e=>({rowGap:getValue(t,e)});return handleBreakpoints(e,e.rowGap,styleFromPropValue)}return null};rowGap.propTypes={},rowGap.filterProps=["rowGap"];compose(gap,columnGap,rowGap,style$1({prop:"gridColumn"}),style$1({prop:"gridRow"}),style$1({prop:"gridAutoFlow"}),style$1({prop:"gridAutoColumns"}),style$1({prop:"gridAutoRows"}),style$1({prop:"gridTemplateColumns"}),style$1({prop:"gridTemplateRows"}),style$1({prop:"gridTemplateAreas"}),style$1({prop:"gridArea"}));function paletteTransform(e,t){return"grey"===t?t:e}compose(style$1({prop:"color",themeKey:"palette",transform:paletteTransform}),style$1({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:paletteTransform}),style$1({prop:"backgroundColor",themeKey:"palette",transform:paletteTransform}));function sizingTransform(e){return e<=1&&0!==e?100*e+"%":e}var vr=style$1({prop:"width",transform:sizingTransform}),maxWidth=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const styleFromPropValue=t=>{const a=e.theme?.breakpoints?.values?.[t]||Wt[t];return a?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${a}${e.theme.breakpoints.unit}`}:{maxWidth:a}:{maxWidth:sizingTransform(t)}};return handleBreakpoints(e,e.maxWidth,styleFromPropValue)}return null};maxWidth.filterProps=["maxWidth"];var Sr=style$1({prop:"minWidth",transform:sizingTransform}),xr=style$1({prop:"height",transform:sizingTransform}),Cr=style$1({prop:"maxHeight",transform:sizingTransform}),kr=style$1({prop:"minHeight",transform:sizingTransform}),Ar=(style$1({prop:"size",cssProperty:"width",transform:sizingTransform}),style$1({prop:"size",cssProperty:"height",transform:sizingTransform}),compose(vr,maxWidth,Sr,xr,Cr,kr,style$1({prop:"boxSizing"})),{border:{themeKey:"borders",transform:borderTransform},borderTop:{themeKey:"borders",transform:borderTransform},borderRight:{themeKey:"borders",transform:borderTransform},borderBottom:{themeKey:"borders",transform:borderTransform},borderLeft:{themeKey:"borders",transform:borderTransform},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:borderTransform},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:borderRadius},color:{themeKey:"palette",transform:paletteTransform},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:paletteTransform},backgroundColor:{themeKey:"palette",transform:paletteTransform},p:{style:padding},pt:{style:padding},pr:{style:padding},pb:{style:padding},pl:{style:padding},px:{style:padding},py:{style:padding},padding:{style:padding},paddingTop:{style:padding},paddingRight:{style:padding},paddingBottom:{style:padding},paddingLeft:{style:padding},paddingX:{style:padding},paddingY:{style:padding},paddingInline:{style:padding},paddingInlineStart:{style:padding},paddingInlineEnd:{style:padding},paddingBlock:{style:padding},paddingBlockStart:{style:padding},paddingBlockEnd:{style:padding},m:{style:margin},mt:{style:margin},mr:{style:margin},mb:{style:margin},ml:{style:margin},mx:{style:margin},my:{style:margin},margin:{style:margin},marginTop:{style:margin},marginRight:{style:margin},marginBottom:{style:margin},marginLeft:{style:margin},marginX:{style:margin},marginY:{style:margin},marginInline:{style:margin},marginInlineStart:{style:margin},marginInlineEnd:{style:margin},marginBlock:{style:margin},marginBlockStart:{style:margin},marginBlockEnd:{style:margin},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:gap},rowGap:{style:rowGap},columnGap:{style:columnGap},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:sizingTransform},maxWidth:{style:maxWidth},minWidth:{transform:sizingTransform},height:{transform:sizingTransform},maxHeight:{transform:sizingTransform},minHeight:{transform:sizingTransform},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),Er={};function unstable_createStyleFunctionSx(){function styleFunctionSx(e){if(!e.sx)return null;const{sx:t,theme:a=Er,nested:n}=e,s=a.unstable_sxConfig??Ar,i={sx:null,theme:a,nested:!0};function process(t){let o=t;if("function"==typeof t)o=t(a);else if("object"!=typeof t)return t;if(!o)return null;const l=a.breakpoints??Kt,c=createEmptyBreakpointObject(l);for(const n in o){const t=callIfFn(o[n],a);null!=t&&("object"==typeof t?s[n]?setThemeValue(c,n,t,a,s):hasBreakpoint(l,t)?iterateBreakpoints(c,e.theme,t,(e,t)=>{c[e][n]=t}):(i.sx=t,c[n]=styleFunctionSx(i)):setThemeValue(c,n,t,a,s))}return!n&&a.modularCssLayers?{"@layer sx":sortContainerQueries(a,removeUnusedBreakpoints(l,c))}:sortContainerQueries(a,removeUnusedBreakpoints(l,c))}return Array.isArray(t)?t.map(process):process(t)}return styleFunctionSx.filterProps=["sx"],styleFunctionSx}var _r=unstable_createStyleFunctionSx();function setThemeValue(e,t,a,n,s){const i=s[t];if(!i)return void(e[t]=a);if(null==a)return;const{themeKey:o}=i;if("typography"===o&&"inherit"===a)return void(e[t]=a);const{style:l}=i;if(l)return void fastDeepAssign(e,l({[t]:a,theme:n}));const{cssProperty:c=t,transform:u}=i,d=getPath(n,o);iterateBreakpoints(e,n,a,(a,n)=>{const s=getStyleValue2(d,u,n,t);!1===c?fastDeepAssign(a?e[a]:e,s):a?e[a][c]=s:e[c]=s})}function callIfFn(e,t){return"function"==typeof e?e(t):e}function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},_extends.apply(null,arguments)}var wr=!1;function sheetForTag(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function createStyleElement(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}var Tr=function(){function StyleSheet(e){var t=this;this._insertTag=function(e){var a;a=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,a),t.tags.push(e)},this.isSpeedy=void 0===e.speedy?!wr:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var e=StyleSheet.prototype;return e.hydrate=function hydrate(e){e.forEach(this._insertTag)},e.insert=function insert(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(createStyleElement(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var a=sheetForTag(t);try{a.insertRule(e,a.cssRules.length)}catch(n){}}else t.appendChild(document.createTextNode(e));this.ctr++},e.flush=function flush(){this.tags.forEach(function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)}),this.tags=[],this.ctr=0},StyleSheet}(),Pr="-ms-",Mr="-moz-",Dr="-webkit-",Rr="comm",Or="rule",Nr="decl",Ir="@import",Lr="@keyframes",jr="@layer",qr=Math.abs,$r=String.fromCharCode,Br=Object.assign;function hash(e,t){return 45^charat(e,0)?(((t<<2^charat(e,0))<<2^charat(e,1))<<2^charat(e,2))<<2^charat(e,3):0}function trim(e){return e.trim()}function match(e,t){return(e=t.exec(e))?e[0]:e}function replace(e,t,a){return e.replace(t,a)}function indexof(e,t){return e.indexOf(t)}function charat(e,t){return 0|e.charCodeAt(t)}function substr(e,t,a){return e.slice(t,a)}function strlen(e){return e.length}function sizeof(e){return e.length}function append(e,t){return t.push(e),e}function combine(e,t){return e.map(t).join("")}var Fr=1,zr=1,Gr=0,Hr=0,Ur=0,Vr="";function node(e,t,a,n,s,i,o){return{value:e,root:t,parent:a,type:n,props:s,children:i,line:Fr,column:zr,length:o,return:""}}function copy(e,t){return Br(node("",null,null,"",null,null,0),e,{length:-e.length},t)}function char(){return Ur}function prev(){return Ur=Hr>0?charat(Vr,--Hr):0,zr--,10===Ur&&(zr=1,Fr--),Ur}function next(){return Ur=Hr<Gr?charat(Vr,Hr++):0,zr++,10===Ur&&(zr=1,Fr++),Ur}function peek(){return charat(Vr,Hr)}function caret(){return Hr}function slice(e,t){return substr(Vr,e,t)}function token(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(e){return Fr=zr=1,Gr=strlen(Vr=e),Hr=0,[]}function dealloc(e){return Vr="",e}function delimit(e){return trim(slice(Hr-1,delimiter(91===e?e+2:40===e?e+1:e)))}function whitespace(e){for(;(Ur=peek())&&Ur<33;)next();return token(e)>2||token(Ur)>3?"":" "}function escaping(e,t){for(;--t&&next()&&!(Ur<48||Ur>102||Ur>57&&Ur<65||Ur>70&&Ur<97););return slice(e,caret()+(t<6&&32==peek()&&32==next()))}function delimiter(e){for(;next();)switch(Ur){case e:return Hr;case 34:case 39:34!==e&&39!==e&&delimiter(Ur);break;case 40:41===e&&delimiter(e);break;case 92:next()}return Hr}function commenter(e,t){for(;next()&&e+Ur!==57&&(e+Ur!==84||47!==peek()););return"/*"+slice(t,Hr-1)+"*"+$r(47===e?e:next())}function identifier(e){for(;!token(peek());)next();return slice(e,Hr)}function compile(e){return dealloc(parse("",null,null,null,[""],e=alloc(e),0,[0],e))}function parse(e,t,a,n,s,i,o,l,c){for(var u=0,d=0,m=o,p=0,g=0,h=0,b=1,y=1,v=1,S=0,x="",C=s,k=i,A=n,E=x;y;)switch(h=S,S=next()){case 40:if(108!=h&&58==charat(E,m-1)){-1!=indexof(E+=replace(delimit(S),"&","&\f"),"&\f")&&(v=-1);break}case 34:case 39:case 91:E+=delimit(S);break;case 9:case 10:case 13:case 32:E+=whitespace(h);break;case 92:E+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),t,a),c);break;default:E+="/"}break;case 123*b:l[u++]=strlen(E)*v;case 125*b:case 59:case 0:switch(S){case 0:case 125:y=0;case 59+d:-1==v&&(E=replace(E,/\f/g,"")),g>0&&strlen(E)-m&&append(g>32?declaration(E+";",n,a,m-1):declaration(replace(E," ","")+";",n,a,m-2),c);break;case 59:E+=";";default:if(append(A=ruleset(E,t,a,u,d,s,l,x,C=[],k=[],m),i),123===S)if(0===d)parse(E,t,A,A,C,i,m,l,k);else switch(99===p&&110===charat(E,3)?100:p){case 100:case 108:case 109:case 115:parse(e,A,A,n&&append(ruleset(e,A,A,0,0,s,l,x,s,C=[],m),k),s,k,m,l,n?C:k);break;default:parse(E,A,A,A,[""],k,0,l,k)}}u=d=g=0,b=v=1,x=E="",m=o;break;case 58:m=1+strlen(E),g=h;default:if(b<1)if(123==S)--b;else if(125==S&&0==b++&&125==prev())continue;switch(E+=$r(S),S*b){case 38:v=d>0?1:(E+="\f",-1);break;case 44:l[u++]=(strlen(E)-1)*v,v=1;break;case 64:45===peek()&&(E+=delimit(next())),p=peek(),d=m=strlen(x=E+=identifier(caret())),S++;break;case 45:45===h&&2==strlen(E)&&(b=0)}}return i}function ruleset(e,t,a,n,s,i,o,l,c,u,d){for(var m=s-1,p=0===s?i:[""],g=sizeof(p),h=0,b=0,y=0;h<n;++h)for(var v=0,S=substr(e,m+1,m=qr(b=o[h])),x=e;v<g;++v)(x=trim(b>0?p[v]+" "+S:replace(S,/&\f/g,p[v])))&&(c[y++]=x);return node(e,t,a,0===s?Or:l,c,u,d)}function comment(e,t,a){return node(e,t,a,Rr,$r(char()),substr(e,2,-2),0)}function declaration(e,t,a,n){return node(e,t,a,Nr,substr(e,0,n),substr(e,n+1,-1),n)}function serialize(e,t){for(var a="",n=sizeof(e),s=0;s<n;s++)a+=t(e[s],s,e,t)||"";return a}function stringify(e,t,a,n){switch(e.type){case jr:if(e.children.length)break;case Ir:case Nr:return e.return=e.return||e.value;case Rr:return"";case Lr:return e.return=e.value+"{"+serialize(e.children,n)+"}";case Or:e.value=e.props.join(",")}return strlen(a=serialize(e.children,n))?e.return=e.value+"{"+a+"}":""}function middleware(e){var t=sizeof(e);return function(a,n,s,i){for(var o="",l=0;l<t;l++)o+=e[l](a,n,s,i)||"";return o}}function rulesheet(e){return function(t){t.root||(t=t.return)&&e(t)}}function memoize(e){var t=Object.create(null);return function(a){return void 0===t[a]&&(t[a]=e(a)),t[a]}}var Yr=function identifierWithPointTracking(e,t,a){for(var n=0,s=0;n=s,s=peek(),38===n&&12===s&&(t[a]=1),!token(s);)next();return slice(e,Hr)},Qr=function toRules(e,t){var a=-1,n=44;do{switch(token(n)){case 0:38===n&&12===peek()&&(t[a]=1),e[a]+=Yr(Hr-1,t,a);break;case 2:e[a]+=delimit(n);break;case 4:if(44===n){e[++a]=58===peek()?"&\f":"",t[a]=e[a].length;break}default:e[a]+=$r(n)}}while(n=next());return e},Wr=function getRules(e,t){return dealloc(Qr(alloc(e),t))},Kr=new WeakMap,Xr=function compat(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,a=e.parent,n=e.column===a.column&&e.line===a.line;"rule"!==a.type;)if(!(a=a.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Kr.get(a))&&!n){Kr.set(e,!0);for(var s=[],i=Wr(t,s),o=a.props,l=0,c=0;l<i.length;l++)for(var u=0;u<o.length;u++,c++)e.props[c]=s[l]?i[l].replace(/&\f/g,o[u]):o[u]+" "+i[l]}}},Jr=function removeLabel(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function prefix(e,t){switch(hash(e,t)){case 5103:return Dr+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return Dr+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return Dr+e+Mr+e+Pr+e+e;case 6828:case 4268:return Dr+e+Pr+e+e;case 6165:return Dr+e+Pr+"flex-"+e+e;case 5187:return Dr+e+replace(e,/(\w+).+(:[^]+)/,Dr+"box-$1$2"+Pr+"flex-$1$2")+e;case 5443:return Dr+e+Pr+"flex-item-"+replace(e,/flex-|-self/,"")+e;case 4675:return Dr+e+Pr+"flex-line-pack"+replace(e,/align-content|flex-|-self/,"")+e;case 5548:return Dr+e+Pr+replace(e,"shrink","negative")+e;case 5292:return Dr+e+Pr+replace(e,"basis","preferred-size")+e;case 6060:return Dr+"box-"+replace(e,"-grow","")+Dr+e+Pr+replace(e,"grow","positive")+e;case 4554:return Dr+replace(e,/([^-])(transform)/g,"$1"+Dr+"$2")+e;case 6187:return replace(replace(replace(e,/(zoom-|grab)/,Dr+"$1"),/(image-set)/,Dr+"$1"),e,"")+e;case 5495:case 3959:return replace(e,/(image-set\([^]*)/,Dr+"$1$`$1");case 4968:return replace(replace(e,/(.+:)(flex-)?(.*)/,Dr+"box-pack:$3"+Pr+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+Dr+e+e;case 4095:case 3583:case 4068:case 2532:return replace(e,/(.+)-inline(.+)/,Dr+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(e)-1-t>6)switch(charat(e,t+1)){case 109:if(45!==charat(e,t+4))break;case 102:return replace(e,/(.+:)(.+)-([^]+)/,"$1"+Dr+"$2-$3$1"+Mr+(108==charat(e,t+3)?"$3":"$2-$3"))+e;case 115:return~indexof(e,"stretch")?prefix(replace(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==charat(e,t+1))break;case 6444:switch(charat(e,strlen(e)-3-(~indexof(e,"!important")&&10))){case 107:return replace(e,":",":"+Dr)+e;case 101:return replace(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Dr+(45===charat(e,14)?"inline-":"")+"box$3$1"+Dr+"$2$3$1"+Pr+"$2box$3")+e}break;case 5936:switch(charat(e,t+11)){case 114:return Dr+e+Pr+replace(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Dr+e+Pr+replace(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Dr+e+Pr+replace(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Dr+e+Pr+e+e}return e}var Zr=[function prefixer(e,t,a,n){if(e.length>-1&&!e.return)switch(e.type){case Nr:e.return=prefix(e.value,e.length);break;case Lr:return serialize([copy(e,{value:replace(e.value,"@","@"+Dr)})],n);case Or:if(e.length)return combine(e.props,function(t){switch(match(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(e,{props:[replace(t,/:(read-\w+)/,":"+Mr+"$1")]})],n);case"::placeholder":return serialize([copy(e,{props:[replace(t,/:(plac\w+)/,":"+Dr+"input-$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,":"+Mr+"$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,Pr+"input-$1")]})],n)}return""})}}],ea=function createCache(e){var t=e.key;if("css"===t){var a=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(a,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var n,s,i=e.stylisPlugins||Zr,o={},l=[];n=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),a=1;a<t.length;a++)o[t[a]]=!0;l.push(e)});var c,u=[Xr,Jr],d=[stringify,rulesheet(function(e){c.insert(e)})],m=middleware(u.concat(i,d)),p=function stylis(e){return serialize(compile(e),m)};s=function insert(e,t,a,n){c=a,p(e?e+"{"+t.styles+"}":t.styles),n&&(g.inserted[t.name]=!0)};var g={key:t,sheet:new Tr({key:t,container:n,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:o,registered:{},insert:s};return g.sheet.hydrate(l),g},ta=!0;function getRegisteredStyles(e,t,a){var n="";return a.split(" ").forEach(function(a){void 0!==e[a]?t.push(e[a]+";"):a&&(n+=a+" ")}),n}var ra=function registerStyles(e,t,a){var n=e.key+"-"+t.name;!1!==a&&!1!==ta||void 0!==e.registered[n]||(e.registered[n]=t.styles)},aa=function insertStyles(e,t,a){ra(e,t,a);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var s=t;do{e.insert(t===s?"."+n:"",s,e.sheet,!0),s=s.next}while(void 0!==s)}};function murmur2(e){for(var t,a=0,n=0,s=e.length;s>=4;++n,s-=4)t=1540483477*(65535&(t=255&e.charCodeAt(n)|(255&e.charCodeAt(++n))<<8|(255&e.charCodeAt(++n))<<16|(255&e.charCodeAt(++n))<<24))+(59797*(t>>>16)<<16),a=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&a)+(59797*(a>>>16)<<16);switch(s){case 3:a^=(255&e.charCodeAt(n+2))<<16;case 2:a^=(255&e.charCodeAt(n+1))<<8;case 1:a=1540483477*(65535&(a^=255&e.charCodeAt(n)))+(59797*(a>>>16)<<16)}return(((a=1540483477*(65535&(a^=a>>>13))+(59797*(a>>>16)<<16))^a>>>15)>>>0).toString(36)}var na={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},sa=!1,ia=/[A-Z]|^ms/g,oa=/_EMO_([^_]+?)_([^]*?)_EMO_/g,la=function isCustomProperty(e){return 45===e.charCodeAt(1)},ca=function isProcessableValue(e){return null!=e&&"boolean"!=typeof e},ua=memoize(function(e){return la(e)?e:e.replace(ia,"-$&").toLowerCase()}),da=function processStyleValue(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(oa,function(e,t,a){return pa={name:t,styles:a,next:pa},t})}return 1===na[e]||la(e)||"number"!=typeof t||0===t?t:t+"px"},ma="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function handleInterpolation(e,t,a){if(null==a)return"";var n=a;if(void 0!==n.__emotion_styles)return n;switch(typeof a){case"boolean":return"";case"object":var s=a;if(1===s.anim)return pa={name:s.name,styles:s.styles,next:pa},s.name;var i=a;if(void 0!==i.styles){var o=i.next;if(void 0!==o)for(;void 0!==o;)pa={name:o.name,styles:o.styles,next:pa},o=o.next;return i.styles+";"}return createStringFromObject(e,t,a);case"function":if(void 0!==e){var l=pa,c=a(e);return pa=l,handleInterpolation(e,t,c)}}var u=a;if(null==t)return u;var d=t[u];return void 0!==d?d:u}function createStringFromObject(e,t,a){var n="";if(Array.isArray(a))for(var s=0;s<a.length;s++)n+=handleInterpolation(e,t,a[s])+";";else for(var i in a){var o=a[i];if("object"!=typeof o){var l=o;null!=t&&void 0!==t[l]?n+=i+"{"+t[l]+"}":ca(l)&&(n+=ua(i)+":"+da(i,l)+";")}else{if("NO_COMPONENT_SELECTOR"===i&&sa)throw new Error(ma);if(!Array.isArray(o)||"string"!=typeof o[0]||null!=t&&void 0!==t[o[0]]){var c=handleInterpolation(e,t,o);switch(i){case"animation":case"animationName":n+=ua(i)+":"+c+";";break;default:n+=i+"{"+c+"}"}}else for(var u=0;u<o.length;u++)ca(o[u])&&(n+=ua(i)+":"+da(i,o[u])+";")}}return n}var pa,ga=/label:\s*([^\s;{]+)\s*(;|$)/g;function serializeStyles(e,t,a){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var n=!0,s="";pa=void 0;var i=e[0];null==i||void 0===i.raw?(n=!1,s+=handleInterpolation(a,t,i)):s+=i[0];for(var o=1;o<e.length;o++)s+=handleInterpolation(a,t,e[o]),n&&(s+=i[o]);ga.lastIndex=0;for(var l,c="";null!==(l=ga.exec(s));)c+="-"+l[1];return{name:murmur2(s)+c,styles:s,next:pa}}var fa=function syncFallback(e){return e()},ha=!!a.useInsertionEffect&&a.useInsertionEffect,ba=ha||fa,ya=(ha||a.useLayoutEffect,a.createContext("undefined"!=typeof HTMLElement?ea({key:"css"}):null)),va=(ya.Provider,function withEmotionCache(e){return(0,a.forwardRef)(function(t,n){return e(t,(0,a.useContext)(ya),n)})}),Sa=a.createContext({}),xa=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Ca=!1,ka=memoize(function(e){return xa.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),Aa=function testOmitPropsOnComponent(e){return"theme"!==e},Ea=function getDefaultShouldForwardProp(e){return"string"==typeof e&&e.charCodeAt(0)>96?ka:Aa},_a=function composeShouldForwardProps(e,t,a){var n;if(t){var s=t.shouldForwardProp;n=e.__emotion_forwardProp&&s?function(t){return e.__emotion_forwardProp(t)&&s(t)}:s}return"function"!=typeof n&&a&&(n=e.__emotion_forwardProp),n},wa=function Insertion(e){var t=e.cache,a=e.serialized,n=e.isStringTag;return ra(t,a,n),ba(function(){return aa(t,a,n)}),null},Ta=function createStyled(e,t){var n,s,i=e.__emotion_real===e,o=i&&e.__emotion_base||e;void 0!==t&&(n=t.label,s=t.target);var l=_a(e,t,i),c=l||Ea(o),u=!c("as");return function(){var d=arguments,m=i&&void 0!==e.__emotion_styles?e.__emotion_styles.slice(0):[];if(void 0!==n&&m.push("label:"+n+";"),null==d[0]||void 0===d[0].raw)m.push.apply(m,d);else{var p=d[0];m.push(p[0]);for(var g=d.length,h=1;h<g;h++)m.push(d[h],p[h])}var b=va(function(e,t,n){var i=u&&e.as||o,d="",p=[],g=e;if(null==e.theme){for(var h in g={},e)g[h]=e[h];g.theme=a.useContext(Sa)}"string"==typeof e.className?d=getRegisteredStyles(t.registered,p,e.className):null!=e.className&&(d=e.className+" ");var b=serializeStyles(m.concat(p),t.registered,g);d+=t.key+"-"+b.name,void 0!==s&&(d+=" "+s);var y=u&&void 0===l?Ea(i):c,v={};for(var S in e)u&&"as"===S||y(S)&&(v[S]=e[S]);return v.className=d,n&&(v.ref=n),a.createElement(a.Fragment,null,a.createElement(wa,{cache:t,serialized:b,isStringTag:"string"==typeof i}),a.createElement(i,v))});return b.displayName=void 0!==n?n:"Styled("+("string"==typeof o?o:o.displayName||o.name||"Component")+")",b.defaultProps=e.defaultProps,b.__emotion_real=b,b.__emotion_base=o,b.__emotion_styles=m,b.__emotion_forwardProp=l,Object.defineProperty(b,"toString",{value:function value(){return void 0===s&&Ca?"NO_COMPONENT_SELECTOR":"."+s}}),b.withComponent=function(e,a){return createStyled(e,_extends({},t,a,{shouldForwardProp:_a(b,a,!0)})).apply(void 0,m)},b}},Pa=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],Ma=Ta.bind(null);function styled$1(e,t){return Ma(e,t)}function internal_mutateStyles(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}Pa.forEach(function(e){Ma[e]=Ma(e)});var Da=[];function internal_serializeStyles(e){return Da[0]=e,serializeStyles(Da)}var Ra={borderRadius:4};function createSpacing(e=8,t=createUnarySpacing({spacing:e})){if(e.mui)return e;const spacing=(...e)=>(0===e.length?[1]:e).map(e=>{const a=t(e);return"number"==typeof a?`${a}px`:a}).join(" ");return spacing.mui=!0,spacing}function applyStyles(e,t){const a=this;if(a.vars){if(!a.colorSchemes?.[e]||"function"!=typeof a.getColorSchemeSelector)return{};let n=a.getColorSchemeSelector(e);return"&"===n?t:((n.includes("data-")||n.includes("."))&&(n=`*:where(${n.replace(/\s*&$/,"")}) &`),{[n]:t})}return a.palette.mode===e?t:{}}function createTheme$1(e={},...t){const{breakpoints:a={},palette:n={},spacing:s,shape:i={},...o}=e;let l=deepmerge({breakpoints:createBreakpoints(a),direction:"ltr",components:{},palette:{mode:"light",...n},spacing:createSpacing(s),shape:{...Ra,...i}},o);return l=cssContainerQueries(l),l.applyStyles=applyStyles,l=t.reduce((e,t)=>deepmerge(e,t),l),l.unstable_sxConfig={...Ar,...o?.unstable_sxConfig},l.unstable_sx=function sx(e){return _r({sx:e,theme:this})},l.internal_cache={},l}var defaultGenerator=e=>e,Oa=(()=>{let e=defaultGenerator;return{configure(t){e=t},generate:t=>e(t),reset(){e=defaultGenerator}}})(),Na={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function generateUtilityClass(e,t,a="Mui"){const n=Na[t];return n?`${a}-${n}`:`${Oa.generate(e)}-${t}`}function generateUtilityClasses(e,t,a="Mui"){const n={};return t.forEach(t=>{n[t]=generateUtilityClass(e,t,a)}),n}function preprocessStyles(e){const{variants:t,...a}=e,n={variants:t,style:internal_serializeStyles(a),isProcessed:!0};return n.style===a||t&&t.forEach(e=>{"function"!=typeof e.style&&(e.style=internal_serializeStyles(e.style))}),n}var Ia=createTheme$1();function shouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function shallowLayer(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function defaultOverridesResolver(e){return e?(t,a)=>a[e]:null}function attachTheme(e,t,a){e.theme=isObjectEmpty(e.theme)?a:e.theme[t]||e.theme}function processStyle(e,t,a){const n="function"==typeof t?t(e):t;if(Array.isArray(n))return n.flatMap(t=>processStyle(e,t,a));if(Array.isArray(n?.variants)){let t;if(n.isProcessed)t=a?shallowLayer(n.style,a):n.style;else{const{variants:e,...s}=n;t=a?shallowLayer(internal_serializeStyles(s),a):s}return processStyleVariants(e,n.variants,[t],a)}return n?.isProcessed?a?shallowLayer(internal_serializeStyles(n.style),a):n.style:a?shallowLayer(internal_serializeStyles(n),a):n}function processStyleVariants(e,t,a=[],n=void 0){let s;e:for(let i=0;i<t.length;i+=1){const o=t[i];if("function"==typeof o.props){if(s??={...e,...e.ownerState,ownerState:e.ownerState},!o.props(s))continue}else for(const t in o.props)if(e[t]!==o.props[t]&&e.ownerState?.[t]!==o.props[t])continue e;"function"==typeof o.style?(s??={...e,...e.ownerState,ownerState:e.ownerState},a.push(n?shallowLayer(internal_serializeStyles(o.style(s)),n):o.style(s))):a.push(n?shallowLayer(internal_serializeStyles(o.style),n):o.style)}return a}function createStyled(e={}){const{themeId:t,defaultTheme:a=Ia,rootShouldForwardProp:n=shouldForwardProp,slotShouldForwardProp:s=shouldForwardProp}=e;function styleAttachTheme(e){attachTheme(e,t,a)}const styled=(e,t={})=>{internal_mutateStyles(e,e=>e.filter(e=>e!==_r));const{name:a,slot:i,skipVariantsResolver:o,skipSx:l,overridesResolver:c=defaultOverridesResolver(lowercaseFirstLetter(i)),...u}=t,d=a&&a.startsWith("Mui")||i?"components":"custom",m=void 0!==o?o:i&&"Root"!==i&&"root"!==i||!1,p=l||!1;let g=shouldForwardProp;"Root"===i||"root"===i?g=n:i?g=s:isStringTag(e)&&(g=void 0);const h=styled$1(e,{shouldForwardProp:g,label:generateStyledLabel(a,i),...u}),transformStyle=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function styleFunctionProcessor(t){return processStyle(t,e,t.theme.modularCssLayers?d:void 0)};if(isPlainObject(e)){const t=preprocessStyles(e);return function styleObjectProcessor(e){return t.variants?processStyle(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?shallowLayer(t.style,d):t.style}}return e},muiStyledResolver=(...t)=>{const n=[],s=t.map(transformStyle),i=[];if(n.push(styleAttachTheme),a&&c&&i.push(function styleThemeOverrides(e){const t=e.theme.components?.[a]?.styleOverrides;if(!t)return null;const n={};for(const a in t)n[a]=processStyle(e,t[a],e.theme.modularCssLayers?"theme":void 0);return c(e,n)}),a&&!m&&i.push(function styleThemeVariants(e){const t=e.theme?.components?.[a]?.variants;return t?processStyleVariants(e,t,[],e.theme.modularCssLayers?"theme":void 0):null}),p||i.push(_r),Array.isArray(s[0])){const e=s.shift(),t=new Array(n.length).fill(""),a=new Array(i.length).fill("");let o;o=[...t,...e,...a],o.raw=[...t,...e.raw,...a],n.unshift(o)}const o=h(...n,...s,...i);return e.muiName&&(o.muiName=e.muiName),o};return h.withConfig&&(muiStyledResolver.withConfig=h.withConfig),muiStyledResolver};return styled}function generateStyledLabel(e,t){let a;return a}function isStringTag(e){return"string"==typeof e&&e.charCodeAt(0)>96}function lowercaseFirstLetter(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function resolveProps(e,t,a=!1){const n={...t};for(const s in e)if(Object.prototype.hasOwnProperty.call(e,s)){const i=s;if("components"===i||"slots"===i)n[i]={...e[i],...n[i]};else if("componentsProps"===i||"slotProps"===i){const s=e[i],o=t[i];if(o)if(s){n[i]={...o};for(const e in s)if(Object.prototype.hasOwnProperty.call(s,e)){const t=e;n[i][t]=resolveProps(s[t],o[t],a)}}else n[i]=o;else n[i]=s||{}}else"className"===i&&a&&void 0!==t.className?n.className=clsx(e?.className,t?.className):"style"===i&&a&&t.style?n.style={...e?.style,...t?.style}:void 0===n[i]&&(n[i]=e[i])}return n}function clamp(e,t=Number.MIN_SAFE_INTEGER,a=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,a))}function clampWrapper(e,t=0,a=1){return clamp(e,t,a)}function hexToRgb(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let a=e.match(t);return a&&1===a[0].length&&(a=a.map(e=>e+e)),a?`rgb${4===a.length?"a":""}(${a.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}function decomposeColor(e){if(e.type)return e;if("#"===e.charAt(0))return decomposeColor(hexToRgb(e));const t=e.indexOf("("),a=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(a))throw new Error(formatMuiErrorMessage(9,e));let n,s=e.substring(t+1,e.length-1);if("color"===a){if(s=s.split(" "),n=s.shift(),4===s.length&&"/"===s[3].charAt(0)&&(s[3]=s[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(n))throw new Error(formatMuiErrorMessage(10,n))}else s=s.split(",");return s=s.map(e=>parseFloat(e)),{type:a,values:s,colorSpace:n}}var colorChannel=e=>{const t=decomposeColor(e);return t.values.slice(0,3).map((e,a)=>t.type.includes("hsl")&&0!==a?`${e}%`:e).join(" ")},private_safeColorChannel=(e,t)=>{try{return colorChannel(e)}catch(a){return e}};function recomposeColor(e){const{type:t,colorSpace:a}=e;let{values:n}=e;return t.includes("rgb")?n=n.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(n[1]=`${n[1]}%`,n[2]=`${n[2]}%`),n=t.includes("color")?`${a} ${n.join(" ")}`:`${n.join(", ")}`,`${t}(${n})`}function hslToRgb(e){e=decomposeColor(e);const{values:t}=e,a=t[0],n=t[1]/100,s=t[2]/100,i=n*Math.min(s,1-s),f=(e,t=(e+a/30)%12)=>s-i*Math.max(Math.min(t-3,9-t,1),-1);let o="rgb";const l=[Math.round(255*f(0)),Math.round(255*f(8)),Math.round(255*f(4))];return"hsla"===e.type&&(o+="a",l.push(t[3])),recomposeColor({type:o,values:l})}function getLuminance(e){let t="hsl"===(e=decomposeColor(e)).type||"hsla"===e.type?decomposeColor(hslToRgb(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function getContrastRatio(e,t){const a=getLuminance(e),n=getLuminance(t);return(Math.max(a,n)+.05)/(Math.min(a,n)+.05)}function alpha(e,t){return e=decomposeColor(e),t=clampWrapper(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,recomposeColor(e)}function private_safeAlpha(e,t,a){try{return alpha(e,t)}catch(n){return e}}function darken(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let a=0;a<3;a+=1)e.values[a]*=1-t;return recomposeColor(e)}function private_safeDarken(e,t,a){try{return darken(e,t)}catch(n){return e}}function lighten(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let a=0;a<3;a+=1)e.values[a]+=(255-e.values[a])*t;else if(e.type.includes("color"))for(let a=0;a<3;a+=1)e.values[a]+=(1-e.values[a])*t;return recomposeColor(e)}function private_safeLighten(e,t,a){try{return lighten(e,t)}catch(n){return e}}function emphasize(e,t=.15){return getLuminance(e)>.5?darken(e,t):lighten(e,t)}function private_safeEmphasize(e,t,a){try{return emphasize(e,t)}catch(n){return e}}var La=b.createContext(void 0);function getThemeProps(e){const{theme:t,name:a,props:n}=e;if(!t||!t.components||!t.components[a])return n;const s=t.components[a];return s.defaultProps?resolveProps(s.defaultProps,n,t.components.mergeClassNameAndStyle):s.styleOverrides||s.variants?n:resolveProps(s,n,t.components.mergeClassNameAndStyle)}function useDefaultProps$1({props:e,name:t}){return getThemeProps({props:e,name:t,theme:{components:b.useContext(La)}})}var ja={theme:void 0};function unstable_memoTheme(e){let t,a;return function styleMemoized(n){let s=t;return void 0!==s&&n.theme===a||(ja.theme=n.theme,s=preprocessStyles(e(ja)),t=s,a=n.theme),s}}function createGetCssVar$1(e=""){function appendVar(...t){if(!t.length)return"";const a=t[0];return"string"!=typeof a||a.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${a}`:`, var(--${e?`${e}-`:""}${a}${appendVar(...t.slice(1))})`}return(t,...a)=>`var(--${e?`${e}-`:""}${t}${appendVar(...a)})`}var assignNestedKeys=(e,t,a,n=[])=>{let s=e;t.forEach((e,i)=>{i===t.length-1?Array.isArray(s)?s[Number(e)]=a:s&&"object"==typeof s&&(s[e]=a):s&&"object"==typeof s&&(s[e]||(s[e]=n.includes(e)?[]:{}),s=s[e])})},walkObjectDeep=(e,t,a)=>{function recurse(e,n=[],s=[]){Object.entries(e).forEach(([e,i])=>{(!a||a&&!a([...n,e]))&&null!=i&&("object"==typeof i&&Object.keys(i).length>0?recurse(i,[...n,e],Array.isArray(i)?[...s,e]:s):t([...n,e],i,s))})}recurse(e)},getCssValue=(e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t;function cssVarsParser(e,t){const{prefix:a,shouldSkipGeneratingVar:n}=t||{},s={},i={},o={};return walkObjectDeep(e,(e,t,l)=>{if(!("string"!=typeof t&&"number"!=typeof t||n&&n(e,t))){const n=`--${a?`${a}-`:""}${e.join("-")}`,c=getCssValue(e,t);Object.assign(s,{[n]:c}),assignNestedKeys(i,e,`var(${n})`,l),assignNestedKeys(o,e,`var(${n}, ${c})`,l)}},e=>"vars"===e[0]),{css:s,vars:i,varsWithDefaults:o}}function prepareCssVars(e,t={}){const{getSelector:a=defaultGetSelector,disableCssColorScheme:n,colorSchemeSelector:s,enableContrastVars:i}=t,{colorSchemes:o={},components:l,defaultColorScheme:c="light",...u}=e,{vars:d,css:m,varsWithDefaults:p}=cssVarsParser(u,t);let g=p;const h={},{[c]:b,...y}=o;if(Object.entries(y||{}).forEach(([e,a])=>{const{vars:n,css:s,varsWithDefaults:i}=cssVarsParser(a,t);g=deepmerge(g,i),h[e]={css:s,vars:n}}),b){const{css:e,vars:a,varsWithDefaults:n}=cssVarsParser(b,t);g=deepmerge(g,n),h[c]={css:e,vars:a}}function defaultGetSelector(t,a){let n=s;if("class"===s&&(n=".%s"),"data"===s&&(n="[data-%s]"),s?.startsWith("data-")&&!s.includes("%s")&&(n=`[${s}="%s"]`),t){if("media"===n)return e.defaultColorScheme===t?":root":{[`@media (prefers-color-scheme: ${o[t]?.palette?.mode||t})`]:{":root":a}};if(n)return e.defaultColorScheme===t?`:root, ${n.replace("%s",String(t))}`:n.replace("%s",String(t))}return":root"}return{vars:g,generateThemeVars:()=>{let e={...d};return Object.entries(h).forEach(([,{vars:t}])=>{e=deepmerge(e,t)}),e},generateStyleSheets:()=>{const t=[],s=e.defaultColorScheme||"light";function insertStyleSheet(e,a){Object.keys(a).length&&t.push("string"==typeof e?{[e]:{...a}}:e)}insertStyleSheet(a(void 0,{...m}),m);const{[s]:l,...c}=h;if(l){const{css:e}=l,t=o[s]?.palette?.mode,i=!n&&t?{colorScheme:t,...e}:{...e};insertStyleSheet(a(s,{...i}),i)}return Object.entries(c).forEach(([e,{css:t}])=>{const s=o[e]?.palette?.mode,i=!n&&s?{colorScheme:s,...t}:{...t};insertStyleSheet(a(e,{...i}),i)}),i&&t.push({":root":{"--__l-threshold":"0.7","--__l":"clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)","--__a":"clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)"}}),t}}}function createGetColorSchemeSelector(e){return function getColorSchemeSelector(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}var qa={black:"#000",white:"#fff"},$a={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},Ba={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},Fa={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},za={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},Ga={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Ha={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},Ua={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};function getLight(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:qa.white,default:qa.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}var Va=getLight();function getDark(){return{text:{primary:qa.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:qa.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}var Ya=getDark();function addLightOrDark(e,t,a,n){const s=n.light||n,i=n.dark||1.5*n;e[t]||(e.hasOwnProperty(a)?e[t]=e[a]:"light"===t?e.light=lighten(e.main,s):"dark"===t&&(e.dark=darken(e.main,i)))}function mixLightOrDark(e,t,a,n,s){const i=s.light||s,o=s.dark||1.5*s;t[a]||(t.hasOwnProperty(n)?t[a]=t[n]:"light"===a?t.light=`color-mix(in ${e}, ${t.main}, #fff ${(100*i).toFixed(0)}%)`:"dark"===a&&(t.dark=`color-mix(in ${e}, ${t.main}, #000 ${(100*o).toFixed(0)}%)`))}function getDefaultPrimary(e="light"){return"dark"===e?{main:Ga[200],light:Ga[50],dark:Ga[400]}:{main:Ga[700],light:Ga[400],dark:Ga[800]}}function getDefaultSecondary(e="light"){return"dark"===e?{main:Ba[200],light:Ba[50],dark:Ba[400]}:{main:Ba[500],light:Ba[300],dark:Ba[700]}}function getDefaultError(e="light"){return"dark"===e?{main:Fa[500],light:Fa[300],dark:Fa[700]}:{main:Fa[700],light:Fa[400],dark:Fa[800]}}function getDefaultInfo(e="light"){return"dark"===e?{main:Ha[400],light:Ha[300],dark:Ha[700]}:{main:Ha[700],light:Ha[500],dark:Ha[900]}}function getDefaultSuccess(e="light"){return"dark"===e?{main:Ua[400],light:Ua[300],dark:Ua[700]}:{main:Ua[800],light:Ua[500],dark:Ua[900]}}function getDefaultWarning(e="light"){return"dark"===e?{main:za[400],light:za[300],dark:za[700]}:{main:"#ed6c02",light:za[500],dark:za[900]}}function contrastColor(e){return`oklch(from ${e} var(--__l) 0 h / var(--__a))`}function createPalette(e){const{mode:t="light",contrastThreshold:a=3,tonalOffset:n=.2,colorSpace:s,...i}=e,o=e.primary||getDefaultPrimary(t),l=e.secondary||getDefaultSecondary(t),c=e.error||getDefaultError(t),u=e.info||getDefaultInfo(t),d=e.success||getDefaultSuccess(t),m=e.warning||getDefaultWarning(t);function getContrastText(e){return s?contrastColor(e):getContrastRatio(e,Ya.text.primary)>=a?Ya.text.primary:Va.text.primary}const augmentColor=({color:e,name:t,mainShade:a=500,lightShade:i=300,darkShade:o=700})=>{if(!(e={...e}).main&&e[a]&&(e.main=e[a]),!e.hasOwnProperty("main"))throw new Error(formatMuiErrorMessage(11,t?` (${t})`:"",a));if("string"!=typeof e.main)throw new Error(formatMuiErrorMessage(12,t?` (${t})`:"",JSON.stringify(e.main)));return s?(mixLightOrDark(s,e,"light",i,n),mixLightOrDark(s,e,"dark",o,n)):(addLightOrDark(e,"light",i,n),addLightOrDark(e,"dark",o,n)),e.contrastText||(e.contrastText=getContrastText(e.main)),e};let p;return"light"===t?p=getLight():"dark"===t&&(p=getDark()),deepmerge({common:{...qa},mode:t,primary:augmentColor({color:o,name:"primary"}),secondary:augmentColor({color:l,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:augmentColor({color:c,name:"error"}),warning:augmentColor({color:m,name:"warning"}),info:augmentColor({color:u,name:"info"}),success:augmentColor({color:d,name:"success"}),grey:$a,contrastThreshold:a,getContrastText,augmentColor,tonalOffset:n,...p},i)}function prepareTypographyVars(e){const t={};return Object.entries(e).forEach(e=>{const[a,n]=e;"object"==typeof n&&(t[a]=`${n.fontStyle?`${n.fontStyle} `:""}${n.fontVariant?`${n.fontVariant} `:""}${n.fontWeight?`${n.fontWeight} `:""}${n.fontStretch?`${n.fontStretch} `:""}${n.fontSize||""}${n.lineHeight?`/${n.lineHeight} `:""}${n.fontFamily||""}`)}),t}function createMixins(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}function round(e){return Math.round(1e5*e)/1e5}var Qa={textTransform:"uppercase"},Wa='"Roboto", "Helvetica", "Arial", sans-serif';function createTypography(e,t){const{fontFamily:a=Wa,fontSize:n=14,fontWeightLight:s=300,fontWeightRegular:i=400,fontWeightMedium:o=500,fontWeightBold:l=700,htmlFontSize:c=16,allVariants:u,pxToRem:d,...m}="function"==typeof t?t(e):t,p=n/14,g=d||(e=>e/c*p+"rem"),buildVariant=(e,t,n,s,i)=>({fontFamily:a,fontWeight:e,fontSize:g(t),lineHeight:n,...a===Wa?{letterSpacing:`${round(s/t)}em`}:{},...i,...u});return deepmerge({htmlFontSize:c,pxToRem:g,fontFamily:a,fontSize:n,fontWeightLight:s,fontWeightRegular:i,fontWeightMedium:o,fontWeightBold:l,h1:buildVariant(s,96,1.167,-1.5),h2:buildVariant(s,60,1.2,-.5),h3:buildVariant(i,48,1.167,0),h4:buildVariant(i,34,1.235,.25),h5:buildVariant(i,24,1.334,0),h6:buildVariant(o,20,1.6,.15),subtitle1:buildVariant(i,16,1.75,.15),subtitle2:buildVariant(o,14,1.57,.1),body1:buildVariant(i,16,1.5,.15),body2:buildVariant(i,14,1.43,.15),button:buildVariant(o,14,1.75,.4,Qa),caption:buildVariant(i,12,1.66,.4),overline:buildVariant(i,12,2.66,1,Qa),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},m,{clone:!1})}var Ka=.2,Xa=.14,Ja=.12;function createShadow(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${Ka})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${Xa})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${Ja})`].join(",")}var Za=["none",createShadow(0,2,1,-1,0,1,1,0,0,1,3,0),createShadow(0,3,1,-2,0,2,2,0,0,1,5,0),createShadow(0,3,3,-2,0,3,4,0,0,1,8,0),createShadow(0,2,4,-1,0,4,5,0,0,1,10,0),createShadow(0,3,5,-1,0,5,8,0,0,1,14,0),createShadow(0,3,5,-1,0,6,10,0,0,1,18,0),createShadow(0,4,5,-2,0,7,10,1,0,2,16,1),createShadow(0,5,5,-3,0,8,10,1,0,3,14,2),createShadow(0,5,6,-3,0,9,12,1,0,3,16,2),createShadow(0,6,6,-3,0,10,14,1,0,4,18,3),createShadow(0,6,7,-4,0,11,15,1,0,4,20,3),createShadow(0,7,8,-4,0,12,17,2,0,5,22,4),createShadow(0,7,8,-4,0,13,19,2,0,5,24,4),createShadow(0,7,9,-4,0,14,21,2,0,5,26,4),createShadow(0,8,9,-5,0,15,22,2,0,6,28,5),createShadow(0,8,10,-5,0,16,24,2,0,6,30,5),createShadow(0,8,11,-5,0,17,26,2,0,6,32,5),createShadow(0,9,11,-5,0,18,28,2,0,7,34,6),createShadow(0,9,12,-6,0,19,29,2,0,7,36,6),createShadow(0,10,13,-6,0,20,31,3,0,8,38,7),createShadow(0,10,13,-6,0,21,33,3,0,8,40,7),createShadow(0,10,14,-6,0,22,35,3,0,8,42,7),createShadow(0,11,14,-7,0,23,36,3,0,9,44,8),createShadow(0,11,15,-7,0,24,38,3,0,9,46,8)],en={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},tn={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function formatMs(e){return`${Math.round(e)}ms`}function getAutoHeightDuration(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function createTransitions(e){const t={...en,...e.easing},a={...tn,...e.duration};return{getAutoHeightDuration,create:(e=["all"],n={})=>{const{duration:s=a.standard,easing:i=t.easeInOut,delay:o=0,...l}=n;return(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof s?s:formatMs(s)} ${i} ${"string"==typeof o?o:formatMs(o)}`).join(",")},...e,easing:t,duration:a}}var rn={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function isSerializable(e){return isPlainObject(e)||void 0===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||Array.isArray(e)}function stringifyTheme(e={}){const t={...e};function serializeTheme(e){const t=Object.entries(e);for(let a=0;a<t.length;a++){const[n,s]=t[a];!isSerializable(s)||n.startsWith("unstable_")||n.startsWith("internal_")?delete e[n]:isPlainObject(s)&&(e[n]={...s},serializeTheme(e[n]))}}return serializeTheme(t),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(t,null,2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`}function coefficientToPercentage(e){return"number"==typeof e?`${(100*e).toFixed(0)}%`:`calc((${e}) * 100%)`}var parseAddition=e=>{if(!Number.isNaN(+e))return+e;const t=e.match(/\d*\.?\d+/g);if(!t)return 0;let a=0;for(let n=0;n<t.length;n+=1)a+=+t[n];return a};function attachColorManipulators(e){Object.assign(e,{alpha(t,a){const n=this||e;return n.colorSpace?`oklch(from ${t} l c h / ${"string"==typeof a?`calc(${a})`:a})`:n.vars?`rgba(${t.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,"var(--$1Channel)")} / ${"string"==typeof a?`calc(${a})`:a})`:alpha(t,parseAddition(a))},lighten(t,a){const n=this||e;return n.colorSpace?`color-mix(in ${n.colorSpace}, ${t}, #fff ${coefficientToPercentage(a)})`:lighten(t,a)},darken(t,a){const n=this||e;return n.colorSpace?`color-mix(in ${n.colorSpace}, ${t}, #000 ${coefficientToPercentage(a)})`:darken(t,a)}})}function createThemeNoVars(e={},...t){const{breakpoints:a,mixins:n={},spacing:s,palette:i={},transitions:o={},typography:l={},shape:c,colorSpace:u,...d}=e;if(e.vars&&void 0===e.generateThemeVars)throw new Error(formatMuiErrorMessage(22));const m=createPalette({...i,colorSpace:u}),p=createTheme$1(e);let g=deepmerge(p,{mixins:createMixins(p.breakpoints,n),palette:m,shadows:Za.slice(),typography:createTypography(m,l),transitions:createTransitions(o),zIndex:{...rn}});return g=deepmerge(g,d),g=t.reduce((e,t)=>deepmerge(e,t),g),g.unstable_sxConfig={...Ar,...d?.unstable_sxConfig},g.unstable_sx=function sx(e){return _r({sx:e,theme:this})},g.toRuntimeSource=stringifyTheme,attachColorManipulators(g),g}function getOverlayAlpha(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}var an=[...Array(25)].map((e,t)=>{if(0===t)return"none";const a=getOverlayAlpha(t);return`linear-gradient(rgba(255 255 255 / ${a}), rgba(255 255 255 / ${a}))`});function getOpacity(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function getOverlays(e){return"dark"===e?an:[]}function createColorScheme(e){const{palette:t={mode:"light"},opacity:a,overlays:n,colorSpace:s,...i}=e,o=createPalette({...t,colorSpace:s});return{palette:o,opacity:{...getOpacity(o.mode),...a},overlays:n||getOverlays(o.mode),...i}}function shouldSkipGeneratingVar(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}var excludeVariablesFromRoot=e=>[...[...Array(25)].map((t,a)=>`--${e?`${e}-`:""}overlays-${a}`),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`],createGetSelector_default=e=>(t,a)=>{const n=e.rootSelector||":root",s=e.colorSchemeSelector;let i=s;if("class"===s&&(i=".%s"),"data"===s&&(i="[data-%s]"),s?.startsWith("data-")&&!s.includes("%s")&&(i=`[${s}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const s={};return excludeVariablesFromRoot(e.cssVarPrefix).forEach(e=>{s[e]=a[e],delete a[e]}),"media"===i?{[n]:a,"@media (prefers-color-scheme: dark)":{[n]:s}}:i?{[i.replace("%s",t)]:s,[`${n}, ${i.replace("%s",t)}`]:a}:{[n]:{...a,...s}}}if(i&&"media"!==i)return`${n}, ${i.replace("%s",String(t))}`}else if(t){if("media"===i)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[n]:a}};if(i)return i.replace("%s",String(t))}return n};function assignNode(e,t){t.forEach(t=>{e[t]||(e[t]={})})}function setColor(e,t,a){!e[t]&&a&&(e[t]=a)}function toRgb(e){return"string"==typeof e&&e.startsWith("hsl")?hslToRgb(e):e}function setColorChannel(e,t){`${t}Channel`in e||(e[`${t}Channel`]=private_safeColorChannel(toRgb(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().\nTo suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function getSpacingVal(e){return"number"==typeof e?`${e}px`:"string"==typeof e||"function"==typeof e||Array.isArray(e)?e:"8px"}var silent=e=>{try{return e()}catch(t){}},createGetCssVar=(e="mui")=>createGetCssVar$1(e);function attachColorScheme$1(e,t,a,n,s){if(!a)return;a=!0===a?{}:a;const i="dark"===s?"dark":"light";if(!n)return void(t[s]=createColorScheme({...a,palette:{mode:i,...a?.palette},colorSpace:e}));const{palette:o,...l}=createThemeNoVars({...n,palette:{mode:i,...a?.palette},colorSpace:e});return t[s]={...a,palette:o,opacity:{...getOpacity(i),...a?.opacity},overlays:a?.overlays||getOverlays(i)},l}function createThemeWithVars(e={},...t){const{colorSchemes:a={light:!0},defaultColorScheme:n,disableCssColorScheme:s=!1,cssVarPrefix:i="mui",nativeColor:o=!1,shouldSkipGeneratingVar:l=shouldSkipGeneratingVar,colorSchemeSelector:c=(a.light&&a.dark?"media":void 0),rootSelector:u=":root",...d}=e,m=Object.keys(a)[0],p=n||(a.light&&"light"!==m?"light":m),g=createGetCssVar(i),{[p]:h,light:b,dark:y,...v}=a,S={...v};let x,C=h;if(("dark"===p&&!("dark"in a)||"light"===p&&!("light"in a))&&(C=!0),!C)throw new Error(formatMuiErrorMessage(21,p));o&&(x="oklch");const k=attachColorScheme$1(x,S,C,d,p);b&&!S.light&&attachColorScheme$1(x,S,b,void 0,"light"),y&&!S.dark&&attachColorScheme$1(x,S,y,void 0,"dark");let A={defaultColorScheme:p,...k,cssVarPrefix:i,colorSchemeSelector:c,rootSelector:u,getCssVar:g,colorSchemes:S,font:{...prepareTypographyVars(k.typography),...k.font},spacing:getSpacingVal(d.spacing)};Object.keys(A.colorSchemes).forEach(e=>{const t=A.colorSchemes[e].palette,setCssVarColor=e=>{const a=e.split("-"),n=a[1],s=a[2];return g(e,t[n][s])};function colorMix(e,t,a){if(x){let n;return e===private_safeAlpha&&(n=`transparent ${(100*(1-a)).toFixed(0)}%`),e===private_safeDarken&&(n=`#000 ${(100*a).toFixed(0)}%`),e===private_safeLighten&&(n=`#fff ${(100*a).toFixed(0)}%`),`color-mix(in ${x}, ${t}, ${n})`}return e(t,a)}if("light"===t.mode&&(setColor(t.common,"background","#fff"),setColor(t.common,"onBackground","#000")),"dark"===t.mode&&(setColor(t.common,"background","#000"),setColor(t.common,"onBackground","#fff")),assignNode(t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),"light"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeDarken,o?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeDarken,o?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeDarken,o?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeDarken,o?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-main")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-main")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.main))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.main))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.main))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.main))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeLighten,o?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeLighten,o?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeLighten,o?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeLighten,o?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-100")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-400")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-300")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-A100")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-400")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-700")),setColor(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),setColor(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),setColor(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeLighten,o?g("palette-primary-main"):t.primary.main,.62)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeLighten,o?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeLighten,o?g("palette-error-main"):t.error.main,.62)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeLighten,o?g("palette-info-main"):t.info.main,.62)),setColor(t.LinearProgress,"successBg",colorMix(private_safeLighten,o?g("palette-success-main"):t.success.main,.62)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeLighten,o?g("palette-warning-light"):t.warning.main,.62)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,o?g("palette-text-primary"):t.text.primary,.11):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.11)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeLighten,o?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeLighten,o?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Slider,"errorTrack",colorMix(private_safeLighten,o?g("palette-error-main"):t.error.main,.62)),setColor(t.Slider,"infoTrack",colorMix(private_safeLighten,o?g("palette-info-main"):t.info.main,.62)),setColor(t.Slider,"successTrack",colorMix(private_safeLighten,o?g("palette-success-main"):t.success.main,.62)),setColor(t.Slider,"warningTrack",colorMix(private_safeLighten,o?g("palette-warning-main"):t.warning.main,.62));const e=x?colorMix(private_safeDarken,o?g("palette-background-default"):t.background.default,.6825):private_safeEmphasize(t.background.default,.8);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?Ya.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-400")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-400")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-common-white")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-100")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeLighten,o?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeLighten,o?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeLighten,o?g("palette-error-main"):t.error.main,.62)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeLighten,o?g("palette-info-main"):t.info.main,.62)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeLighten,o?g("palette-success-main"):t.success.main,.62)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeLighten,o?g("palette-warning-main"):t.warning.main,.62)),setColor(t.TableCell,"border",colorMix(private_safeLighten,private_safeAlpha(o?g("palette-divider"):t.divider,1),.88)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,o?g("palette-grey-700"):t.grey[700],.92))}if("dark"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeLighten,o?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeLighten,o?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeLighten,o?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeLighten,o?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-dark")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-dark")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-dark")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-dark")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.dark))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.dark))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.dark))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.dark))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeDarken,o?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeDarken,o?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeDarken,o?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeDarken,o?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-900")),setColor(t.AppBar,"darkBg",setCssVarColor("palette-background-paper")),setColor(t.AppBar,"darkColor",setCssVarColor("palette-text-primary")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-600")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-800")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-300")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-300")),setColor(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),setColor(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),setColor(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeDarken,o?g("palette-primary-main"):t.primary.main,.5)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeDarken,o?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeDarken,o?g("palette-error-main"):t.error.main,.5)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeDarken,o?g("palette-info-main"):t.info.main,.5)),setColor(t.LinearProgress,"successBg",colorMix(private_safeDarken,o?g("palette-success-main"):t.success.main,.5)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeDarken,o?g("palette-warning-main"):t.warning.main,.5)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,o?g("palette-text-primary"):t.text.primary,.13):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.13)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeDarken,o?g("palette-primary-main"):t.primary.main,.5)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeDarken,o?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.Slider,"errorTrack",colorMix(private_safeDarken,o?g("palette-error-main"):t.error.main,.5)),setColor(t.Slider,"infoTrack",colorMix(private_safeDarken,o?g("palette-info-main"):t.info.main,.5)),setColor(t.Slider,"successTrack",colorMix(private_safeDarken,o?g("palette-success-main"):t.success.main,.5)),setColor(t.Slider,"warningTrack",colorMix(private_safeDarken,o?g("palette-warning-light"):t.warning.main,.5));const e=x?colorMix(private_safeLighten,o?g("palette-background-default"):t.background.default,.985):private_safeEmphasize(t.background.default,.98);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?Va.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-600")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-600")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-grey-300")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-600")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeDarken,o?g("palette-primary-main"):t.primary.main,.55)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeDarken,o?g("palette-secondary-main"):t.secondary.main,.55)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeDarken,o?g("palette-error-main"):t.error.main,.55)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeDarken,o?g("palette-info-main"):t.info.main,.55)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeDarken,o?g("palette-success-main"):t.success.main,.55)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeDarken,o?g("palette-warning-light"):t.warning.main,.55)),setColor(t.TableCell,"border",colorMix(private_safeDarken,private_safeAlpha(o?g("palette-divider"):t.divider,1),.68)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,o?g("palette-grey-700"):t.grey[700],.92))}o||(setColorChannel(t.background,"default"),setColorChannel(t.background,"paper"),setColorChannel(t.common,"background"),setColorChannel(t.common,"onBackground"),setColorChannel(t,"divider")),Object.keys(t).forEach(e=>{const a=t[e];"tonalOffset"!==e&&!o&&a&&"object"==typeof a&&(a.main&&setColor(t[e],"mainChannel",private_safeColorChannel(toRgb(a.main))),a.light&&setColor(t[e],"lightChannel",private_safeColorChannel(toRgb(a.light))),a.dark&&setColor(t[e],"darkChannel",private_safeColorChannel(toRgb(a.dark))),a.contrastText&&setColor(t[e],"contrastTextChannel",private_safeColorChannel(toRgb(a.contrastText))),"text"===e&&(setColorChannel(t[e],"primary"),setColorChannel(t[e],"secondary")),"action"===e&&(a.active&&setColorChannel(t[e],"active"),a.selected&&setColorChannel(t[e],"selected")))})}),A=t.reduce((e,t)=>deepmerge(e,t),A);const E={prefix:i,disableCssColorScheme:s,shouldSkipGeneratingVar:l,getSelector:createGetSelector_default(A),enableContrastVars:o},{vars:_,generateThemeVars:w,generateStyleSheets:T}=prepareCssVars(A,E);return A.vars=_,Object.entries(A.colorSchemes[A.defaultColorScheme]).forEach(([e,t])=>{A[e]=t}),A.generateThemeVars=w,A.generateStyleSheets=T,A.generateSpacing=function generateSpacing(){return createSpacing(d.spacing,createUnarySpacing(this))},A.getColorSchemeSelector=createGetColorSchemeSelector(c),A.spacing=A.generateSpacing(),A.shouldSkipGeneratingVar=l,A.unstable_sxConfig={...Ar,...d?.unstable_sxConfig},A.unstable_sx=function sx(e){return _r({sx:e,theme:this})},A.internal_cache={},A.toRuntimeSource=stringifyTheme,A}function attachColorScheme(e,t,a){e.colorSchemes&&a&&(e.colorSchemes[t]={...!0!==a&&a,palette:createPalette({...!0===a?{}:a.palette,mode:t})})}function createTheme(e={},...t){const{palette:a,cssVariables:n=!1,colorSchemes:s=(a?void 0:{light:!0}),defaultColorScheme:i=a?.mode,...o}=e,l=i||"light",c=s?.[l],u={...s,...a?{[l]:{..."boolean"!=typeof c&&c,palette:a}}:void 0};if(!1===n){if(!("colorSchemes"in e))return createThemeNoVars(e,...t);let n=a;"palette"in e||u[l]&&(!0!==u[l]?n=u[l].palette:"dark"===l&&(n={mode:"dark"}));const s=createThemeNoVars({...e,palette:n},...t);return s.defaultColorScheme=l,s.colorSchemes=u,"light"===s.palette.mode&&(s.colorSchemes.light={...!0!==u.light&&u.light,palette:s.palette},attachColorScheme(s,"dark",u.dark)),"dark"===s.palette.mode&&(s.colorSchemes.dark={...!0!==u.dark&&u.dark,palette:s.palette},attachColorScheme(s,"light",u.light)),s}return a||"light"in u||"light"!==l||(u.light=!0),createThemeWithVars({...o,colorSchemes:u,defaultColorScheme:l,..."boolean"!=typeof n&&n},...t)}function slotShouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}var nn=createStyled({themeId:"$$material",defaultTheme:createTheme(),rootShouldForwardProp:e=>slotShouldForwardProp(e)&&"classes"!==e}),sn=unstable_memoTheme;function useDefaultProps(e){return useDefaultProps$1(e)}function getSvgIconUtilityClass(e){return generateUtilityClass("MuiSvgIcon",e)}generateUtilityClasses("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var useUtilityClasses=e=>{const{color:t,fontSize:a,classes:n}=e;return composeClasses({root:["root","inherit"!==t&&`color${Ht(t)}`,`fontSize${Ht(a)}`]},getSvgIconUtilityClass,n)},ln=nn("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,"inherit"!==a.color&&t[`color${Ht(a.color)}`],t[`fontSize${Ht(a.fontSize)}`]]}})(sn(({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}))),cn=b.forwardRef(function SvgIcon(e,t){const a=useDefaultProps({props:e,name:"MuiSvgIcon"}),{children:n,className:s,color:i="inherit",component:o="svg",fontSize:l="medium",htmlColor:c,inheritViewBox:u=!1,titleAccess:d,viewBox:m="0 0 24 24",...p}=a,g=b.isValidElement(n)&&"svg"===n.type,h={...a,color:i,component:o,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:u,viewBox:m,hasSvgAsChild:g},y={};return u||(y.viewBox=m),(0,Ot.jsxs)(ln,{as:o,className:clsx(useUtilityClasses(h).root,s),focusable:"false",color:c,"aria-hidden":!d||void 0,role:d?"img":void 0,ref:t,...y,...p,...g&&n.props,ownerState:h,children:[g?n.props.children:n,d?(0,Ot.jsx)("title",{children:d}):null]})});function createSvgIcon(e,t){function Component(t,a){return(0,Ot.jsx)(cn,{"data-testid":void 0,ref:a,...t,children:e})}return Component.muiName=cn.muiName,b.memo(b.forwardRef(Component))}cn.muiName="SvgIcon";var un=createSvgIcon((0,Ot.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25"}),"HelpOutlined"),dn=Object.freeze({}),mn=Object.freeze({}),getDefaultClassFilter=(e="")=>{const t=normalizeClassName(e);return we.includes(t)?t:"all"};function useDefPriorities(e,t={}){const a=useNexSysSnapshot(e)??dn,n=a.defs??mn,s=a.system?.char?.class??"",{defPriorities:i=mn,defStatics:o=mn,setDefPriority:l,setDefStatic:c}=t,u=(0,b.useMemo)(()=>getDefaultClassFilter(s),[s]),[d,m]=(0,b.useState)(null),p=d??u,g=(0,b.useMemo)(()=>["all",...we],[]),h=(0,b.useMemo)(()=>Object.entries(n).reduce((e,[t,a])=>(e[t]={...a,defaultPriority:i[t]??a.defaultPriority,static:o[t]??a.static},e),{}),[n,i,o]),y=(0,b.useMemo)(()=>Object.entries(h).filter(([,e])=>!0===e.serverside),[h]),v=(0,b.useMemo)(()=>"all"===p?y.map(([e])=>e):y.filter(([,e])=>classListIncludes(e.skills,p)).map(([e])=>e),[y,p]),S=(0,b.useCallback)((e,t)=>{c?.(e,t)},[c]),x=(0,b.useCallback)((e,t)=>{l?.(e,t)},[l]);return{defList:v,defsState:h,classFilter:p,setClassFilter:(0,b.useCallback)(e=>{m(e)},[]),classOptions:g,updateStatic:S,updatePriority:x}}function defNameColor(e){const t=e?.bals_used??[],a=e?.bals_req??[],n=["balance","equilibrium"];return t.some(e=>n.includes(e))?"tomato":a.some(e=>n.includes(e))?"yellow":"dodgerblue"}var pn=(0,Ot.jsxs)(n.Box,{sx:{fontSize:13,lineHeight:1.6},children:[(0,Ot.jsxs)(n.Box,{children:[(0,Ot.jsx)(n.Box,{component:"span",sx:{color:"tomato",fontWeight:700},children:"Red"}),": These skills will USE eq or bal to activate and should have the lowest priority."]}),(0,Ot.jsxs)(n.Box,{children:[(0,Ot.jsx)(n.Box,{component:"span",sx:{color:"yellow",fontWeight:700},children:"Yellow"}),": These skills are free to use but REQUIRE eq or bal to activate and should have the middle priority."]}),(0,Ot.jsxs)(n.Box,{children:[(0,Ot.jsx)(n.Box,{component:"span",sx:{color:"dodgerblue",fontWeight:700},children:"Blue"}),": Skills that are free to use and should likely have the highest priority."]})]}),gn=(0,Ot.jsx)(n.Box,{sx:{fontSize:13,lineHeight:1.6},children:"Checked defences are player-controlled and only raised by the manual defence-up action. Unchecked defences are kept up by server-side curing."}),hn={py:.25,px:.75,border:"none"},bn={py:.5,px:.75,border:"none",borderBottom:"1px solid rgba(255,255,255,0.1)",fontWeight:700,fontSize:13,whiteSpace:"nowrap"};function HelpIcon(){return(0,Ot.jsx)(un,{sx:{fontSize:14,verticalAlign:"middle",ml:.25,opacity:.7}})}function DefRow({name:e,def:t,updateStatic:a,updatePriority:s}){const i=defNameColor(t);return(0,Ot.jsxs)(n.TableRow,{sx:{"& td":hn},children:[(0,Ot.jsx)(n.TableCell,{padding:"checkbox",sx:{...hn,width:36},children:(0,Ot.jsx)(n.Checkbox,{size:"small",checked:Boolean(t?.static),onChange:t=>a(e,t.target.checked),sx:{p:.25}})}),(0,Ot.jsx)(n.TableCell,{sx:{width:100},children:(0,Ot.jsx)(n.Typography,{variant:"body2",sx:{color:i,fontSize:13},children:e})}),(0,Ot.jsx)(n.TableCell,{sx:{width:50},children:(0,Ot.jsx)(n.TextField,{value:t?.defaultPriority??0,onChange:t=>s(e,t.target.value),type:"number",size:"small",sx:{width:56},slotProps:{htmlInput:{min:0,max:26,style:{padding:"2px 6px",fontSize:13}}}})})]})}function DefHalfTable({defNames:e,defsState:t,updateStatic:a,updatePriority:s}){return(0,Ot.jsx)(n.TableContainer,{sx:{flex:1},children:(0,Ot.jsxs)(n.Table,{size:"small",stickyHeader:!0,sx:{tableLayout:"fixed"},children:[(0,Ot.jsx)(n.TableHead,{children:(0,Ot.jsxs)(n.TableRow,{children:[(0,Ot.jsx)(n.TableCell,{padding:"checkbox",sx:{...bn,width:36},children:(0,Ot.jsx)(n.Tooltip,{arrow:!0,placement:"bottom-start",title:gn,children:(0,Ot.jsxs)("span",{children:["Defup",(0,Ot.jsx)(HelpIcon,{})]})})}),(0,Ot.jsx)(n.TableCell,{sx:{...bn,width:100},children:(0,Ot.jsx)(n.Tooltip,{arrow:!0,placement:"bottom-start",title:pn,children:(0,Ot.jsxs)("span",{children:["Name ",(0,Ot.jsx)(HelpIcon,{})]})})}),(0,Ot.jsx)(n.TableCell,{sx:{...bn,width:70},children:"Priority"})]})}),(0,Ot.jsx)(n.TableBody,{children:e.map(e=>(0,Ot.jsx)(DefRow,{name:e,def:t[e],updateStatic:a,updatePriority:s},e))})]})})}function DefPrioritiesTab({settingsForm:e}){const{defList:t,defsState:a,classFilter:s,setClassFilter:i,classOptions:o,updateStatic:l,updatePriority:c}=useDefPriorities(useNexSys(),e),[u,d]=(0,b.useMemo)(()=>{const e=Math.ceil(t.length/2);return[t.slice(0,e),t.slice(e)]},[t]);return(0,Ot.jsxs)(n.Box,{sx:{pt:1},children:[(0,Ot.jsxs)(n.FormControl,{size:"small",sx:{mb:1.5,minWidth:180},children:[(0,Ot.jsx)(n.InputLabel,{children:"Class"}),(0,Ot.jsx)(n.Select,{value:s,label:"Class",onChange:e=>i(e.target.value),children:o.map(e=>(0,Ot.jsx)(n.MenuItem,{value:e,children:"all"===e?"All Classes":e},e))})]}),(0,Ot.jsxs)(n.Box,{sx:{display:"flex",gap:1,alignItems:"flex-start"},children:[(0,Ot.jsx)(DefHalfTable,{defNames:u,defsState:a,updateStatic:l,updatePriority:c}),d.length>0&&(0,Ot.jsx)(DefHalfTable,{defNames:d,defsState:a,updateStatic:l,updatePriority:c})]})]})}var yn=Object.freeze({}),vn=_.map(e=>T[e]).filter(Boolean).map(e=>({herb:e,mineral:M[e]??null}));function capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}function usePrecache(e,t={}){const a=useNexSysSnapshot(e),{desiredPrecache:n,setPrecache:s}=t,i=n??a?.cache?.desiredPrecache??yn;return{pairs:(0,b.useMemo)(()=>vn.map(({herb:e,mineral:t})=>({herb:e,herbLabel:capitalize(e),herbQty:i[e]??0,mineral:t,mineralLabel:t?capitalize(t):null,mineralQty:t?i[t]??0:0})),[i]),update:(0,b.useCallback)((e,t)=>{s?.(e,Math.max(0,t))},[s])}}function QuantityControl({label:e,value:t,onIncrement:a,onDecrement:s,compact:i=!1}){return(0,Ot.jsxs)(n.Box,{sx:{display:"flex",alignItems:"center",gap:1,mb:i?0:.5},children:[(0,Ot.jsxs)(n.ButtonGroup,{size:"small",variant:"outlined",children:[(0,Ot.jsx)(n.Button,{onClick:s,disabled:t<=0,sx:{minWidth:28,px:.5,fontSize:12},children:"−"}),(0,Ot.jsx)(n.Button,{disableRipple:!0,disableFocusRipple:!0,sx:{minWidth:36,px:.5,cursor:"default",pointerEvents:"none",fontSize:12,color:"text.primary",borderColor:"divider"},children:t}),(0,Ot.jsx)(n.Button,{onClick:a,sx:{minWidth:28,px:.5,fontSize:12},children:"+"})]}),(0,Ot.jsx)(n.Typography,{variant:"body2",children:e})]})}function PairRow({pair:e,update:t}){return(0,Ot.jsxs)(n.Box,{sx:{display:"flex",gap:.5},children:[(0,Ot.jsx)(n.Box,{sx:{flex:1},children:(0,Ot.jsx)(QuantityControl,{compact:!0,label:e.herbLabel,value:e.herbQty,onIncrement:()=>t(e.herb,e.herbQty+1),onDecrement:()=>t(e.herb,e.herbQty-1)})}),(0,Ot.jsx)(n.Box,{sx:{flex:1},children:e.mineral?(0,Ot.jsx)(QuantityControl,{compact:!0,label:e.mineralLabel,value:e.mineralQty,onIncrement:()=>t(e.mineral,e.mineralQty+1),onDecrement:()=>t(e.mineral,e.mineralQty-1)}):(0,Ot.jsx)(n.Box,{sx:{height:28}})})]})}function PrecacheTab({settingsForm:e}){const{pairs:t,update:a}=usePrecache(useNexSys(),e);return(0,Ot.jsxs)(n.Box,{sx:{pt:1},children:[(0,Ot.jsxs)(n.Box,{sx:{display:"flex",gap:.5,mb:.25},children:[(0,Ot.jsx)(n.Typography,{variant:"overline",sx:{flex:1,color:"primary.main",fontWeight:700,fontSize:10},children:"Herb"}),(0,Ot.jsx)(n.Typography,{variant:"overline",sx:{flex:1,color:"primary.main",fontWeight:700,fontSize:10},children:"Mineral"})]}),t.map(e=>(0,Ot.jsx)(PairRow,{pair:e,update:a},e.herb))]})}function ColorSettingsTab(){return(0,Ot.jsx)(n.Box,{sx:{pt:2},children:(0,Ot.jsx)(n.Typography,{variant:"body2",color:"text.secondary",children:"Color settings are not yet implemented."})})}var Sn=["System","Aff Priorities","Defences","Precache","Colors"];function ConfigTabs({settingsForm:e}){const[t,a]=(0,b.useState)(0),{pending:s,set:i}=e;return(0,Ot.jsxs)(n.Box,{sx:{width:"100%"},children:[(0,Ot.jsx)(n.Tabs,{value:t,onChange:(e,t)=>a(t),variant:"scrollable",scrollButtons:"auto",sx:{borderBottom:"1px solid rgba(255,255,255,0.1)",mb:1,"& .MuiTab-root":{fontSize:11,minHeight:36,py:.5}},children:Sn.map(e=>(0,Ot.jsx)(n.Tab,{label:e},e))}),(0,Ot.jsxs)(n.Box,{sx:{overflowY:"auto",overflowX:"auto",maxHeight:800},children:[0===t&&(0,Ot.jsx)(SystemSettingsTab,{pending:s,set:i}),1===t&&(0,Ot.jsx)(AffPrioritiesTab,{settingsForm:e}),2===t&&(0,Ot.jsx)(DefPrioritiesTab,{settingsForm:e}),3===t&&(0,Ot.jsx)(PrecacheTab,{settingsForm:e}),4===t&&(0,Ot.jsx)(ColorSettingsTab,{})]})]})}function ConfigDialogContent({nexSys:e,onClose:t}){const a=useSettingsForm(e),handleSave=()=>{a.commit(),e?.api?.ui?.closeConfig("ui.save"),t()},handleCancel=()=>{e?.api?.ui?.closeConfig("ui.cancel"),t()};return(0,Ot.jsxs)(n.Dialog,{open:!0,onClose:handleCancel,maxWidth:"md",slotProps:{paper:{sx:{width:{xs:"calc(100% - 24px)",md:900},maxWidth:"calc(100% - 24px)",bgcolor:"background.paper !important",color:"text.primary !important",backgroundImage:"none",border:"1px solid rgba(79,195,247,0.2)"}}},children:[(0,Ot.jsxs)(n.DialogTitle,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",bgcolor:"background.paper !important",color:"text.primary !important",pb:.5,borderBottom:"1px solid rgba(255,255,255,0.08)"},children:[(0,Ot.jsx)(n.Typography,{component:"span",variant:"h6",sx:{fontSize:14,color:"primary.main !important",fontWeight:700},children:"nexSys4 Configuration"}),(0,Ot.jsx)(n.Typography,{component:"span",variant:"caption",sx:{opacity:.65,color:"text.secondary !important"},children:"v1.0.4"})]}),(0,Ot.jsx)(n.DialogContent,{style:{padding:"16px 16px 0px"},sx:{"&.MuiDialogContent-root":{p:0}},children:(0,Ot.jsx)(n.Box,{sx:{px:2,pt:2,pb:0},children:(0,Ot.jsx)(ConfigTabs,{settingsForm:a})})}),(0,Ot.jsxs)(n.DialogActions,{sx:{borderTop:"1px solid rgba(255,255,255,0.08)",px:2,py:1},children:[(0,Ot.jsx)(n.Button,{onClick:handleCancel,size:"small",sx:{fontSize:11},children:"Cancel"}),(0,Ot.jsx)(n.Button,{onClick:handleSave,variant:"contained",size:"small",sx:{fontSize:11},children:"Save"})]})]})}function ConfigDialog(){const e=useNexSys(),[t,a]=useDialogOpen(e);return(0,Ot.jsx)(s.ThemeProvider,{theme:Nt,children:t?(0,Ot.jsx)(ConfigDialogContent,{nexSys:e,onClose:()=>a(!1)}):null})}function NexSysGuiApp({nexSys:e}){return(0,Ot.jsx)(NexSysProvider,{nexSys:e,children:(0,Ot.jsx)(ConfigDialog,{})})}var bootstrapNexus=(e={})=>{const t=bootstrapNexus$1(e);return t.component=NexSysGuiApp,startupNexus(),t.api.control.updateNxs(),t};e.bootstrapNexus=bootstrapNexus}(globalThis.nexSys=globalThis.nexSys||{},nexRuntime.zod,React,nexRuntime.mui,nexRuntime.muiStyles,nexRuntime.immer,nexRuntime.dndCore,nexRuntime.dndSortable,nexRuntime.dndUtilities);