ideawave 0.0.58 → 0.0.59

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.
Files changed (2) hide show
  1. package/dist/index.mjs +50 -19
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,35 +1,36 @@
1
1
  #!/usr/bin/env node
2
- function T6(){let Z=globalThis.performance?.now?.()??Date.now();return Math.round(Z*10)/10}function E(Z,X={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let Q=Object.fromEntries(Object.entries(X).filter(([,K])=>K!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:Z,epochMs:Date.now(),monotonicMs:T6(),...typeof document>"u"?{}:{visibility:document.visibilityState},...Q}))}var A6=600000,u6=60000,y8=200,l6=2,T=new Map,P0=null;function c6(Z){Z.then((X)=>X.dispose()).catch(()=>{return})}function O1(Z){for(let X of Z.idleWaiters)X();Z.idleWaiters.clear()}function R0(Z,X){if(T.get(Z)!==X)return;T.delete(Z),O1(X),c6(X.sessionPromise)}function d6(){if(P0!==null)return;P0=setInterval(()=>{let Z=Date.now();for(let[X,Q]of T){if(Q.inUse)continue;if(Z-Q.lastUsed<A6)continue;R0(X,Q)}if(T.size===0&&P0!==null)clearInterval(P0),P0=null},u6),P0.unref?.()}function a6(){if(T.size<y8)return;let Z=null,X=1/0;for(let[K,Y]of T){if(Y.inUse)continue;if(Y.lastUsed>=X)continue;Z=K,X=Y.lastUsed}if(!Z)return;let Q=T.get(Z);if(!Q)return;R0(Z,Q)}function i6(){let Z=0;while(T.size>y8){let X=null,Q=null;for(let[K,Y]of T){if(Y.inUse)continue;if(Q&&Y.lastUsed>=Q.lastUsed)continue;X=K,Q=Y}if(!X||!Q)break;R0(X,Q),Z+=1}if(Z>0)E("session_pool.global_idle_trimmed",{evictedSessions:Z,poolEntries:T.size})}function p6(Z){let X=Array.from(T.entries()).filter(([,K])=>K.frontendSessionId===Z&&!K.inUse).sort(([,K],[,Y])=>K.lastUsed-Y.lastUsed),Q=X.length-l6;if(Q<=0)return;for(let[K,Y]of X.slice(0,Q))R0(K,Y);E("session_pool.frontend_idle_trimmed",{frontendSessionId:Z,evictedSessions:Q,poolEntries:T.size})}function q4(Z,X,Q){return`${Z}:${X}:${Q}`}async function C1(Z){let X=T.get(Z.key);if(X){if(X.inUse)return E("session_pool.wait_for_idle",{frontendSessionId:X.frontendSessionId,poolEntries:T.size}),await new Promise((K)=>X.idleWaiters.add(K)),C1(Z);if(X.fingerprint===Z.fingerprint){X.inUse=!0,X.lastUsed=Date.now();try{let K=await X.sessionPromise;if(K.isAlive()){if(X.frontendSessionId)E("session_pool.reuse",{frontendSessionId:X.frontendSessionId,poolEntries:T.size});return K}}catch{}R0(Z.key,X)}else R0(Z.key,X)}let Q=Z.open();if(a6(),T.set(Z.key,{key:Z.key,frontendSessionId:Z.frontendSessionId??null,fingerprint:Z.fingerprint,sessionPromise:Q,lastUsed:Date.now(),inUse:!0,idleWaiters:new Set}),d6(),Z.frontendSessionId)E("session_pool.open",{frontendSessionId:Z.frontendSessionId,poolEntries:T.size});try{return await Q}catch(K){let Y=T.get(Z.key);if(Y?.sessionPromise===Q)R0(Z.key,Y);throw K}}function B4(Z,X=!1){let Q=T.get(Z);if(!Q)return;if(X){R0(Z,Q);return}if(Q.inUse=!1,Q.lastUsed=Date.now(),Q.frontendSessionId)p6(Q.frontendSessionId),E("session_pool.release",{frontendSessionId:Q.frontendSessionId,poolEntries:T.size});if(i6(),T.get(Z)===Q)O1(Q)}async function f8(Z){let X=Array.from(T.entries()).filter(([,Q])=>Q.frontendSessionId===Z);for(let[Q,K]of X)T.delete(Q),O1(K);return await Promise.all(X.map(([,Q])=>Q.sessionPromise.then((K)=>K.dispose()).catch(()=>{return}))),E("session_pool.frontend_evicted",{frontendSessionId:Z,evictedSessions:X.length,poolEntries:T.size}),X.length}async function s6(){let Z=Array.from(T.values());T.clear();for(let X of Z)O1(X);if(P0!==null)clearInterval(P0),P0=null;await Promise.all(Z.map((X)=>X.sessionPromise.then((Q)=>Q.dispose()).catch(()=>{return})))}function F4(Z){let X=Object.entries(Z.configValues??{}),Q=X.length>0?JSON.stringify(Object.fromEntries(X.sort(([K],[Y])=>K.localeCompare(Y)))):"";return[Z.adapterId,Z.configId??"",Z.modelId??"",Q,Z.mcpUrl??"",Z.runFolder??"",Z.toolSurface??"full"].join(" ")}var v8=!1;function r6(){if(v8)return;v8=!0;let Z=()=>{s6()};process.once("beforeExit",Z),process.once("SIGTERM",Z),process.once("SIGINT",Z)}r6();import{readFileSync as t6}from"node:fs";import{homedir as o6}from"node:os";import{join as R1}from"node:path";function n6(){let Z=o6();switch(process.platform){case"win32":return process.env.APPDATA??R1(Z,"AppData","Roaming");case"darwin":return R1(Z,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??R1(Z,".config")}}function h8(){let Z=process.env.IDEAWAVE_MCP_JSON_PATH;if(Z&&Z.trim().length>0)return Z;return R1(n6(),"ideawave","mcp.json")}var N8=null;function D8(Z){N8=Z}var e6=86400000;function ZZ(){let Z;try{Z=t6(h8(),"utf8")}catch{return null}let X;try{X=JSON.parse(Z)}catch{return null}if(typeof X.url!=="string")return null;if(typeof X.startedAt==="string"){let Q=Date.parse(X.startedAt);if(!Number.isNaN(Q)){if(Date.now()-Q>e6)return null}}if(typeof X.pid==="number"&&X.pid>0)try{process.kill(X.pid,0)}catch(Q){if(Q?.code!=="EPERM")return null}return{url:X.url}}function M8(Z,X={}){let Q=[];if(X.userId&&X.userId.trim().length>0)Q.push({name:"X-Ideawave-User-Id",value:X.userId.trim()});if(X.frontendSessionId&&X.frontendSessionId.trim().length>0)Q.push({name:"X-Ideawave-Frontend-Session-Id",value:X.frontendSessionId.trim()});if(X.toolSurface==="read")Q.push({name:"X-Ideawave-Tool-Surface",value:"read"});if(X.imagesSupported)Q.push({name:"X-Ideawave-Images-Supported",value:"1"});if(X.cardId&&X.cardId.trim().length>0)Q.push({name:"X-Ideawave-Card-Id",value:X.cardId.trim()});if(X.boardId&&X.boardId.trim().length>0)Q.push({name:"X-Ideawave-Board-Id",value:X.boardId.trim()});if(X.runFolder&&X.runFolder.trim().length>0)Q.push({name:"X-Ideawave-Run-Folder",value:X.runFolder.trim()});return{type:"http",name:"ideawave-board",url:Z,headers:Q}}function w4(Z={}){let X=N8;if(X)return M8(X.url,Z);let Q=ZZ();if(!Q)return null;return M8(Q.url,Z)}import o0 from"node:fs/promises";import YZ from"node:path";import{z as M}from"zod";var $8=M.object({id:M.string(),name:M.string().nullable().default(null),description:M.string().nullable().default(null)}),E8=M.union([M.string(),M.boolean()]),XZ=M.object({value:M.string(),name:M.string(),description:M.string().nullable().default(null),group:M.string().nullable().default(null),groupName:M.string().nullable().default(null)}),G8=M.object({id:M.string(),name:M.string(),category:M.string().nullable().default(null),description:M.string().nullable().default(null),type:M.enum(["select","boolean"]),currentValue:E8.nullable().default(null),options:M.array(XZ).default([])}),L4=M.record(M.string(),E8).default({}),QZ=M.discriminatedUnion("kind",[M.object({id:M.string(),kind:M.literal("registered"),adapterId:M.enum(["claude-code","opencode","codex","copilot"]),displayName:M.string(),runFolder:M.string().nullable(),defaultModelId:M.string().nullable().default(null),defaultConfigValues:L4,discoveredModels:M.array($8).default([]),discoveredConfigOptions:M.array(G8).default([]),discoveredAt:M.string().nullable().default(null)}),M.object({id:M.string(),kind:M.literal("custom"),displayName:M.string(),command:M.string(),args:M.array(M.string()),env:M.record(M.string(),M.string()),runFolder:M.string().nullable(),defaultModelId:M.string().nullable().default(null),defaultConfigValues:L4,discoveredModels:M.array($8).default([]),discoveredConfigOptions:M.array(G8).default([]),discoveredAt:M.string().nullable().default(null)})]),g8=M.object({runtimeConfigId:M.string(),runFolder:M.string().nullable(),modelId:M.string().nullable().default(null),configValues:L4}),v1=M.object({version:M.literal(1),globalDefaultConfigId:M.string().nullable(),runtimes:M.array(QZ),boardOverrides:M.record(M.string(),g8).default({}),cardOverrides:M.record(M.string(),g8).default({})});import JZ from"node:os";import y1 from"node:path";function KZ(){let Z=JZ.homedir();switch(process.platform){case"win32":return process.env.APPDATA??y1.join(Z,"AppData","Roaming");case"darwin":return y1.join(Z,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??y1.join(Z,".config")}}function f1(){let Z=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(Z)return Z;return y1.join(KZ(),"ideawave","runtimes.json")}var WZ={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},m8=new Map;function VZ(Z){return m8.get(Z)??Promise.resolve()}function jZ(Z,X){m8.set(Z,X)}async function K0(Z){let X=Z??f1(),Q;try{Q=await o0.readFile(X,"utf-8")}catch(Y){if(Y.code==="ENOENT")return structuredClone(WZ);throw Y}return v1.parse(JSON.parse(Q))}async function j0(Z,X){let Q=X??f1(),K=VZ(Q).then(async()=>{let Y=await K0(Q),V=structuredClone(Y),z=await Z(V);return await zZ(V,Q),z});return jZ(Q,K.catch(()=>{return})),K}async function zZ(Z,X){let Q=X??f1(),K=YZ.dirname(Q);await o0.mkdir(K,{recursive:!0});let Y=`${Q}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,V=JSON.stringify(Z,null,2);await o0.writeFile(Y,V,"utf-8");try{await o0.rename(Y,Q)}catch(z){throw await o0.unlink(Y).catch(()=>{return}),z}}import{spawn as bZ}from"node:child_process";import{closeSync as OZ,existsSync as T8,mkdirSync as A8,openSync as CZ,readFileSync as RZ,renameSync as vZ,rmSync as u8,statSync as yZ,unlinkSync as fZ,writeFileSync as hZ}from"node:fs";import S8 from"node:os";import $0 from"node:path";var HZ=/\.(?:cmd|bat)$/i;function UZ(Z){return process.platform==="win32"&&HZ.test(Z)}function h1(Z){return UZ(Z)?{shell:!0,windowsHide:!0}:{}}import{execFile as PZ}from"node:child_process";import{promisify as xZ}from"node:util";import{execFile as qZ}from"node:child_process";import{promisify as BZ}from"node:util";var FZ=BZ(qZ),P4=new Map,_8=5000,wZ=/\.(?:cmd|bat|com|exe)$/i;function LZ(Z){let X=Z.split(/\r?\n/).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(X.length===0)return null;if(process.platform!=="win32")return X[0]??null;return X.find((Q)=>wZ.test(Q))??X[0]??null}async function k8(Z,X=FZ){let Q=P4.get(Z);if(Q&&Q.expiresAt>Date.now())return Q.value;let K=process.platform==="win32"?"where":"which";try{let{stdout:Y}=await X(K,[Z],{timeout:2000}),V=LZ(Y);return P4.set(Z,{value:V,expiresAt:Date.now()+_8}),V}catch{return P4.set(Z,{value:null,expiresAt:Date.now()+_8}),null}}class n0 extends Error{code;constructor(Z,X){super(Z);this.name="AcpError",this.code=X}}class D0 extends n0{constructor(Z="No ACP runtime configured"){super(Z,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class k extends n0{constructor(Z){super(Z,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class u0 extends n0{authMethods;constructor(Z,X){super(Z,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=X}}class q0 extends n0{constructor(Z="ACP session timed out"){super(Z,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var YJ=xZ(PZ);function d(Z,...X){return k8(Z,...X)}function Q0(Z){let X={};for(let[Q,K]of Object.entries(process.env))if(typeof K==="string")X[Q]=K;return{...X,...Z??{}}}var b4=[{adapterId:"claude-code",runtimeBinary:"claude",packageName:"@agentclientprotocol/claude-agent-acp",version:"0.50.0",warmupArgs:["--cli","--help"]},{adapterId:"codex",runtimeBinary:"codex",packageName:"@agentclientprotocol/codex-acp",version:"1.0.2",warmupArgs:["--version"]}],MZ=1800000,M1=new Map;function O4(){if(process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR)return process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR;if(process.platform==="win32"){let Z=process.env.LOCALAPPDATA??$0.join(S8.homedir(),"AppData","Local");return $0.join(Z,"ideawave","acp-bridges")}return $0.join(process.env.XDG_CACHE_HOME??$0.join(S8.homedir(),".cache"),"ideawave","acp-bridges")}function NZ(Z){return Z.replace(/^@/,"").replace(/[/\\]/g,"-")}function N1(){return $0.join(O4(),"install-state.json")}function C4(Z){return $0.join(O4(),`${NZ(Z.packageName)}@${Z.version}.install.lock`)}function R4(){return process.platform==="win32"?"npx.cmd":"npx"}function v4(Z){return`${Z.packageName}@${Z.version}`}function l8(){let Z=N1();if(!T8(Z))return{};try{return JSON.parse(RZ(Z,"utf8"))}catch{return{}}}function x4(Z,X){let Q=O4();A8(Q,{recursive:!0});let K=l8();K.bridges={...K.bridges??{},[Z.adapterId]:X},hZ(`${N1()}.tmp`,`${JSON.stringify(K,null,2)}
3
- `),vZ(`${N1()}.tmp`,N1())}function c8(Z){return b4.find((X)=>X.packageName===Z)??null}function Y0(Z,X,Q){return{adapterId:Z.adapterId,packageName:Z.packageName,version:Z.version,status:X,...Q?{error:Q}:{}}}function I8(Z,X){return X?.packageName===Z.packageName&&X.version===Z.version}function d8(Z){try{return Date.now()-yZ(Z).mtimeMs>MZ}catch{return!1}}function DZ(Z){let X=C4(Z);if(!T8(X))return!1;if(d8(X))return u8(X,{force:!0}),!1;return!0}function $Z(Z){let X=C4(Z);if(A8($0.dirname(X),{recursive:!0}),d8(X))u8(X,{force:!0});try{let Q=CZ(X,"wx");return OZ(Q),!0}catch{return!1}}function GZ(Z){fZ(C4(Z))}function y4(Z){let X=l8().bridges?.[Z.adapterId];if(I8(Z,X)&&X.status==="ready")return Y0(Z,"ready");if(M1.has(Z.adapterId)||DZ(Z))return Y0(Z,"installing");if(I8(Z,X)&&X.status==="failed")return Y0(Z,"failed",X.error);return Y0(Z,"missing")}function t0(Z,X){Z?.onStatusChange?.(X)}function gZ(Z,X){let Q=y4(Z);if(Q.status==="ready")return t0(X,Q),Q;if(Q.status==="installing"){let B=M1.get(Z.adapterId);if(B&&X?.onStatusChange)B.then((L)=>t0(X,L));return t0(X,Q),Q}if(!$Z(Z))return Y0(Z,"installing");let K=Y0(Z,"installing");x4(Z,K),t0(X,K);let Y=()=>{},V=new Promise((B)=>{Y=B});M1.set(Z.adapterId,V);let z=!1,U=(B)=>{if(z)return;z=!0;try{GZ(Z)}catch{}x4(Z,B),t0(X,B),M1.delete(Z.adapterId),Y(B)},F;try{let B=R4();F=bZ(B,["-y",v4(Z),...Z.warmupArgs],{stdio:"ignore",windowsHide:!0,...h1(B)})}catch(B){let L=Y0(Z,"failed",B instanceof Error?B.message:String(B));return U(L),L}return F.on("error",(B)=>{U(Y0(Z,"failed",B.message))}),F.on("close",(B)=>{if(B===0){U(Y0(Z,"ready"));return}U(Y0(Z,"failed",`npx warmup exited ${B??"null"}`))}),F.unref(),K}function l0(Z){let X=c8(Z);return X?y4(X):null}async function a8(Z){let X=[];for(let Q of b4){if(!await d(Q.runtimeBinary)){X.push(Y0(Q,"not_needed"));continue}X.push(gZ(Q,Z))}return X.filter((Q)=>Q.status!=="not_needed")}function D1(Z){let X=c8(Z);if(!X)return null;if(y4(X).status!=="ready")return null;return{command:R4(),args:["-y",v4(X)],env:{}}}function f4(Z,X){if(Z.command!==R4())return!1;let Q=b4.find((K)=>Z.args.includes(v4(K)));if(!Q)return!1;return x4(Q,Y0(Q,"failed",X)),!0}var i8="claude",h4="@agentclientprotocol/claude-agent-acp",p8=["claude-agent-acp","claude-code-acp"],s8="Install Claude Code from https://github.com/anthropics/claude-code",r8={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await d(i8))throw new k(`Claude Code CLI not found. ${s8}`);let X=D1(h4);if(X)return{command:X.command,args:X.args,env:Q0(X.env)};let Q=l0(h4),K=Q?.status==="installing";for(let V of p8){let z=await d(V);if(z&&!K&&Q?.status!=="failed")return{command:z,args:[],env:Q0()}}let Y=Q?.status==="failed"?`Claude Code ACP bridge install failed. ${Q.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Claude Code ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new k(Y)},checkReadiness:async()=>{if(!await d(i8))return{status:"not_installed",detail:s8};let X=l0(h4);if(X?.status==="ready")return{status:"ready"};if(X?.status==="installing")return{status:"not_running",detail:"Installing Claude Code ACP bridge..."};if(X?.status==="failed")return{status:"not_running",detail:X.error??"Claude Code ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};for(let Q of p8)if(await d(Q))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var o8="codex",M4="@agentclientprotocol/codex-acp",n8="codex-acp",t8="Install Codex CLI from https://developers.openai.com/codex/cli",e8={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await d(o8))throw new k(`Codex CLI not found. ${t8}`);let X=D1(M4);if(X)return{command:X.command,args:X.args,env:Q0(X.env)};let Q=l0(M4),K=Q?.status==="installing",Y=await d(n8);if(Y&&!K&&Q?.status!=="failed")return{command:Y,args:[],env:Q0()};let V=Q?.status==="failed"?`Codex ACP bridge install failed. ${Q.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Codex ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new k(V)},checkReadiness:async()=>{if(!await d(o8))return{status:"not_installed",detail:t8};let X=l0(M4);if(X?.status==="ready")return{status:"ready"};if(X?.status==="installing")return{status:"not_running",detail:"Installing Codex ACP bridge..."};if(X?.status==="failed")return{status:"not_running",detail:X.error??"Codex ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};if(await d(n8))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var Z9="copilot",X9="copilot-acp",Q9="npm i -g @github/copilot",J9={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let Z=await d(Z9);if(Z)return{command:Z,args:["--acp"],env:Q0()};let X=await d(X9);if(X)return{command:X,args:[],env:Q0()};throw new k(`Copilot not installed. Run: ${Q9}`)},checkReadiness:async()=>{if(await d(Z9))return{status:"ready"};if(await d(X9))return{status:"ready"};return{status:"not_installed",detail:Q9}},authHint:"Run `gh auth login` (or `copilot login`)."};import EZ from"node:fs/promises";function mZ(Z){return Z.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(Z)}async function K9(Z){if(mZ(Z))try{return await EZ.access(Z),!0}catch{return!1}return await d(Z)!==null}var Y9={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(Z)=>{if(Z.kind!=="custom")throw new k("customAdapter received non-custom entry");if(!await K9(Z.command))throw new k(`custom: command "${Z.command}" not found`);return{command:Z.command,args:Z.args,env:Q0(Z.env)}},checkReadiness:async(Z)=>{if(Z.kind!=="custom")return{status:"unknown"};return await K9(Z.command)?{status:"ready"}:{status:"not_installed"}}};var W9="opencode",V9="Install OpenCode from https://opencode.ai",j9={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let Z=await d(W9);if(!Z)throw new k(`OpenCode not installed. ${V9}`);return{command:Z,args:["acp"],env:Q0()}},checkReadiness:async()=>{if(!await d(W9))return{status:"not_installed",detail:V9};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var z9={"claude-code":r8,opencode:j9,codex:e8,copilot:J9};function B0(Z){if(Z.kind==="custom")return Y9;let X=z9[Z.adapterId];if(!X)throw Error(`Unknown registered adapter: ${Z.adapterId}`);return X}function c0(){return Object.values(z9)}var N4=new Map,$1=new Map,_Z=30000;function G1(Z,X){let Q=N4.get(Z);if(Q&&Q.expiresAt>Date.now())return Promise.resolve(Q.value);let K=$1.get(Z);if(K)return K;let Y=X().then((V)=>{return N4.set(Z,{value:V,expiresAt:Date.now()+_Z}),V}).finally(()=>{$1.delete(Z)});return $1.set(Z,Y),Y}async function H9(Z){let X=await Promise.all(c0().map((V)=>G1(V.id,async()=>({adapterId:V.id,...await V.checkReadiness({id:"__probe__",kind:"registered",adapterId:V.id,displayName:V.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),K=(await K0(Z)).runtimes.filter((V)=>V.kind==="custom"),Y=await Promise.all(K.map((V)=>G1(`custom:${V.id}`,async()=>({adapterId:V.id,...await B0(V).checkReadiness(V)}))));return[...X,...Y]}async function U9(Z,X){let Q=c0().find((V)=>V.id===Z);if(Q)return G1(Q.id,async()=>({adapterId:Q.id,...await Q.checkReadiness({id:"__probe__",kind:"registered",adapterId:Q.id,displayName:Q.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})}));let Y=(await K0(X)).runtimes.find((V)=>V.id===Z);if(!Y||Y.kind!=="custom")return null;return G1(`custom:${Y.id}`,async()=>({adapterId:Y.id,...await B0(Y).checkReadiness(Y)}))}function q9(){N4.clear(),$1.clear()}function kZ(Z){if(!Z)return null;let X=Z.indexOf("/");if(X<=0)return null;return Z.slice(0,X)}function g1(Z){let X=[...Z.models];if(Z.adapterId!=="opencode"||X.length===0)return X;let Q=kZ(Z.currentModelId)??(X.some((Y)=>Y.id.startsWith("opencode/"))?"opencode":null);if(!Q)return X;let K=X.filter((Y)=>Y.id===Z.currentModelId||Y.id.startsWith(`${Q}/`));return K.length>0?K:X}import{Readable as tZ,Writable as eZ}from"node:stream";import{ClientSideConnection as v9,ndJsonStream as y9}from"@agentclientprotocol/sdk";import v0 from"node:fs/promises";import X0 from"node:path";class Z1 extends Error{constructor(Z){super(Z);this.name="PathTraversalError"}}class $4 extends Error{constructor(Z){super(Z);this.name="HiddenPathError"}}class G4 extends Error{constructor(Z){super(Z);this.name="RunFolderFileTooLargeError"}}class e0 extends Error{constructor(Z){super(Z);this.name="RunFolderBinaryFileError"}}var SZ=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),B9=1e6,IZ=4096,TZ=new TextDecoder("utf-8",{fatal:!0});function AZ(Z){return Z.split(/[\\/]+/).filter((X)=>X.length>0)}function E1(Z){if(X0.isAbsolute(Z))throw new Z1("Absolute paths are not allowed");for(let X of AZ(Z)){if(X===".")continue;if(X==="..")throw new Z1("Parent-directory traversal is not allowed");if(X.startsWith(".")||SZ.has(X))throw new $4(`Path segment "${X}" is hidden or configuration data`)}}function uZ(Z){E1(Z);let X=X0.normalize(Z||".");return X==="."?"":X}function lZ(Z,X,Q){let K=X0.relative(Z,X);if(K===".."||K.startsWith(`..${X0.sep}`)||X0.isAbsolute(K))throw new Z1(`Path "${Q}" resolves outside the run folder`);if(K.length>0)E1(K);return K}async function D4(Z,X){E1(X);let Q=X0.resolve(Z,X||"."),K;try{K=await v0.realpath(Q)}catch(Y){if(Y.code!=="ENOENT")throw Y;let V=X0.dirname(Q),z=[X0.basename(Q)];while(V!==Z&&V!==X0.dirname(V))try{V=await v0.realpath(V);break}catch(U){if(U.code!=="ENOENT")throw U;z.unshift(X0.basename(V)),V=X0.dirname(V)}K=X0.join(V,...z)}return lZ(Z,K,X),K}async function cZ(Z,X){let Q=await v0.realpath(Z);return D4(Q,X)}function dZ(Z){let X=Z.subarray(0,Math.min(Z.length,IZ));if(X.length===0)return!1;let Q=0;for(let K of X){if(K===0)return!0;let Y=K===9||K===10||K===12||K===13;if(K<32&&!Y)Q+=1}return Q/X.length>0.3}async function m1(Z,X){let Q=await cZ(Z,X),K=await v0.stat(Q);if(!K.isFile())throw new e0(`Path "${X}" is not a text file`);if(K.size>B9)throw new G4(`File "${X}" is too large to read (${K.size} bytes, max ${B9} bytes)`);let Y=await v0.readFile(Q);if(dZ(Y))throw new e0(`File "${X}" appears to be binary, not text`);try{return TZ.decode(Y)}catch{throw new e0(`File "${X}" is not valid UTF-8 text`)}}function aZ(Z){if(Z.isDirectory())return"directory";if(Z.isFile())return"file";if(Z.isSymbolicLink())return"symlink";return"other"}function F9(Z){return Z.split(X0.sep).join("/")}async function w9(Z,X=""){let Q=await v0.realpath(Z),K=uZ(X),Y=await D4(Q,K),V=await v0.readdir(Y,{withFileTypes:!0}),z=[];for(let U of V){let F=K?X0.join(K,U.name):U.name;try{E1(F);let B=await D4(Q,F),L=await v0.stat(B);z.push({name:U.name,path:F9(F),type:aZ(U),size:U.isFile()?L.size:null})}catch{}}return z.sort((U,F)=>{if(U.type==="directory"&&F.type!=="directory")return-1;if(U.type!=="directory"&&F.type==="directory")return 1;return U.name.localeCompare(F.name)}),{path:F9(K),absolutePath:Y,entries:z}}var g4={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1};function L9(Z){return{readTextFile:async(X)=>{return{content:await m1(Z,X.path)}}}}import{spawn as iZ}from"node:child_process";function E4(Z){let X=iZ(Z.command,Z.args,{cwd:Z.cwd,env:Z.env,stdio:["pipe","pipe","pipe"],...h1(Z.command)});if(!X.stdin||!X.stdout||!X.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:Q,stdout:K,stderr:Y}=X,V=4096,z=[],U=0;Y.on("data",(C)=>{z.push(C),U+=C.length;while(U>V*2&&z.length>1){let h=z.shift();if(h)U-=h.length}});let F=()=>{let C=Buffer.concat(z).toString("utf8");return C.length>V?C.slice(-V):C},B=!1,L=!1,f,P,R=new Promise((C)=>{f=C}),v=new Promise((C)=>{P=C}),D=(C)=>{if(L)return;if(L=!0,f(C),!B)P(C)};return X.on("exit",(C,h)=>{D({code:C,signal:h,stderr:F()})}),X.on("error",(C)=>{let h=F(),y=C?.message??String(C);D({code:null,signal:null,stderr:h?`${y}
4
- ${h}`:y})}),{stdin:Q,stdout:K,stderr:Y,kill:(C="SIGTERM")=>{if(B)return;B=!0;try{X.kill(C)}catch{}},waitForExit:R,processCrashed:v}}var pZ=["mcp_ideawave_board_","ideawave_board_","ideawave-board_","ideawave-board.","ideawave.board."];function sZ(Z){let X=Z.toLowerCase();for(let Q of pZ)if(X.startsWith(Q))return Z.slice(Q.length);if(/^mcp[-_.]/i.test(Z))return Z.slice(4);return Z}function _1(Z){return sZ(Z.trim())}function m4(Z){let X=_1(Z);if(!X)return"Tool";if(!/[-_.]/.test(X))return X.charAt(0).toUpperCase()+X.slice(1);let Q=X.replace(/[-_.]+/g," ").replace(/\s+/g," ").trim();if(!Q)return"Tool";return Q.charAt(0).toUpperCase()+Q.slice(1)}function _4(Z){let X=Z?.toLowerCase();if(X==="completed"||X==="complete"||X==="done"||X==="success"||X==="succeeded")return"completed";if(X==="failed"||X==="error"||X==="errored")return"failed";return"running"}function k4(Z){if(typeof Z!=="string")return null;let X=Z.trim();return X?X:null}function P9(Z){if(typeof Z!=="string")return"Tool";let X=Z.trim();return X?X:"Tool"}function rZ(Z,X){if(!Z||typeof Z!=="object"||Array.isArray(Z))return null;let Q=Z;for(let K of X){let Y=Q[K];if(typeof Y==="string"&&Y.trim())return Y.trim()}return null}function S4(Z,X){let Q=Z.trim().toLowerCase();if(Q==="skill"||Q==="workflow"||Q==="tool"||Q==="invalid"){let K=rZ(X,["skillName","workflowName","toolName","name","title"]);if(K){let Y=Q==="skill"?" skill":Q==="workflow"?" workflow":"";return`${m4(K)}${Y}`}}if(Q==="invalid")return"Tool call";return m4(Z)}var oZ=33,x9=1600;function G0(Z){if(Z.length<=x9)return Z;return`${Z.slice(0,x9-22)}
5
- ... truncated`}function S1(Z){let X=Z.replace(/\r\n?/g,`
2
+ function T6(){let Z=globalThis.performance?.now?.()??Date.now();return Math.round(Z*10)/10}function E(Z,X={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let Q=Object.fromEntries(Object.entries(X).filter(([,K])=>K!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:Z,epochMs:Date.now(),monotonicMs:T6(),...typeof document>"u"?{}:{visibility:document.visibilityState},...Q}))}var A6=600000,u6=60000,y8=200,l6=2,T=new Map,L0=null;function c6(Z){Z.then((X)=>X.dispose()).catch(()=>{return})}function O1(Z){for(let X of Z.idleWaiters)X();Z.idleWaiters.clear()}function R0(Z,X){if(T.get(Z)!==X)return;T.delete(Z),O1(X),c6(X.sessionPromise)}function d6(){if(L0!==null)return;L0=setInterval(()=>{let Z=Date.now();for(let[X,Q]of T){if(Q.inUse)continue;if(Z-Q.lastUsed<A6)continue;R0(X,Q)}if(T.size===0&&L0!==null)clearInterval(L0),L0=null},u6),L0.unref?.()}function a6(){if(T.size<y8)return;let Z=null,X=1/0;for(let[K,Y]of T){if(Y.inUse)continue;if(Y.lastUsed>=X)continue;Z=K,X=Y.lastUsed}if(!Z)return;let Q=T.get(Z);if(!Q)return;R0(Z,Q)}function i6(){let Z=0;while(T.size>y8){let X=null,Q=null;for(let[K,Y]of T){if(Y.inUse)continue;if(Q&&Y.lastUsed>=Q.lastUsed)continue;X=K,Q=Y}if(!X||!Q)break;R0(X,Q),Z+=1}if(Z>0)E("session_pool.global_idle_trimmed",{evictedSessions:Z,poolEntries:T.size})}function p6(Z){let X=Array.from(T.entries()).filter(([,K])=>K.frontendSessionId===Z&&!K.inUse).sort(([,K],[,Y])=>K.lastUsed-Y.lastUsed),Q=X.length-l6;if(Q<=0)return;for(let[K,Y]of X.slice(0,Q))R0(K,Y);E("session_pool.frontend_idle_trimmed",{frontendSessionId:Z,evictedSessions:Q,poolEntries:T.size})}function q4(Z,X,Q){return`${Z}:${X}:${Q}`}async function C1(Z){let X=T.get(Z.key);if(X){if(X.inUse)return E("session_pool.wait_for_idle",{frontendSessionId:X.frontendSessionId,poolEntries:T.size}),await new Promise((K)=>X.idleWaiters.add(K)),C1(Z);if(X.fingerprint===Z.fingerprint){X.inUse=!0,X.lastUsed=Date.now();try{let K=await X.sessionPromise;if(K.isAlive()){if(X.frontendSessionId)E("session_pool.reuse",{frontendSessionId:X.frontendSessionId,poolEntries:T.size});return K}}catch{}R0(Z.key,X)}else R0(Z.key,X)}let Q=Z.open();if(a6(),T.set(Z.key,{key:Z.key,frontendSessionId:Z.frontendSessionId??null,fingerprint:Z.fingerprint,sessionPromise:Q,lastUsed:Date.now(),inUse:!0,idleWaiters:new Set}),d6(),Z.frontendSessionId)E("session_pool.open",{frontendSessionId:Z.frontendSessionId,poolEntries:T.size});try{return await Q}catch(K){let Y=T.get(Z.key);if(Y?.sessionPromise===Q)R0(Z.key,Y);throw K}}function B4(Z,X=!1){let Q=T.get(Z);if(!Q)return;if(X){R0(Z,Q);return}if(Q.inUse=!1,Q.lastUsed=Date.now(),Q.frontendSessionId)p6(Q.frontendSessionId),E("session_pool.release",{frontendSessionId:Q.frontendSessionId,poolEntries:T.size});if(i6(),T.get(Z)===Q)O1(Q)}async function f8(Z){let X=Array.from(T.entries()).filter(([,Q])=>Q.frontendSessionId===Z);for(let[Q,K]of X)T.delete(Q),O1(K);return await Promise.all(X.map(([,Q])=>Q.sessionPromise.then((K)=>K.dispose()).catch(()=>{return}))),E("session_pool.frontend_evicted",{frontendSessionId:Z,evictedSessions:X.length,poolEntries:T.size}),X.length}async function s6(){let Z=Array.from(T.values());T.clear();for(let X of Z)O1(X);if(L0!==null)clearInterval(L0),L0=null;await Promise.all(Z.map((X)=>X.sessionPromise.then((Q)=>Q.dispose()).catch(()=>{return})))}function F4(Z){let X=Object.entries(Z.configValues??{}),Q=X.length>0?JSON.stringify(Object.fromEntries(X.sort(([K],[Y])=>K.localeCompare(Y)))):"";return[Z.adapterId,Z.configId??"",Z.modelId??"",Q,Z.mcpUrl??"",Z.runFolder??"",Z.toolSurface??"full"].join(" ")}var v8=!1;function r6(){if(v8)return;v8=!0;let Z=()=>{s6()};process.once("beforeExit",Z),process.once("SIGTERM",Z),process.once("SIGINT",Z)}r6();import{readFileSync as t6}from"node:fs";import{homedir as o6}from"node:os";import{join as R1}from"node:path";function n6(){let Z=o6();switch(process.platform){case"win32":return process.env.APPDATA??R1(Z,"AppData","Roaming");case"darwin":return R1(Z,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??R1(Z,".config")}}function h8(){let Z=process.env.IDEAWAVE_MCP_JSON_PATH;if(Z&&Z.trim().length>0)return Z;return R1(n6(),"ideawave","mcp.json")}var N8=null;function D8(Z){N8=Z}var e6=86400000;function ZZ(){let Z;try{Z=t6(h8(),"utf8")}catch{return null}let X;try{X=JSON.parse(Z)}catch{return null}if(typeof X.url!=="string")return null;if(typeof X.startedAt==="string"){let Q=Date.parse(X.startedAt);if(!Number.isNaN(Q)){if(Date.now()-Q>e6)return null}}if(typeof X.pid==="number"&&X.pid>0)try{process.kill(X.pid,0)}catch(Q){if(Q?.code!=="EPERM")return null}return{url:X.url}}function M8(Z,X={}){let Q=[];if(X.userId&&X.userId.trim().length>0)Q.push({name:"X-Ideawave-User-Id",value:X.userId.trim()});if(X.frontendSessionId&&X.frontendSessionId.trim().length>0)Q.push({name:"X-Ideawave-Frontend-Session-Id",value:X.frontendSessionId.trim()});if(X.toolSurface==="read")Q.push({name:"X-Ideawave-Tool-Surface",value:"read"});if(X.imagesSupported)Q.push({name:"X-Ideawave-Images-Supported",value:"1"});if(X.cardId&&X.cardId.trim().length>0)Q.push({name:"X-Ideawave-Card-Id",value:X.cardId.trim()});if(X.boardId&&X.boardId.trim().length>0)Q.push({name:"X-Ideawave-Board-Id",value:X.boardId.trim()});if(X.runFolder&&X.runFolder.trim().length>0)Q.push({name:"X-Ideawave-Run-Folder",value:X.runFolder.trim()});return{type:"http",name:"ideawave-board",url:Z,headers:Q}}function w4(Z={}){let X=N8;if(X)return M8(X.url,Z);let Q=ZZ();if(!Q)return null;return M8(Q.url,Z)}var $8="browser-proxy-v2",XZ=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","tool_metadata","run_turn","cancel_run","tool_result","request_tool_metadata","tool_call","partial_text","tool_activity","run_settled","runtime_rpc","runtime_rpc_result","browser_rpc","browser_rpc_result","warmup_run","warmup_result"]);function v1(Z){try{let X=JSON.parse(Z);if(X&&typeof X==="object"&&typeof X.type==="string"&&XZ.has(X.type))return X}catch{}return null}function y1(Z){return JSON.stringify(Z)}import o0 from"node:fs/promises";import WZ from"node:path";import{z as M}from"zod";var G8=M.object({id:M.string(),name:M.string().nullable().default(null),description:M.string().nullable().default(null)}),m8=M.union([M.string(),M.boolean()]),QZ=M.object({value:M.string(),name:M.string(),description:M.string().nullable().default(null),group:M.string().nullable().default(null),groupName:M.string().nullable().default(null)}),g8=M.object({id:M.string(),name:M.string(),category:M.string().nullable().default(null),description:M.string().nullable().default(null),type:M.enum(["select","boolean"]),currentValue:m8.nullable().default(null),options:M.array(QZ).default([])}),L4=M.record(M.string(),m8).default({}),JZ=M.discriminatedUnion("kind",[M.object({id:M.string(),kind:M.literal("registered"),adapterId:M.enum(["claude-code","opencode","codex","copilot"]),displayName:M.string(),runFolder:M.string().nullable(),defaultModelId:M.string().nullable().default(null),defaultConfigValues:L4,discoveredModels:M.array(G8).default([]),discoveredConfigOptions:M.array(g8).default([]),discoveredAt:M.string().nullable().default(null)}),M.object({id:M.string(),kind:M.literal("custom"),displayName:M.string(),command:M.string(),args:M.array(M.string()),env:M.record(M.string(),M.string()),runFolder:M.string().nullable(),defaultModelId:M.string().nullable().default(null),defaultConfigValues:L4,discoveredModels:M.array(G8).default([]),discoveredConfigOptions:M.array(g8).default([]),discoveredAt:M.string().nullable().default(null)})]),E8=M.object({runtimeConfigId:M.string(),runFolder:M.string().nullable(),modelId:M.string().nullable().default(null),configValues:L4}),f1=M.object({version:M.literal(1),globalDefaultConfigId:M.string().nullable(),runtimes:M.array(JZ),boardOverrides:M.record(M.string(),E8).default({}),cardOverrides:M.record(M.string(),E8).default({})});import KZ from"node:os";import h1 from"node:path";function YZ(){let Z=KZ.homedir();switch(process.platform){case"win32":return process.env.APPDATA??h1.join(Z,"AppData","Roaming");case"darwin":return h1.join(Z,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??h1.join(Z,".config")}}function M1(){let Z=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(Z)return Z;return h1.join(YZ(),"ideawave","runtimes.json")}var VZ={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},_8=new Map;function jZ(Z){return _8.get(Z)??Promise.resolve()}function zZ(Z,X){_8.set(Z,X)}async function K0(Z){let X=Z??M1(),Q;try{Q=await o0.readFile(X,"utf-8")}catch(Y){if(Y.code==="ENOENT")return structuredClone(VZ);throw Y}return f1.parse(JSON.parse(Q))}async function j0(Z,X){let Q=X??M1(),K=jZ(Q).then(async()=>{let Y=await K0(Q),V=structuredClone(Y),z=await Z(V);return await HZ(V,Q),z});return zZ(Q,K.catch(()=>{return})),K}async function HZ(Z,X){let Q=X??M1(),K=WZ.dirname(Q);await o0.mkdir(K,{recursive:!0});let Y=`${Q}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,V=JSON.stringify(Z,null,2);await o0.writeFile(Y,V,"utf-8");try{await o0.rename(Y,Q)}catch(z){throw await o0.unlink(Y).catch(()=>{return}),z}}import{spawn as OZ}from"node:child_process";import{closeSync as CZ,existsSync as A8,mkdirSync as u8,openSync as RZ,readFileSync as vZ,renameSync as yZ,rmSync as l8,statSync as fZ,unlinkSync as hZ,writeFileSync as MZ}from"node:fs";import I8 from"node:os";import G0 from"node:path";var UZ=/\.(?:cmd|bat)$/i;function qZ(Z){return process.platform==="win32"&&UZ.test(Z)}function N1(Z){return qZ(Z)?{shell:!0,windowsHide:!0}:{}}import{execFile as xZ}from"node:child_process";import{promisify as bZ}from"node:util";import{execFile as BZ}from"node:child_process";import{promisify as FZ}from"node:util";var wZ=FZ(BZ),P4=new Map,k8=5000,LZ=/\.(?:cmd|bat|com|exe)$/i;function PZ(Z){let X=Z.split(/\r?\n/).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(X.length===0)return null;if(process.platform!=="win32")return X[0]??null;return X.find((Q)=>LZ.test(Q))??X[0]??null}async function S8(Z,X=wZ){let Q=P4.get(Z);if(Q&&Q.expiresAt>Date.now())return Q.value;let K=process.platform==="win32"?"where":"which";try{let{stdout:Y}=await X(K,[Z],{timeout:2000}),V=PZ(Y);return P4.set(Z,{value:V,expiresAt:Date.now()+k8}),V}catch{return P4.set(Z,{value:null,expiresAt:Date.now()+k8}),null}}class n0 extends Error{code;constructor(Z,X){super(Z);this.name="AcpError",this.code=X}}class $0 extends n0{constructor(Z="No ACP runtime configured"){super(Z,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class S extends n0{constructor(Z){super(Z,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class u0 extends n0{authMethods;constructor(Z,X){super(Z,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=X}}class q0 extends n0{constructor(Z="ACP session timed out"){super(Z,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var zJ=bZ(xZ);function d(Z,...X){return S8(Z,...X)}function Q0(Z){let X={};for(let[Q,K]of Object.entries(process.env))if(typeof K==="string")X[Q]=K;return{...X,...Z??{}}}var b4=[{adapterId:"claude-code",runtimeBinary:"claude",packageName:"@agentclientprotocol/claude-agent-acp",version:"0.50.0",warmupArgs:["--cli","--help"]},{adapterId:"codex",runtimeBinary:"codex",packageName:"@agentclientprotocol/codex-acp",version:"1.0.2",warmupArgs:["--version"]}],NZ=1800000,D1=new Map;function O4(){if(process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR)return process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR;if(process.platform==="win32"){let Z=process.env.LOCALAPPDATA??G0.join(I8.homedir(),"AppData","Local");return G0.join(Z,"ideawave","acp-bridges")}return G0.join(process.env.XDG_CACHE_HOME??G0.join(I8.homedir(),".cache"),"ideawave","acp-bridges")}function DZ(Z){return Z.replace(/^@/,"").replace(/[/\\]/g,"-")}function $1(){return G0.join(O4(),"install-state.json")}function C4(Z){return G0.join(O4(),`${DZ(Z.packageName)}@${Z.version}.install.lock`)}function R4(){return process.platform==="win32"?"npx.cmd":"npx"}function v4(Z){return`${Z.packageName}@${Z.version}`}function c8(){let Z=$1();if(!A8(Z))return{};try{return JSON.parse(vZ(Z,"utf8"))}catch{return{}}}function x4(Z,X){let Q=O4();u8(Q,{recursive:!0});let K=c8();K.bridges={...K.bridges??{},[Z.adapterId]:X},MZ(`${$1()}.tmp`,`${JSON.stringify(K,null,2)}
3
+ `),yZ(`${$1()}.tmp`,$1())}function d8(Z){return b4.find((X)=>X.packageName===Z)??null}function Y0(Z,X,Q){return{adapterId:Z.adapterId,packageName:Z.packageName,version:Z.version,status:X,...Q?{error:Q}:{}}}function T8(Z,X){return X?.packageName===Z.packageName&&X.version===Z.version}function a8(Z){try{return Date.now()-fZ(Z).mtimeMs>NZ}catch{return!1}}function $Z(Z){let X=C4(Z);if(!A8(X))return!1;if(a8(X))return l8(X,{force:!0}),!1;return!0}function GZ(Z){let X=C4(Z);if(u8(G0.dirname(X),{recursive:!0}),a8(X))l8(X,{force:!0});try{let Q=RZ(X,"wx");return CZ(Q),!0}catch{return!1}}function gZ(Z){hZ(C4(Z))}function y4(Z){let X=c8().bridges?.[Z.adapterId];if(T8(Z,X)&&X.status==="ready")return Y0(Z,"ready");if(D1.has(Z.adapterId)||$Z(Z))return Y0(Z,"installing");if(T8(Z,X)&&X.status==="failed")return Y0(Z,"failed",X.error);return Y0(Z,"missing")}function t0(Z,X){Z?.onStatusChange?.(X)}function EZ(Z,X){let Q=y4(Z);if(Q.status==="ready")return t0(X,Q),Q;if(Q.status==="installing"){let B=D1.get(Z.adapterId);if(B&&X?.onStatusChange)B.then((L)=>t0(X,L));return t0(X,Q),Q}if(!GZ(Z))return Y0(Z,"installing");let K=Y0(Z,"installing");x4(Z,K),t0(X,K);let Y=()=>{},V=new Promise((B)=>{Y=B});D1.set(Z.adapterId,V);let z=!1,U=(B)=>{if(z)return;z=!0;try{gZ(Z)}catch{}x4(Z,B),t0(X,B),D1.delete(Z.adapterId),Y(B)},F;try{let B=R4();F=OZ(B,["-y",v4(Z),...Z.warmupArgs],{stdio:"ignore",windowsHide:!0,...N1(B)})}catch(B){let L=Y0(Z,"failed",B instanceof Error?B.message:String(B));return U(L),L}return F.on("error",(B)=>{U(Y0(Z,"failed",B.message))}),F.on("close",(B)=>{if(B===0){U(Y0(Z,"ready"));return}U(Y0(Z,"failed",`npx warmup exited ${B??"null"}`))}),F.unref(),K}function l0(Z){let X=d8(Z);return X?y4(X):null}async function i8(Z){let X=[];for(let Q of b4){if(!await d(Q.runtimeBinary)){X.push(Y0(Q,"not_needed"));continue}X.push(EZ(Q,Z))}return X.filter((Q)=>Q.status!=="not_needed")}function G1(Z){let X=d8(Z);if(!X)return null;if(y4(X).status!=="ready")return null;return{command:R4(),args:["-y",v4(X)],env:{}}}function f4(Z,X){if(Z.command!==R4())return!1;let Q=b4.find((K)=>Z.args.includes(v4(K)));if(!Q)return!1;return x4(Q,Y0(Q,"failed",X)),!0}var p8="claude",h4="@agentclientprotocol/claude-agent-acp",s8=["claude-agent-acp","claude-code-acp"],r8="Install Claude Code from https://github.com/anthropics/claude-code",o8={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await d(p8))throw new S(`Claude Code CLI not found. ${r8}`);let X=G1(h4);if(X)return{command:X.command,args:X.args,env:Q0(X.env)};let Q=l0(h4),K=Q?.status==="installing";for(let V of s8){let z=await d(V);if(z&&!K&&Q?.status!=="failed")return{command:z,args:[],env:Q0()}}let Y=Q?.status==="failed"?`Claude Code ACP bridge install failed. ${Q.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Claude Code ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new S(Y)},checkReadiness:async()=>{if(!await d(p8))return{status:"not_installed",detail:r8};let X=l0(h4);if(X?.status==="ready")return{status:"ready"};if(X?.status==="installing")return{status:"not_running",detail:"Installing Claude Code ACP bridge..."};if(X?.status==="failed")return{status:"not_running",detail:X.error??"Claude Code ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};for(let Q of s8)if(await d(Q))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var n8="codex",M4="@agentclientprotocol/codex-acp",t8="codex-acp",e8="Install Codex CLI from https://developers.openai.com/codex/cli",Z9={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await d(n8))throw new S(`Codex CLI not found. ${e8}`);let X=G1(M4);if(X)return{command:X.command,args:X.args,env:Q0(X.env)};let Q=l0(M4),K=Q?.status==="installing",Y=await d(t8);if(Y&&!K&&Q?.status!=="failed")return{command:Y,args:[],env:Q0()};let V=Q?.status==="failed"?`Codex ACP bridge install failed. ${Q.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Codex ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new S(V)},checkReadiness:async()=>{if(!await d(n8))return{status:"not_installed",detail:e8};let X=l0(M4);if(X?.status==="ready")return{status:"ready"};if(X?.status==="installing")return{status:"not_running",detail:"Installing Codex ACP bridge..."};if(X?.status==="failed")return{status:"not_running",detail:X.error??"Codex ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};if(await d(t8))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var X9="copilot",Q9="copilot-acp",J9="npm i -g @github/copilot",K9={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let Z=await d(X9);if(Z)return{command:Z,args:["--acp"],env:Q0()};let X=await d(Q9);if(X)return{command:X,args:[],env:Q0()};throw new S(`Copilot not installed. Run: ${J9}`)},checkReadiness:async()=>{if(await d(X9))return{status:"ready"};if(await d(Q9))return{status:"ready"};return{status:"not_installed",detail:J9}},authHint:"Run `gh auth login` (or `copilot login`)."};import mZ from"node:fs/promises";function _Z(Z){return Z.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(Z)}async function Y9(Z){if(_Z(Z))try{return await mZ.access(Z),!0}catch{return!1}return await d(Z)!==null}var W9={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(Z)=>{if(Z.kind!=="custom")throw new S("customAdapter received non-custom entry");if(!await Y9(Z.command))throw new S(`custom: command "${Z.command}" not found`);return{command:Z.command,args:Z.args,env:Q0(Z.env)}},checkReadiness:async(Z)=>{if(Z.kind!=="custom")return{status:"unknown"};return await Y9(Z.command)?{status:"ready"}:{status:"not_installed"}}};var V9="opencode",j9="Install OpenCode from https://opencode.ai",z9={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let Z=await d(V9);if(!Z)throw new S(`OpenCode not installed. ${j9}`);return{command:Z,args:["acp"],env:Q0()}},checkReadiness:async()=>{if(!await d(V9))return{status:"not_installed",detail:j9};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var H9={"claude-code":o8,opencode:z9,codex:Z9,copilot:K9};function B0(Z){if(Z.kind==="custom")return W9;let X=H9[Z.adapterId];if(!X)throw Error(`Unknown registered adapter: ${Z.adapterId}`);return X}function c0(){return Object.values(H9)}var N4=new Map,g1=new Map,kZ=30000;function E1(Z,X){let Q=N4.get(Z);if(Q&&Q.expiresAt>Date.now())return Promise.resolve(Q.value);let K=g1.get(Z);if(K)return K;let Y=X().then((V)=>{return N4.set(Z,{value:V,expiresAt:Date.now()+kZ}),V}).finally(()=>{g1.delete(Z)});return g1.set(Z,Y),Y}async function U9(Z){let X=await Promise.all(c0().map((V)=>E1(V.id,async()=>({adapterId:V.id,...await V.checkReadiness({id:"__probe__",kind:"registered",adapterId:V.id,displayName:V.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),K=(await K0(Z)).runtimes.filter((V)=>V.kind==="custom"),Y=await Promise.all(K.map((V)=>E1(`custom:${V.id}`,async()=>({adapterId:V.id,...await B0(V).checkReadiness(V)}))));return[...X,...Y]}async function q9(Z,X){let Q=c0().find((V)=>V.id===Z);if(Q)return E1(Q.id,async()=>({adapterId:Q.id,...await Q.checkReadiness({id:"__probe__",kind:"registered",adapterId:Q.id,displayName:Q.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})}));let Y=(await K0(X)).runtimes.find((V)=>V.id===Z);if(!Y||Y.kind!=="custom")return null;return E1(`custom:${Y.id}`,async()=>({adapterId:Y.id,...await B0(Y).checkReadiness(Y)}))}function B9(){N4.clear(),g1.clear()}function SZ(Z){if(!Z)return null;let X=Z.indexOf("/");if(X<=0)return null;return Z.slice(0,X)}function m1(Z){let X=[...Z.models];if(Z.adapterId!=="opencode"||X.length===0)return X;let Q=SZ(Z.currentModelId)??(X.some((Y)=>Y.id.startsWith("opencode/"))?"opencode":null);if(!Q)return X;let K=X.filter((Y)=>Y.id===Z.currentModelId||Y.id.startsWith(`${Q}/`));return K.length>0?K:X}import{Readable as eZ,Writable as Z3}from"node:stream";import{ClientSideConnection as y9,ndJsonStream as f9}from"@agentclientprotocol/sdk";import v0 from"node:fs/promises";import X0 from"node:path";class Z1 extends Error{constructor(Z){super(Z);this.name="PathTraversalError"}}class $4 extends Error{constructor(Z){super(Z);this.name="HiddenPathError"}}class G4 extends Error{constructor(Z){super(Z);this.name="RunFolderFileTooLargeError"}}class e0 extends Error{constructor(Z){super(Z);this.name="RunFolderBinaryFileError"}}var IZ=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),F9=1e6,TZ=4096,AZ=new TextDecoder("utf-8",{fatal:!0});function uZ(Z){return Z.split(/[\\/]+/).filter((X)=>X.length>0)}function _1(Z){if(X0.isAbsolute(Z))throw new Z1("Absolute paths are not allowed");for(let X of uZ(Z)){if(X===".")continue;if(X==="..")throw new Z1("Parent-directory traversal is not allowed");if(X.startsWith(".")||IZ.has(X))throw new $4(`Path segment "${X}" is hidden or configuration data`)}}function lZ(Z){_1(Z);let X=X0.normalize(Z||".");return X==="."?"":X}function cZ(Z,X,Q){let K=X0.relative(Z,X);if(K===".."||K.startsWith(`..${X0.sep}`)||X0.isAbsolute(K))throw new Z1(`Path "${Q}" resolves outside the run folder`);if(K.length>0)_1(K);return K}async function D4(Z,X){_1(X);let Q=X0.resolve(Z,X||"."),K;try{K=await v0.realpath(Q)}catch(Y){if(Y.code!=="ENOENT")throw Y;let V=X0.dirname(Q),z=[X0.basename(Q)];while(V!==Z&&V!==X0.dirname(V))try{V=await v0.realpath(V);break}catch(U){if(U.code!=="ENOENT")throw U;z.unshift(X0.basename(V)),V=X0.dirname(V)}K=X0.join(V,...z)}return cZ(Z,K,X),K}async function dZ(Z,X){let Q=await v0.realpath(Z);return D4(Q,X)}function aZ(Z){let X=Z.subarray(0,Math.min(Z.length,TZ));if(X.length===0)return!1;let Q=0;for(let K of X){if(K===0)return!0;let Y=K===9||K===10||K===12||K===13;if(K<32&&!Y)Q+=1}return Q/X.length>0.3}async function k1(Z,X){let Q=await dZ(Z,X),K=await v0.stat(Q);if(!K.isFile())throw new e0(`Path "${X}" is not a text file`);if(K.size>F9)throw new G4(`File "${X}" is too large to read (${K.size} bytes, max ${F9} bytes)`);let Y=await v0.readFile(Q);if(aZ(Y))throw new e0(`File "${X}" appears to be binary, not text`);try{return AZ.decode(Y)}catch{throw new e0(`File "${X}" is not valid UTF-8 text`)}}function iZ(Z){if(Z.isDirectory())return"directory";if(Z.isFile())return"file";if(Z.isSymbolicLink())return"symlink";return"other"}function w9(Z){return Z.split(X0.sep).join("/")}async function L9(Z,X=""){let Q=await v0.realpath(Z),K=lZ(X),Y=await D4(Q,K),V=await v0.readdir(Y,{withFileTypes:!0}),z=[];for(let U of V){let F=K?X0.join(K,U.name):U.name;try{_1(F);let B=await D4(Q,F),L=await v0.stat(B);z.push({name:U.name,path:w9(F),type:iZ(U),size:U.isFile()?L.size:null})}catch{}}return z.sort((U,F)=>{if(U.type==="directory"&&F.type!=="directory")return-1;if(U.type!=="directory"&&F.type==="directory")return 1;return U.name.localeCompare(F.name)}),{path:w9(K),absolutePath:Y,entries:z}}var g4={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1};function P9(Z){return{readTextFile:async(X)=>{return{content:await k1(Z,X.path)}}}}import{spawn as pZ}from"node:child_process";function E4(Z){let X=pZ(Z.command,Z.args,{cwd:Z.cwd,env:Z.env,stdio:["pipe","pipe","pipe"],...N1(Z.command)});if(!X.stdin||!X.stdout||!X.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:Q,stdout:K,stderr:Y}=X,V=4096,z=[],U=0;Y.on("data",(R)=>{z.push(R),U+=R.length;while(U>V*2&&z.length>1){let h=z.shift();if(h)U-=h.length}});let F=()=>{let R=Buffer.concat(z).toString("utf8");return R.length>V?R.slice(-V):R},B=!1,L=!1,f,x,C=new Promise((R)=>{f=R}),y=new Promise((R)=>{x=R}),D=(R)=>{if(L)return;if(L=!0,f(R),!B)x(R)};return X.on("exit",(R,h)=>{D({code:R,signal:h,stderr:F()})}),X.on("error",(R)=>{let h=F(),v=R?.message??String(R);D({code:null,signal:null,stderr:h?`${v}
4
+ ${h}`:v})}),{stdin:Q,stdout:K,stderr:Y,kill:(R="SIGTERM")=>{if(B)return;B=!0;try{X.kill(R)}catch{}},waitForExit:C,processCrashed:y}}var sZ=["mcp_ideawave_board_","ideawave_board_","ideawave-board_","ideawave-board.","ideawave.board."];function rZ(Z){let X=Z.toLowerCase();for(let Q of sZ)if(X.startsWith(Q))return Z.slice(Q.length);if(/^mcp[-_.]/i.test(Z))return Z.slice(4);return Z}function S1(Z){return rZ(Z.trim())}function m4(Z){let X=S1(Z);if(!X)return"Tool";if(!/[-_.]/.test(X))return X.charAt(0).toUpperCase()+X.slice(1);let Q=X.replace(/[-_.]+/g," ").replace(/\s+/g," ").trim();if(!Q)return"Tool";return Q.charAt(0).toUpperCase()+Q.slice(1)}function _4(Z){let X=Z?.toLowerCase();if(X==="completed"||X==="complete"||X==="done"||X==="success"||X==="succeeded")return"completed";if(X==="failed"||X==="error"||X==="errored")return"failed";return"running"}function k4(Z){if(typeof Z!=="string")return null;let X=Z.trim();return X?X:null}function x9(Z){if(typeof Z!=="string")return"Tool";let X=Z.trim();return X?X:"Tool"}function oZ(Z,X){if(!Z||typeof Z!=="object"||Array.isArray(Z))return null;let Q=Z;for(let K of X){let Y=Q[K];if(typeof Y==="string"&&Y.trim())return Y.trim()}return null}function S4(Z,X){let Q=Z.trim().toLowerCase();if(Q==="skill"||Q==="workflow"||Q==="tool"||Q==="invalid"){let K=oZ(X,["skillName","workflowName","toolName","name","title"]);if(K){let Y=Q==="skill"?" skill":Q==="workflow"?" workflow":"";return`${m4(K)}${Y}`}}if(Q==="invalid")return"Tool call";return m4(Z)}var nZ=33,b9=1600;function g0(Z){if(Z.length<=b9)return Z;return`${Z.slice(0,b9-22)}
5
+ ... truncated`}function T1(Z){let X=Z.replace(/\r\n?/g,`
6
6
  `),Q=X.trim();if(Q.startsWith('"')&&Q.endsWith('"')||Q.startsWith("'")&&Q.endsWith("'"))try{let Y=JSON.parse(Q);if(typeof Y==="string")return Y.replace(/\r\n?/g,`
7
7
  `)}catch{return X}if(!X.includes("\\\""))return X;let K=X.replace(/\\r\\n/g,`
8
8
  `).replace(/\\n/g,`
9
9
  `).replace(/\\r/g,`
10
- `).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let Y=JSON.parse(K);if(Y!==null&&typeof Y==="object")return K}catch{return X}return X}function x0(Z){if(Z===void 0||Z===null)return null;if(typeof Z==="string"){let X=S1(Z).trim();return X?G0(X):null}if(typeof Z==="number"||typeof Z==="boolean"||typeof Z==="bigint")return String(Z);try{return G0(JSON.stringify(Z,null,2))}catch{return G0(S1(String(Z)))}}function nZ(Z){if(!Z||typeof Z!=="object")return null;let X=Z;if(X.type==="text"&&typeof X.text==="string")return S1(X.text);if(X.type==="image")return"[image]";if(X.type==="resource")return"[resource]";if(X.type==="content"){let Q=X.content;if(Q&&typeof Q==="object"){let K=Q;if(K.type==="text"&&typeof K.text==="string")return S1(K.text);if(K.type==="image")return"[image]";if(K.type==="resource")return"[resource]"}}if(X.type==="diff")return`Diff: ${typeof X.path==="string"?X.path:"unknown file"}`;if(X.type==="terminal")return`Terminal: ${typeof X.terminalId==="string"?X.terminalId:"terminal"}`;return x0(Z)}function k1(Z){if(!Array.isArray(Z))return null;let X=Z.map(nZ).filter((Q)=>Boolean(Q?.trim()));if(X.length===0)return null;return G0(X.join(`
10
+ `).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let Y=JSON.parse(K);if(Y!==null&&typeof Y==="object")return K}catch{return X}return X}function P0(Z){if(Z===void 0||Z===null)return null;if(typeof Z==="string"){let X=T1(Z).trim();return X?g0(X):null}if(typeof Z==="number"||typeof Z==="boolean"||typeof Z==="bigint")return String(Z);try{return g0(JSON.stringify(Z,null,2))}catch{return g0(T1(String(Z)))}}function tZ(Z){if(!Z||typeof Z!=="object")return null;let X=Z;if(X.type==="text"&&typeof X.text==="string")return T1(X.text);if(X.type==="image")return"[image]";if(X.type==="resource")return"[resource]";if(X.type==="content"){let Q=X.content;if(Q&&typeof Q==="object"){let K=Q;if(K.type==="text"&&typeof K.text==="string")return T1(K.text);if(K.type==="image")return"[image]";if(K.type==="resource")return"[resource]"}}if(X.type==="diff")return`Diff: ${typeof X.path==="string"?X.path:"unknown file"}`;if(X.type==="terminal")return`Terminal: ${typeof X.terminalId==="string"?X.terminalId:"terminal"}`;return P0(Z)}function I1(Z){if(!Array.isArray(Z))return null;let X=Z.map(tZ).filter((Q)=>Boolean(Q?.trim()));if(X.length===0)return null;return g0(X.join(`
11
11
 
12
- `))}function I4(Z){if(!Z||typeof Z!=="object"||Array.isArray(Z))return x0(Z);let X=Z,Q=k1(X.content);if(Q)return Q;for(let V of["output","result","text","message"]){let z=x0(X[V]);if(z)return z}let K=x0(X.stdout),Y=x0(X.stderr);if(K||Y)return G0([K?`stdout:
12
+ `))}function I4(Z){if(!Z||typeof Z!=="object"||Array.isArray(Z))return P0(Z);let X=Z,Q=I1(X.content);if(Q)return Q;for(let V of["output","result","text","message"]){let z=P0(X[V]);if(z)return z}let K=P0(X.stdout),Y=P0(X.stderr);if(K||Y)return g0([K?`stdout:
13
13
  ${K}`:null,Y?`stderr:
14
14
  ${Y}`:null].filter(Boolean).join(`
15
15
 
16
- `));return x0(Z)}function b9(Z,X){if(!X)return Z;if(!Z)return X;if(Z===X||Z.endsWith(X))return Z;if(X.startsWith(Z))return X;return G0(`${Z}
16
+ `));return P0(Z)}function O9(Z,X){if(!X)return Z;if(!Z)return X;if(Z===X||Z.endsWith(X))return Z;if(X.startsWith(Z))return X;return g0(`${Z}
17
17
 
18
- ${X}`)}function T4(Z){if(!Array.isArray(Z))return null;let X=Z.flatMap((Q)=>{if(!Q||typeof Q!=="object")return[];let K=Q;if(typeof K.path!=="string"||!K.path.trim())return[];let Y=typeof K.line==="number"?`:${K.line}`:"";return[`${K.path}${Y}`]});return X.length>0?X.slice(0,5):null}function O9(Z){let{ctx:X,appendText:Q,appendToolActivity:K}=Z,Y=Z.flushIntervalMs??oZ,V="",z="",U=0,F=null,B={},L=new Map,f=(N)=>{if(L.set(N.toolCallId,N),!K)return;K({boardId:X.boardId,cardId:X.cardId,runId:X.runId,entry:N}).catch((x)=>{console.warn("[streamAdapter] appendToolActivity failed",x)})},P=(N)=>{let x=`${X.runId}:thought`,G=L.get(x);if(!G||G.status!=="running")return;f({...G,status:"completed",completedAt:G.completedAt??N})},R=(N)=>{for(let x of L.values()){if(x.status!=="running"||x.rawTitle.toLowerCase()!=="toolsearch")continue;f({...x,status:"completed",completedAt:x.completedAt??N})}},v=(N)=>{for(let x of Array.from(L.values())){if(x.status!=="running")continue;if(x.kind==="thought"||x.rawTitle==="agent_thought")continue;f({...x,status:"completed",completedAt:x.completedAt??N})}},D="",C=0,h=null,y=null,g=(N)=>{if(N===D)return;D=N,C=Date.now(),Q({boardId:X.boardId,cardId:X.cardId,runId:X.runId,text:N}).catch((x)=>{console.warn("[streamAdapter] appendText failed",x)})},$=()=>{if(h!==null)clearTimeout(h),h=null;if(y!==null){let N=y;y=null,g(N)}},I=(N)=>{let x=Date.now()-C;if(x>=Y&&h===null){g(N);return}if(y=N,h===null){let G=Math.max(0,Y-x);h=setTimeout(()=>{h=null,$()},G)}};return{onSessionUpdate:async(N)=>{let x=N.update;switch(B[x.sessionUpdate]=(B[x.sessionUpdate]??0)+1,x.sessionUpdate){case"agent_message_chunk":{let G=new Date().toISOString();if(P(G),x.content.type==="text")V+=x.content.text,I(V);else{let l=`agent_message_chunk:${x.content.type}`;B[l]=(B[l]??0)+1}return}case"agent_thought_chunk":{if(x.content.type!=="text")return;z+=x.content.text;let G=new Date().toISOString(),l=`${X.runId}:thought`,a=L.get(l);f({toolCallId:l,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:a?.startedAt??G,completedAt:null,contentPreview:G0(z.trim())});return}case"user_message_chunk":return;case"tool_call":{U+=1;let G=P9(x.title),l=_4(x.status),a=new Date().toISOString();P(a),R(a),f({toolCallId:x.toolCallId,rawTitle:G,title:S4(G,x.rawInput),kind:k4(x.kind),status:l,startedAt:a,completedAt:l==="running"?null:a,inputPreview:x0(x.rawInput),outputPreview:I4(x.rawOutput),contentPreview:k1(x.content),locations:T4(x.locations)});return}case"tool_call_update":{let G=L.get(x.toolCallId);if(!G){let u=P9(x.title),Z0=_4(x.status),s=new Date().toISOString();f({toolCallId:x.toolCallId,rawTitle:u,title:S4(u,x.rawInput),kind:k4(x.kind),status:Z0,startedAt:s,completedAt:Z0==="running"?null:s,inputPreview:x0(x.rawInput),outputPreview:I4(x.rawOutput),contentPreview:k1(x.content),locations:T4(x.locations)});return}let l=x.status===void 0||x.status===null?G.status:_4(x.status),a=typeof x.title==="string"&&x.title.trim().length>0?x.title:G.rawTitle,T0=typeof x.title==="string"&&x.title.trim().length>0,C0=l==="running"?G.completedAt:G.completedAt??new Date().toISOString(),_=x.content===void 0?G.contentPreview:b9(G.contentPreview,k1(x.content)),i=x.rawOutput===void 0?G.outputPreview:b9(G.outputPreview,I4(x.rawOutput));f({...G,rawTitle:a,title:T0?S4(a,x.rawInput):G.title,kind:x.kind===void 0?G.kind:k4(x.kind),status:l,completedAt:C0,inputPreview:x.rawInput===void 0?G.inputPreview:x0(x.rawInput),outputPreview:i,contentPreview:_,locations:x.locations===void 0?G.locations:T4(x.locations)});return}case"plan":F=x.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>V,getToolCallCount:()=>U,getLatestPlan:()=>F,getUpdateTypeCounts:()=>({...B}),flush:(N)=>{let x=new Date().toISOString();if(P(x),N?.completeOpenToolCalls)v(x);$()}}}var X1=1,C9=-32000;function R9(Z){if(Z.awaitingInput)return!1;return Z.nowMs-Z.lastUpdateMs>=Z.windowMs}function f9(Z){if(!Z||typeof Z!=="object")return!1;return Z.code===C9}var Z3=60000,X3=Z3,Q3=5000;function J3(Z){let X=Math.max(1,Math.round(Z/1000));return`Runtime has not responded for ${X} ${X===1?"second":"seconds"}. Retry the agent run.`}function h9(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.58".trim()?"0.0.58":"dev"}}function M9(Z){if(Z===X1)return;throw new k(`Unsupported ACP protocol version ${Z}; expected ${X1}`)}function N9(Z){return tZ.toWeb(Z)}function D9(Z){return eZ.toWeb(Z)}function A4(Z){return Z!==null&&typeof Z==="object"}function K3(Z){if(!Array.isArray(Z))return[];let X=[];for(let Q of Z){if(!A4(Q))continue;if(typeof Q.group==="string"&&Array.isArray(Q.options)){let K=typeof Q.name==="string"?Q.name:Q.group;for(let Y of Q.options){if(!A4(Y))continue;if(typeof Y.value!=="string"||typeof Y.name!=="string")continue;X.push({value:Y.value,name:Y.name,description:typeof Y.description==="string"?Y.description:null,group:Q.group,groupName:K})}continue}if(typeof Q.value!=="string"||typeof Q.name!=="string")continue;X.push({value:Q.value,name:Q.name,description:typeof Q.description==="string"?Q.description:null,group:null,groupName:null})}return X}function Y3(Z){if(!A4(Z))return null;if(typeof Z.id!=="string"||typeof Z.name!=="string")return null;let X=typeof Z.category==="string"?Z.category:null,Q=typeof Z.description==="string"?Z.description:null;if(Z.type==="select"){let K=typeof Z.currentValue==="string"?Z.currentValue:null;return{id:Z.id,name:Z.name,category:X,description:Q,type:"select",currentValue:K,options:K3(Z.options)}}if(Z.type==="boolean"){let K=typeof Z.currentValue==="boolean"?Z.currentValue:typeof Z.value==="boolean"?Z.value:null;return{id:Z.id,name:Z.name,category:X,description:Q,type:"boolean",currentValue:K,options:[]}}return null}function u4(Z){let X=(Z.configOptions??[]).map(Y3).filter((U)=>U!==null),Q=X.find((U)=>U.type==="select"&&U.category==="model")??X.find((U)=>U.type==="select"&&U.id==="model")??null,K=Q?.options.map((U)=>({id:U.value,name:U.name,description:U.description??null})),Y=W3(Z.models),V=K&&K.length>0?K:Y&&Y.length>0?Y:null,z=(typeof Q?.currentValue==="string"?Q.currentValue:null)??V3(Z.models)??null;return{models:V,currentModelId:z,configOptions:X,modelConfigId:Q?.id??null}}function W3(Z){if(!Z||!Array.isArray(Z.availableModels))return null;let X=[];for(let Q of Z.availableModels){if(typeof Q.modelId!=="string")continue;X.push({id:Q.modelId,name:typeof Q.name==="string"?Q.name:null,description:typeof Q.description==="string"?Q.description:null})}return X.length>0?X:null}function V3(Z){return typeof Z?.currentModelId==="string"?Z.currentModelId:null}function j3(Z,X){let Q=[];if(Z.trim())Q.push({type:"text",text:Z});for(let K of X)if(K.content.trim())Q.push({type:"text",text:K.content});return Q}function z3(Z){if(typeof Z.value==="boolean")return{sessionId:Z.sessionId,configId:Z.configId,type:"boolean",value:Z.value};return{sessionId:Z.sessionId,configId:Z.configId,value:Z.value}}function H3(Z,X){let Q=u4({configOptions:X.configOptions});return{models:Q.models??Z.models,currentModelId:Q.currentModelId??Z.currentModelId,configOptions:Q.configOptions,modelConfigId:Q.modelConfigId??Z.modelConfigId}}function $9(Z,X){if(Z==="default")return null;if(!X||X.length===0)return Z;let Q=X.find((B)=>B.id===Z);if(Q)return Q.id;let K=Z.toLowerCase(),Y=K.includes("opus")?"opus":K.includes("sonnet")?"sonnet":K.includes("haiku")?"haiku":null;if(!Y)return Z;let V=(B)=>`${B.id} ${B.name??""} ${B.description??""}`.toLowerCase(),z=X.filter((B)=>V(B).includes(Y));if(z.length===0)return Z;let F=(K.includes("1m")?z.find((B)=>V(B).includes("1m")):void 0)??z[0];return F?F.id:Z}async function I1(Z){try{let X=await Z.conn.setSessionConfigOption(z3({sessionId:Z.sessionId,configId:Z.configId,value:Z.value}));return H3(Z.metadata,X)}catch(X){return console.warn(`[acp] setSessionConfigOption(${Z.label}) failed; using agent default.`,X instanceof Error?X.message:X),Z.metadata}}async function l4(Z){let X=E4(Z.spawn),Q=[],K=0,Y=4096;X.stderr.on("data",(_)=>{Q.push(_),K+=_.length;while(K>Y*2&&Q.length>1){let i=Q.shift();if(i)K-=i.length}});let V=()=>{let _=Buffer.concat(Q).toString("utf8");return _.length>Y?_.slice(-Y):_},z=L9(Z.spawn.cwd),U={current:null},F={current:null},B={at:Date.now()},L=null,f=D9(X.stdin),P=N9(X.stdout),R=y9(f,P),D=new v9((_)=>({requestPermission:async(i)=>{let u=i.options,Z0=u?.find((s)=>s.kind==="allow_once")??u?.find((s)=>s.kind==="allow_always");if(Z0)return{outcome:{outcome:"selected",optionId:Z0.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(i)=>{B.at=Date.now();let u=F.current;if(u){let s=i.update.sessionUpdate;if(u.updateCount+=1,u.updateCount===1||u.lastUpdateType!==s||s==="tool_call"||s==="tool_call_update")E("acp.session_update",{runId:u.runId,cardId:u.cardId,sessionId:L,updateType:s,updateCount:u.updateCount,elapsedMs:Date.now()-u.startedAt});u.lastUpdateType=s}let Z0=U.current;if(Z0)await Z0.onSessionUpdate(i)},readTextFile:z.readTextFile}),R),C=()=>X.kill();if(Z.signal)Z.signal.addEventListener("abort",C);let h=()=>{if(Z.signal)Z.signal.removeEventListener("abort",C)},y=async(_,i)=>{if(h(),X.kill(),f9(_))throw new u0(_.message??"Authentication required",i);if(_ instanceof Error&&_.message==="ACP connection closed"){if(Z.signal?.aborted)throw new k("ACP session cancelled: abort signal received");let u=await Promise.race([X.processCrashed,X.waitForExit,new Promise((Z0)=>setTimeout(()=>Z0({stderr:""}),500))]);throw new k(`Runtime process exited before completion: ${u.stderr?.trim()??""}`)}throw _},g;try{g=await D.initialize({protocolVersion:X1,clientCapabilities:g4,clientInfo:h9()})}catch(_){throw await y(_,[]),Error("unreachable")}try{M9(g.protocolVersion)}catch(_){throw h(),X.kill(),_}let $=g.authMethods?.map((_)=>_.id)??[],I;try{I=await D.newSession({cwd:Z.spawn.cwd,mcpServers:Z.mcpServers??[]})}catch(_){throw await y(_,$),Error("unreachable")}let N=I.sessionId;L=N;let x=u4(I),G=Z.modelId??null,l=G?$9(G,x.models):null;if(l&&l!==x.currentModelId)if(x.modelConfigId)x=await I1({conn:D,sessionId:N,configId:x.modelConfigId,value:l,metadata:x,label:`${x.modelConfigId}=${l}`});else console.warn(`[acp] runtime did not advertise a model config option for ${l}; using agent default.`);for(let[_,i]of Object.entries(Z.configValues??{}).sort(([u],[Z0])=>u.localeCompare(Z0))){if(_===x.modelConfigId)continue;if(!x.configOptions.some((u)=>u.id===_))continue;x=await I1({conn:D,sessionId:N,configId:_,value:i,metadata:x,label:`${_}=${String(i)}`})}h();let a=!1,T0=async()=>{if(a)return;a=!0,X.kill(),await Promise.race([X.waitForExit,new Promise((_)=>setTimeout(_,2000))])},C0=!1;return X.processCrashed.then(()=>{C0=!0}),{sessionId:N,availableModels:x.models,currentModelId:x.currentModelId,availableConfigOptions:x.configOptions,isAlive:()=>!a&&!C0,dispose:T0,prompt:(_)=>U3({proc:X,conn:D,sessionId:N,activeAdapter:U,activeTrace:F,lastUpdate:B,collectStderrTail:V},_)}}async function U3(Z,X){let{proc:Q,conn:K,sessionId:Y,activeAdapter:V,activeTrace:z,lastUpdate:U}=Z,F=Date.now(),B=X.heartbeatMs??X3,L=J3(B),f={boardId:X.boardId,cardId:X.cardId,runId:X.runId},P=O9({ctx:f,appendText:X.appendText,appendToolActivity:X.appendToolActivity});V.current=P,z.current={runId:X.runId,cardId:X.cardId,startedAt:F,updateCount:0,lastUpdateType:null},U.at=Date.now(),E("acp.prompt_started",{runId:X.runId,cardId:X.cardId,sessionId:Y,heartbeatWindowMs:B});let R=!1,v=null,D=()=>Q.kill();X.signal.addEventListener("abort",D);try{let C=async()=>{let $=Math.min(Q3,Math.max(50,Math.floor(B/2)));v=setInterval(()=>{let N=X.isAwaitingInput?.()??!1;if(N){U.at=Date.now();return}if(R9({nowMs:Date.now(),lastUpdateMs:U.at,windowMs:B,awaitingInput:N}))R=!0,E("acp.inactivity_timeout",{runId:X.runId,cardId:X.cardId,sessionId:Y,windowMs:B,silentForMs:Date.now()-U.at}),K.cancel({sessionId:Y}).catch(()=>{return}),Q.kill()},$);let I=j3(X.prompt.systemPrompt,X.prompt.messages);await K.prompt({sessionId:Y,prompt:I}),E("acp.prompt_resolved",{runId:X.runId,cardId:X.cardId,sessionId:Y,elapsedMs:Date.now()-F}),P.flush({completeOpenToolCalls:!0})},h=Q.waitForExit.then(($)=>({kind:"exited",exit:$})),y=C().then(()=>({kind:"ok"})).catch(async($)=>{if($ instanceof Error&&$.message==="ACP connection closed")return{kind:"crashed",exit:await Promise.race([Q.processCrashed,Q.waitForExit])};throw $}),g;try{g=await Promise.race([y,Q.processCrashed.then(($)=>({kind:"crashed",exit:$})),h])}catch($){if(R)throw new q0(L);throw $}if(R)throw new q0(L);if(g.kind==="crashed")throw new k(`Runtime process exited before completion: ${g.exit.stderr.trim()}`);if(g.kind==="exited"){if(X.signal.aborted)throw new k("ACP session cancelled: abort signal received");if(R)throw new q0(L);throw new k(`Runtime process exited unexpectedly: ${g.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:P.getFinalText(),toolCallsExecuted:P.getToolCallCount(),stderrTail:Z.collectStderrTail(),updateTypeCounts:P.getUpdateTypeCounts()}}finally{if(E("acp.prompt_finished",{runId:X.runId,cardId:X.cardId,sessionId:Y,elapsedMs:Date.now()-F,timedOut:R,updateCount:z.current?.updateCount??0}),v!==null)clearInterval(v);X.signal.removeEventListener("abort",D),P.flush({completeOpenToolCalls:!0}),V.current=null,z.current=null}}var q3=30000;async function G9(Z){let X=E4(Z.spawn),Q=D9(X.stdin),K=N9(X.stdout),Y=y9(Q,K),z=new v9((B)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),Y),U=()=>X.kill();if(Z.signal)Z.signal.addEventListener("abort",U);let F=null;try{let B=(async()=>{let f=await z.initialize({protocolVersion:X1,clientCapabilities:g4,clientInfo:h9()});M9(f.protocolVersion);let P=f.authMethods?.map((g)=>g.id)??[],R;try{R=await z.newSession({cwd:Z.spawn.cwd,mcpServers:[]})}catch(g){if(f9(g))throw new u0(g.message??"Authentication required",P);throw g}let v=u4(R),D=Z.modelId??null,C=D?$9(D,v.models):null;if(C&&C!==v.currentModelId)if(v.modelConfigId)v=await I1({conn:z,sessionId:R.sessionId,configId:v.modelConfigId,value:C,metadata:v,label:`${v.modelConfigId}=${C}`});else console.warn(`[acp] runtime did not advertise a model config option for ${C}; discovering agent default models.`);for(let[g,$]of Object.entries(Z.configValues??{}).sort(([I],[N])=>I.localeCompare(N))){if(g===v.modelConfigId)continue;if(!v.configOptions.some((I)=>I.id===g))continue;v=await I1({conn:z,sessionId:R.sessionId,configId:g,value:$,metadata:v,label:`${g}=${String($)}`})}let h=v.models??[],y=v.currentModelId;return z.cancel({sessionId:R.sessionId}).catch(()=>{return}),{models:h,configOptions:v.configOptions,currentModelId:y}})(),L=new Promise((f,P)=>{F=setTimeout(()=>{P(new q0)},q3)});return await Promise.race([B,L])}catch(B){if(B instanceof Error&&B.message==="ACP connection closed"){if(Z.signal?.aborted)throw new k("ACP model discovery cancelled: abort signal received");throw new k("Runtime process exited during model discovery.")}throw B}finally{if(F)clearTimeout(F);if(Z.signal)Z.signal.removeEventListener("abort",U);X.kill()}}import B3 from"node:fs/promises";import T1 from"node:os";async function g9(Z){let X={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},Q;try{Q=await B3.readFile(Z,"utf-8")}catch(K){if(K.code==="ENOENT")return structuredClone(X);throw K}return v1.parse(JSON.parse(Q))}function c4(Z,X,Q){return{...Z.defaultConfigValues??{},...X?.configValues??{},...Q?.configValues??{}}}async function y0(Z){let X=Z.configPath?await g9(Z.configPath):await K0(),Q=Z.cardId?X.cardOverrides[Z.cardId]:void 0;if(Q?.runtimeConfigId){let Y=X.runtimes.find((V)=>V.id===Q.runtimeConfigId);if(Y)return{entry:Y,adapter:B0(Y),runFolder:Q.runFolder??Y.runFolder??T1.homedir(),modelId:Q.modelId??Y.defaultModelId??null,configValues:c4(Y,void 0,Q)}}let K=X.boardOverrides[Z.boardId];if(K?.runtimeConfigId){let Y=X.runtimes.find((V)=>V.id===K.runtimeConfigId);if(Y)return{entry:Y,adapter:B0(Y),runFolder:K.runFolder??Y.runFolder??T1.homedir(),modelId:K.modelId??Y.defaultModelId??null,configValues:c4(Y,K)}}if(X.globalDefaultConfigId){let Y=X.runtimes.find((V)=>V.id===X.globalDefaultConfigId);if(Y)return{entry:Y,adapter:B0(Y),runFolder:Q?.runFolder??K?.runFolder??Y.runFolder??T1.homedir(),modelId:Q?.modelId??K?.modelId??Y.defaultModelId??null,configValues:c4(Y,K,Q)}}throw new D0}async function E9(Z,X={}){let K=(X.configPath?await g9(X.configPath):await K0()).runtimes.find((Y)=>Y.id===Z);if(!K)return null;return{entry:K,adapter:B0(K),runFolder:K.runFolder??T1.homedir(),modelId:X.modelId??K.defaultModelId??null,configValues:{...K.defaultConfigValues??{},...X.configValues??{}}}}var m9=new Map;function d4(Z,X){if(!Z)return;m9.set(Z,X)}function _9(Z){if(!Z)return!1;return m9.get(Z)??!1}var g0=new Map,a4=new Set;function p4(Z){g0.get(Z)?.controller.abort()}function k9(Z){for(let[X,Q]of g0){if(Q.frontendSessionId!==Z)continue;Q.controller.abort(),g0.delete(X)}}function S9(){for(let Z of g0.values())Z.controller.abort();g0.clear()}function i4(Z,X){if(X?.aborted)return!0;return Z instanceof Error&&/abort signal received|session cancelled/i.test(Z.message)}function I9(Z,X,Q,K){if((!X.availableModels||X.availableModels.length===0)&&X.availableConfigOptions.length===0)return;j0((Y)=>{let V=Y.runtimes.find((z)=>z.id===Z);if(V){if(X.availableModels&&X.availableModels.length>0)V.discoveredModels=g1({adapterId:Q,models:X.availableModels,currentModelId:X.currentModelId??K});if(X.availableConfigOptions.length>0)V.discoveredConfigOptions=X.availableConfigOptions}}).catch(()=>{return})}function F3(Z,X){return`${Z}
18
+ ${X}`)}function T4(Z){if(!Array.isArray(Z))return null;let X=Z.flatMap((Q)=>{if(!Q||typeof Q!=="object")return[];let K=Q;if(typeof K.path!=="string"||!K.path.trim())return[];let Y=typeof K.line==="number"?`:${K.line}`:"";return[`${K.path}${Y}`]});return X.length>0?X.slice(0,5):null}function C9(Z){let{ctx:X,appendText:Q,appendToolActivity:K}=Z,Y=Z.flushIntervalMs??nZ,V="",z="",U=0,F=null,B={},L=new Map,f=(N)=>{if(L.set(N.toolCallId,N),!K)return;K({boardId:X.boardId,cardId:X.cardId,runId:X.runId,entry:N}).catch((P)=>{console.warn("[streamAdapter] appendToolActivity failed",P)})},x=(N)=>{let P=`${X.runId}:thought`,G=L.get(P);if(!G||G.status!=="running")return;f({...G,status:"completed",completedAt:G.completedAt??N})},C=(N)=>{for(let P of L.values()){if(P.status!=="running"||P.rawTitle.toLowerCase()!=="toolsearch")continue;f({...P,status:"completed",completedAt:P.completedAt??N})}},y=(N)=>{for(let P of Array.from(L.values())){if(P.status!=="running")continue;if(P.kind==="thought"||P.rawTitle==="agent_thought")continue;f({...P,status:"completed",completedAt:P.completedAt??N})}},D="",R=0,h=null,v=null,g=(N)=>{if(N===D)return;D=N,R=Date.now(),Q({boardId:X.boardId,cardId:X.cardId,runId:X.runId,text:N}).catch((P)=>{console.warn("[streamAdapter] appendText failed",P)})},$=()=>{if(h!==null)clearTimeout(h),h=null;if(v!==null){let N=v;v=null,g(N)}},I=(N)=>{let P=Date.now()-R;if(P>=Y&&h===null){g(N);return}if(v=N,h===null){let G=Math.max(0,Y-P);h=setTimeout(()=>{h=null,$()},G)}};return{onSessionUpdate:async(N)=>{let P=N.update;switch(B[P.sessionUpdate]=(B[P.sessionUpdate]??0)+1,P.sessionUpdate){case"agent_message_chunk":{let G=new Date().toISOString();if(x(G),P.content.type==="text")V+=P.content.text,I(V);else{let l=`agent_message_chunk:${P.content.type}`;B[l]=(B[l]??0)+1}return}case"agent_thought_chunk":{if(P.content.type!=="text")return;z+=P.content.text;let G=new Date().toISOString(),l=`${X.runId}:thought`,a=L.get(l);f({toolCallId:l,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:a?.startedAt??G,completedAt:null,contentPreview:g0(z.trim())});return}case"user_message_chunk":return;case"tool_call":{U+=1;let G=x9(P.title),l=_4(P.status),a=new Date().toISOString();x(a),C(a),f({toolCallId:P.toolCallId,rawTitle:G,title:S4(G,P.rawInput),kind:k4(P.kind),status:l,startedAt:a,completedAt:l==="running"?null:a,inputPreview:P0(P.rawInput),outputPreview:I4(P.rawOutput),contentPreview:I1(P.content),locations:T4(P.locations)});return}case"tool_call_update":{let G=L.get(P.toolCallId);if(!G){let u=x9(P.title),Z0=_4(P.status),s=new Date().toISOString();f({toolCallId:P.toolCallId,rawTitle:u,title:S4(u,P.rawInput),kind:k4(P.kind),status:Z0,startedAt:s,completedAt:Z0==="running"?null:s,inputPreview:P0(P.rawInput),outputPreview:I4(P.rawOutput),contentPreview:I1(P.content),locations:T4(P.locations)});return}let l=P.status===void 0||P.status===null?G.status:_4(P.status),a=typeof P.title==="string"&&P.title.trim().length>0?P.title:G.rawTitle,T0=typeof P.title==="string"&&P.title.trim().length>0,C0=l==="running"?G.completedAt:G.completedAt??new Date().toISOString(),_=P.content===void 0?G.contentPreview:O9(G.contentPreview,I1(P.content)),i=P.rawOutput===void 0?G.outputPreview:O9(G.outputPreview,I4(P.rawOutput));f({...G,rawTitle:a,title:T0?S4(a,P.rawInput):G.title,kind:P.kind===void 0?G.kind:k4(P.kind),status:l,completedAt:C0,inputPreview:P.rawInput===void 0?G.inputPreview:P0(P.rawInput),outputPreview:i,contentPreview:_,locations:P.locations===void 0?G.locations:T4(P.locations)});return}case"plan":F=P.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>V,getToolCallCount:()=>U,getLatestPlan:()=>F,getUpdateTypeCounts:()=>({...B}),flush:(N)=>{let P=new Date().toISOString();if(x(P),N?.completeOpenToolCalls)y(P);$()}}}var X1=1,R9=-32000;function v9(Z){if(Z.awaitingInput)return!1;return Z.nowMs-Z.lastUpdateMs>=Z.windowMs}function h9(Z){if(!Z||typeof Z!=="object")return!1;return Z.code===R9}var X3=60000,Q3=X3,J3=5000;function K3(Z){let X=Math.max(1,Math.round(Z/1000));return`Runtime has not responded for ${X} ${X===1?"second":"seconds"}. Retry the agent run.`}function M9(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.59".trim()?"0.0.59":"dev"}}function N9(Z){if(Z===X1)return;throw new S(`Unsupported ACP protocol version ${Z}; expected ${X1}`)}function D9(Z){return eZ.toWeb(Z)}function $9(Z){return Z3.toWeb(Z)}function A4(Z){return Z!==null&&typeof Z==="object"}function Y3(Z){if(!Array.isArray(Z))return[];let X=[];for(let Q of Z){if(!A4(Q))continue;if(typeof Q.group==="string"&&Array.isArray(Q.options)){let K=typeof Q.name==="string"?Q.name:Q.group;for(let Y of Q.options){if(!A4(Y))continue;if(typeof Y.value!=="string"||typeof Y.name!=="string")continue;X.push({value:Y.value,name:Y.name,description:typeof Y.description==="string"?Y.description:null,group:Q.group,groupName:K})}continue}if(typeof Q.value!=="string"||typeof Q.name!=="string")continue;X.push({value:Q.value,name:Q.name,description:typeof Q.description==="string"?Q.description:null,group:null,groupName:null})}return X}function W3(Z){if(!A4(Z))return null;if(typeof Z.id!=="string"||typeof Z.name!=="string")return null;let X=typeof Z.category==="string"?Z.category:null,Q=typeof Z.description==="string"?Z.description:null;if(Z.type==="select"){let K=typeof Z.currentValue==="string"?Z.currentValue:null;return{id:Z.id,name:Z.name,category:X,description:Q,type:"select",currentValue:K,options:Y3(Z.options)}}if(Z.type==="boolean"){let K=typeof Z.currentValue==="boolean"?Z.currentValue:typeof Z.value==="boolean"?Z.value:null;return{id:Z.id,name:Z.name,category:X,description:Q,type:"boolean",currentValue:K,options:[]}}return null}function u4(Z){let X=(Z.configOptions??[]).map(W3).filter((U)=>U!==null),Q=X.find((U)=>U.type==="select"&&U.category==="model")??X.find((U)=>U.type==="select"&&U.id==="model")??null,K=Q?.options.map((U)=>({id:U.value,name:U.name,description:U.description??null})),Y=V3(Z.models),V=K&&K.length>0?K:Y&&Y.length>0?Y:null,z=(typeof Q?.currentValue==="string"?Q.currentValue:null)??j3(Z.models)??null;return{models:V,currentModelId:z,configOptions:X,modelConfigId:Q?.id??null}}function V3(Z){if(!Z||!Array.isArray(Z.availableModels))return null;let X=[];for(let Q of Z.availableModels){if(typeof Q.modelId!=="string")continue;X.push({id:Q.modelId,name:typeof Q.name==="string"?Q.name:null,description:typeof Q.description==="string"?Q.description:null})}return X.length>0?X:null}function j3(Z){return typeof Z?.currentModelId==="string"?Z.currentModelId:null}function z3(Z,X){let Q=[];if(Z.trim())Q.push({type:"text",text:Z});for(let K of X)if(K.content.trim())Q.push({type:"text",text:K.content});return Q}function H3(Z){if(typeof Z.value==="boolean")return{sessionId:Z.sessionId,configId:Z.configId,type:"boolean",value:Z.value};return{sessionId:Z.sessionId,configId:Z.configId,value:Z.value}}function U3(Z,X){let Q=u4({configOptions:X.configOptions});return{models:Q.models??Z.models,currentModelId:Q.currentModelId??Z.currentModelId,configOptions:Q.configOptions,modelConfigId:Q.modelConfigId??Z.modelConfigId}}function G9(Z,X){if(Z==="default")return null;if(!X||X.length===0)return Z;let Q=X.find((B)=>B.id===Z);if(Q)return Q.id;let K=Z.toLowerCase(),Y=K.includes("opus")?"opus":K.includes("sonnet")?"sonnet":K.includes("haiku")?"haiku":null;if(!Y)return Z;let V=(B)=>`${B.id} ${B.name??""} ${B.description??""}`.toLowerCase(),z=X.filter((B)=>V(B).includes(Y));if(z.length===0)return Z;let F=(K.includes("1m")?z.find((B)=>V(B).includes("1m")):void 0)??z[0];return F?F.id:Z}async function A1(Z){try{let X=await Z.conn.setSessionConfigOption(H3({sessionId:Z.sessionId,configId:Z.configId,value:Z.value}));return U3(Z.metadata,X)}catch(X){return console.warn(`[acp] setSessionConfigOption(${Z.label}) failed; using agent default.`,X instanceof Error?X.message:X),Z.metadata}}async function l4(Z){let X=E4(Z.spawn),Q=[],K=0,Y=4096;X.stderr.on("data",(_)=>{Q.push(_),K+=_.length;while(K>Y*2&&Q.length>1){let i=Q.shift();if(i)K-=i.length}});let V=()=>{let _=Buffer.concat(Q).toString("utf8");return _.length>Y?_.slice(-Y):_},z=P9(Z.spawn.cwd),U={current:null},F={current:null},B={at:Date.now()},L=null,f=$9(X.stdin),x=D9(X.stdout),C=f9(f,x),D=new y9((_)=>({requestPermission:async(i)=>{let u=i.options,Z0=u?.find((s)=>s.kind==="allow_once")??u?.find((s)=>s.kind==="allow_always");if(Z0)return{outcome:{outcome:"selected",optionId:Z0.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(i)=>{B.at=Date.now();let u=F.current;if(u){let s=i.update.sessionUpdate;if(u.updateCount+=1,u.updateCount===1||u.lastUpdateType!==s||s==="tool_call"||s==="tool_call_update")E("acp.session_update",{runId:u.runId,cardId:u.cardId,sessionId:L,updateType:s,updateCount:u.updateCount,elapsedMs:Date.now()-u.startedAt});u.lastUpdateType=s}let Z0=U.current;if(Z0)await Z0.onSessionUpdate(i)},readTextFile:z.readTextFile}),C),R=()=>X.kill();if(Z.signal)Z.signal.addEventListener("abort",R);let h=()=>{if(Z.signal)Z.signal.removeEventListener("abort",R)},v=async(_,i)=>{if(h(),X.kill(),h9(_))throw new u0(_.message??"Authentication required",i);if(_ instanceof Error&&_.message==="ACP connection closed"){if(Z.signal?.aborted)throw new S("ACP session cancelled: abort signal received");let u=await Promise.race([X.processCrashed,X.waitForExit,new Promise((Z0)=>setTimeout(()=>Z0({stderr:""}),500))]);throw new S(`Runtime process exited before completion: ${u.stderr?.trim()??""}`)}throw _},g;try{g=await D.initialize({protocolVersion:X1,clientCapabilities:g4,clientInfo:M9()})}catch(_){throw await v(_,[]),Error("unreachable")}try{N9(g.protocolVersion)}catch(_){throw h(),X.kill(),_}let $=g.authMethods?.map((_)=>_.id)??[],I;try{I=await D.newSession({cwd:Z.spawn.cwd,mcpServers:Z.mcpServers??[]})}catch(_){throw await v(_,$),Error("unreachable")}let N=I.sessionId;L=N;let P=u4(I),G=Z.modelId??null,l=G?G9(G,P.models):null;if(l&&l!==P.currentModelId)if(P.modelConfigId)P=await A1({conn:D,sessionId:N,configId:P.modelConfigId,value:l,metadata:P,label:`${P.modelConfigId}=${l}`});else console.warn(`[acp] runtime did not advertise a model config option for ${l}; using agent default.`);for(let[_,i]of Object.entries(Z.configValues??{}).sort(([u],[Z0])=>u.localeCompare(Z0))){if(_===P.modelConfigId)continue;if(!P.configOptions.some((u)=>u.id===_))continue;P=await A1({conn:D,sessionId:N,configId:_,value:i,metadata:P,label:`${_}=${String(i)}`})}h();let a=!1,T0=async()=>{if(a)return;a=!0,X.kill(),await Promise.race([X.waitForExit,new Promise((_)=>setTimeout(_,2000))])},C0=!1;return X.processCrashed.then(()=>{C0=!0}),{sessionId:N,availableModels:P.models,currentModelId:P.currentModelId,availableConfigOptions:P.configOptions,isAlive:()=>!a&&!C0,dispose:T0,prompt:(_)=>q3({proc:X,conn:D,sessionId:N,activeAdapter:U,activeTrace:F,lastUpdate:B,collectStderrTail:V},_)}}async function q3(Z,X){let{proc:Q,conn:K,sessionId:Y,activeAdapter:V,activeTrace:z,lastUpdate:U}=Z,F=Date.now(),B=X.heartbeatMs??Q3,L=K3(B),f={boardId:X.boardId,cardId:X.cardId,runId:X.runId},x=C9({ctx:f,appendText:X.appendText,appendToolActivity:X.appendToolActivity});V.current=x,z.current={runId:X.runId,cardId:X.cardId,startedAt:F,updateCount:0,lastUpdateType:null},U.at=Date.now(),E("acp.prompt_started",{runId:X.runId,cardId:X.cardId,sessionId:Y,heartbeatWindowMs:B});let C=!1,y=null,D=()=>Q.kill();X.signal.addEventListener("abort",D);try{let R=async()=>{let $=Math.min(J3,Math.max(50,Math.floor(B/2)));y=setInterval(()=>{let N=X.isAwaitingInput?.()??!1;if(N){U.at=Date.now();return}if(v9({nowMs:Date.now(),lastUpdateMs:U.at,windowMs:B,awaitingInput:N}))C=!0,E("acp.inactivity_timeout",{runId:X.runId,cardId:X.cardId,sessionId:Y,windowMs:B,silentForMs:Date.now()-U.at}),K.cancel({sessionId:Y}).catch(()=>{return}),Q.kill()},$);let I=z3(X.prompt.systemPrompt,X.prompt.messages);await K.prompt({sessionId:Y,prompt:I}),E("acp.prompt_resolved",{runId:X.runId,cardId:X.cardId,sessionId:Y,elapsedMs:Date.now()-F}),x.flush({completeOpenToolCalls:!0})},h=Q.waitForExit.then(($)=>({kind:"exited",exit:$})),v=R().then(()=>({kind:"ok"})).catch(async($)=>{if($ instanceof Error&&$.message==="ACP connection closed")return{kind:"crashed",exit:await Promise.race([Q.processCrashed,Q.waitForExit])};throw $}),g;try{g=await Promise.race([v,Q.processCrashed.then(($)=>({kind:"crashed",exit:$})),h])}catch($){if(C)throw new q0(L);throw $}if(C)throw new q0(L);if(g.kind==="crashed")throw new S(`Runtime process exited before completion: ${g.exit.stderr.trim()}`);if(g.kind==="exited"){if(X.signal.aborted)throw new S("ACP session cancelled: abort signal received");if(C)throw new q0(L);throw new S(`Runtime process exited unexpectedly: ${g.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:x.getFinalText(),toolCallsExecuted:x.getToolCallCount(),stderrTail:Z.collectStderrTail(),updateTypeCounts:x.getUpdateTypeCounts()}}finally{if(E("acp.prompt_finished",{runId:X.runId,cardId:X.cardId,sessionId:Y,elapsedMs:Date.now()-F,timedOut:C,updateCount:z.current?.updateCount??0}),y!==null)clearInterval(y);X.signal.removeEventListener("abort",D),x.flush({completeOpenToolCalls:!0}),V.current=null,z.current=null}}var B3=30000;async function g9(Z){let X=E4(Z.spawn),Q=$9(X.stdin),K=D9(X.stdout),Y=f9(Q,K),z=new y9((B)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),Y),U=()=>X.kill();if(Z.signal)Z.signal.addEventListener("abort",U);let F=null;try{let B=(async()=>{let f=await z.initialize({protocolVersion:X1,clientCapabilities:g4,clientInfo:M9()});N9(f.protocolVersion);let x=f.authMethods?.map((g)=>g.id)??[],C;try{C=await z.newSession({cwd:Z.spawn.cwd,mcpServers:[]})}catch(g){if(h9(g))throw new u0(g.message??"Authentication required",x);throw g}let y=u4(C),D=Z.modelId??null,R=D?G9(D,y.models):null;if(R&&R!==y.currentModelId)if(y.modelConfigId)y=await A1({conn:z,sessionId:C.sessionId,configId:y.modelConfigId,value:R,metadata:y,label:`${y.modelConfigId}=${R}`});else console.warn(`[acp] runtime did not advertise a model config option for ${R}; discovering agent default models.`);for(let[g,$]of Object.entries(Z.configValues??{}).sort(([I],[N])=>I.localeCompare(N))){if(g===y.modelConfigId)continue;if(!y.configOptions.some((I)=>I.id===g))continue;y=await A1({conn:z,sessionId:C.sessionId,configId:g,value:$,metadata:y,label:`${g}=${String($)}`})}let h=y.models??[],v=y.currentModelId;return z.cancel({sessionId:C.sessionId}).catch(()=>{return}),{models:h,configOptions:y.configOptions,currentModelId:v}})(),L=new Promise((f,x)=>{F=setTimeout(()=>{x(new q0)},B3)});return await Promise.race([B,L])}catch(B){if(B instanceof Error&&B.message==="ACP connection closed"){if(Z.signal?.aborted)throw new S("ACP model discovery cancelled: abort signal received");throw new S("Runtime process exited during model discovery.")}throw B}finally{if(F)clearTimeout(F);if(Z.signal)Z.signal.removeEventListener("abort",U);X.kill()}}import F3 from"node:fs/promises";import u1 from"node:os";async function E9(Z){let X={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},Q;try{Q=await F3.readFile(Z,"utf-8")}catch(K){if(K.code==="ENOENT")return structuredClone(X);throw K}return f1.parse(JSON.parse(Q))}function c4(Z,X,Q){return{...Z.defaultConfigValues??{},...X?.configValues??{},...Q?.configValues??{}}}async function y0(Z){let X=Z.configPath?await E9(Z.configPath):await K0(),Q=Z.cardId?X.cardOverrides[Z.cardId]:void 0;if(Q?.runtimeConfigId){let Y=X.runtimes.find((V)=>V.id===Q.runtimeConfigId);if(Y)return{entry:Y,adapter:B0(Y),runFolder:Q.runFolder??Y.runFolder??u1.homedir(),modelId:Q.modelId??Y.defaultModelId??null,configValues:c4(Y,void 0,Q)}}let K=X.boardOverrides[Z.boardId];if(K?.runtimeConfigId){let Y=X.runtimes.find((V)=>V.id===K.runtimeConfigId);if(Y)return{entry:Y,adapter:B0(Y),runFolder:K.runFolder??Y.runFolder??u1.homedir(),modelId:K.modelId??Y.defaultModelId??null,configValues:c4(Y,K)}}if(X.globalDefaultConfigId){let Y=X.runtimes.find((V)=>V.id===X.globalDefaultConfigId);if(Y)return{entry:Y,adapter:B0(Y),runFolder:Q?.runFolder??K?.runFolder??Y.runFolder??u1.homedir(),modelId:Q?.modelId??K?.modelId??Y.defaultModelId??null,configValues:c4(Y,K,Q)}}throw new $0}async function m9(Z,X={}){let K=(X.configPath?await E9(X.configPath):await K0()).runtimes.find((Y)=>Y.id===Z);if(!K)return null;return{entry:K,adapter:B0(K),runFolder:K.runFolder??u1.homedir(),modelId:X.modelId??K.defaultModelId??null,configValues:{...K.defaultConfigValues??{},...X.configValues??{}}}}var _9=new Map;function d4(Z,X){if(!Z)return;_9.set(Z,X)}function k9(Z){if(!Z)return!1;return _9.get(Z)??!1}var E0=new Map,a4=new Set;function p4(Z){E0.get(Z)?.controller.abort()}function S9(Z){for(let[X,Q]of E0){if(Q.frontendSessionId!==Z)continue;Q.controller.abort(),E0.delete(X)}}function I9(){for(let Z of E0.values())Z.controller.abort();E0.clear()}function i4(Z,X){if(X?.aborted)return!0;return Z instanceof Error&&/abort signal received|session cancelled/i.test(Z.message)}function T9(Z,X,Q,K){if((!X.availableModels||X.availableModels.length===0)&&X.availableConfigOptions.length===0)return;j0((Y)=>{let V=Y.runtimes.find((z)=>z.id===Z);if(V){if(X.availableModels&&X.availableModels.length>0)V.discoveredModels=m1({adapterId:Q,models:X.availableModels,currentModelId:X.currentModelId??K});if(X.availableConfigOptions.length>0)V.discoveredConfigOptions=X.availableConfigOptions}}).catch(()=>{return})}function w3(Z,X){return`${Z}
19
19
 
20
20
  Runtime run folder:
21
21
  - Effective run folder: ${X}
22
22
  - When the user says "my folder", "current folder", or "run folder", they mean this selected runtime folder.
23
23
  - Use list_run_folder and read_run_folder_file for run-folder inspection. Do not use attached context-card tools for this unless the user asks about attached board context.
24
- - Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}async function T9(Z,X){let Q=Date.now(),K=new AbortController;g0.set(Z.runId,{controller:K,frontendSessionId:Z.frontendSessionId}),a4.add(Z.cardId),E("cli.run_started",{runId:Z.runId,cardId:Z.cardId,frontendSessionId:Z.frontendSessionId});let Y=q4(Z.userId,Z.frontendSessionId,Z.cardId),V=!1,z=null;try{let F=(Z.runtimeConfigIdHint?await E9(Z.runtimeConfigIdHint,{modelId:Z.modelHint??null}):null)??await y0({boardId:Z.boardId,cardId:Z.cardId}),B=await F.adapter.resolveSpawnConfig(F.entry),L=Z.toolSurface??"full",f=F.adapter.supportsImages===!0;z=B;let P=w4({userId:Z.userId,frontendSessionId:Z.frontendSessionId,boardId:Z.boardId,toolSurface:L,imagesSupported:f,cardId:Z.cardId,runFolder:F.runFolder}),R=P?[P]:[];d4(Z.cardId,f);let v=Z.modelHint??F.modelId,D=F4({adapterId:F.adapter.id,configId:F.entry.id,modelId:v,configValues:F.configValues,mcpUrl:P?.url??null,runFolder:F.runFolder,toolSurface:L});E("cli.session_acquire_started",{runId:Z.runId,cardId:Z.cardId,frontendSessionId:Z.frontendSessionId});let C=await C1({key:Y,frontendSessionId:Z.frontendSessionId,fingerprint:D,open:()=>l4({spawn:{...B,cwd:F.runFolder},mcpServers:R,modelId:v,configValues:F.configValues,signal:K.signal})});E("cli.session_acquired",{runId:Z.runId,cardId:Z.cardId,frontendSessionId:Z.frontendSessionId,elapsedMs:Date.now()-Q}),I9(F.entry.id,C,F.adapter.id,v);let h;try{let y=0,g="";E("cli.prompt_started",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q}),h=await C.prompt({runId:Z.runId,boardId:Z.boardId,cardId:Z.cardId,prompt:{systemPrompt:F3(Z.systemPrompt,F.runFolder),messages:Z.promptMessages.map(($)=>({role:$.role,content:$.content}))},signal:K.signal,appendText:async({text:$})=>{if(y+=1,y===1)E("cli.first_partial_text_forwarded",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,textLength:$.length});X({type:"partial_text",runId:Z.runId,cardId:Z.cardId,text:$})},appendToolActivity:async({entry:$})=>{let I=`${$.toolCallId}:${$.status}`;if(I!==g)g=I,E("cli.tool_activity_forwarded",{runId:Z.runId,cardId:Z.cardId,toolCallId:$.toolCallId,toolStatus:$.status,elapsedMs:Date.now()-Q});X({type:"tool_activity",runId:Z.runId,cardId:Z.cardId,activity:$})}})}catch(y){if(!C.isAlive()||y instanceof k||y instanceof q0)V=!0;throw y}X({type:"run_settled",runId:Z.runId,cardId:Z.cardId,result:{assistantContent:h.finalText,model:h.modelReported??null,latencyMs:Date.now()-Q,errorText:null,partialText:null}}),E("cli.run_settled",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,hasError:!1})}catch(U){let F=U instanceof Error?U.message:"Agent run failed";if(U instanceof k&&z&&!i4(U,K.signal))f4(z,F);if(!i4(U,K.signal))console.error(`[ideawave-cli] run ${Z.runId} failed:`,F);X({type:"run_settled",runId:Z.runId,cardId:Z.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-Q,errorText:F,partialText:null}}),E("cli.run_settled",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,hasError:!0,errorName:U instanceof Error?U.name:"unknown"})}finally{B4(Y,V),g0.delete(Z.runId),a4.delete(Z.cardId),E("cli.run_released",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,sessionDead:V})}}async function A9(Z){if(a4.has(Z.cardId))return{status:"skipped"};let X=q4(Z.userId,Z.frontendSessionId,Z.cardId),Q=null;try{let K=await y0({boardId:Z.boardId,cardId:Z.cardId}),Y=await K.adapter.resolveSpawnConfig(K.entry);Q=Y;let V=w4({userId:Z.userId,frontendSessionId:Z.frontendSessionId,boardId:Z.boardId,cardId:Z.cardId,runFolder:K.runFolder}),z=V?[V]:[];d4(Z.cardId,K.adapter.supportsImages===!0);let U=F4({adapterId:K.adapter.id,configId:K.entry.id,modelId:K.modelId,configValues:K.configValues,mcpUrl:V?.url??null,runFolder:K.runFolder}),F=new AbortController,B=await C1({key:X,frontendSessionId:Z.frontendSessionId,fingerprint:U,open:()=>l4({spawn:{...Y,cwd:K.runFolder},mcpServers:z,modelId:K.modelId,configValues:K.configValues,signal:F.signal})});return I9(K.entry.id,B,K.adapter.id,K.modelId),B4(X,!1),console.log(`[ideawave-cli] warmed runtime for card ${Z.cardId}`),{status:"ready"}}catch(K){if(K instanceof D0)return{status:"skipped"};let Y=K instanceof Error?K.message:String(K);if(K instanceof k&&Q&&!i4(K))f4(Q,Y);if(K instanceof k&&/(not ready|installing|warming|retry in a moment)/i.test(Y))return{status:"retryable",error:Y};return console.warn(`[ideawave-cli] warmup failed for card ${Z.cardId}:`,Y),{status:"failed",error:Y}}}import{randomBytes as j6,randomUUID as t2}from"node:crypto";import*as Y4 from"css-tree";var w3=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),A="�",W;(function(Z){Z[Z.EOF=-1]="EOF",Z[Z.NULL=0]="NULL",Z[Z.TABULATION=9]="TABULATION",Z[Z.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",Z[Z.LINE_FEED=10]="LINE_FEED",Z[Z.FORM_FEED=12]="FORM_FEED",Z[Z.SPACE=32]="SPACE",Z[Z.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",Z[Z.QUOTATION_MARK=34]="QUOTATION_MARK",Z[Z.AMPERSAND=38]="AMPERSAND",Z[Z.APOSTROPHE=39]="APOSTROPHE",Z[Z.HYPHEN_MINUS=45]="HYPHEN_MINUS",Z[Z.SOLIDUS=47]="SOLIDUS",Z[Z.DIGIT_0=48]="DIGIT_0",Z[Z.DIGIT_9=57]="DIGIT_9",Z[Z.SEMICOLON=59]="SEMICOLON",Z[Z.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",Z[Z.EQUALS_SIGN=61]="EQUALS_SIGN",Z[Z.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",Z[Z.QUESTION_MARK=63]="QUESTION_MARK",Z[Z.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",Z[Z.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",Z[Z.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",Z[Z.GRAVE_ACCENT=96]="GRAVE_ACCENT",Z[Z.LATIN_SMALL_A=97]="LATIN_SMALL_A",Z[Z.LATIN_SMALL_Z=122]="LATIN_SMALL_Z"})(W||(W={}));var t={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function A1(Z){return Z>=55296&&Z<=57343}function u9(Z){return Z>=56320&&Z<=57343}function l9(Z,X){return(Z-55296)*1024+9216+X}function u1(Z){return Z!==32&&Z!==10&&Z!==13&&Z!==9&&Z!==12&&Z>=1&&Z<=31||Z>=127&&Z<=159}function l1(Z){return Z>=64976&&Z<=65007||w3.has(Z)}var w;(function(Z){Z.controlCharacterInInputStream="control-character-in-input-stream",Z.noncharacterInInputStream="noncharacter-in-input-stream",Z.surrogateInInputStream="surrogate-in-input-stream",Z.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",Z.endTagWithAttributes="end-tag-with-attributes",Z.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",Z.unexpectedSolidusInTag="unexpected-solidus-in-tag",Z.unexpectedNullCharacter="unexpected-null-character",Z.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",Z.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",Z.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",Z.missingEndTagName="missing-end-tag-name",Z.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",Z.unknownNamedCharacterReference="unknown-named-character-reference",Z.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",Z.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",Z.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",Z.eofBeforeTagName="eof-before-tag-name",Z.eofInTag="eof-in-tag",Z.missingAttributeValue="missing-attribute-value",Z.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",Z.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",Z.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",Z.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",Z.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",Z.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",Z.missingDoctypePublicIdentifier="missing-doctype-public-identifier",Z.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",Z.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",Z.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",Z.cdataInHtmlContent="cdata-in-html-content",Z.incorrectlyOpenedComment="incorrectly-opened-comment",Z.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",Z.eofInDoctype="eof-in-doctype",Z.nestedComment="nested-comment",Z.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",Z.eofInComment="eof-in-comment",Z.incorrectlyClosedComment="incorrectly-closed-comment",Z.eofInCdata="eof-in-cdata",Z.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",Z.nullCharacterReference="null-character-reference",Z.surrogateCharacterReference="surrogate-character-reference",Z.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",Z.controlCharacterReference="control-character-reference",Z.noncharacterCharacterReference="noncharacter-character-reference",Z.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",Z.missingDoctypeName="missing-doctype-name",Z.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",Z.duplicateAttribute="duplicate-attribute",Z.nonConformingDoctype="non-conforming-doctype",Z.missingDoctype="missing-doctype",Z.misplacedDoctype="misplaced-doctype",Z.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",Z.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",Z.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",Z.openElementsLeftAfterEof="open-elements-left-after-eof",Z.abandonedHeadElementChild="abandoned-head-element-child",Z.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",Z.nestedNoscriptInHead="nested-noscript-in-head",Z.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(w||(w={}));var P3=65536;class s4{constructor(Z){this.handler=Z,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=P3,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(Z,X){let{line:Q,col:K,offset:Y}=this,V=K+X,z=Y+X;return{code:Z,startLine:Q,endLine:Q,startCol:V,endCol:V,startOffset:z,endOffset:z}}_err(Z){if(this.handler.onParseError&&this.lastErrOffset!==this.offset)this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(Z,0))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(Z){if(this.pos!==this.html.length-1){let X=this.html.charCodeAt(this.pos+1);if(u9(X))return this.pos++,this._addGap(),l9(Z,X)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,W.EOF;return this._err(w.surrogateInInputStream),Z}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){if(this.willDropParsedChunk())this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0}write(Z,X){if(this.html.length>0)this.html+=Z;else this.html=Z;this.endOfChunkHit=!1,this.lastChunkWritten=X}insertHtmlAtCurrentPos(Z){this.html=this.html.substring(0,this.pos+1)+Z+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(Z,X){if(this.pos+Z.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(X)return this.html.startsWith(Z,this.pos);for(let Q=0;Q<Z.length;Q++)if((this.html.charCodeAt(this.pos+Q)|32)!==Z.charCodeAt(Q))return!1;return!0}peek(Z){let X=this.pos+Z;if(X>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,W.EOF;let Q=this.html.charCodeAt(X);return Q===W.CARRIAGE_RETURN?W.LINE_FEED:Q}advance(){if(this.pos++,this.isEol)this.isEol=!1,this.line++,this.lineStartPos=this.pos;if(this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,W.EOF;let Z=this.html.charCodeAt(this.pos);if(Z===W.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,W.LINE_FEED;if(Z===W.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,A1(Z))Z=this._processSurrogate(Z);if(!(this.handler.onParseError===null||Z>31&&Z<127||Z===W.LINE_FEED||Z===W.CARRIAGE_RETURN||Z>159&&Z<64976))this._checkForProblematicCharacters(Z);return Z}_checkForProblematicCharacters(Z){if(u1(Z))this._err(w.controlCharacterInInputStream);else if(l1(Z))this._err(w.noncharacterInInputStream)}retreat(Z){this.pos-=Z;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var m;(function(Z){Z[Z.CHARACTER=0]="CHARACTER",Z[Z.NULL_CHARACTER=1]="NULL_CHARACTER",Z[Z.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",Z[Z.START_TAG=3]="START_TAG",Z[Z.END_TAG=4]="END_TAG",Z[Z.COMMENT=5]="COMMENT",Z[Z.DOCTYPE=6]="DOCTYPE",Z[Z.EOF=7]="EOF",Z[Z.HIBERNATION=8]="HIBERNATION"})(m||(m={}));function c1(Z,X){for(let Q=Z.attrs.length-1;Q>=0;Q--)if(Z.attrs[Q].name===X)return Z.attrs[Q].value;return null}var b3=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function c9(Z){if(Z>=55296&&Z<=57343||Z>1114111)return 65533;return b3.get(Z)??Z}function d9(Z){let X=atob(Z),Q=X.length&-2,K=new Uint16Array(Q/2);for(let Y=0,V=0;Y<Q;Y+=2){let z=X.charCodeAt(Y),U=X.charCodeAt(Y+1);K[V++]=z|U<<8}return K}var r4=d9("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var r;(function(Z){Z[Z.VALUE_LENGTH=49152]="VALUE_LENGTH",Z[Z.FLAG13=8192]="FLAG13",Z[Z.BRANCH_LENGTH=8064]="BRANCH_LENGTH",Z[Z.JUMP_TABLE=127]="JUMP_TABLE"})(r||(r={}));var c;(function(Z){Z[Z.NUM=35]="NUM",Z[Z.SEMI=59]="SEMI",Z[Z.EQUALS=61]="EQUALS",Z[Z.ZERO=48]="ZERO",Z[Z.NINE=57]="NINE",Z[Z.LOWER_A=97]="LOWER_A",Z[Z.LOWER_F=102]="LOWER_F",Z[Z.LOWER_X=120]="LOWER_X",Z[Z.LOWER_Z=122]="LOWER_Z",Z[Z.UPPER_A=65]="UPPER_A",Z[Z.UPPER_F=70]="UPPER_F",Z[Z.UPPER_Z=90]="UPPER_Z"})(c||(c={}));var a9=32;function o4(Z){return Z>=c.ZERO&&Z<=c.NINE}function O3(Z){return Z>=c.UPPER_A&&Z<=c.UPPER_F||Z>=c.LOWER_A&&Z<=c.LOWER_F}function C3(Z){return Z>=c.UPPER_A&&Z<=c.UPPER_Z||Z>=c.LOWER_A&&Z<=c.LOWER_Z||o4(Z)}function R3(Z){return Z===c.EQUALS||C3(Z)}var p;(function(Z){Z[Z.EntityStart=0]="EntityStart",Z[Z.NumericStart=1]="NumericStart",Z[Z.NumericDecimal=2]="NumericDecimal",Z[Z.NumericHex=3]="NumericHex",Z[Z.NamedEntity=4]="NamedEntity"})(p||(p={}));var F0;(function(Z){Z[Z.Legacy=0]="Legacy",Z[Z.Strict=1]="Strict",Z[Z.Attribute=2]="Attribute"})(F0||(F0={}));class n4{decodeTree;emitCodePoint;errors;constructor(Z,X,Q){this.decodeTree=Z,this.emitCodePoint=X,this.errors=Q}state=p.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=F0.Strict;runConsumed=0;startEntity(Z){this.decodeMode=Z,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(Z,X){switch(this.state){case p.EntityStart:{if(Z.charCodeAt(X)===c.NUM)return this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(Z,X+1);return this.state=p.NamedEntity,this.stateNamedEntity(Z,X)}case p.NumericStart:return this.stateNumericStart(Z,X);case p.NumericDecimal:return this.stateNumericDecimal(Z,X);case p.NumericHex:return this.stateNumericHex(Z,X);case p.NamedEntity:return this.stateNamedEntity(Z,X)}}stateNumericStart(Z,X){if(X>=Z.length)return-1;if((Z.charCodeAt(X)|a9)===c.LOWER_X)return this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(Z,X+1);return this.state=p.NumericDecimal,this.stateNumericDecimal(Z,X)}stateNumericHex(Z,X){while(X<Z.length){let Q=Z.charCodeAt(X);if(o4(Q)||O3(Q)){let K=Q<=c.NINE?Q-c.ZERO:(Q|a9)-c.LOWER_A+10;this.result=this.result*16+K,this.consumed++,X++}else return this.emitNumericEntity(Q,3)}return-1}stateNumericDecimal(Z,X){while(X<Z.length){let Q=Z.charCodeAt(X);if(o4(Q))this.result=this.result*10+(Q-c.ZERO),this.consumed++,X++;else return this.emitNumericEntity(Q,2)}return-1}emitNumericEntity(Z,X){if(this.consumed<=X)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(Z===c.SEMI)this.consumed+=1;else if(this.decodeMode===F0.Strict)return 0;if(this.emitCodePoint(c9(this.result),this.consumed),this.errors){if(Z!==c.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(Z,X){let{decodeTree:Q}=this,K=Q[this.treeIndex],Y=(K&r.VALUE_LENGTH)>>14;while(X<Z.length){if(Y===0&&(K&r.FLAG13)!==0){let z=(K&r.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let U=K&r.JUMP_TABLE;if(Z.charCodeAt(X)!==U)return this.result===0?0:this.emitNotTerminatedNamedEntity();X++,this.excess++,this.runConsumed++}while(this.runConsumed<z){if(X>=Z.length)return-1;let U=this.runConsumed-1,F=Q[this.treeIndex+1+(U>>1)],B=U%2===0?F&255:F>>8&255;if(Z.charCodeAt(X)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();X++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(z>>1),K=Q[this.treeIndex],Y=(K&r.VALUE_LENGTH)>>14}if(X>=Z.length)break;let V=Z.charCodeAt(X);if(V===c.SEMI&&Y!==0&&(K&r.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.treeIndex=v3(Q,K,this.treeIndex+Math.max(1,Y),V),this.treeIndex<0)return this.result===0||this.decodeMode===F0.Attribute&&(Y===0||R3(V))?0:this.emitNotTerminatedNamedEntity();if(K=Q[this.treeIndex],Y=(K&r.VALUE_LENGTH)>>14,Y!==0){if(V===c.SEMI)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.decodeMode!==F0.Strict&&(K&r.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}X++,this.excess++}return-1}emitNotTerminatedNamedEntity(){let{result:Z,decodeTree:X}=this,Q=(X[Z]&r.VALUE_LENGTH)>>14;return this.emitNamedEntityData(Z,Q,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(Z,X,Q){let{decodeTree:K}=this;if(this.emitCodePoint(X===1?K[Z]&~(r.VALUE_LENGTH|r.FLAG13):K[Z+1],Q),X===3)this.emitCodePoint(K[Z+2],Q);return Q}end(){switch(this.state){case p.NamedEntity:return this.result!==0&&(this.decodeMode!==F0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}}}function v3(Z,X,Q,K){let Y=(X&r.BRANCH_LENGTH)>>7,V=X&r.JUMP_TABLE;if(Y===0)return V!==0&&K===V?Q:-1;if(V){let B=K-V;return B<0||B>=Y?-1:Z[Q+B]-1}let z=Y+1>>1,U=0,F=Y-1;while(U<=F){let B=U+F>>>1,L=B>>1,P=Z[Q+L]>>(B&1)*8&255;if(P<K)U=B+1;else if(P>K)F=B-1;else return Z[Q+z+B]}return-1}var b;(function(Z){Z.HTML="http://www.w3.org/1999/xhtml",Z.MATHML="http://www.w3.org/1998/Math/MathML",Z.SVG="http://www.w3.org/2000/svg",Z.XLINK="http://www.w3.org/1999/xlink",Z.XML="http://www.w3.org/XML/1998/namespace",Z.XMLNS="http://www.w3.org/2000/xmlns/"})(b||(b={}));var b0;(function(Z){Z.TYPE="type",Z.ACTION="action",Z.ENCODING="encoding",Z.PROMPT="prompt",Z.NAME="name",Z.COLOR="color",Z.FACE="face",Z.SIZE="size"})(b0||(b0={}));var e;(function(Z){Z.NO_QUIRKS="no-quirks",Z.QUIRKS="quirks",Z.LIMITED_QUIRKS="limited-quirks"})(e||(e={}));var q;(function(Z){Z.A="a",Z.ADDRESS="address",Z.ANNOTATION_XML="annotation-xml",Z.APPLET="applet",Z.AREA="area",Z.ARTICLE="article",Z.ASIDE="aside",Z.B="b",Z.BASE="base",Z.BASEFONT="basefont",Z.BGSOUND="bgsound",Z.BIG="big",Z.BLOCKQUOTE="blockquote",Z.BODY="body",Z.BR="br",Z.BUTTON="button",Z.CAPTION="caption",Z.CENTER="center",Z.CODE="code",Z.COL="col",Z.COLGROUP="colgroup",Z.DD="dd",Z.DESC="desc",Z.DETAILS="details",Z.DIALOG="dialog",Z.DIR="dir",Z.DIV="div",Z.DL="dl",Z.DT="dt",Z.EM="em",Z.EMBED="embed",Z.FIELDSET="fieldset",Z.FIGCAPTION="figcaption",Z.FIGURE="figure",Z.FONT="font",Z.FOOTER="footer",Z.FOREIGN_OBJECT="foreignObject",Z.FORM="form",Z.FRAME="frame",Z.FRAMESET="frameset",Z.H1="h1",Z.H2="h2",Z.H3="h3",Z.H4="h4",Z.H5="h5",Z.H6="h6",Z.HEAD="head",Z.HEADER="header",Z.HGROUP="hgroup",Z.HR="hr",Z.HTML="html",Z.I="i",Z.IMG="img",Z.IMAGE="image",Z.INPUT="input",Z.IFRAME="iframe",Z.KEYGEN="keygen",Z.LABEL="label",Z.LI="li",Z.LINK="link",Z.LISTING="listing",Z.MAIN="main",Z.MALIGNMARK="malignmark",Z.MARQUEE="marquee",Z.MATH="math",Z.MENU="menu",Z.META="meta",Z.MGLYPH="mglyph",Z.MI="mi",Z.MO="mo",Z.MN="mn",Z.MS="ms",Z.MTEXT="mtext",Z.NAV="nav",Z.NOBR="nobr",Z.NOFRAMES="noframes",Z.NOEMBED="noembed",Z.NOSCRIPT="noscript",Z.OBJECT="object",Z.OL="ol",Z.OPTGROUP="optgroup",Z.OPTION="option",Z.P="p",Z.PARAM="param",Z.PLAINTEXT="plaintext",Z.PRE="pre",Z.RB="rb",Z.RP="rp",Z.RT="rt",Z.RTC="rtc",Z.RUBY="ruby",Z.S="s",Z.SCRIPT="script",Z.SEARCH="search",Z.SECTION="section",Z.SELECT="select",Z.SOURCE="source",Z.SMALL="small",Z.SPAN="span",Z.STRIKE="strike",Z.STRONG="strong",Z.STYLE="style",Z.SUB="sub",Z.SUMMARY="summary",Z.SUP="sup",Z.TABLE="table",Z.TBODY="tbody",Z.TEMPLATE="template",Z.TEXTAREA="textarea",Z.TFOOT="tfoot",Z.TD="td",Z.TH="th",Z.THEAD="thead",Z.TITLE="title",Z.TR="tr",Z.TRACK="track",Z.TT="tt",Z.U="u",Z.UL="ul",Z.SVG="svg",Z.VAR="var",Z.WBR="wbr",Z.XMP="xmp"})(q||(q={}));var J;(function(Z){Z[Z.UNKNOWN=0]="UNKNOWN",Z[Z.A=1]="A",Z[Z.ADDRESS=2]="ADDRESS",Z[Z.ANNOTATION_XML=3]="ANNOTATION_XML",Z[Z.APPLET=4]="APPLET",Z[Z.AREA=5]="AREA",Z[Z.ARTICLE=6]="ARTICLE",Z[Z.ASIDE=7]="ASIDE",Z[Z.B=8]="B",Z[Z.BASE=9]="BASE",Z[Z.BASEFONT=10]="BASEFONT",Z[Z.BGSOUND=11]="BGSOUND",Z[Z.BIG=12]="BIG",Z[Z.BLOCKQUOTE=13]="BLOCKQUOTE",Z[Z.BODY=14]="BODY",Z[Z.BR=15]="BR",Z[Z.BUTTON=16]="BUTTON",Z[Z.CAPTION=17]="CAPTION",Z[Z.CENTER=18]="CENTER",Z[Z.CODE=19]="CODE",Z[Z.COL=20]="COL",Z[Z.COLGROUP=21]="COLGROUP",Z[Z.DD=22]="DD",Z[Z.DESC=23]="DESC",Z[Z.DETAILS=24]="DETAILS",Z[Z.DIALOG=25]="DIALOG",Z[Z.DIR=26]="DIR",Z[Z.DIV=27]="DIV",Z[Z.DL=28]="DL",Z[Z.DT=29]="DT",Z[Z.EM=30]="EM",Z[Z.EMBED=31]="EMBED",Z[Z.FIELDSET=32]="FIELDSET",Z[Z.FIGCAPTION=33]="FIGCAPTION",Z[Z.FIGURE=34]="FIGURE",Z[Z.FONT=35]="FONT",Z[Z.FOOTER=36]="FOOTER",Z[Z.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",Z[Z.FORM=38]="FORM",Z[Z.FRAME=39]="FRAME",Z[Z.FRAMESET=40]="FRAMESET",Z[Z.H1=41]="H1",Z[Z.H2=42]="H2",Z[Z.H3=43]="H3",Z[Z.H4=44]="H4",Z[Z.H5=45]="H5",Z[Z.H6=46]="H6",Z[Z.HEAD=47]="HEAD",Z[Z.HEADER=48]="HEADER",Z[Z.HGROUP=49]="HGROUP",Z[Z.HR=50]="HR",Z[Z.HTML=51]="HTML",Z[Z.I=52]="I",Z[Z.IMG=53]="IMG",Z[Z.IMAGE=54]="IMAGE",Z[Z.INPUT=55]="INPUT",Z[Z.IFRAME=56]="IFRAME",Z[Z.KEYGEN=57]="KEYGEN",Z[Z.LABEL=58]="LABEL",Z[Z.LI=59]="LI",Z[Z.LINK=60]="LINK",Z[Z.LISTING=61]="LISTING",Z[Z.MAIN=62]="MAIN",Z[Z.MALIGNMARK=63]="MALIGNMARK",Z[Z.MARQUEE=64]="MARQUEE",Z[Z.MATH=65]="MATH",Z[Z.MENU=66]="MENU",Z[Z.META=67]="META",Z[Z.MGLYPH=68]="MGLYPH",Z[Z.MI=69]="MI",Z[Z.MO=70]="MO",Z[Z.MN=71]="MN",Z[Z.MS=72]="MS",Z[Z.MTEXT=73]="MTEXT",Z[Z.NAV=74]="NAV",Z[Z.NOBR=75]="NOBR",Z[Z.NOFRAMES=76]="NOFRAMES",Z[Z.NOEMBED=77]="NOEMBED",Z[Z.NOSCRIPT=78]="NOSCRIPT",Z[Z.OBJECT=79]="OBJECT",Z[Z.OL=80]="OL",Z[Z.OPTGROUP=81]="OPTGROUP",Z[Z.OPTION=82]="OPTION",Z[Z.P=83]="P",Z[Z.PARAM=84]="PARAM",Z[Z.PLAINTEXT=85]="PLAINTEXT",Z[Z.PRE=86]="PRE",Z[Z.RB=87]="RB",Z[Z.RP=88]="RP",Z[Z.RT=89]="RT",Z[Z.RTC=90]="RTC",Z[Z.RUBY=91]="RUBY",Z[Z.S=92]="S",Z[Z.SCRIPT=93]="SCRIPT",Z[Z.SEARCH=94]="SEARCH",Z[Z.SECTION=95]="SECTION",Z[Z.SELECT=96]="SELECT",Z[Z.SOURCE=97]="SOURCE",Z[Z.SMALL=98]="SMALL",Z[Z.SPAN=99]="SPAN",Z[Z.STRIKE=100]="STRIKE",Z[Z.STRONG=101]="STRONG",Z[Z.STYLE=102]="STYLE",Z[Z.SUB=103]="SUB",Z[Z.SUMMARY=104]="SUMMARY",Z[Z.SUP=105]="SUP",Z[Z.TABLE=106]="TABLE",Z[Z.TBODY=107]="TBODY",Z[Z.TEMPLATE=108]="TEMPLATE",Z[Z.TEXTAREA=109]="TEXTAREA",Z[Z.TFOOT=110]="TFOOT",Z[Z.TD=111]="TD",Z[Z.TH=112]="TH",Z[Z.THEAD=113]="THEAD",Z[Z.TITLE=114]="TITLE",Z[Z.TR=115]="TR",Z[Z.TRACK=116]="TRACK",Z[Z.TT=117]="TT",Z[Z.U=118]="U",Z[Z.UL=119]="UL",Z[Z.SVG=120]="SVG",Z[Z.VAR=121]="VAR",Z[Z.WBR=122]="WBR",Z[Z.XMP=123]="XMP"})(J||(J={}));var y3=new Map([[q.A,J.A],[q.ADDRESS,J.ADDRESS],[q.ANNOTATION_XML,J.ANNOTATION_XML],[q.APPLET,J.APPLET],[q.AREA,J.AREA],[q.ARTICLE,J.ARTICLE],[q.ASIDE,J.ASIDE],[q.B,J.B],[q.BASE,J.BASE],[q.BASEFONT,J.BASEFONT],[q.BGSOUND,J.BGSOUND],[q.BIG,J.BIG],[q.BLOCKQUOTE,J.BLOCKQUOTE],[q.BODY,J.BODY],[q.BR,J.BR],[q.BUTTON,J.BUTTON],[q.CAPTION,J.CAPTION],[q.CENTER,J.CENTER],[q.CODE,J.CODE],[q.COL,J.COL],[q.COLGROUP,J.COLGROUP],[q.DD,J.DD],[q.DESC,J.DESC],[q.DETAILS,J.DETAILS],[q.DIALOG,J.DIALOG],[q.DIR,J.DIR],[q.DIV,J.DIV],[q.DL,J.DL],[q.DT,J.DT],[q.EM,J.EM],[q.EMBED,J.EMBED],[q.FIELDSET,J.FIELDSET],[q.FIGCAPTION,J.FIGCAPTION],[q.FIGURE,J.FIGURE],[q.FONT,J.FONT],[q.FOOTER,J.FOOTER],[q.FOREIGN_OBJECT,J.FOREIGN_OBJECT],[q.FORM,J.FORM],[q.FRAME,J.FRAME],[q.FRAMESET,J.FRAMESET],[q.H1,J.H1],[q.H2,J.H2],[q.H3,J.H3],[q.H4,J.H4],[q.H5,J.H5],[q.H6,J.H6],[q.HEAD,J.HEAD],[q.HEADER,J.HEADER],[q.HGROUP,J.HGROUP],[q.HR,J.HR],[q.HTML,J.HTML],[q.I,J.I],[q.IMG,J.IMG],[q.IMAGE,J.IMAGE],[q.INPUT,J.INPUT],[q.IFRAME,J.IFRAME],[q.KEYGEN,J.KEYGEN],[q.LABEL,J.LABEL],[q.LI,J.LI],[q.LINK,J.LINK],[q.LISTING,J.LISTING],[q.MAIN,J.MAIN],[q.MALIGNMARK,J.MALIGNMARK],[q.MARQUEE,J.MARQUEE],[q.MATH,J.MATH],[q.MENU,J.MENU],[q.META,J.META],[q.MGLYPH,J.MGLYPH],[q.MI,J.MI],[q.MO,J.MO],[q.MN,J.MN],[q.MS,J.MS],[q.MTEXT,J.MTEXT],[q.NAV,J.NAV],[q.NOBR,J.NOBR],[q.NOFRAMES,J.NOFRAMES],[q.NOEMBED,J.NOEMBED],[q.NOSCRIPT,J.NOSCRIPT],[q.OBJECT,J.OBJECT],[q.OL,J.OL],[q.OPTGROUP,J.OPTGROUP],[q.OPTION,J.OPTION],[q.P,J.P],[q.PARAM,J.PARAM],[q.PLAINTEXT,J.PLAINTEXT],[q.PRE,J.PRE],[q.RB,J.RB],[q.RP,J.RP],[q.RT,J.RT],[q.RTC,J.RTC],[q.RUBY,J.RUBY],[q.S,J.S],[q.SCRIPT,J.SCRIPT],[q.SEARCH,J.SEARCH],[q.SECTION,J.SECTION],[q.SELECT,J.SELECT],[q.SOURCE,J.SOURCE],[q.SMALL,J.SMALL],[q.SPAN,J.SPAN],[q.STRIKE,J.STRIKE],[q.STRONG,J.STRONG],[q.STYLE,J.STYLE],[q.SUB,J.SUB],[q.SUMMARY,J.SUMMARY],[q.SUP,J.SUP],[q.TABLE,J.TABLE],[q.TBODY,J.TBODY],[q.TEMPLATE,J.TEMPLATE],[q.TEXTAREA,J.TEXTAREA],[q.TFOOT,J.TFOOT],[q.TD,J.TD],[q.TH,J.TH],[q.THEAD,J.THEAD],[q.TITLE,J.TITLE],[q.TR,J.TR],[q.TRACK,J.TRACK],[q.TT,J.TT],[q.U,J.U],[q.UL,J.UL],[q.SVG,J.SVG],[q.VAR,J.VAR],[q.WBR,J.WBR],[q.XMP,J.XMP]]);function E0(Z){var X;return(X=y3.get(Z))!==null&&X!==void 0?X:J.UNKNOWN}var O=J,i9={[b.HTML]:new Set([O.ADDRESS,O.APPLET,O.AREA,O.ARTICLE,O.ASIDE,O.BASE,O.BASEFONT,O.BGSOUND,O.BLOCKQUOTE,O.BODY,O.BR,O.BUTTON,O.CAPTION,O.CENTER,O.COL,O.COLGROUP,O.DD,O.DETAILS,O.DIR,O.DIV,O.DL,O.DT,O.EMBED,O.FIELDSET,O.FIGCAPTION,O.FIGURE,O.FOOTER,O.FORM,O.FRAME,O.FRAMESET,O.H1,O.H2,O.H3,O.H4,O.H5,O.H6,O.HEAD,O.HEADER,O.HGROUP,O.HR,O.HTML,O.IFRAME,O.IMG,O.INPUT,O.LI,O.LINK,O.LISTING,O.MAIN,O.MARQUEE,O.MENU,O.META,O.NAV,O.NOEMBED,O.NOFRAMES,O.NOSCRIPT,O.OBJECT,O.OL,O.P,O.PARAM,O.PLAINTEXT,O.PRE,O.SCRIPT,O.SECTION,O.SELECT,O.SOURCE,O.STYLE,O.SUMMARY,O.TABLE,O.TBODY,O.TD,O.TEMPLATE,O.TEXTAREA,O.TFOOT,O.TH,O.THEAD,O.TITLE,O.TR,O.TRACK,O.UL,O.WBR,O.XMP]),[b.MATHML]:new Set([O.MI,O.MO,O.MN,O.MS,O.MTEXT,O.ANNOTATION_XML]),[b.SVG]:new Set([O.TITLE,O.FOREIGN_OBJECT,O.DESC]),[b.XLINK]:new Set,[b.XML]:new Set,[b.XMLNS]:new Set},Q1=new Set([O.H1,O.H2,O.H3,O.H4,O.H5,O.H6]),f3=new Set([q.STYLE,q.SCRIPT,q.XMP,q.IFRAME,q.NOEMBED,q.NOFRAMES,q.PLAINTEXT]);function p9(Z,X){return f3.has(Z)||X&&Z===q.NOSCRIPT}var j;(function(Z){Z[Z.DATA=0]="DATA",Z[Z.RCDATA=1]="RCDATA",Z[Z.RAWTEXT=2]="RAWTEXT",Z[Z.SCRIPT_DATA=3]="SCRIPT_DATA",Z[Z.PLAINTEXT=4]="PLAINTEXT",Z[Z.TAG_OPEN=5]="TAG_OPEN",Z[Z.END_TAG_OPEN=6]="END_TAG_OPEN",Z[Z.TAG_NAME=7]="TAG_NAME",Z[Z.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",Z[Z.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",Z[Z.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",Z[Z.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",Z[Z.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",Z[Z.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",Z[Z.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",Z[Z.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",Z[Z.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",Z[Z.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",Z[Z.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",Z[Z.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",Z[Z.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",Z[Z.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",Z[Z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",Z[Z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",Z[Z.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",Z[Z.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",Z[Z.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",Z[Z.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",Z[Z.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",Z[Z.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",Z[Z.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",Z[Z.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",Z[Z.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",Z[Z.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",Z[Z.BOGUS_COMMENT=40]="BOGUS_COMMENT",Z[Z.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",Z[Z.COMMENT_START=42]="COMMENT_START",Z[Z.COMMENT_START_DASH=43]="COMMENT_START_DASH",Z[Z.COMMENT=44]="COMMENT",Z[Z.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",Z[Z.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",Z[Z.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",Z[Z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",Z[Z.COMMENT_END_DASH=49]="COMMENT_END_DASH",Z[Z.COMMENT_END=50]="COMMENT_END",Z[Z.COMMENT_END_BANG=51]="COMMENT_END_BANG",Z[Z.DOCTYPE=52]="DOCTYPE",Z[Z.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",Z[Z.DOCTYPE_NAME=54]="DOCTYPE_NAME",Z[Z.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",Z[Z.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",Z[Z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",Z[Z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",Z[Z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",Z[Z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",Z[Z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",Z[Z.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",Z[Z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",Z[Z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",Z[Z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",Z[Z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",Z[Z.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",Z[Z.CDATA_SECTION=68]="CDATA_SECTION",Z[Z.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",Z[Z.CDATA_SECTION_END=70]="CDATA_SECTION_END",Z[Z.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",Z[Z.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(j||(j={}));var o={DATA:j.DATA,RCDATA:j.RCDATA,RAWTEXT:j.RAWTEXT,SCRIPT_DATA:j.SCRIPT_DATA,PLAINTEXT:j.PLAINTEXT,CDATA_SECTION:j.CDATA_SECTION};function M3(Z){return Z>=W.DIGIT_0&&Z<=W.DIGIT_9}function J1(Z){return Z>=W.LATIN_CAPITAL_A&&Z<=W.LATIN_CAPITAL_Z}function N3(Z){return Z>=W.LATIN_SMALL_A&&Z<=W.LATIN_SMALL_Z}function f0(Z){return N3(Z)||J1(Z)}function s9(Z){return f0(Z)||M3(Z)}function d1(Z){return Z+32}function o9(Z){return Z===W.SPACE||Z===W.LINE_FEED||Z===W.TABULATION||Z===W.FORM_FEED}function r9(Z){return o9(Z)||Z===W.SOLIDUS||Z===W.GREATER_THAN_SIGN}function D3(Z){if(Z===W.NULL)return w.nullCharacterReference;else if(Z>1114111)return w.characterReferenceOutsideUnicodeRange;else if(A1(Z))return w.surrogateCharacterReference;else if(l1(Z))return w.noncharacterCharacterReference;else if(u1(Z)||Z===W.CARRIAGE_RETURN)return w.controlCharacterReference;return null}class a1{constructor(Z,X){this.options=Z,this.handler=X,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=j.DATA,this.returnState=j.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new s4(X),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new n4(r4,(Q,K)=>{this.preprocessor.pos=this.entityStartPos+K-1,this._flushCodePointConsumedAsCharacterReference(Q)},X.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(w.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(Q)=>{this._err(w.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+Q)},validateNumericCharacterReference:(Q)=>{let K=D3(Q);if(K)this._err(K,1)}}:void 0)}_err(Z,X=0){var Q,K;(K=(Q=this.handler).onParseError)===null||K===void 0||K.call(Q,this.preprocessor.getError(Z,X))}getCurrentLocation(Z){if(!this.options.sourceCodeLocationInfo)return null;return{startLine:this.preprocessor.line,startCol:this.preprocessor.col-Z,startOffset:this.preprocessor.offset-Z,endLine:-1,endCol:-1,endOffset:-1}}_runParsingLoop(){if(this.inLoop)return;this.inLoop=!0;while(this.active&&!this.paused){this.consumedAfterSnapshot=0;let Z=this._consume();if(!this._ensureHibernation())this._callState(Z)}this.inLoop=!1}pause(){this.paused=!0}resume(Z){if(!this.paused)throw Error("Parser was already resumed");if(this.paused=!1,this.inLoop)return;if(this._runParsingLoop(),!this.paused)Z===null||Z===void 0||Z()}write(Z,X,Q){if(this.active=!0,this.preprocessor.write(Z,X),this._runParsingLoop(),!this.paused)Q===null||Q===void 0||Q()}insertHtmlAtCurrentPos(Z){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(Z),this._runParsingLoop()}_ensureHibernation(){if(this.preprocessor.endOfChunkHit)return this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0;return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(Z){this.consumedAfterSnapshot+=Z;for(let X=0;X<Z;X++)this.preprocessor.advance()}_consumeSequenceIfMatch(Z,X){if(this.preprocessor.startsWith(Z,X))return this._advanceBy(Z.length-1),!0;return!1}_createStartTagToken(){this.currentToken={type:m.START_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:m.END_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(Z){this.currentToken={type:m.COMMENT,data:"",location:this.getCurrentLocation(Z)}}_createDoctypeToken(Z){this.currentToken={type:m.DOCTYPE,name:Z,forceQuirks:!1,publicId:null,systemId:null,location:this.currentLocation}}_createCharacterToken(Z,X){this.currentCharacterToken={type:Z,chars:X,location:this.currentLocation}}_createAttr(Z){this.currentAttr={name:Z,value:""},this.currentLocation=this.getCurrentLocation(0)}_leaveAttrName(){var Z,X;let Q=this.currentToken;if(c1(Q,this.currentAttr.name)===null){if(Q.attrs.push(this.currentAttr),Q.location&&this.currentLocation){let K=(Z=(X=Q.location).attrs)!==null&&Z!==void 0?Z:X.attrs=Object.create(null);K[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(w.duplicateAttribute)}_leaveAttrValue(){if(this.currentLocation)this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset}prepareToken(Z){if(this._emitCurrentCharacterToken(Z.location),this.currentToken=null,Z.location)Z.location.endLine=this.preprocessor.line,Z.location.endCol=this.preprocessor.col+1,Z.location.endOffset=this.preprocessor.offset+1;this.currentLocation=this.getCurrentLocation(-1)}emitCurrentTagToken(){let Z=this.currentToken;if(this.prepareToken(Z),Z.tagID=E0(Z.tagName),Z.type===m.START_TAG)this.lastStartTagName=Z.tagName,this.handler.onStartTag(Z);else{if(Z.attrs.length>0)this._err(w.endTagWithAttributes);if(Z.selfClosing)this._err(w.endTagWithTrailingSolidus);this.handler.onEndTag(Z)}this.preprocessor.dropParsedChunk()}emitCurrentComment(Z){this.prepareToken(Z),this.handler.onComment(Z),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(Z){this.prepareToken(Z),this.handler.onDoctype(Z),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(Z){if(this.currentCharacterToken){if(Z&&this.currentCharacterToken.location)this.currentCharacterToken.location.endLine=Z.startLine,this.currentCharacterToken.location.endCol=Z.startCol,this.currentCharacterToken.location.endOffset=Z.startOffset;switch(this.currentCharacterToken.type){case m.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case m.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case m.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){let Z=this.getCurrentLocation(0);if(Z)Z.endLine=Z.startLine,Z.endCol=Z.startCol,Z.endOffset=Z.startOffset;this._emitCurrentCharacterToken(Z),this.handler.onEof({type:m.EOF,location:Z}),this.active=!1}_appendCharToCurrentCharacterToken(Z,X){if(this.currentCharacterToken)if(this.currentCharacterToken.type===Z){this.currentCharacterToken.chars+=X;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(Z,X)}_emitCodePoint(Z){let X=o9(Z)?m.WHITESPACE_CHARACTER:Z===W.NULL?m.NULL_CHARACTER:m.CHARACTER;this._appendCharToCurrentCharacterToken(X,Z<65536?String.fromCharCode(Z):String.fromCodePoint(Z))}_emitChars(Z){this._appendCharToCurrentCharacterToken(m.CHARACTER,Z)}_startCharacterReference(){this.returnState=this.state,this.state=j.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?F0.Attribute:F0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===j.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===j.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===j.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(Z){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(Z);else this._emitCodePoint(Z)}_callState(Z){switch(this.state){case j.DATA:{this._stateData(Z);break}case j.RCDATA:{this._stateRcdata(Z);break}case j.RAWTEXT:{this._stateRawtext(Z);break}case j.SCRIPT_DATA:{this._stateScriptData(Z);break}case j.PLAINTEXT:{this._statePlaintext(Z);break}case j.TAG_OPEN:{this._stateTagOpen(Z);break}case j.END_TAG_OPEN:{this._stateEndTagOpen(Z);break}case j.TAG_NAME:{this._stateTagName(Z);break}case j.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(Z);break}case j.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(Z);break}case j.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(Z);break}case j.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(Z);break}case j.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(Z);break}case j.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(Z);break}case j.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(Z);break}case j.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(Z);break}case j.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(Z);break}case j.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(Z);break}case j.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(Z);break}case j.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(Z);break}case j.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(Z);break}case j.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(Z);break}case j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(Z);break}case j.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(Z);break}case j.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(Z);break}case j.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(Z);break}case j.ATTRIBUTE_NAME:{this._stateAttributeName(Z);break}case j.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(Z);break}case j.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(Z);break}case j.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(Z);break}case j.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(Z);break}case j.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(Z);break}case j.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(Z);break}case j.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(Z);break}case j.BOGUS_COMMENT:{this._stateBogusComment(Z);break}case j.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(Z);break}case j.COMMENT_START:{this._stateCommentStart(Z);break}case j.COMMENT_START_DASH:{this._stateCommentStartDash(Z);break}case j.COMMENT:{this._stateComment(Z);break}case j.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(Z);break}case j.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(Z);break}case j.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(Z);break}case j.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(Z);break}case j.COMMENT_END_DASH:{this._stateCommentEndDash(Z);break}case j.COMMENT_END:{this._stateCommentEnd(Z);break}case j.COMMENT_END_BANG:{this._stateCommentEndBang(Z);break}case j.DOCTYPE:{this._stateDoctype(Z);break}case j.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(Z);break}case j.DOCTYPE_NAME:{this._stateDoctypeName(Z);break}case j.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(Z);break}case j.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(Z);break}case j.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(Z);break}case j.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(Z);break}case j.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(Z);break}case j.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(Z);break}case j.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(Z);break}case j.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(Z);break}case j.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(Z);break}case j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(Z);break}case j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(Z);break}case j.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(Z);break}case j.BOGUS_DOCTYPE:{this._stateBogusDoctype(Z);break}case j.CDATA_SECTION:{this._stateCdataSection(Z);break}case j.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(Z);break}case j.CDATA_SECTION_END:{this._stateCdataSectionEnd(Z);break}case j.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case j.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(Z);break}default:throw Error("Unknown state")}}_stateData(Z){switch(Z){case W.LESS_THAN_SIGN:{this.state=j.TAG_OPEN;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitCodePoint(Z);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateRcdata(Z){switch(Z){case W.AMPERSAND:{this._startCharacterReference();break}case W.LESS_THAN_SIGN:{this.state=j.RCDATA_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateRawtext(Z){switch(Z){case W.LESS_THAN_SIGN:{this.state=j.RAWTEXT_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateScriptData(Z){switch(Z){case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_statePlaintext(Z){switch(Z){case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateTagOpen(Z){if(f0(Z))this._createStartTagToken(),this.state=j.TAG_NAME,this._stateTagName(Z);else switch(Z){case W.EXCLAMATION_MARK:{this.state=j.MARKUP_DECLARATION_OPEN;break}case W.SOLIDUS:{this.state=j.END_TAG_OPEN;break}case W.QUESTION_MARK:{this._err(w.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=j.BOGUS_COMMENT,this._stateBogusComment(Z);break}case W.EOF:{this._err(w.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(w.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=j.DATA,this._stateData(Z)}}_stateEndTagOpen(Z){if(f0(Z))this._createEndTagToken(),this.state=j.TAG_NAME,this._stateTagName(Z);else switch(Z){case W.GREATER_THAN_SIGN:{this._err(w.missingEndTagName),this.state=j.DATA;break}case W.EOF:{this._err(w.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(w.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=j.BOGUS_COMMENT,this._stateBogusComment(Z)}}_stateTagName(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_ATTRIBUTE_NAME;break}case W.SOLIDUS:{this.state=j.SELF_CLOSING_START_TAG;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentTagToken();break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.tagName+=A;break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:X.tagName+=String.fromCodePoint(J1(Z)?d1(Z):Z)}}_stateRcdataLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=j.RCDATA,this._stateRcdata(Z)}_stateRcdataEndTagOpen(Z){if(f0(Z))this.state=j.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(Z);else this._emitChars("</"),this.state=j.RCDATA,this._stateRcdata(Z)}handleSpecialEndTag(Z){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();let X=this.currentToken;switch(X.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=j.BEFORE_ATTRIBUTE_NAME,!1;case W.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=j.SELF_CLOSING_START_TAG,!1;case W.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=j.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.RCDATA,this._stateRcdata(Z)}_stateRawtextLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=j.RAWTEXT,this._stateRawtext(Z)}_stateRawtextEndTagOpen(Z){if(f0(Z))this.state=j.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(Z);else this._emitChars("</"),this.state=j.RAWTEXT,this._stateRawtext(Z)}_stateRawtextEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.RAWTEXT,this._stateRawtext(Z)}_stateScriptDataLessThanSign(Z){switch(Z){case W.SOLIDUS:{this.state=j.SCRIPT_DATA_END_TAG_OPEN;break}case W.EXCLAMATION_MARK:{this.state=j.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}}_stateScriptDataEndTagOpen(Z){if(f0(Z))this.state=j.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(Z);else this._emitChars("</"),this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEscapeStart(Z){if(Z===W.HYPHEN_MINUS)this.state=j.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEscapeStartDash(Z){if(Z===W.HYPHEN_MINUS)this.state=j.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEscaped(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateScriptDataEscapedDash(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataEscapedDashDash(Z){switch(Z){case W.HYPHEN_MINUS:{this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case W.GREATER_THAN_SIGN:{this.state=j.SCRIPT_DATA,this._emitChars(">");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataEscapedLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(f0(Z))this._emitChars("<"),this.state=j.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(Z);else this._emitChars("<"),this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataEscapedEndTagOpen(Z){if(f0(Z))this.state=j.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(Z);else this._emitChars("</"),this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataEscapedEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataDoubleEscapeStart(Z){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&r9(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(Z);for(let X=0;X<t.SCRIPT.length;X++)this._emitCodePoint(this._consume());this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataDoubleEscaped(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateScriptDataDoubleEscapedDash(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataDoubleEscapedDashDash(Z){switch(Z){case W.HYPHEN_MINUS:{this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case W.GREATER_THAN_SIGN:{this.state=j.SCRIPT_DATA,this._emitChars(">");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataDoubleEscapedLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(Z)}_stateScriptDataDoubleEscapeEnd(Z){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&r9(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(Z);for(let X=0;X<t.SCRIPT.length;X++)this._emitCodePoint(this._consume());this.state=j.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(Z)}_stateBeforeAttributeName(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.SOLIDUS:case W.GREATER_THAN_SIGN:case W.EOF:{this.state=j.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(Z);break}case W.EQUALS_SIGN:{this._err(w.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=j.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=j.ATTRIBUTE_NAME,this._stateAttributeName(Z)}}_stateAttributeName(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:case W.SOLIDUS:case W.GREATER_THAN_SIGN:case W.EOF:{this._leaveAttrName(),this.state=j.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(Z);break}case W.EQUALS_SIGN:{this._leaveAttrName(),this.state=j.BEFORE_ATTRIBUTE_VALUE;break}case W.QUOTATION_MARK:case W.APOSTROPHE:case W.LESS_THAN_SIGN:{this._err(w.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(Z);break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.name+=A;break}default:this.currentAttr.name+=String.fromCodePoint(J1(Z)?d1(Z):Z)}}_stateAfterAttributeName(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.SOLIDUS:{this.state=j.SELF_CLOSING_START_TAG;break}case W.EQUALS_SIGN:{this.state=j.BEFORE_ATTRIBUTE_VALUE;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentTagToken();break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=j.ATTRIBUTE_NAME,this._stateAttributeName(Z)}}_stateBeforeAttributeValue(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.QUOTATION_MARK:{this.state=j.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this.state=j.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingAttributeValue),this.state=j.DATA,this.emitCurrentTagToken();break}default:this.state=j.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(Z)}}_stateAttributeValueDoubleQuoted(Z){switch(Z){case W.QUOTATION_MARK:{this.state=j.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.value+=A;break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(Z)}}_stateAttributeValueSingleQuoted(Z){switch(Z){case W.APOSTROPHE:{this.state=j.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.value+=A;break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(Z)}}_stateAttributeValueUnquoted(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this._leaveAttrValue(),this.state=j.BEFORE_ATTRIBUTE_NAME;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=j.DATA,this.emitCurrentTagToken();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.value+=A;break}case W.QUOTATION_MARK:case W.APOSTROPHE:case W.LESS_THAN_SIGN:case W.EQUALS_SIGN:case W.GRAVE_ACCENT:{this._err(w.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(Z);break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(Z)}}_stateAfterAttributeValueQuoted(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this._leaveAttrValue(),this.state=j.BEFORE_ATTRIBUTE_NAME;break}case W.SOLIDUS:{this._leaveAttrValue(),this.state=j.SELF_CLOSING_START_TAG;break}case W.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=j.DATA,this.emitCurrentTagToken();break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this._err(w.missingWhitespaceBetweenAttributes),this.state=j.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(Z)}}_stateSelfClosingStartTag(Z){switch(Z){case W.GREATER_THAN_SIGN:{let X=this.currentToken;X.selfClosing=!0,this.state=j.DATA,this.emitCurrentTagToken();break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this._err(w.unexpectedSolidusInTag),this.state=j.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(Z)}}_stateBogusComment(Z){let X=this.currentToken;switch(Z){case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentComment(X);break}case W.EOF:{this.emitCurrentComment(X),this._emitEOFToken();break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.data+=A;break}default:X.data+=String.fromCodePoint(Z)}}_stateMarkupDeclarationOpen(Z){if(this._consumeSequenceIfMatch(t.DASH_DASH,!0))this._createCommentToken(t.DASH_DASH.length+1),this.state=j.COMMENT_START;else if(this._consumeSequenceIfMatch(t.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(t.DOCTYPE.length+1),this.state=j.DOCTYPE;else if(this._consumeSequenceIfMatch(t.CDATA_START,!0))if(this.inForeignNode)this.state=j.CDATA_SECTION;else this._err(w.cdataInHtmlContent),this._createCommentToken(t.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=j.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(w.incorrectlyOpenedComment),this._createCommentToken(2),this.state=j.BOGUS_COMMENT,this._stateBogusComment(Z)}_stateCommentStart(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_START_DASH;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptClosingOfEmptyComment),this.state=j.DATA;let X=this.currentToken;this.emitCurrentComment(X);break}default:this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentStartDash(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_END;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptClosingOfEmptyComment),this.state=j.DATA,this.emitCurrentComment(X);break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="-",this.state=j.COMMENT,this._stateComment(Z)}}_stateComment(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_END_DASH;break}case W.LESS_THAN_SIGN:{X.data+="<",this.state=j.COMMENT_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.data+=A;break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+=String.fromCodePoint(Z)}}_stateCommentLessThanSign(Z){let X=this.currentToken;switch(Z){case W.EXCLAMATION_MARK:{X.data+="!",this.state=j.COMMENT_LESS_THAN_SIGN_BANG;break}case W.LESS_THAN_SIGN:{X.data+="<";break}default:this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentLessThanSignBang(Z){if(Z===W.HYPHEN_MINUS)this.state=j.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=j.COMMENT,this._stateComment(Z)}_stateCommentLessThanSignBangDash(Z){if(Z===W.HYPHEN_MINUS)this.state=j.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=j.COMMENT_END_DASH,this._stateCommentEndDash(Z)}_stateCommentLessThanSignBangDashDash(Z){if(Z!==W.GREATER_THAN_SIGN&&Z!==W.EOF)this._err(w.nestedComment);this.state=j.COMMENT_END,this._stateCommentEnd(Z)}_stateCommentEndDash(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_END;break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="-",this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentEnd(Z){let X=this.currentToken;switch(Z){case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentComment(X);break}case W.EXCLAMATION_MARK:{this.state=j.COMMENT_END_BANG;break}case W.HYPHEN_MINUS:{X.data+="-";break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="--",this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentEndBang(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{X.data+="--!",this.state=j.COMMENT_END_DASH;break}case W.GREATER_THAN_SIGN:{this._err(w.incorrectlyClosedComment),this.state=j.DATA,this.emitCurrentComment(X);break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="--!",this.state=j.COMMENT,this._stateComment(Z)}}_stateDoctype(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_DOCTYPE_NAME;break}case W.GREATER_THAN_SIGN:{this.state=j.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(Z);break}case W.EOF:{this._err(w.eofInDoctype),this._createDoctypeToken(null);let X=this.currentToken;X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingWhitespaceBeforeDoctypeName),this.state=j.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(Z)}}_stateBeforeDoctypeName(Z){if(J1(Z))this._createDoctypeToken(String.fromCharCode(d1(Z))),this.state=j.DOCTYPE_NAME;else switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.NULL:{this._err(w.unexpectedNullCharacter),this._createDoctypeToken(A),this.state=j.DOCTYPE_NAME;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypeName),this._createDoctypeToken(null);let X=this.currentToken;X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),this._createDoctypeToken(null);let X=this.currentToken;X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(Z)),this.state=j.DOCTYPE_NAME}}_stateDoctypeName(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.AFTER_DOCTYPE_NAME;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.name+=A;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.name+=String.fromCodePoint(J1(Z)?d1(Z):Z)}}_stateAfterDoctypeName(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(t.PUBLIC,!1))this.state=j.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(t.SYSTEM,!1))this.state=j.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(w.invalidCharacterSequenceAfterDoctypeName),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateAfterDoctypePublicKeyword(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case W.QUOTATION_MARK:{this._err(w.missingWhitespaceAfterDoctypePublicKeyword),X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this._err(w.missingWhitespaceAfterDoctypePublicKeyword),X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBeforeDoctypePublicIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.QUOTATION_MARK:{X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateDoctypePublicIdentifierDoubleQuoted(Z){let X=this.currentToken;switch(Z){case W.QUOTATION_MARK:{this.state=j.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.publicId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypePublicIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.publicId+=String.fromCodePoint(Z)}}_stateDoctypePublicIdentifierSingleQuoted(Z){let X=this.currentToken;switch(Z){case W.APOSTROPHE:{this.state=j.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.publicId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypePublicIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.publicId+=String.fromCodePoint(Z)}}_stateAfterDoctypePublicIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.QUOTATION_MARK:{this._err(w.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this._err(w.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBetweenDoctypePublicAndSystemIdentifiers(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.GREATER_THAN_SIGN:{this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.QUOTATION_MARK:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateAfterDoctypeSystemKeyword(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case W.QUOTATION_MARK:{this._err(w.missingWhitespaceAfterDoctypeSystemKeyword),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this._err(w.missingWhitespaceAfterDoctypeSystemKeyword),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBeforeDoctypeSystemIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.QUOTATION_MARK:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateDoctypeSystemIdentifierDoubleQuoted(Z){let X=this.currentToken;switch(Z){case W.QUOTATION_MARK:{this.state=j.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.systemId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypeSystemIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.systemId+=String.fromCodePoint(Z)}}_stateDoctypeSystemIdentifierSingleQuoted(Z){let X=this.currentToken;switch(Z){case W.APOSTROPHE:{this.state=j.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.systemId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypeSystemIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.systemId+=String.fromCodePoint(Z)}}_stateAfterDoctypeSystemIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.GREATER_THAN_SIGN:{this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBogusDoctype(Z){let X=this.currentToken;switch(Z){case W.GREATER_THAN_SIGN:{this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.NULL:{this._err(w.unexpectedNullCharacter);break}case W.EOF:{this.emitCurrentDoctype(X),this._emitEOFToken();break}default:}}_stateCdataSection(Z){switch(Z){case W.RIGHT_SQUARE_BRACKET:{this.state=j.CDATA_SECTION_BRACKET;break}case W.EOF:{this._err(w.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateCdataSectionBracket(Z){if(Z===W.RIGHT_SQUARE_BRACKET)this.state=j.CDATA_SECTION_END;else this._emitChars("]"),this.state=j.CDATA_SECTION,this._stateCdataSection(Z)}_stateCdataSectionEnd(Z){switch(Z){case W.GREATER_THAN_SIGN:{this.state=j.DATA;break}case W.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=j.CDATA_SECTION,this._stateCdataSection(Z)}}_stateCharacterReference(){let Z=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(Z<0)if(this.preprocessor.lastChunkWritten)Z=this.entityDecoder.end();else{this.active=!1,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=!0;return}if(Z===0)this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(W.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&s9(this.preprocessor.peek(1))?j.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(Z){if(s9(Z))this._flushCodePointConsumedAsCharacterReference(Z);else{if(Z===W.SEMICOLON)this._err(w.unknownNamedCharacterReference);this.state=this.returnState,this._callState(Z)}}}var Z2=new Set([J.DD,J.DT,J.LI,J.OPTGROUP,J.OPTION,J.P,J.RB,J.RP,J.RT,J.RTC]),n9=new Set([...Z2,J.CAPTION,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]),i1=new Set([J.APPLET,J.CAPTION,J.HTML,J.MARQUEE,J.OBJECT,J.TABLE,J.TD,J.TEMPLATE,J.TH]),$3=new Set([...i1,J.OL,J.UL]),G3=new Set([...i1,J.BUTTON]),t9=new Set([J.ANNOTATION_XML,J.MI,J.MN,J.MO,J.MS,J.MTEXT]),e9=new Set([J.DESC,J.FOREIGN_OBJECT,J.TITLE]),g3=new Set([J.TR,J.TEMPLATE,J.HTML]),E3=new Set([J.TBODY,J.TFOOT,J.THEAD,J.TEMPLATE,J.HTML]),m3=new Set([J.TABLE,J.TEMPLATE,J.HTML]),_3=new Set([J.TD,J.TH]);class t4{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(Z,X,Q){this.treeAdapter=X,this.handler=Q,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=J.UNKNOWN,this.current=Z}_indexOf(Z){return this.items.lastIndexOf(Z,this.stackTop)}_isInTemplate(){return this.currentTagId===J.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===b.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(Z,X){if(this.stackTop++,this.items[this.stackTop]=Z,this.current=Z,this.tagIDs[this.stackTop]=X,this.currentTagId=X,this._isInTemplate())this.tmplCount++;this.handler.onItemPush(Z,X,!0)}pop(){let Z=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount--;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(Z,!0)}replace(Z,X){let Q=this._indexOf(Z);if(this.items[Q]=X,Q===this.stackTop)this.current=X}insertAfter(Z,X,Q){let K=this._indexOf(Z)+1;if(this.items.splice(K,0,X),this.tagIDs.splice(K,0,Q),this.stackTop++,K===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,K===this.stackTop)}popUntilTagNamePopped(Z){let X=this.stackTop+1;do X=this.tagIDs.lastIndexOf(Z,X-1);while(X>0&&this.treeAdapter.getNamespaceURI(this.items[X])!==b.HTML);this.shortenToLength(Math.max(X,0))}shortenToLength(Z){while(this.stackTop>=Z){let X=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount-=1;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,this.stackTop<Z)}}popUntilElementPopped(Z){let X=this._indexOf(Z);this.shortenToLength(Math.max(X,0))}popUntilPopped(Z,X){let Q=this._indexOfTagNames(Z,X);this.shortenToLength(Math.max(Q,0))}popUntilNumberedHeaderPopped(){this.popUntilPopped(Q1,b.HTML)}popUntilTableCellPopped(){this.popUntilPopped(_3,b.HTML)}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1)}_indexOfTagNames(Z,X){for(let Q=this.stackTop;Q>=0;Q--)if(Z.has(this.tagIDs[Q])&&this.treeAdapter.getNamespaceURI(this.items[Q])===X)return Q;return-1}clearBackTo(Z,X){let Q=this._indexOfTagNames(Z,X);this.shortenToLength(Q+1)}clearBackToTableContext(){this.clearBackTo(m3,b.HTML)}clearBackToTableBodyContext(){this.clearBackTo(E3,b.HTML)}clearBackToTableRowContext(){this.clearBackTo(g3,b.HTML)}remove(Z){let X=this._indexOf(Z);if(X>=0)if(X===this.stackTop)this.pop();else this.items.splice(X,1),this.tagIDs.splice(X,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(Z,!1)}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===J.BODY?this.items[1]:null}contains(Z){return this._indexOf(Z)>-1}getCommonAncestor(Z){let X=this._indexOf(Z)-1;return X>=0?this.items[X]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===J.HTML}hasInDynamicScope(Z,X){for(let Q=this.stackTop;Q>=0;Q--){let K=this.tagIDs[Q];switch(this.treeAdapter.getNamespaceURI(this.items[Q])){case b.HTML:{if(K===Z)return!0;if(X.has(K))return!1;break}case b.SVG:{if(e9.has(K))return!1;break}case b.MATHML:{if(t9.has(K))return!1;break}}}return!0}hasInScope(Z){return this.hasInDynamicScope(Z,i1)}hasInListItemScope(Z){return this.hasInDynamicScope(Z,$3)}hasInButtonScope(Z){return this.hasInDynamicScope(Z,G3)}hasNumberedHeaderInScope(){for(let Z=this.stackTop;Z>=0;Z--){let X=this.tagIDs[Z];switch(this.treeAdapter.getNamespaceURI(this.items[Z])){case b.HTML:{if(Q1.has(X))return!0;if(i1.has(X))return!1;break}case b.SVG:{if(e9.has(X))return!1;break}case b.MATHML:{if(t9.has(X))return!1;break}}}return!0}hasInTableScope(Z){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==b.HTML)continue;switch(this.tagIDs[X]){case Z:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==b.HTML)continue;switch(this.tagIDs[Z]){case J.TBODY:case J.THEAD:case J.TFOOT:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasInSelectScope(Z){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==b.HTML)continue;switch(this.tagIDs[X]){case Z:return!0;case J.OPTION:case J.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&Z2.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&n9.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(Z){while(this.currentTagId!==void 0&&this.currentTagId!==Z&&n9.has(this.currentTagId))this.pop()}}var z0;(function(Z){Z[Z.Marker=0]="Marker",Z[Z.Element=1]="Element"})(z0||(z0={}));var X2={type:z0.Marker};class e4{constructor(Z){this.treeAdapter=Z,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(Z,X){let Q=[],K=X.length,Y=this.treeAdapter.getTagName(Z),V=this.treeAdapter.getNamespaceURI(Z);for(let z=0;z<this.entries.length;z++){let U=this.entries[z];if(U.type===z0.Marker)break;let{element:F}=U;if(this.treeAdapter.getTagName(F)===Y&&this.treeAdapter.getNamespaceURI(F)===V){let B=this.treeAdapter.getAttrList(F);if(B.length===K)Q.push({idx:z,attrs:B})}}return Q}_ensureNoahArkCondition(Z){if(this.entries.length<3)return;let X=this.treeAdapter.getAttrList(Z),Q=this._getNoahArkConditionCandidates(Z,X);if(Q.length<3)return;let K=new Map(X.map((V)=>[V.name,V.value])),Y=0;for(let V=0;V<Q.length;V++){let z=Q[V];if(z.attrs.every((U)=>K.get(U.name)===U.value)){if(Y+=1,Y>=3)this.entries.splice(z.idx,1)}}}insertMarker(){this.entries.unshift(X2)}pushElement(Z,X){this._ensureNoahArkCondition(Z),this.entries.unshift({type:z0.Element,element:Z,token:X})}insertElementAfterBookmark(Z,X){let Q=this.entries.indexOf(this.bookmark);this.entries.splice(Q,0,{type:z0.Element,element:Z,token:X})}removeEntry(Z){let X=this.entries.indexOf(Z);if(X!==-1)this.entries.splice(X,1)}clearToLastMarker(){let Z=this.entries.indexOf(X2);if(Z===-1)this.entries.length=0;else this.entries.splice(0,Z+1)}getElementEntryInScopeWithTagName(Z){let X=this.entries.find((Q)=>Q.type===z0.Marker||this.treeAdapter.getTagName(Q.element)===Z);return X&&X.type===z0.Element?X:null}getElementEntry(Z){return this.entries.find((X)=>X.type===z0.Element&&X.element===Z)}}var W0={createDocument(){return{nodeName:"#document",mode:e.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(Z,X,Q){return{nodeName:Z,tagName:Z,attrs:Q,namespaceURI:X,childNodes:[],parentNode:null}},createCommentNode(Z){return{nodeName:"#comment",data:Z,parentNode:null}},createTextNode(Z){return{nodeName:"#text",value:Z,parentNode:null}},appendChild(Z,X){Z.childNodes.push(X),X.parentNode=Z},insertBefore(Z,X,Q){let K=Z.childNodes.indexOf(Q);Z.childNodes.splice(K,0,X),X.parentNode=Z},setTemplateContent(Z,X){Z.content=X},getTemplateContent(Z){return Z.content},setDocumentType(Z,X,Q,K){let Y=Z.childNodes.find((V)=>V.nodeName==="#documentType");if(Y)Y.name=X,Y.publicId=Q,Y.systemId=K;else{let V={nodeName:"#documentType",name:X,publicId:Q,systemId:K,parentNode:null};W0.appendChild(Z,V)}},setDocumentMode(Z,X){Z.mode=X},getDocumentMode(Z){return Z.mode},detachNode(Z){if(Z.parentNode){let X=Z.parentNode.childNodes.indexOf(Z);Z.parentNode.childNodes.splice(X,1),Z.parentNode=null}},insertText(Z,X){if(Z.childNodes.length>0){let Q=Z.childNodes[Z.childNodes.length-1];if(W0.isTextNode(Q)){Q.value+=X;return}}W0.appendChild(Z,W0.createTextNode(X))},insertTextBefore(Z,X,Q){let K=Z.childNodes[Z.childNodes.indexOf(Q)-1];if(K&&W0.isTextNode(K))K.value+=X;else W0.insertBefore(Z,W0.createTextNode(X),Q)},adoptAttributes(Z,X){let Q=new Set(Z.attrs.map((K)=>K.name));for(let K=0;K<X.length;K++)if(!Q.has(X[K].name))Z.attrs.push(X[K])},getFirstChild(Z){return Z.childNodes[0]},getChildNodes(Z){return Z.childNodes},getParentNode(Z){return Z.parentNode},getAttrList(Z){return Z.attrs},getTagName(Z){return Z.tagName},getNamespaceURI(Z){return Z.namespaceURI},getTextNodeContent(Z){return Z.value},getCommentNodeContent(Z){return Z.data},getDocumentTypeNodeName(Z){return Z.name},getDocumentTypeNodePublicId(Z){return Z.publicId},getDocumentTypeNodeSystemId(Z){return Z.systemId},isTextNode(Z){return Z.nodeName==="#text"},isCommentNode(Z){return Z.nodeName==="#comment"},isDocumentTypeNode(Z){return Z.nodeName==="#documentType"},isElementNode(Z){return Object.prototype.hasOwnProperty.call(Z,"tagName")},setNodeSourceCodeLocation(Z,X){Z.sourceCodeLocation=X},getNodeSourceCodeLocation(Z){return Z.sourceCodeLocation},updateNodeSourceCodeLocation(Z,X){Z.sourceCodeLocation={...Z.sourceCodeLocation,...X}}};var J2="html",k3="about:legacy-compat",S3="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",K2=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],I3=[...K2,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],T3=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),Y2=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],A3=[...Y2,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function Q2(Z,X){return X.some((Q)=>Z.startsWith(Q))}function W2(Z){return Z.name===J2&&Z.publicId===null&&(Z.systemId===null||Z.systemId===k3)}function V2(Z){if(Z.name!==J2)return e.QUIRKS;let{systemId:X}=Z;if(X&&X.toLowerCase()===S3)return e.QUIRKS;let{publicId:Q}=Z;if(Q!==null){if(Q=Q.toLowerCase(),T3.has(Q))return e.QUIRKS;let K=X===null?I3:K2;if(Q2(Q,K))return e.QUIRKS;if(K=X===null?Y2:A3,Q2(Q,K))return e.LIMITED_QUIRKS}return e.NO_QUIRKS}var j2={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},l3="definitionurl",c3="definitionURL",d3=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((Z)=>[Z.toLowerCase(),Z])),a3=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:b.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:b.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:b.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:b.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:b.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:b.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:b.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:b.XML}],["xml:space",{prefix:"xml",name:"space",namespace:b.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:b.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:b.XMLNS}]]),i3=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((Z)=>[Z.toLowerCase(),Z])),p3=new Set([J.B,J.BIG,J.BLOCKQUOTE,J.BODY,J.BR,J.CENTER,J.CODE,J.DD,J.DIV,J.DL,J.DT,J.EM,J.EMBED,J.H1,J.H2,J.H3,J.H4,J.H5,J.H6,J.HEAD,J.HR,J.I,J.IMG,J.LI,J.LISTING,J.MENU,J.META,J.NOBR,J.OL,J.P,J.PRE,J.RUBY,J.S,J.SMALL,J.SPAN,J.STRONG,J.STRIKE,J.SUB,J.SUP,J.TABLE,J.TT,J.U,J.UL,J.VAR]);function z2(Z){let X=Z.tagID;return X===J.FONT&&Z.attrs.some(({name:K})=>K===b0.COLOR||K===b0.SIZE||K===b0.FACE)||p3.has(X)}function Z8(Z){for(let X=0;X<Z.attrs.length;X++)if(Z.attrs[X].name===l3){Z.attrs[X].name=c3;break}}function X8(Z){for(let X=0;X<Z.attrs.length;X++){let Q=d3.get(Z.attrs[X].name);if(Q!=null)Z.attrs[X].name=Q}}function p1(Z){for(let X=0;X<Z.attrs.length;X++){let Q=a3.get(Z.attrs[X].name);if(Q)Z.attrs[X].prefix=Q.prefix,Z.attrs[X].name=Q.name,Z.attrs[X].namespace=Q.namespace}}function H2(Z){let X=i3.get(Z.tagName);if(X!=null)Z.tagName=X,Z.tagID=E0(Z.tagName)}function s3(Z,X){return X===b.MATHML&&(Z===J.MI||Z===J.MO||Z===J.MN||Z===J.MS||Z===J.MTEXT)}function r3(Z,X,Q){if(X===b.MATHML&&Z===J.ANNOTATION_XML){for(let K=0;K<Q.length;K++)if(Q[K].name===b0.ENCODING){let Y=Q[K].value.toLowerCase();return Y===j2.TEXT_HTML||Y===j2.APPLICATION_XML}}return X===b.SVG&&(Z===J.FOREIGN_OBJECT||Z===J.DESC||Z===J.TITLE)}function U2(Z,X,Q,K){return(!K||K===b.HTML)&&r3(Z,X,Q)||(!K||K===b.MATHML)&&s3(Z,X)}var o3="hidden",n3=8,t3=3,H;(function(Z){Z[Z.INITIAL=0]="INITIAL",Z[Z.BEFORE_HTML=1]="BEFORE_HTML",Z[Z.BEFORE_HEAD=2]="BEFORE_HEAD",Z[Z.IN_HEAD=3]="IN_HEAD",Z[Z.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",Z[Z.AFTER_HEAD=5]="AFTER_HEAD",Z[Z.IN_BODY=6]="IN_BODY",Z[Z.TEXT=7]="TEXT",Z[Z.IN_TABLE=8]="IN_TABLE",Z[Z.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",Z[Z.IN_CAPTION=10]="IN_CAPTION",Z[Z.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",Z[Z.IN_TABLE_BODY=12]="IN_TABLE_BODY",Z[Z.IN_ROW=13]="IN_ROW",Z[Z.IN_CELL=14]="IN_CELL",Z[Z.IN_SELECT=15]="IN_SELECT",Z[Z.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",Z[Z.IN_TEMPLATE=17]="IN_TEMPLATE",Z[Z.AFTER_BODY=18]="AFTER_BODY",Z[Z.IN_FRAMESET=19]="IN_FRAMESET",Z[Z.AFTER_FRAMESET=20]="AFTER_FRAMESET",Z[Z.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",Z[Z.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET"})(H||(H={}));var e3={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},L2=new Set([J.TABLE,J.TBODY,J.TFOOT,J.THEAD,J.TR]),B2={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:W0,onParseError:null};class q1{constructor(Z,X,Q=null,K=null){if(this.fragmentContext=Q,this.scriptHandler=K,this.currentToken=null,this.stopped=!1,this.insertionMode=H.INITIAL,this.originalInsertionMode=H.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=!1,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1,this.options={...B2,...Z},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError)this.options.sourceCodeLocationInfo=!0;this.document=X!==null&&X!==void 0?X:this.treeAdapter.createDocument(),this.tokenizer=new a1(this.options,this),this.activeFormattingElements=new e4(this.treeAdapter),this.fragmentContextID=Q?E0(this.treeAdapter.getTagName(Q)):J.UNKNOWN,this._setContextModes(Q!==null&&Q!==void 0?Q:this.document,this.fragmentContextID),this.openElements=new t4(this.document,this.treeAdapter,this)}static parse(Z,X){let Q=new this(X);return Q.tokenizer.write(Z,!0),Q.document}static getFragmentParser(Z,X){let Q={...B2,...X};Z!==null&&Z!==void 0||(Z=Q.treeAdapter.createElement(q.TEMPLATE,b.HTML,[]));let K=Q.treeAdapter.createElement("documentmock",b.HTML,[]),Y=new this(Q,K,Z);if(Y.fragmentContextID===J.TEMPLATE)Y.tmplInsertionModeStack.unshift(H.IN_TEMPLATE);return Y._initTokenizerForFragmentParsing(),Y._insertFakeRootElement(),Y._resetInsertionMode(),Y._findFormInFragmentContext(),Y}getFragment(){let Z=this.treeAdapter.getFirstChild(this.document),X=this.treeAdapter.createDocumentFragment();return this._adoptNodes(Z,X),X}_err(Z,X,Q){var K;if(!this.onParseError)return;let Y=(K=Z.location)!==null&&K!==void 0?K:e3,V={code:X,startLine:Y.startLine,startCol:Y.startCol,startOffset:Y.startOffset,endLine:Q?Y.startLine:Y.endLine,endCol:Q?Y.startCol:Y.endCol,endOffset:Q?Y.startOffset:Y.endOffset};this.onParseError(V)}onItemPush(Z,X,Q){var K,Y;if((Y=(K=this.treeAdapter).onItemPush)===null||Y===void 0||Y.call(K,Z),Q&&this.openElements.stackTop>0)this._setContextModes(Z,X)}onItemPop(Z,X){var Q,K;if(this.options.sourceCodeLocationInfo)this._setEndLocation(Z,this.currentToken);if((K=(Q=this.treeAdapter).onItemPop)===null||K===void 0||K.call(Q,Z,this.openElements.current),X){let Y,V;if(this.openElements.stackTop===0&&this.fragmentContext)Y=this.fragmentContext,V=this.fragmentContextID;else({current:Y,currentTagId:V}=this.openElements);this._setContextModes(Y,V)}}_setContextModes(Z,X){let Q=Z===this.document||Z&&this.treeAdapter.getNamespaceURI(Z)===b.HTML;this.currentNotInHTML=!Q,this.tokenizer.inForeignNode=!Q&&Z!==void 0&&X!==void 0&&!this._isIntegrationPoint(X,Z)}_switchToTextParsing(Z,X){this._insertElement(Z,b.HTML),this.tokenizer.state=X,this.originalInsertionMode=this.insertionMode,this.insertionMode=H.TEXT}switchToPlaintextParsing(){this.insertionMode=H.TEXT,this.originalInsertionMode=H.IN_BODY,this.tokenizer.state=o.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let Z=this.fragmentContext;while(Z){if(this.treeAdapter.getTagName(Z)===q.FORM){this.formElement=Z;break}Z=this.treeAdapter.getParentNode(Z)}}_initTokenizerForFragmentParsing(){if(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==b.HTML)return;switch(this.fragmentContextID){case J.TITLE:case J.TEXTAREA:{this.tokenizer.state=o.RCDATA;break}case J.STYLE:case J.XMP:case J.IFRAME:case J.NOEMBED:case J.NOFRAMES:case J.NOSCRIPT:{this.tokenizer.state=o.RAWTEXT;break}case J.SCRIPT:{this.tokenizer.state=o.SCRIPT_DATA;break}case J.PLAINTEXT:{this.tokenizer.state=o.PLAINTEXT;break}default:}}_setDocumentType(Z){let X=Z.name||"",Q=Z.publicId||"",K=Z.systemId||"";if(this.treeAdapter.setDocumentType(this.document,X,Q,K),Z.location){let V=this.treeAdapter.getChildNodes(this.document).find((z)=>this.treeAdapter.isDocumentTypeNode(z));if(V)this.treeAdapter.setNodeSourceCodeLocation(V,Z.location)}}_attachElementToTree(Z,X){if(this.options.sourceCodeLocationInfo){let Q=X&&{...X,startTag:X};this.treeAdapter.setNodeSourceCodeLocation(Z,Q)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(Z);else{let Q=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(Q!==null&&Q!==void 0?Q:this.document,Z)}}_appendElement(Z,X){let Q=this.treeAdapter.createElement(Z.tagName,X,Z.attrs);this._attachElementToTree(Q,Z.location)}_insertElement(Z,X){let Q=this.treeAdapter.createElement(Z.tagName,X,Z.attrs);this._attachElementToTree(Q,Z.location),this.openElements.push(Q,Z.tagID)}_insertFakeElement(Z,X){let Q=this.treeAdapter.createElement(Z,b.HTML,[]);this._attachElementToTree(Q,null),this.openElements.push(Q,X)}_insertTemplate(Z){let X=this.treeAdapter.createElement(Z.tagName,b.HTML,Z.attrs),Q=this.treeAdapter.createDocumentFragment();if(this.treeAdapter.setTemplateContent(X,Q),this._attachElementToTree(X,Z.location),this.openElements.push(X,Z.tagID),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Q,null)}_insertFakeRootElement(){let Z=this.treeAdapter.createElement(q.HTML,b.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Z,null);this.treeAdapter.appendChild(this.openElements.current,Z),this.openElements.push(Z,J.HTML)}_appendCommentNode(Z,X){let Q=this.treeAdapter.createCommentNode(Z.data);if(this.treeAdapter.appendChild(X,Q),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Q,Z.location)}_insertCharacters(Z){let X,Q;if(this._shouldFosterParentOnInsertion())if({parent:X,beforeElement:Q}=this._findFosterParentingLocation(),Q)this.treeAdapter.insertTextBefore(X,Z.chars,Q);else this.treeAdapter.insertText(X,Z.chars);else X=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(X,Z.chars);if(!Z.location)return;let K=this.treeAdapter.getChildNodes(X),Y=Q?K.lastIndexOf(Q):K.length,V=K[Y-1];if(this.treeAdapter.getNodeSourceCodeLocation(V)){let{endLine:U,endCol:F,endOffset:B}=Z.location;this.treeAdapter.updateNodeSourceCodeLocation(V,{endLine:U,endCol:F,endOffset:B})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(V,Z.location)}_adoptNodes(Z,X){for(let Q=this.treeAdapter.getFirstChild(Z);Q;Q=this.treeAdapter.getFirstChild(Z))this.treeAdapter.detachNode(Q),this.treeAdapter.appendChild(X,Q)}_setEndLocation(Z,X){if(this.treeAdapter.getNodeSourceCodeLocation(Z)&&X.location){let Q=X.location,K=this.treeAdapter.getTagName(Z),Y=X.type===m.END_TAG&&K===X.tagName?{endTag:{...Q},endLine:Q.endLine,endCol:Q.endCol,endOffset:Q.endOffset}:{endLine:Q.startLine,endCol:Q.startCol,endOffset:Q.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(Z,Y)}}shouldProcessStartTagTokenInForeignContent(Z){if(!this.currentNotInHTML)return!1;let X,Q;if(this.openElements.stackTop===0&&this.fragmentContext)X=this.fragmentContext,Q=this.fragmentContextID;else({current:X,currentTagId:Q}=this.openElements);if(Z.tagID===J.SVG&&this.treeAdapter.getTagName(X)===q.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(X)===b.MATHML)return!1;return this.tokenizer.inForeignNode||(Z.tagID===J.MGLYPH||Z.tagID===J.MALIGNMARK)&&Q!==void 0&&!this._isIntegrationPoint(Q,X,b.HTML)}_processToken(Z){switch(Z.type){case m.CHARACTER:{this.onCharacter(Z);break}case m.NULL_CHARACTER:{this.onNullCharacter(Z);break}case m.COMMENT:{this.onComment(Z);break}case m.DOCTYPE:{this.onDoctype(Z);break}case m.START_TAG:{this._processStartTag(Z);break}case m.END_TAG:{this.onEndTag(Z);break}case m.EOF:{this.onEof(Z);break}case m.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(Z);break}}}_isIntegrationPoint(Z,X,Q){let K=this.treeAdapter.getNamespaceURI(X),Y=this.treeAdapter.getAttrList(X);return U2(Z,K,Y,Q)}_reconstructActiveFormattingElements(){let Z=this.activeFormattingElements.entries.length;if(Z){let X=this.activeFormattingElements.entries.findIndex((K)=>K.type===z0.Marker||this.openElements.contains(K.element)),Q=X===-1?Z-1:X-1;for(let K=Q;K>=0;K--){let Y=this.activeFormattingElements.entries[K];this._insertElement(Y.token,this.treeAdapter.getNamespaceURI(Y.element)),Y.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=H.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(J.P),this.openElements.popUntilTagNamePopped(J.P)}_resetInsertionMode(){for(let Z=this.openElements.stackTop;Z>=0;Z--)switch(Z===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[Z]){case J.TR:{this.insertionMode=H.IN_ROW;return}case J.TBODY:case J.THEAD:case J.TFOOT:{this.insertionMode=H.IN_TABLE_BODY;return}case J.CAPTION:{this.insertionMode=H.IN_CAPTION;return}case J.COLGROUP:{this.insertionMode=H.IN_COLUMN_GROUP;return}case J.TABLE:{this.insertionMode=H.IN_TABLE;return}case J.BODY:{this.insertionMode=H.IN_BODY;return}case J.FRAMESET:{this.insertionMode=H.IN_FRAMESET;return}case J.SELECT:{this._resetInsertionModeForSelect(Z);return}case J.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case J.HTML:{this.insertionMode=this.headElement?H.AFTER_HEAD:H.BEFORE_HEAD;return}case J.TD:case J.TH:{if(Z>0){this.insertionMode=H.IN_CELL;return}break}case J.HEAD:{if(Z>0){this.insertionMode=H.IN_HEAD;return}break}}this.insertionMode=H.IN_BODY}_resetInsertionModeForSelect(Z){if(Z>0)for(let X=Z-1;X>0;X--){let Q=this.openElements.tagIDs[X];if(Q===J.TEMPLATE)break;else if(Q===J.TABLE){this.insertionMode=H.IN_SELECT_IN_TABLE;return}}this.insertionMode=H.IN_SELECT}_isElementCausesFosterParenting(Z){return L2.has(Z)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let Z=this.openElements.stackTop;Z>=0;Z--){let X=this.openElements.items[Z];switch(this.openElements.tagIDs[Z]){case J.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(X)===b.HTML)return{parent:this.treeAdapter.getTemplateContent(X),beforeElement:null};break}case J.TABLE:{let Q=this.treeAdapter.getParentNode(X);if(Q)return{parent:Q,beforeElement:X};return{parent:this.openElements.items[Z-1],beforeElement:null}}default:}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(Z){let X=this._findFosterParentingLocation();if(X.beforeElement)this.treeAdapter.insertBefore(X.parent,Z,X.beforeElement);else this.treeAdapter.appendChild(X.parent,Z)}_isSpecialElement(Z,X){let Q=this.treeAdapter.getNamespaceURI(Z);return i9[Q].has(X)}onCharacter(Z){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){DX(this,Z);return}switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{W1(this,Z);break}case H.BEFORE_HEAD:{V1(this,Z);break}case H.IN_HEAD:{j1(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{z1(this,Z);break}case H.AFTER_HEAD:{H1(this,Z);break}case H.IN_BODY:case H.IN_CAPTION:case H.IN_CELL:case H.IN_TEMPLATE:{x2(this,Z);break}case H.TEXT:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:{this._insertCharacters(Z);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{Q8(this,Z);break}case H.IN_TABLE_TEXT:{y2(this,Z);break}case H.IN_COLUMN_GROUP:{r1(this,Z);break}case H.AFTER_BODY:{o1(this,Z);break}case H.AFTER_AFTER_BODY:{s1(this,Z);break}default:}}onNullCharacter(Z){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){NX(this,Z);return}switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{W1(this,Z);break}case H.BEFORE_HEAD:{V1(this,Z);break}case H.IN_HEAD:{j1(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{z1(this,Z);break}case H.AFTER_HEAD:{H1(this,Z);break}case H.TEXT:{this._insertCharacters(Z);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{Q8(this,Z);break}case H.IN_COLUMN_GROUP:{r1(this,Z);break}case H.AFTER_BODY:{o1(this,Z);break}case H.AFTER_AFTER_BODY:{s1(this,Z);break}default:}}onComment(Z){if(this.skipNextNewLine=!1,this.currentNotInHTML){J8(this,Z);return}switch(this.insertionMode){case H.INITIAL:case H.BEFORE_HTML:case H.BEFORE_HEAD:case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:case H.IN_BODY:case H.IN_TABLE:case H.IN_CAPTION:case H.IN_COLUMN_GROUP:case H.IN_TABLE_BODY:case H.IN_ROW:case H.IN_CELL:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:case H.IN_TEMPLATE:case H.IN_FRAMESET:case H.AFTER_FRAMESET:{J8(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.AFTER_BODY:{W7(this,Z);break}case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{V7(this,Z);break}default:}}onDoctype(Z){switch(this.skipNextNewLine=!1,this.insertionMode){case H.INITIAL:{j7(this,Z);break}case H.BEFORE_HEAD:case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:{this._err(Z,w.misplacedDoctype);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}default:}}onStartTag(Z){if(this.skipNextNewLine=!1,this.currentToken=Z,this._processStartTag(Z),Z.selfClosing&&!Z.ackSelfClosing)this._err(Z,w.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(Z){if(this.shouldProcessStartTagTokenInForeignContent(Z))$X(this,Z);else this._startTagOutsideForeignContent(Z)}_startTagOutsideForeignContent(Z){switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{z7(this,Z);break}case H.BEFORE_HEAD:{U7(this,Z);break}case H.IN_HEAD:{H0(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{F7(this,Z);break}case H.AFTER_HEAD:{L7(this,Z);break}case H.IN_BODY:{n(this,Z);break}case H.IN_TABLE:{d0(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.IN_CAPTION:{qX(this,Z);break}case H.IN_COLUMN_GROUP:{V8(this,Z);break}case H.IN_TABLE_BODY:{e1(this,Z);break}case H.IN_ROW:{Z4(this,Z);break}case H.IN_CELL:{wX(this,Z);break}case H.IN_SELECT:{M2(this,Z);break}case H.IN_SELECT_IN_TABLE:{PX(this,Z);break}case H.IN_TEMPLATE:{bX(this,Z);break}case H.AFTER_BODY:{CX(this,Z);break}case H.IN_FRAMESET:{RX(this,Z);break}case H.AFTER_FRAMESET:{yX(this,Z);break}case H.AFTER_AFTER_BODY:{hX(this,Z);break}case H.AFTER_AFTER_FRAMESET:{MX(this,Z);break}default:}}onEndTag(Z){if(this.skipNextNewLine=!1,this.currentToken=Z,this.currentNotInHTML)GX(this,Z);else this._endTagOutsideForeignContent(Z)}_endTagOutsideForeignContent(Z){switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{H7(this,Z);break}case H.BEFORE_HEAD:{q7(this,Z);break}case H.IN_HEAD:{B7(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{w7(this,Z);break}case H.AFTER_HEAD:{P7(this,Z);break}case H.IN_BODY:{t1(this,Z);break}case H.TEXT:{QX(this,Z);break}case H.IN_TABLE:{U1(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.IN_CAPTION:{BX(this,Z);break}case H.IN_COLUMN_GROUP:{FX(this,Z);break}case H.IN_TABLE_BODY:{K8(this,Z);break}case H.IN_ROW:{h2(this,Z);break}case H.IN_CELL:{LX(this,Z);break}case H.IN_SELECT:{N2(this,Z);break}case H.IN_SELECT_IN_TABLE:{xX(this,Z);break}case H.IN_TEMPLATE:{OX(this,Z);break}case H.AFTER_BODY:{$2(this,Z);break}case H.IN_FRAMESET:{vX(this,Z);break}case H.AFTER_FRAMESET:{fX(this,Z);break}case H.AFTER_AFTER_BODY:{s1(this,Z);break}default:}}onEof(Z){switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{W1(this,Z);break}case H.BEFORE_HEAD:{V1(this,Z);break}case H.IN_HEAD:{j1(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{z1(this,Z);break}case H.AFTER_HEAD:{H1(this,Z);break}case H.IN_BODY:case H.IN_TABLE:case H.IN_CAPTION:case H.IN_COLUMN_GROUP:case H.IN_TABLE_BODY:case H.IN_ROW:case H.IN_CELL:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:{R2(this,Z);break}case H.TEXT:{JX(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.IN_TEMPLATE:{D2(this,Z);break}case H.AFTER_BODY:case H.IN_FRAMESET:case H.AFTER_FRAMESET:case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{W8(this,Z);break}default:}}onWhitespaceCharacter(Z){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,Z.chars.charCodeAt(0)===W.LINE_FEED){if(Z.chars.length===1)return;Z.chars=Z.chars.substr(1)}}if(this.tokenizer.inForeignNode){this._insertCharacters(Z);return}switch(this.insertionMode){case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:case H.TEXT:case H.IN_COLUMN_GROUP:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:case H.IN_FRAMESET:case H.AFTER_FRAMESET:{this._insertCharacters(Z);break}case H.IN_BODY:case H.IN_CAPTION:case H.IN_CELL:case H.IN_TEMPLATE:case H.AFTER_BODY:case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{P2(this,Z);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{Q8(this,Z);break}case H.IN_TABLE_TEXT:{v2(this,Z);break}default:}}}function Z7(Z,X){let Q=Z.activeFormattingElements.getElementEntryInScopeWithTagName(X.tagName);if(Q){if(!Z.openElements.contains(Q.element))Z.activeFormattingElements.removeEntry(Q),Q=null;else if(!Z.openElements.hasInScope(X.tagID))Q=null}else C2(Z,X);return Q}function X7(Z,X){let Q=null,K=Z.openElements.stackTop;for(;K>=0;K--){let Y=Z.openElements.items[K];if(Y===X.element)break;if(Z._isSpecialElement(Y,Z.openElements.tagIDs[K]))Q=Y}if(!Q)Z.openElements.shortenToLength(Math.max(K,0)),Z.activeFormattingElements.removeEntry(X);return Q}function Q7(Z,X,Q){let K=X,Y=Z.openElements.getCommonAncestor(X);for(let V=0,z=Y;z!==Q;V++,z=Y){Y=Z.openElements.getCommonAncestor(z);let U=Z.activeFormattingElements.getElementEntry(z),F=U&&V>=t3;if(!U||F){if(F)Z.activeFormattingElements.removeEntry(U);Z.openElements.remove(z)}else{if(z=J7(Z,U),K===X)Z.activeFormattingElements.bookmark=U;Z.treeAdapter.detachNode(K),Z.treeAdapter.appendChild(z,K),K=z}}return K}function J7(Z,X){let Q=Z.treeAdapter.getNamespaceURI(X.element),K=Z.treeAdapter.createElement(X.token.tagName,Q,X.token.attrs);return Z.openElements.replace(X.element,K),X.element=K,K}function K7(Z,X,Q){let K=Z.treeAdapter.getTagName(X),Y=E0(K);if(Z._isElementCausesFosterParenting(Y))Z._fosterParentElement(Q);else{let V=Z.treeAdapter.getNamespaceURI(X);if(Y===J.TEMPLATE&&V===b.HTML)X=Z.treeAdapter.getTemplateContent(X);Z.treeAdapter.appendChild(X,Q)}}function Y7(Z,X,Q){let K=Z.treeAdapter.getNamespaceURI(Q.element),{token:Y}=Q,V=Z.treeAdapter.createElement(Y.tagName,K,Y.attrs);Z._adoptNodes(X,V),Z.treeAdapter.appendChild(X,V),Z.activeFormattingElements.insertElementAfterBookmark(V,Y),Z.activeFormattingElements.removeEntry(Q),Z.openElements.remove(Q.element),Z.openElements.insertAfter(X,V,Y.tagID)}function Y8(Z,X){for(let Q=0;Q<n3;Q++){let K=Z7(Z,X);if(!K)break;let Y=X7(Z,K);if(!Y)break;Z.activeFormattingElements.bookmark=K;let V=Q7(Z,Y,K.element),z=Z.openElements.getCommonAncestor(K.element);if(Z.treeAdapter.detachNode(V),z)K7(Z,z,V);Y7(Z,Y,K)}}function J8(Z,X){Z._appendCommentNode(X,Z.openElements.currentTmplContentOrNode)}function W7(Z,X){Z._appendCommentNode(X,Z.openElements.items[0])}function V7(Z,X){Z._appendCommentNode(X,Z.document)}function W8(Z,X){if(Z.stopped=!0,X.location){let Q=Z.fragmentContext?0:2;for(let K=Z.openElements.stackTop;K>=Q;K--)Z._setEndLocation(Z.openElements.items[K],X);if(!Z.fragmentContext&&Z.openElements.stackTop>=0){let K=Z.openElements.items[0],Y=Z.treeAdapter.getNodeSourceCodeLocation(K);if(Y&&!Y.endTag){if(Z._setEndLocation(K,X),Z.openElements.stackTop>=1){let V=Z.openElements.items[1],z=Z.treeAdapter.getNodeSourceCodeLocation(V);if(z&&!z.endTag)Z._setEndLocation(V,X)}}}}}function j7(Z,X){Z._setDocumentType(X);let Q=X.forceQuirks?e.QUIRKS:V2(X);if(!W2(X))Z._err(X,w.nonConformingDoctype);Z.treeAdapter.setDocumentMode(Z.document,Q),Z.insertionMode=H.BEFORE_HTML}function K1(Z,X){Z._err(X,w.missingDoctype,!0),Z.treeAdapter.setDocumentMode(Z.document,e.QUIRKS),Z.insertionMode=H.BEFORE_HTML,Z._processToken(X)}function z7(Z,X){if(X.tagID===J.HTML)Z._insertElement(X,b.HTML),Z.insertionMode=H.BEFORE_HEAD;else W1(Z,X)}function H7(Z,X){let Q=X.tagID;if(Q===J.HTML||Q===J.HEAD||Q===J.BODY||Q===J.BR)W1(Z,X)}function W1(Z,X){Z._insertFakeRootElement(),Z.insertionMode=H.BEFORE_HEAD,Z._processToken(X)}function U7(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.HEAD:{Z._insertElement(X,b.HTML),Z.headElement=Z.openElements.current,Z.insertionMode=H.IN_HEAD;break}default:V1(Z,X)}}function q7(Z,X){let Q=X.tagID;if(Q===J.HEAD||Q===J.BODY||Q===J.HTML||Q===J.BR)V1(Z,X);else Z._err(X,w.endTagWithoutMatchingOpenElement)}function V1(Z,X){Z._insertFakeElement(q.HEAD,J.HEAD),Z.headElement=Z.openElements.current,Z.insertionMode=H.IN_HEAD,Z._processToken(X)}function H0(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:{Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.TITLE:{Z._switchToTextParsing(X,o.RCDATA);break}case J.NOSCRIPT:{if(Z.options.scriptingEnabled)Z._switchToTextParsing(X,o.RAWTEXT);else Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_HEAD_NO_SCRIPT;break}case J.NOFRAMES:case J.STYLE:{Z._switchToTextParsing(X,o.RAWTEXT);break}case J.SCRIPT:{Z._switchToTextParsing(X,o.SCRIPT_DATA);break}case J.TEMPLATE:{Z._insertTemplate(X),Z.activeFormattingElements.insertMarker(),Z.framesetOk=!1,Z.insertionMode=H.IN_TEMPLATE,Z.tmplInsertionModeStack.unshift(H.IN_TEMPLATE);break}case J.HEAD:{Z._err(X,w.misplacedStartTagForHeadElement);break}default:j1(Z,X)}}function B7(Z,X){switch(X.tagID){case J.HEAD:{Z.openElements.pop(),Z.insertionMode=H.AFTER_HEAD;break}case J.BODY:case J.BR:case J.HTML:{j1(Z,X);break}case J.TEMPLATE:{m0(Z,X);break}default:Z._err(X,w.endTagWithoutMatchingOpenElement)}}function m0(Z,X){if(Z.openElements.tmplCount>0){if(Z.openElements.generateImpliedEndTagsThoroughly(),Z.openElements.currentTagId!==J.TEMPLATE)Z._err(X,w.closingOfElementWithOpenChildElements);Z.openElements.popUntilTagNamePopped(J.TEMPLATE),Z.activeFormattingElements.clearToLastMarker(),Z.tmplInsertionModeStack.shift(),Z._resetInsertionMode()}else Z._err(X,w.endTagWithoutMatchingOpenElement)}function j1(Z,X){Z.openElements.pop(),Z.insertionMode=H.AFTER_HEAD,Z._processToken(X)}function F7(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.BASEFONT:case J.BGSOUND:case J.HEAD:case J.LINK:case J.META:case J.NOFRAMES:case J.STYLE:{H0(Z,X);break}case J.NOSCRIPT:{Z._err(X,w.nestedNoscriptInHead);break}default:z1(Z,X)}}function w7(Z,X){switch(X.tagID){case J.NOSCRIPT:{Z.openElements.pop(),Z.insertionMode=H.IN_HEAD;break}case J.BR:{z1(Z,X);break}default:Z._err(X,w.endTagWithoutMatchingOpenElement)}}function z1(Z,X){let Q=X.type===m.EOF?w.openElementsLeftAfterEof:w.disallowedContentInNoscriptInHead;Z._err(X,Q),Z.openElements.pop(),Z.insertionMode=H.IN_HEAD,Z._processToken(X)}function L7(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.BODY:{Z._insertElement(X,b.HTML),Z.framesetOk=!1,Z.insertionMode=H.IN_BODY;break}case J.FRAMESET:{Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_FRAMESET;break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{Z._err(X,w.abandonedHeadElementChild),Z.openElements.push(Z.headElement,J.HEAD),H0(Z,X),Z.openElements.remove(Z.headElement);break}case J.HEAD:{Z._err(X,w.misplacedStartTagForHeadElement);break}default:H1(Z,X)}}function P7(Z,X){switch(X.tagID){case J.BODY:case J.HTML:case J.BR:{H1(Z,X);break}case J.TEMPLATE:{m0(Z,X);break}default:Z._err(X,w.endTagWithoutMatchingOpenElement)}}function H1(Z,X){Z._insertFakeElement(q.BODY,J.BODY),Z.insertionMode=H.IN_BODY,n1(Z,X)}function n1(Z,X){switch(X.type){case m.CHARACTER:{x2(Z,X);break}case m.WHITESPACE_CHARACTER:{P2(Z,X);break}case m.COMMENT:{J8(Z,X);break}case m.START_TAG:{n(Z,X);break}case m.END_TAG:{t1(Z,X);break}case m.EOF:{R2(Z,X);break}default:}}function P2(Z,X){Z._reconstructActiveFormattingElements(),Z._insertCharacters(X)}function x2(Z,X){Z._reconstructActiveFormattingElements(),Z._insertCharacters(X),Z.framesetOk=!1}function x7(Z,X){if(Z.openElements.tmplCount===0)Z.treeAdapter.adoptAttributes(Z.openElements.items[0],X.attrs)}function b7(Z,X){let Q=Z.openElements.tryPeekProperlyNestedBodyElement();if(Q&&Z.openElements.tmplCount===0)Z.framesetOk=!1,Z.treeAdapter.adoptAttributes(Q,X.attrs)}function O7(Z,X){let Q=Z.openElements.tryPeekProperlyNestedBodyElement();if(Z.framesetOk&&Q)Z.treeAdapter.detachNode(Q),Z.openElements.popAllUpToHtmlElement(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_FRAMESET}function C7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML)}function R7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();if(Z.openElements.currentTagId!==void 0&&Q1.has(Z.openElements.currentTagId))Z.openElements.pop();Z._insertElement(X,b.HTML)}function v7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML),Z.skipNextNewLine=!0,Z.framesetOk=!1}function y7(Z,X){let Q=Z.openElements.tmplCount>0;if(!Z.formElement||Q){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();if(Z._insertElement(X,b.HTML),!Q)Z.formElement=Z.openElements.current}}function f7(Z,X){Z.framesetOk=!1;let Q=X.tagID;for(let K=Z.openElements.stackTop;K>=0;K--){let Y=Z.openElements.tagIDs[K];if(Q===J.LI&&Y===J.LI||(Q===J.DD||Q===J.DT)&&(Y===J.DD||Y===J.DT)){Z.openElements.generateImpliedEndTagsWithExclusion(Y),Z.openElements.popUntilTagNamePopped(Y);break}if(Y!==J.ADDRESS&&Y!==J.DIV&&Y!==J.P&&Z._isSpecialElement(Z.openElements.items[K],Y))break}if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML)}function h7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML),Z.tokenizer.state=o.PLAINTEXT}function M7(Z,X){if(Z.openElements.hasInScope(J.BUTTON))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(J.BUTTON);Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.framesetOk=!1}function N7(Z,X){let Q=Z.activeFormattingElements.getElementEntryInScopeWithTagName(q.A);if(Q)Y8(Z,X),Z.openElements.remove(Q.element),Z.activeFormattingElements.removeEntry(Q);Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.activeFormattingElements.pushElement(Z.openElements.current,X)}function D7(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.activeFormattingElements.pushElement(Z.openElements.current,X)}function $7(Z,X){if(Z._reconstructActiveFormattingElements(),Z.openElements.hasInScope(J.NOBR))Y8(Z,X),Z._reconstructActiveFormattingElements();Z._insertElement(X,b.HTML),Z.activeFormattingElements.pushElement(Z.openElements.current,X)}function G7(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.activeFormattingElements.insertMarker(),Z.framesetOk=!1}function g7(Z,X){if(Z.treeAdapter.getDocumentMode(Z.document)!==e.QUIRKS&&Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML),Z.framesetOk=!1,Z.insertionMode=H.IN_TABLE}function b2(Z,X){Z._reconstructActiveFormattingElements(),Z._appendElement(X,b.HTML),Z.framesetOk=!1,X.ackSelfClosing=!0}function O2(Z){let X=c1(Z,b0.TYPE);return X!=null&&X.toLowerCase()===o3}function E7(Z,X){if(Z._reconstructActiveFormattingElements(),Z._appendElement(X,b.HTML),!O2(X))Z.framesetOk=!1;X.ackSelfClosing=!0}function m7(Z,X){Z._appendElement(X,b.HTML),X.ackSelfClosing=!0}function _7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._appendElement(X,b.HTML),Z.framesetOk=!1,X.ackSelfClosing=!0}function k7(Z,X){X.tagName=q.IMG,X.tagID=J.IMG,b2(Z,X)}function S7(Z,X){Z._insertElement(X,b.HTML),Z.skipNextNewLine=!0,Z.tokenizer.state=o.RCDATA,Z.originalInsertionMode=Z.insertionMode,Z.framesetOk=!1,Z.insertionMode=H.TEXT}function I7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._reconstructActiveFormattingElements(),Z.framesetOk=!1,Z._switchToTextParsing(X,o.RAWTEXT)}function T7(Z,X){Z.framesetOk=!1,Z._switchToTextParsing(X,o.RAWTEXT)}function F2(Z,X){Z._switchToTextParsing(X,o.RAWTEXT)}function A7(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.framesetOk=!1,Z.insertionMode=Z.insertionMode===H.IN_TABLE||Z.insertionMode===H.IN_CAPTION||Z.insertionMode===H.IN_TABLE_BODY||Z.insertionMode===H.IN_ROW||Z.insertionMode===H.IN_CELL?H.IN_SELECT_IN_TABLE:H.IN_SELECT}function u7(Z,X){if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML)}function l7(Z,X){if(Z.openElements.hasInScope(J.RUBY))Z.openElements.generateImpliedEndTags();Z._insertElement(X,b.HTML)}function c7(Z,X){if(Z.openElements.hasInScope(J.RUBY))Z.openElements.generateImpliedEndTagsWithExclusion(J.RTC);Z._insertElement(X,b.HTML)}function d7(Z,X){if(Z._reconstructActiveFormattingElements(),Z8(X),p1(X),X.selfClosing)Z._appendElement(X,b.MATHML);else Z._insertElement(X,b.MATHML);X.ackSelfClosing=!0}function a7(Z,X){if(Z._reconstructActiveFormattingElements(),X8(X),p1(X),X.selfClosing)Z._appendElement(X,b.SVG);else Z._insertElement(X,b.SVG);X.ackSelfClosing=!0}function w2(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML)}function n(Z,X){switch(X.tagID){case J.I:case J.S:case J.B:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.SMALL:case J.STRIKE:case J.STRONG:{D7(Z,X);break}case J.A:{N7(Z,X);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{R7(Z,X);break}case J.P:case J.DL:case J.OL:case J.UL:case J.DIV:case J.DIR:case J.NAV:case J.MAIN:case J.MENU:case J.ASIDE:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.DETAILS:case J.ADDRESS:case J.ARTICLE:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{C7(Z,X);break}case J.LI:case J.DD:case J.DT:{f7(Z,X);break}case J.BR:case J.IMG:case J.WBR:case J.AREA:case J.EMBED:case J.KEYGEN:{b2(Z,X);break}case J.HR:{_7(Z,X);break}case J.RB:case J.RTC:{l7(Z,X);break}case J.RT:case J.RP:{c7(Z,X);break}case J.PRE:case J.LISTING:{v7(Z,X);break}case J.XMP:{I7(Z,X);break}case J.SVG:{a7(Z,X);break}case J.HTML:{x7(Z,X);break}case J.BASE:case J.LINK:case J.META:case J.STYLE:case J.TITLE:case J.SCRIPT:case J.BGSOUND:case J.BASEFONT:case J.TEMPLATE:{H0(Z,X);break}case J.BODY:{b7(Z,X);break}case J.FORM:{y7(Z,X);break}case J.NOBR:{$7(Z,X);break}case J.MATH:{d7(Z,X);break}case J.TABLE:{g7(Z,X);break}case J.INPUT:{E7(Z,X);break}case J.PARAM:case J.TRACK:case J.SOURCE:{m7(Z,X);break}case J.IMAGE:{k7(Z,X);break}case J.BUTTON:{M7(Z,X);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{G7(Z,X);break}case J.IFRAME:{T7(Z,X);break}case J.SELECT:{A7(Z,X);break}case J.OPTION:case J.OPTGROUP:{u7(Z,X);break}case J.NOEMBED:case J.NOFRAMES:{F2(Z,X);break}case J.FRAMESET:{O7(Z,X);break}case J.TEXTAREA:{S7(Z,X);break}case J.NOSCRIPT:{if(Z.options.scriptingEnabled)F2(Z,X);else w2(Z,X);break}case J.PLAINTEXT:{h7(Z,X);break}case J.COL:case J.TH:case J.TD:case J.TR:case J.HEAD:case J.FRAME:case J.TBODY:case J.TFOOT:case J.THEAD:case J.CAPTION:case J.COLGROUP:break;default:w2(Z,X)}}function i7(Z,X){if(Z.openElements.hasInScope(J.BODY)){if(Z.insertionMode=H.AFTER_BODY,Z.options.sourceCodeLocationInfo){let Q=Z.openElements.tryPeekProperlyNestedBodyElement();if(Q)Z._setEndLocation(Q,X)}}}function p7(Z,X){if(Z.openElements.hasInScope(J.BODY))Z.insertionMode=H.AFTER_BODY,$2(Z,X)}function s7(Z,X){let Q=X.tagID;if(Z.openElements.hasInScope(Q))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(Q)}function r7(Z){let X=Z.openElements.tmplCount>0,{formElement:Q}=Z;if(!X)Z.formElement=null;if((Q||X)&&Z.openElements.hasInScope(J.FORM)){if(Z.openElements.generateImpliedEndTags(),X)Z.openElements.popUntilTagNamePopped(J.FORM);else if(Q)Z.openElements.remove(Q)}}function o7(Z){if(!Z.openElements.hasInButtonScope(J.P))Z._insertFakeElement(q.P,J.P);Z._closePElement()}function n7(Z){if(Z.openElements.hasInListItemScope(J.LI))Z.openElements.generateImpliedEndTagsWithExclusion(J.LI),Z.openElements.popUntilTagNamePopped(J.LI)}function t7(Z,X){let Q=X.tagID;if(Z.openElements.hasInScope(Q))Z.openElements.generateImpliedEndTagsWithExclusion(Q),Z.openElements.popUntilTagNamePopped(Q)}function e7(Z){if(Z.openElements.hasNumberedHeaderInScope())Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilNumberedHeaderPopped()}function ZX(Z,X){let Q=X.tagID;if(Z.openElements.hasInScope(Q))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(Q),Z.activeFormattingElements.clearToLastMarker()}function XX(Z){Z._reconstructActiveFormattingElements(),Z._insertFakeElement(q.BR,J.BR),Z.openElements.pop(),Z.framesetOk=!1}function C2(Z,X){let{tagName:Q,tagID:K}=X;for(let Y=Z.openElements.stackTop;Y>0;Y--){let V=Z.openElements.items[Y],z=Z.openElements.tagIDs[Y];if(K===z&&(K!==J.UNKNOWN||Z.treeAdapter.getTagName(V)===Q)){if(Z.openElements.generateImpliedEndTagsWithExclusion(K),Z.openElements.stackTop>=Y)Z.openElements.shortenToLength(Y);break}if(Z._isSpecialElement(V,z))break}}function t1(Z,X){switch(X.tagID){case J.A:case J.B:case J.I:case J.S:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.NOBR:case J.SMALL:case J.STRIKE:case J.STRONG:{Y8(Z,X);break}case J.P:{o7(Z);break}case J.DL:case J.UL:case J.OL:case J.DIR:case J.DIV:case J.NAV:case J.PRE:case J.MAIN:case J.MENU:case J.ASIDE:case J.BUTTON:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.ADDRESS:case J.ARTICLE:case J.DETAILS:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.LISTING:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{s7(Z,X);break}case J.LI:{n7(Z);break}case J.DD:case J.DT:{t7(Z,X);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{e7(Z);break}case J.BR:{XX(Z);break}case J.BODY:{i7(Z,X);break}case J.HTML:{p7(Z,X);break}case J.FORM:{r7(Z);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{ZX(Z,X);break}case J.TEMPLATE:{m0(Z,X);break}default:C2(Z,X)}}function R2(Z,X){if(Z.tmplInsertionModeStack.length>0)D2(Z,X);else W8(Z,X)}function QX(Z,X){var Q;if(X.tagID===J.SCRIPT)(Q=Z.scriptHandler)===null||Q===void 0||Q.call(Z,Z.openElements.current);Z.openElements.pop(),Z.insertionMode=Z.originalInsertionMode}function JX(Z,X){Z._err(X,w.eofInElementThatCanContainOnlyText),Z.openElements.pop(),Z.insertionMode=Z.originalInsertionMode,Z.onEof(X)}function Q8(Z,X){if(Z.openElements.currentTagId!==void 0&&L2.has(Z.openElements.currentTagId))switch(Z.pendingCharacterTokens.length=0,Z.hasNonWhitespacePendingCharacterToken=!1,Z.originalInsertionMode=Z.insertionMode,Z.insertionMode=H.IN_TABLE_TEXT,X.type){case m.CHARACTER:{y2(Z,X);break}case m.WHITESPACE_CHARACTER:{v2(Z,X);break}}else B1(Z,X)}function KX(Z,X){Z.openElements.clearBackToTableContext(),Z.activeFormattingElements.insertMarker(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_CAPTION}function YX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_COLUMN_GROUP}function WX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertFakeElement(q.COLGROUP,J.COLGROUP),Z.insertionMode=H.IN_COLUMN_GROUP,V8(Z,X)}function VX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_TABLE_BODY}function jX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertFakeElement(q.TBODY,J.TBODY),Z.insertionMode=H.IN_TABLE_BODY,e1(Z,X)}function zX(Z,X){if(Z.openElements.hasInTableScope(J.TABLE))Z.openElements.popUntilTagNamePopped(J.TABLE),Z._resetInsertionMode(),Z._processStartTag(X)}function HX(Z,X){if(O2(X))Z._appendElement(X,b.HTML);else B1(Z,X);X.ackSelfClosing=!0}function UX(Z,X){if(!Z.formElement&&Z.openElements.tmplCount===0)Z._insertElement(X,b.HTML),Z.formElement=Z.openElements.current,Z.openElements.pop()}function d0(Z,X){switch(X.tagID){case J.TD:case J.TH:case J.TR:{jX(Z,X);break}case J.STYLE:case J.SCRIPT:case J.TEMPLATE:{H0(Z,X);break}case J.COL:{WX(Z,X);break}case J.FORM:{UX(Z,X);break}case J.TABLE:{zX(Z,X);break}case J.TBODY:case J.TFOOT:case J.THEAD:{VX(Z,X);break}case J.INPUT:{HX(Z,X);break}case J.CAPTION:{KX(Z,X);break}case J.COLGROUP:{YX(Z,X);break}default:B1(Z,X)}}function U1(Z,X){switch(X.tagID){case J.TABLE:{if(Z.openElements.hasInTableScope(J.TABLE))Z.openElements.popUntilTagNamePopped(J.TABLE),Z._resetInsertionMode();break}case J.TEMPLATE:{m0(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:B1(Z,X)}}function B1(Z,X){let Q=Z.fosterParentingEnabled;Z.fosterParentingEnabled=!0,n1(Z,X),Z.fosterParentingEnabled=Q}function v2(Z,X){Z.pendingCharacterTokens.push(X)}function y2(Z,X){Z.pendingCharacterTokens.push(X),Z.hasNonWhitespacePendingCharacterToken=!0}function Y1(Z,X){let Q=0;if(Z.hasNonWhitespacePendingCharacterToken)for(;Q<Z.pendingCharacterTokens.length;Q++)B1(Z,Z.pendingCharacterTokens[Q]);else for(;Q<Z.pendingCharacterTokens.length;Q++)Z._insertCharacters(Z.pendingCharacterTokens[Q]);Z.insertionMode=Z.originalInsertionMode,Z._processToken(X)}var f2=new Set([J.CAPTION,J.COL,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]);function qX(Z,X){let Q=X.tagID;if(f2.has(Q)){if(Z.openElements.hasInTableScope(J.CAPTION))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(J.CAPTION),Z.activeFormattingElements.clearToLastMarker(),Z.insertionMode=H.IN_TABLE,d0(Z,X)}else n(Z,X)}function BX(Z,X){let Q=X.tagID;switch(Q){case J.CAPTION:case J.TABLE:{if(Z.openElements.hasInTableScope(J.CAPTION)){if(Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(J.CAPTION),Z.activeFormattingElements.clearToLastMarker(),Z.insertionMode=H.IN_TABLE,Q===J.TABLE)U1(Z,X)}break}case J.BODY:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:t1(Z,X)}}function V8(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.COL:{Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.TEMPLATE:{H0(Z,X);break}default:r1(Z,X)}}function FX(Z,X){switch(X.tagID){case J.COLGROUP:{if(Z.openElements.currentTagId===J.COLGROUP)Z.openElements.pop(),Z.insertionMode=H.IN_TABLE;break}case J.TEMPLATE:{m0(Z,X);break}case J.COL:break;default:r1(Z,X)}}function r1(Z,X){if(Z.openElements.currentTagId===J.COLGROUP)Z.openElements.pop(),Z.insertionMode=H.IN_TABLE,Z._processToken(X)}function e1(Z,X){switch(X.tagID){case J.TR:{Z.openElements.clearBackToTableBodyContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_ROW;break}case J.TH:case J.TD:{Z.openElements.clearBackToTableBodyContext(),Z._insertFakeElement(q.TR,J.TR),Z.insertionMode=H.IN_ROW,Z4(Z,X);break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{if(Z.openElements.hasTableBodyContextInTableScope())Z.openElements.clearBackToTableBodyContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE,d0(Z,X);break}default:d0(Z,X)}}function K8(Z,X){let Q=X.tagID;switch(X.tagID){case J.TBODY:case J.TFOOT:case J.THEAD:{if(Z.openElements.hasInTableScope(Q))Z.openElements.clearBackToTableBodyContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE;break}case J.TABLE:{if(Z.openElements.hasTableBodyContextInTableScope())Z.openElements.clearBackToTableBodyContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE,U1(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:case J.TR:break;default:U1(Z,X)}}function Z4(Z,X){switch(X.tagID){case J.TH:case J.TD:{Z.openElements.clearBackToTableRowContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_CELL,Z.activeFormattingElements.insertMarker();break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY,e1(Z,X);break}default:d0(Z,X)}}function h2(Z,X){switch(X.tagID){case J.TR:{if(Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY;break}case J.TABLE:{if(Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY,K8(Z,X);break}case J.TBODY:case J.TFOOT:case J.THEAD:{if(Z.openElements.hasInTableScope(X.tagID)||Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY,K8(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:break;default:U1(Z,X)}}function wX(Z,X){let Q=X.tagID;if(f2.has(Q)){if(Z.openElements.hasInTableScope(J.TD)||Z.openElements.hasInTableScope(J.TH))Z._closeTableCell(),Z4(Z,X)}else n(Z,X)}function LX(Z,X){let Q=X.tagID;switch(Q){case J.TD:case J.TH:{if(Z.openElements.hasInTableScope(Q))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(Q),Z.activeFormattingElements.clearToLastMarker(),Z.insertionMode=H.IN_ROW;break}case J.TABLE:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(Z.openElements.hasInTableScope(Q))Z._closeTableCell(),h2(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:break;default:t1(Z,X)}}function M2(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.OPTION:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();Z._insertElement(X,b.HTML);break}case J.OPTGROUP:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();if(Z.openElements.currentTagId===J.OPTGROUP)Z.openElements.pop();Z._insertElement(X,b.HTML);break}case J.HR:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();if(Z.openElements.currentTagId===J.OPTGROUP)Z.openElements.pop();Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.INPUT:case J.KEYGEN:case J.TEXTAREA:case J.SELECT:{if(Z.openElements.hasInSelectScope(J.SELECT)){if(Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode(),X.tagID!==J.SELECT)Z._processStartTag(X)}break}case J.SCRIPT:case J.TEMPLATE:{H0(Z,X);break}default:}}function N2(Z,X){switch(X.tagID){case J.OPTGROUP:{if(Z.openElements.stackTop>0&&Z.openElements.currentTagId===J.OPTION&&Z.openElements.tagIDs[Z.openElements.stackTop-1]===J.OPTGROUP)Z.openElements.pop();if(Z.openElements.currentTagId===J.OPTGROUP)Z.openElements.pop();break}case J.OPTION:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();break}case J.SELECT:{if(Z.openElements.hasInSelectScope(J.SELECT))Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode();break}case J.TEMPLATE:{m0(Z,X);break}default:}}function PX(Z,X){let Q=X.tagID;if(Q===J.CAPTION||Q===J.TABLE||Q===J.TBODY||Q===J.TFOOT||Q===J.THEAD||Q===J.TR||Q===J.TD||Q===J.TH)Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode(),Z._processStartTag(X);else M2(Z,X)}function xX(Z,X){let Q=X.tagID;if(Q===J.CAPTION||Q===J.TABLE||Q===J.TBODY||Q===J.TFOOT||Q===J.THEAD||Q===J.TR||Q===J.TD||Q===J.TH){if(Z.openElements.hasInTableScope(Q))Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode(),Z.onEndTag(X)}else N2(Z,X)}function bX(Z,X){switch(X.tagID){case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{H0(Z,X);break}case J.CAPTION:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{Z.tmplInsertionModeStack[0]=H.IN_TABLE,Z.insertionMode=H.IN_TABLE,d0(Z,X);break}case J.COL:{Z.tmplInsertionModeStack[0]=H.IN_COLUMN_GROUP,Z.insertionMode=H.IN_COLUMN_GROUP,V8(Z,X);break}case J.TR:{Z.tmplInsertionModeStack[0]=H.IN_TABLE_BODY,Z.insertionMode=H.IN_TABLE_BODY,e1(Z,X);break}case J.TD:case J.TH:{Z.tmplInsertionModeStack[0]=H.IN_ROW,Z.insertionMode=H.IN_ROW,Z4(Z,X);break}default:Z.tmplInsertionModeStack[0]=H.IN_BODY,Z.insertionMode=H.IN_BODY,n(Z,X)}}function OX(Z,X){if(X.tagID===J.TEMPLATE)m0(Z,X)}function D2(Z,X){if(Z.openElements.tmplCount>0)Z.openElements.popUntilTagNamePopped(J.TEMPLATE),Z.activeFormattingElements.clearToLastMarker(),Z.tmplInsertionModeStack.shift(),Z._resetInsertionMode(),Z.onEof(X);else W8(Z,X)}function CX(Z,X){if(X.tagID===J.HTML)n(Z,X);else o1(Z,X)}function $2(Z,X){var Q;if(X.tagID===J.HTML){if(!Z.fragmentContext)Z.insertionMode=H.AFTER_AFTER_BODY;if(Z.options.sourceCodeLocationInfo&&Z.openElements.tagIDs[0]===J.HTML){Z._setEndLocation(Z.openElements.items[0],X);let K=Z.openElements.items[1];if(K&&!((Q=Z.treeAdapter.getNodeSourceCodeLocation(K))===null||Q===void 0?void 0:Q.endTag))Z._setEndLocation(K,X)}}else o1(Z,X)}function o1(Z,X){Z.insertionMode=H.IN_BODY,n1(Z,X)}function RX(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.FRAMESET:{Z._insertElement(X,b.HTML);break}case J.FRAME:{Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.NOFRAMES:{H0(Z,X);break}default:}}function vX(Z,X){if(X.tagID===J.FRAMESET&&!Z.openElements.isRootHtmlElementCurrent()){if(Z.openElements.pop(),!Z.fragmentContext&&Z.openElements.currentTagId!==J.FRAMESET)Z.insertionMode=H.AFTER_FRAMESET}}function yX(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.NOFRAMES:{H0(Z,X);break}default:}}function fX(Z,X){if(X.tagID===J.HTML)Z.insertionMode=H.AFTER_AFTER_FRAMESET}function hX(Z,X){if(X.tagID===J.HTML)n(Z,X);else s1(Z,X)}function s1(Z,X){Z.insertionMode=H.IN_BODY,n1(Z,X)}function MX(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.NOFRAMES:{H0(Z,X);break}default:}}function NX(Z,X){X.chars=A,Z._insertCharacters(X)}function DX(Z,X){Z._insertCharacters(X),Z.framesetOk=!1}function G2(Z){while(Z.treeAdapter.getNamespaceURI(Z.openElements.current)!==b.HTML&&Z.openElements.currentTagId!==void 0&&!Z._isIntegrationPoint(Z.openElements.currentTagId,Z.openElements.current))Z.openElements.pop()}function $X(Z,X){if(z2(X))G2(Z),Z._startTagOutsideForeignContent(X);else{let Q=Z._getAdjustedCurrentElement(),K=Z.treeAdapter.getNamespaceURI(Q);if(K===b.MATHML)Z8(X);else if(K===b.SVG)H2(X),X8(X);if(p1(X),X.selfClosing)Z._appendElement(X,K);else Z._insertElement(X,K);X.ackSelfClosing=!0}}function GX(Z,X){if(X.tagID===J.P||X.tagID===J.BR){G2(Z),Z._endTagOutsideForeignContent(X);return}for(let Q=Z.openElements.stackTop;Q>0;Q--){let K=Z.openElements.items[Q];if(Z.treeAdapter.getNamespaceURI(K)===b.HTML){Z._endTagOutsideForeignContent(X);break}let Y=Z.treeAdapter.getTagName(K);if(Y.toLowerCase()===X.tagName){X.tagName=Y,Z.openElements.shortenToLength(Q);break}}}var jY=typeof String.prototype.codePointAt==="function"?(Z,X)=>Z.codePointAt(X):(Z,X)=>(Z.charCodeAt(X)&64512)===55296?(Z.charCodeAt(X)-55296)*1024+Z.charCodeAt(X+1)-56320+65536:Z.charCodeAt(X);function g2(Z,X){return function(K){let Y,V=0,z="";while(Y=Z.exec(K)){if(V!==Y.index)z+=K.substring(V,Y.index);z+=X.get(Y[0].charCodeAt(0)),V=Y.index+1}return z+K.substring(V)}}var E2=g2(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]])),m2=g2(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]));var gX=new Set([q.AREA,q.BASE,q.BASEFONT,q.BGSOUND,q.BR,q.COL,q.EMBED,q.FRAME,q.HR,q.IMG,q.INPUT,q.KEYGEN,q.LINK,q.META,q.PARAM,q.SOURCE,q.TRACK,q.WBR]);function _2(Z,X){return X.treeAdapter.isElementNode(Z)&&X.treeAdapter.getNamespaceURI(Z)===b.HTML&&gX.has(X.treeAdapter.getTagName(Z))}var EX={treeAdapter:W0,scriptingEnabled:!0};function _0(Z,X){let Q={...EX,...X};if(_2(Z,Q))return"";return k2(Z,Q)}function k2(Z,X){let Q="",K=X.treeAdapter.isElementNode(Z)&&X.treeAdapter.getTagName(Z)===q.TEMPLATE&&X.treeAdapter.getNamespaceURI(Z)===b.HTML?X.treeAdapter.getTemplateContent(Z):Z,Y=X.treeAdapter.getChildNodes(K);if(Y)for(let V of Y)Q+=mX(V,X);return Q}function mX(Z,X){if(X.treeAdapter.isElementNode(Z))return _X(Z,X);if(X.treeAdapter.isTextNode(Z))return SX(Z,X);if(X.treeAdapter.isCommentNode(Z))return IX(Z,X);if(X.treeAdapter.isDocumentTypeNode(Z))return TX(Z,X);return""}function _X(Z,X){let Q=X.treeAdapter.getTagName(Z);return`<${Q}${kX(Z,X)}>${_2(Z,X)?"":`${k2(Z,X)}</${Q}>`}`}function kX(Z,{treeAdapter:X}){let Q="";for(let K of X.getAttrList(Z)){if(Q+=" ",K.namespace)switch(K.namespace){case b.XML:{Q+=`xml:${K.name}`;break}case b.XMLNS:{if(K.name!=="xmlns")Q+="xmlns:";Q+=K.name;break}case b.XLINK:{Q+=`xlink:${K.name}`;break}default:Q+=`${K.prefix}:${K.name}`}else Q+=K.name;Q+=`="${E2(K.value)}"`}return Q}function SX(Z,X){let{treeAdapter:Q}=X,K=Q.getTextNodeContent(Z),Y=Q.getParentNode(Z),V=Y&&Q.isElementNode(Y)&&Q.getTagName(Y);return V&&Q.getNamespaceURI(Y)===b.HTML&&p9(V,X.scriptingEnabled)?K:m2(K)}function IX(Z,{treeAdapter:X}){return`<!--${X.getCommentNodeContent(Z)}-->`}function TX(Z,{treeAdapter:X}){return`<!DOCTYPE ${X.getDocumentTypeNodeName(Z)}>`}function a0(Z,X){return q1.parse(Z,X)}function S2(Z,X,Q){if(typeof Z==="string")Q=X,X=Z,Z=null;let K=q1.getFragmentParser(Z,Q);return K.tokenizer.write(X,!0),K.getFragment()}import{z as S}from"zod";import*as i0 from"css-tree";var F1=20971520,AX=new Set(["script","form","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),uX=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),j8=/^data:(?:image\/(?:png|jpe?g|gif|webp|avif|bmp|x-icon)|font\/[a-z0-9.+-]+|application\/(?:font-[a-z0-9.+-]+|vnd\.ms-fontobject|x-font-[a-z0-9.+-]+));/i;function lX(Z){return"tagName"in Z}function I2(Z){try{let X=i0.parse(Z,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return i0.walk(X,{enter(Q,K,Y){if(Q.type==="Atrule"&&Q.name.toLowerCase()==="import"){Y.remove(K);return}if(Q.type==="Declaration"){let V=Q.property.toLowerCase();if(V==="behavior"||V==="-moz-binding")Y.remove(K);return}if(Q.type==="Url"&&!j8.test(Q.value)){Q.value="data:,";return}if(Q.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!j8.test(Q.value))Q.value="data:,"}}),i0.generate(X)}catch{return""}}function cX(Z){return I2(`x{${Z}}`).replace(/^x\{/,"").replace(/\}$/,"")}function dX(Z){if(Z.attrs=Z.attrs.flatMap((X)=>{let Q=X.name.toLowerCase();if(Q.startsWith("on")||Q==="srcdoc"||Q==="nonce")return[];if(Q==="style"){let K=cX(X.value);return K?[{...X,value:K}]:[]}if(uX.has(Q)){if(Q==="src"&&j8.test(X.value))return[X];if(Q==="href"&&X.value.startsWith("#"))return[X];return[]}if(Q==="target"||Q==="download"||Q==="http-equiv")return[];return[X]}),Z.tagName==="style"&&Z.childNodes){for(let X of Z.childNodes)if("value"in X&&typeof X.value==="string")X.value=I2(X.value)}}function T2(Z){let X=[];for(let Q of Z.childNodes){if(lX(Q)){let K=Q.tagName.toLowerCase();if(AX.has(K))continue;if(K==="meta"&&Q.attrs.some((Y)=>Y.name.toLowerCase()==="http-equiv"&&Y.value.toLowerCase()!=="content-type"))continue;if(K==="link")continue;dX(Q),T2(Q)}X.push(Q)}Z.childNodes=X}function A2(Z){if(Buffer.byteLength(Z,"utf8")>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let X=a0(Z);T2(X);let Q=_0(X);if(Buffer.byteLength(Q,"utf8")>F1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return Q}import{lookup as aX}from"node:dns/promises";import iX from"node:http";import pX from"node:https";import{isIP as l2}from"node:net";var u2=5,sX=15000,c2=8388608,X4=12582912;function rX(Z){let X=Z.split(".").map(Number);return X.length===4&&X.every((Q)=>Number.isInteger(Q)&&Q>=0&&Q<=255)?X:null}function U0(Z,X,Q=0,K=255){return Z[0]===X&&(Z[1]??0)>=Q&&(Z[1]??0)<=K}function d2(Z){let X=l2(Z);if(X===4){let Y=rX(Z);if(!Y)return!1;if(U0(Y,0))return!1;if(U0(Y,10))return!1;if(U0(Y,100,64,127))return!1;if(U0(Y,127))return!1;if(U0(Y,169,254,254))return!1;if(U0(Y,172,16,31))return!1;if(U0(Y,192,0,0))return!1;if(U0(Y,192,168,168))return!1;if(U0(Y,198,18,19))return!1;if(U0(Y,198,51,51)&&Y[2]===100)return!1;if(U0(Y,203,0,0)&&Y[2]===113)return!1;if((Y[0]??0)>=224)return!1;return!0}if(X!==6)return!1;let Q=Z.toLowerCase().split("%")[0]??"";if(Q==="::"||Q==="::1")return!1;if(Q.startsWith("::"))return!1;if(Q.startsWith("fc")||Q.startsWith("fd"))return!1;if(/^fe[89a-f]/.test(Q))return!1;if(Q.startsWith("ff"))return!1;let K=Number.parseInt(Q.split(":")[0]??"",16);if(!Number.isFinite(K)||K<8192||K>16383)return!1;if(Q.startsWith("2002:"))return!1;if(Q.startsWith("3fff:"))return!1;if(Q==="2001::"||Q.startsWith("2001:0:"))return!1;if(Q.startsWith("2001:db8:"))return!1;if(Q.startsWith("2001:2:"))return!1;if(Q.startsWith("2001:10:"))return!1;if(Q.startsWith("2001:20:"))return!1;return!0}function w0(Z){let X;try{X=new URL(Z)}catch{throw Error("Browser URL is invalid")}if(X.protocol!=="http:"&&X.protocol!=="https:")throw Error("Only HTTP(S) browser URLs are allowed");if(X.username||X.password)throw Error("Browser URLs containing credentials are not allowed");let Q=X.hostname.replace(/^\[|\]$/g,"");if(l2(Q)&&!d2(Q))throw Error("Browser destination is not on a public network");return X.hash="",X}async function oX(Z){return(await aX(Z,{all:!0,verbatim:!0})).flatMap((Q)=>Q.family===4||Q.family===6?[{address:Q.address,family:Q.family}]:[])}function nX(Z){let X={};for(let[Q,K]of Object.entries(Z))if(typeof K==="string")X[Q.toLowerCase()]=K;else if(Array.isArray(K))X[Q.toLowerCase()]=K.join(", ");return X}function tX(Z){return(X,Q,K)=>{if(Q.all){K(null,[Z]);return}K(null,Z.address,Z.family)}}function eX(Z){return new Promise((X,Q)=>{let K=Z.url.protocol==="https:"?pX:iX,Y=!1,V=(U)=>{if(Y)return;Y=!0,Q(U)},z=K.request(Z.url,{method:Z.method,headers:{accept:"text/html,application/xhtml+xml,text/css,image/*,font/*,*/*;q=0.7","accept-encoding":"identity","user-agent":Z.userAgent??"IdeaWave-Browser-Proxy/1.0"},servername:Z.url.hostname,lookup:tX(Z.address)},(U)=>{let F=nX(U.headers),B=Number(F["content-length"]??"0");if(Number.isFinite(B)&&B>Z.maxBytes){U.destroy(),V(Error("Browser proxy response exceeds the size limit"));return}if((F["content-type"]??"").toLowerCase().startsWith("text/event-stream")){U.destroy(),V(Error("Server-sent events are not supported"));return}if(!Z.allowAttachment&&/attachment/i.test(F["content-disposition"]??"")){U.destroy(),V(Error("Downloads are not supported"));return}if(U.statusCode===101||F.upgrade){U.destroy(),V(Error("Protocol upgrades are not supported"));return}let L=[],f=0;U.on("data",(P)=>{let R=Buffer.isBuffer(P)?P:Buffer.from(P);if(f+=R.byteLength,f>Z.maxBytes){U.destroy(Error("Browser proxy response exceeds the size limit"));return}L.push(R)}),U.once("error",V),U.once("end",()=>{if(Y)return;Y=!0,X({url:Z.url.href,status:U.statusCode??502,headers:F,body:Buffer.concat(L)})})});z.setTimeout(Z.timeoutMs,()=>{z.destroy(Error("Browser proxy request timed out"))}),z.once("error",V),z.end()})}async function a2(Z){let X=w0(Z.url),Q=Z.resolver??oX,K=Z.request??eX;for(let Y=0;Y<=u2;Y+=1){let V=await Q(X.hostname);if(V.length===0)throw Error("Browser destination did not resolve");if(V.some((F)=>!d2(F.address)))throw Error("Browser destination resolves to a non-public network");let z=await K({url:X,method:Z.method??"GET",address:V[0],maxBytes:Z.maxBytes??X4,timeoutMs:Z.timeoutMs??sX,userAgent:Z.userAgent,allowAttachment:Z.allowAttachment});if(![301,302,303,307,308].includes(z.status))return z;let U=z.headers.location;if(!U)return z;if(Y===u2)throw Error("Browser destination exceeded the redirect limit");X=w0(new URL(U,X).href)}throw Error("Browser request failed")}import*as s0 from"css-tree";function k0(Z){return JSON.stringify(Z).replace(/</g,"\\u003c")}function i2(Z){return`(() => {
24
+ - Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}async function A9(Z,X){let Q=Date.now(),K=new AbortController;E0.set(Z.runId,{controller:K,frontendSessionId:Z.frontendSessionId}),a4.add(Z.cardId),E("cli.run_started",{runId:Z.runId,cardId:Z.cardId,frontendSessionId:Z.frontendSessionId});let Y=q4(Z.userId,Z.frontendSessionId,Z.cardId),V=!1,z=null;try{let F=(Z.runtimeConfigIdHint?await m9(Z.runtimeConfigIdHint,{modelId:Z.modelHint??null}):null)??await y0({boardId:Z.boardId,cardId:Z.cardId}),B=await F.adapter.resolveSpawnConfig(F.entry),L=Z.toolSurface??"full",f=F.adapter.supportsImages===!0;z=B;let x=w4({userId:Z.userId,frontendSessionId:Z.frontendSessionId,boardId:Z.boardId,toolSurface:L,imagesSupported:f,cardId:Z.cardId,runFolder:F.runFolder}),C=x?[x]:[];d4(Z.cardId,f);let y=Z.modelHint??F.modelId,D=F4({adapterId:F.adapter.id,configId:F.entry.id,modelId:y,configValues:F.configValues,mcpUrl:x?.url??null,runFolder:F.runFolder,toolSurface:L});E("cli.session_acquire_started",{runId:Z.runId,cardId:Z.cardId,frontendSessionId:Z.frontendSessionId});let R=await C1({key:Y,frontendSessionId:Z.frontendSessionId,fingerprint:D,open:()=>l4({spawn:{...B,cwd:F.runFolder},mcpServers:C,modelId:y,configValues:F.configValues,signal:K.signal})});E("cli.session_acquired",{runId:Z.runId,cardId:Z.cardId,frontendSessionId:Z.frontendSessionId,elapsedMs:Date.now()-Q}),T9(F.entry.id,R,F.adapter.id,y);let h;try{let v=0,g="";E("cli.prompt_started",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q}),h=await R.prompt({runId:Z.runId,boardId:Z.boardId,cardId:Z.cardId,prompt:{systemPrompt:w3(Z.systemPrompt,F.runFolder),messages:Z.promptMessages.map(($)=>({role:$.role,content:$.content}))},signal:K.signal,appendText:async({text:$})=>{if(v+=1,v===1)E("cli.first_partial_text_forwarded",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,textLength:$.length});X({type:"partial_text",runId:Z.runId,cardId:Z.cardId,text:$})},appendToolActivity:async({entry:$})=>{let I=`${$.toolCallId}:${$.status}`;if(I!==g)g=I,E("cli.tool_activity_forwarded",{runId:Z.runId,cardId:Z.cardId,toolCallId:$.toolCallId,toolStatus:$.status,elapsedMs:Date.now()-Q});X({type:"tool_activity",runId:Z.runId,cardId:Z.cardId,activity:$})}})}catch(v){if(!R.isAlive()||v instanceof S||v instanceof q0)V=!0;throw v}X({type:"run_settled",runId:Z.runId,cardId:Z.cardId,result:{assistantContent:h.finalText,model:h.modelReported??null,latencyMs:Date.now()-Q,errorText:null,partialText:null}}),E("cli.run_settled",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,hasError:!1})}catch(U){let F=U instanceof Error?U.message:"Agent run failed";if(U instanceof S&&z&&!i4(U,K.signal))f4(z,F);if(!i4(U,K.signal))console.error(`[ideawave-cli] run ${Z.runId} failed:`,F);X({type:"run_settled",runId:Z.runId,cardId:Z.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-Q,errorText:F,partialText:null}}),E("cli.run_settled",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,hasError:!0,errorName:U instanceof Error?U.name:"unknown"})}finally{B4(Y,V),E0.delete(Z.runId),a4.delete(Z.cardId),E("cli.run_released",{runId:Z.runId,cardId:Z.cardId,elapsedMs:Date.now()-Q,sessionDead:V})}}async function u9(Z){if(a4.has(Z.cardId))return{status:"skipped"};let X=q4(Z.userId,Z.frontendSessionId,Z.cardId),Q=null;try{let K=await y0({boardId:Z.boardId,cardId:Z.cardId}),Y=await K.adapter.resolveSpawnConfig(K.entry);Q=Y;let V=w4({userId:Z.userId,frontendSessionId:Z.frontendSessionId,boardId:Z.boardId,cardId:Z.cardId,runFolder:K.runFolder}),z=V?[V]:[];d4(Z.cardId,K.adapter.supportsImages===!0);let U=F4({adapterId:K.adapter.id,configId:K.entry.id,modelId:K.modelId,configValues:K.configValues,mcpUrl:V?.url??null,runFolder:K.runFolder}),F=new AbortController,B=await C1({key:X,frontendSessionId:Z.frontendSessionId,fingerprint:U,open:()=>l4({spawn:{...Y,cwd:K.runFolder},mcpServers:z,modelId:K.modelId,configValues:K.configValues,signal:F.signal})});return T9(K.entry.id,B,K.adapter.id,K.modelId),B4(X,!1),console.log(`[ideawave-cli] warmed runtime for card ${Z.cardId}`),{status:"ready"}}catch(K){if(K instanceof $0)return{status:"skipped"};let Y=K instanceof Error?K.message:String(K);if(K instanceof S&&Q&&!i4(K))f4(Q,Y);if(K instanceof S&&/(not ready|installing|warming|retry in a moment)/i.test(Y))return{status:"retryable",error:Y};return console.warn(`[ideawave-cli] warmup failed for card ${Z.cardId}:`,Y),{status:"failed",error:Y}}}import{randomBytes as j6,randomUUID as e2}from"node:crypto";import*as V4 from"css-tree";var L3=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),A="�",W;(function(Z){Z[Z.EOF=-1]="EOF",Z[Z.NULL=0]="NULL",Z[Z.TABULATION=9]="TABULATION",Z[Z.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",Z[Z.LINE_FEED=10]="LINE_FEED",Z[Z.FORM_FEED=12]="FORM_FEED",Z[Z.SPACE=32]="SPACE",Z[Z.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",Z[Z.QUOTATION_MARK=34]="QUOTATION_MARK",Z[Z.AMPERSAND=38]="AMPERSAND",Z[Z.APOSTROPHE=39]="APOSTROPHE",Z[Z.HYPHEN_MINUS=45]="HYPHEN_MINUS",Z[Z.SOLIDUS=47]="SOLIDUS",Z[Z.DIGIT_0=48]="DIGIT_0",Z[Z.DIGIT_9=57]="DIGIT_9",Z[Z.SEMICOLON=59]="SEMICOLON",Z[Z.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",Z[Z.EQUALS_SIGN=61]="EQUALS_SIGN",Z[Z.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",Z[Z.QUESTION_MARK=63]="QUESTION_MARK",Z[Z.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",Z[Z.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",Z[Z.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",Z[Z.GRAVE_ACCENT=96]="GRAVE_ACCENT",Z[Z.LATIN_SMALL_A=97]="LATIN_SMALL_A",Z[Z.LATIN_SMALL_Z=122]="LATIN_SMALL_Z"})(W||(W={}));var t={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function l1(Z){return Z>=55296&&Z<=57343}function l9(Z){return Z>=56320&&Z<=57343}function c9(Z,X){return(Z-55296)*1024+9216+X}function c1(Z){return Z!==32&&Z!==10&&Z!==13&&Z!==9&&Z!==12&&Z>=1&&Z<=31||Z>=127&&Z<=159}function d1(Z){return Z>=64976&&Z<=65007||L3.has(Z)}var w;(function(Z){Z.controlCharacterInInputStream="control-character-in-input-stream",Z.noncharacterInInputStream="noncharacter-in-input-stream",Z.surrogateInInputStream="surrogate-in-input-stream",Z.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",Z.endTagWithAttributes="end-tag-with-attributes",Z.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",Z.unexpectedSolidusInTag="unexpected-solidus-in-tag",Z.unexpectedNullCharacter="unexpected-null-character",Z.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",Z.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",Z.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",Z.missingEndTagName="missing-end-tag-name",Z.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",Z.unknownNamedCharacterReference="unknown-named-character-reference",Z.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",Z.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",Z.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",Z.eofBeforeTagName="eof-before-tag-name",Z.eofInTag="eof-in-tag",Z.missingAttributeValue="missing-attribute-value",Z.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",Z.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",Z.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",Z.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",Z.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",Z.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",Z.missingDoctypePublicIdentifier="missing-doctype-public-identifier",Z.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",Z.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",Z.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",Z.cdataInHtmlContent="cdata-in-html-content",Z.incorrectlyOpenedComment="incorrectly-opened-comment",Z.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",Z.eofInDoctype="eof-in-doctype",Z.nestedComment="nested-comment",Z.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",Z.eofInComment="eof-in-comment",Z.incorrectlyClosedComment="incorrectly-closed-comment",Z.eofInCdata="eof-in-cdata",Z.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",Z.nullCharacterReference="null-character-reference",Z.surrogateCharacterReference="surrogate-character-reference",Z.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",Z.controlCharacterReference="control-character-reference",Z.noncharacterCharacterReference="noncharacter-character-reference",Z.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",Z.missingDoctypeName="missing-doctype-name",Z.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",Z.duplicateAttribute="duplicate-attribute",Z.nonConformingDoctype="non-conforming-doctype",Z.missingDoctype="missing-doctype",Z.misplacedDoctype="misplaced-doctype",Z.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",Z.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",Z.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",Z.openElementsLeftAfterEof="open-elements-left-after-eof",Z.abandonedHeadElementChild="abandoned-head-element-child",Z.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",Z.nestedNoscriptInHead="nested-noscript-in-head",Z.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(w||(w={}));var x3=65536;class s4{constructor(Z){this.handler=Z,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=x3,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(Z,X){let{line:Q,col:K,offset:Y}=this,V=K+X,z=Y+X;return{code:Z,startLine:Q,endLine:Q,startCol:V,endCol:V,startOffset:z,endOffset:z}}_err(Z){if(this.handler.onParseError&&this.lastErrOffset!==this.offset)this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(Z,0))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(Z){if(this.pos!==this.html.length-1){let X=this.html.charCodeAt(this.pos+1);if(l9(X))return this.pos++,this._addGap(),c9(Z,X)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,W.EOF;return this._err(w.surrogateInInputStream),Z}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){if(this.willDropParsedChunk())this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0}write(Z,X){if(this.html.length>0)this.html+=Z;else this.html=Z;this.endOfChunkHit=!1,this.lastChunkWritten=X}insertHtmlAtCurrentPos(Z){this.html=this.html.substring(0,this.pos+1)+Z+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(Z,X){if(this.pos+Z.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(X)return this.html.startsWith(Z,this.pos);for(let Q=0;Q<Z.length;Q++)if((this.html.charCodeAt(this.pos+Q)|32)!==Z.charCodeAt(Q))return!1;return!0}peek(Z){let X=this.pos+Z;if(X>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,W.EOF;let Q=this.html.charCodeAt(X);return Q===W.CARRIAGE_RETURN?W.LINE_FEED:Q}advance(){if(this.pos++,this.isEol)this.isEol=!1,this.line++,this.lineStartPos=this.pos;if(this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,W.EOF;let Z=this.html.charCodeAt(this.pos);if(Z===W.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,W.LINE_FEED;if(Z===W.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,l1(Z))Z=this._processSurrogate(Z);if(!(this.handler.onParseError===null||Z>31&&Z<127||Z===W.LINE_FEED||Z===W.CARRIAGE_RETURN||Z>159&&Z<64976))this._checkForProblematicCharacters(Z);return Z}_checkForProblematicCharacters(Z){if(c1(Z))this._err(w.controlCharacterInInputStream);else if(d1(Z))this._err(w.noncharacterInInputStream)}retreat(Z){this.pos-=Z;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var m;(function(Z){Z[Z.CHARACTER=0]="CHARACTER",Z[Z.NULL_CHARACTER=1]="NULL_CHARACTER",Z[Z.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",Z[Z.START_TAG=3]="START_TAG",Z[Z.END_TAG=4]="END_TAG",Z[Z.COMMENT=5]="COMMENT",Z[Z.DOCTYPE=6]="DOCTYPE",Z[Z.EOF=7]="EOF",Z[Z.HIBERNATION=8]="HIBERNATION"})(m||(m={}));function a1(Z,X){for(let Q=Z.attrs.length-1;Q>=0;Q--)if(Z.attrs[Q].name===X)return Z.attrs[Q].value;return null}var O3=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function d9(Z){if(Z>=55296&&Z<=57343||Z>1114111)return 65533;return O3.get(Z)??Z}function a9(Z){let X=atob(Z),Q=X.length&-2,K=new Uint16Array(Q/2);for(let Y=0,V=0;Y<Q;Y+=2){let z=X.charCodeAt(Y),U=X.charCodeAt(Y+1);K[V++]=z|U<<8}return K}var r4=a9("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var r;(function(Z){Z[Z.VALUE_LENGTH=49152]="VALUE_LENGTH",Z[Z.FLAG13=8192]="FLAG13",Z[Z.BRANCH_LENGTH=8064]="BRANCH_LENGTH",Z[Z.JUMP_TABLE=127]="JUMP_TABLE"})(r||(r={}));var c;(function(Z){Z[Z.NUM=35]="NUM",Z[Z.SEMI=59]="SEMI",Z[Z.EQUALS=61]="EQUALS",Z[Z.ZERO=48]="ZERO",Z[Z.NINE=57]="NINE",Z[Z.LOWER_A=97]="LOWER_A",Z[Z.LOWER_F=102]="LOWER_F",Z[Z.LOWER_X=120]="LOWER_X",Z[Z.LOWER_Z=122]="LOWER_Z",Z[Z.UPPER_A=65]="UPPER_A",Z[Z.UPPER_F=70]="UPPER_F",Z[Z.UPPER_Z=90]="UPPER_Z"})(c||(c={}));var i9=32;function o4(Z){return Z>=c.ZERO&&Z<=c.NINE}function C3(Z){return Z>=c.UPPER_A&&Z<=c.UPPER_F||Z>=c.LOWER_A&&Z<=c.LOWER_F}function R3(Z){return Z>=c.UPPER_A&&Z<=c.UPPER_Z||Z>=c.LOWER_A&&Z<=c.LOWER_Z||o4(Z)}function v3(Z){return Z===c.EQUALS||R3(Z)}var p;(function(Z){Z[Z.EntityStart=0]="EntityStart",Z[Z.NumericStart=1]="NumericStart",Z[Z.NumericDecimal=2]="NumericDecimal",Z[Z.NumericHex=3]="NumericHex",Z[Z.NamedEntity=4]="NamedEntity"})(p||(p={}));var F0;(function(Z){Z[Z.Legacy=0]="Legacy",Z[Z.Strict=1]="Strict",Z[Z.Attribute=2]="Attribute"})(F0||(F0={}));class n4{decodeTree;emitCodePoint;errors;constructor(Z,X,Q){this.decodeTree=Z,this.emitCodePoint=X,this.errors=Q}state=p.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=F0.Strict;runConsumed=0;startEntity(Z){this.decodeMode=Z,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(Z,X){switch(this.state){case p.EntityStart:{if(Z.charCodeAt(X)===c.NUM)return this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(Z,X+1);return this.state=p.NamedEntity,this.stateNamedEntity(Z,X)}case p.NumericStart:return this.stateNumericStart(Z,X);case p.NumericDecimal:return this.stateNumericDecimal(Z,X);case p.NumericHex:return this.stateNumericHex(Z,X);case p.NamedEntity:return this.stateNamedEntity(Z,X)}}stateNumericStart(Z,X){if(X>=Z.length)return-1;if((Z.charCodeAt(X)|i9)===c.LOWER_X)return this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(Z,X+1);return this.state=p.NumericDecimal,this.stateNumericDecimal(Z,X)}stateNumericHex(Z,X){while(X<Z.length){let Q=Z.charCodeAt(X);if(o4(Q)||C3(Q)){let K=Q<=c.NINE?Q-c.ZERO:(Q|i9)-c.LOWER_A+10;this.result=this.result*16+K,this.consumed++,X++}else return this.emitNumericEntity(Q,3)}return-1}stateNumericDecimal(Z,X){while(X<Z.length){let Q=Z.charCodeAt(X);if(o4(Q))this.result=this.result*10+(Q-c.ZERO),this.consumed++,X++;else return this.emitNumericEntity(Q,2)}return-1}emitNumericEntity(Z,X){if(this.consumed<=X)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(Z===c.SEMI)this.consumed+=1;else if(this.decodeMode===F0.Strict)return 0;if(this.emitCodePoint(d9(this.result),this.consumed),this.errors){if(Z!==c.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(Z,X){let{decodeTree:Q}=this,K=Q[this.treeIndex],Y=(K&r.VALUE_LENGTH)>>14;while(X<Z.length){if(Y===0&&(K&r.FLAG13)!==0){let z=(K&r.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let U=K&r.JUMP_TABLE;if(Z.charCodeAt(X)!==U)return this.result===0?0:this.emitNotTerminatedNamedEntity();X++,this.excess++,this.runConsumed++}while(this.runConsumed<z){if(X>=Z.length)return-1;let U=this.runConsumed-1,F=Q[this.treeIndex+1+(U>>1)],B=U%2===0?F&255:F>>8&255;if(Z.charCodeAt(X)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();X++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(z>>1),K=Q[this.treeIndex],Y=(K&r.VALUE_LENGTH)>>14}if(X>=Z.length)break;let V=Z.charCodeAt(X);if(V===c.SEMI&&Y!==0&&(K&r.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.treeIndex=y3(Q,K,this.treeIndex+Math.max(1,Y),V),this.treeIndex<0)return this.result===0||this.decodeMode===F0.Attribute&&(Y===0||v3(V))?0:this.emitNotTerminatedNamedEntity();if(K=Q[this.treeIndex],Y=(K&r.VALUE_LENGTH)>>14,Y!==0){if(V===c.SEMI)return this.emitNamedEntityData(this.treeIndex,Y,this.consumed+this.excess);if(this.decodeMode!==F0.Strict&&(K&r.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}X++,this.excess++}return-1}emitNotTerminatedNamedEntity(){let{result:Z,decodeTree:X}=this,Q=(X[Z]&r.VALUE_LENGTH)>>14;return this.emitNamedEntityData(Z,Q,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(Z,X,Q){let{decodeTree:K}=this;if(this.emitCodePoint(X===1?K[Z]&~(r.VALUE_LENGTH|r.FLAG13):K[Z+1],Q),X===3)this.emitCodePoint(K[Z+2],Q);return Q}end(){switch(this.state){case p.NamedEntity:return this.result!==0&&(this.decodeMode!==F0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}}}function y3(Z,X,Q,K){let Y=(X&r.BRANCH_LENGTH)>>7,V=X&r.JUMP_TABLE;if(Y===0)return V!==0&&K===V?Q:-1;if(V){let B=K-V;return B<0||B>=Y?-1:Z[Q+B]-1}let z=Y+1>>1,U=0,F=Y-1;while(U<=F){let B=U+F>>>1,L=B>>1,x=Z[Q+L]>>(B&1)*8&255;if(x<K)U=B+1;else if(x>K)F=B-1;else return Z[Q+z+B]}return-1}var b;(function(Z){Z.HTML="http://www.w3.org/1999/xhtml",Z.MATHML="http://www.w3.org/1998/Math/MathML",Z.SVG="http://www.w3.org/2000/svg",Z.XLINK="http://www.w3.org/1999/xlink",Z.XML="http://www.w3.org/XML/1998/namespace",Z.XMLNS="http://www.w3.org/2000/xmlns/"})(b||(b={}));var x0;(function(Z){Z.TYPE="type",Z.ACTION="action",Z.ENCODING="encoding",Z.PROMPT="prompt",Z.NAME="name",Z.COLOR="color",Z.FACE="face",Z.SIZE="size"})(x0||(x0={}));var e;(function(Z){Z.NO_QUIRKS="no-quirks",Z.QUIRKS="quirks",Z.LIMITED_QUIRKS="limited-quirks"})(e||(e={}));var q;(function(Z){Z.A="a",Z.ADDRESS="address",Z.ANNOTATION_XML="annotation-xml",Z.APPLET="applet",Z.AREA="area",Z.ARTICLE="article",Z.ASIDE="aside",Z.B="b",Z.BASE="base",Z.BASEFONT="basefont",Z.BGSOUND="bgsound",Z.BIG="big",Z.BLOCKQUOTE="blockquote",Z.BODY="body",Z.BR="br",Z.BUTTON="button",Z.CAPTION="caption",Z.CENTER="center",Z.CODE="code",Z.COL="col",Z.COLGROUP="colgroup",Z.DD="dd",Z.DESC="desc",Z.DETAILS="details",Z.DIALOG="dialog",Z.DIR="dir",Z.DIV="div",Z.DL="dl",Z.DT="dt",Z.EM="em",Z.EMBED="embed",Z.FIELDSET="fieldset",Z.FIGCAPTION="figcaption",Z.FIGURE="figure",Z.FONT="font",Z.FOOTER="footer",Z.FOREIGN_OBJECT="foreignObject",Z.FORM="form",Z.FRAME="frame",Z.FRAMESET="frameset",Z.H1="h1",Z.H2="h2",Z.H3="h3",Z.H4="h4",Z.H5="h5",Z.H6="h6",Z.HEAD="head",Z.HEADER="header",Z.HGROUP="hgroup",Z.HR="hr",Z.HTML="html",Z.I="i",Z.IMG="img",Z.IMAGE="image",Z.INPUT="input",Z.IFRAME="iframe",Z.KEYGEN="keygen",Z.LABEL="label",Z.LI="li",Z.LINK="link",Z.LISTING="listing",Z.MAIN="main",Z.MALIGNMARK="malignmark",Z.MARQUEE="marquee",Z.MATH="math",Z.MENU="menu",Z.META="meta",Z.MGLYPH="mglyph",Z.MI="mi",Z.MO="mo",Z.MN="mn",Z.MS="ms",Z.MTEXT="mtext",Z.NAV="nav",Z.NOBR="nobr",Z.NOFRAMES="noframes",Z.NOEMBED="noembed",Z.NOSCRIPT="noscript",Z.OBJECT="object",Z.OL="ol",Z.OPTGROUP="optgroup",Z.OPTION="option",Z.P="p",Z.PARAM="param",Z.PLAINTEXT="plaintext",Z.PRE="pre",Z.RB="rb",Z.RP="rp",Z.RT="rt",Z.RTC="rtc",Z.RUBY="ruby",Z.S="s",Z.SCRIPT="script",Z.SEARCH="search",Z.SECTION="section",Z.SELECT="select",Z.SOURCE="source",Z.SMALL="small",Z.SPAN="span",Z.STRIKE="strike",Z.STRONG="strong",Z.STYLE="style",Z.SUB="sub",Z.SUMMARY="summary",Z.SUP="sup",Z.TABLE="table",Z.TBODY="tbody",Z.TEMPLATE="template",Z.TEXTAREA="textarea",Z.TFOOT="tfoot",Z.TD="td",Z.TH="th",Z.THEAD="thead",Z.TITLE="title",Z.TR="tr",Z.TRACK="track",Z.TT="tt",Z.U="u",Z.UL="ul",Z.SVG="svg",Z.VAR="var",Z.WBR="wbr",Z.XMP="xmp"})(q||(q={}));var J;(function(Z){Z[Z.UNKNOWN=0]="UNKNOWN",Z[Z.A=1]="A",Z[Z.ADDRESS=2]="ADDRESS",Z[Z.ANNOTATION_XML=3]="ANNOTATION_XML",Z[Z.APPLET=4]="APPLET",Z[Z.AREA=5]="AREA",Z[Z.ARTICLE=6]="ARTICLE",Z[Z.ASIDE=7]="ASIDE",Z[Z.B=8]="B",Z[Z.BASE=9]="BASE",Z[Z.BASEFONT=10]="BASEFONT",Z[Z.BGSOUND=11]="BGSOUND",Z[Z.BIG=12]="BIG",Z[Z.BLOCKQUOTE=13]="BLOCKQUOTE",Z[Z.BODY=14]="BODY",Z[Z.BR=15]="BR",Z[Z.BUTTON=16]="BUTTON",Z[Z.CAPTION=17]="CAPTION",Z[Z.CENTER=18]="CENTER",Z[Z.CODE=19]="CODE",Z[Z.COL=20]="COL",Z[Z.COLGROUP=21]="COLGROUP",Z[Z.DD=22]="DD",Z[Z.DESC=23]="DESC",Z[Z.DETAILS=24]="DETAILS",Z[Z.DIALOG=25]="DIALOG",Z[Z.DIR=26]="DIR",Z[Z.DIV=27]="DIV",Z[Z.DL=28]="DL",Z[Z.DT=29]="DT",Z[Z.EM=30]="EM",Z[Z.EMBED=31]="EMBED",Z[Z.FIELDSET=32]="FIELDSET",Z[Z.FIGCAPTION=33]="FIGCAPTION",Z[Z.FIGURE=34]="FIGURE",Z[Z.FONT=35]="FONT",Z[Z.FOOTER=36]="FOOTER",Z[Z.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",Z[Z.FORM=38]="FORM",Z[Z.FRAME=39]="FRAME",Z[Z.FRAMESET=40]="FRAMESET",Z[Z.H1=41]="H1",Z[Z.H2=42]="H2",Z[Z.H3=43]="H3",Z[Z.H4=44]="H4",Z[Z.H5=45]="H5",Z[Z.H6=46]="H6",Z[Z.HEAD=47]="HEAD",Z[Z.HEADER=48]="HEADER",Z[Z.HGROUP=49]="HGROUP",Z[Z.HR=50]="HR",Z[Z.HTML=51]="HTML",Z[Z.I=52]="I",Z[Z.IMG=53]="IMG",Z[Z.IMAGE=54]="IMAGE",Z[Z.INPUT=55]="INPUT",Z[Z.IFRAME=56]="IFRAME",Z[Z.KEYGEN=57]="KEYGEN",Z[Z.LABEL=58]="LABEL",Z[Z.LI=59]="LI",Z[Z.LINK=60]="LINK",Z[Z.LISTING=61]="LISTING",Z[Z.MAIN=62]="MAIN",Z[Z.MALIGNMARK=63]="MALIGNMARK",Z[Z.MARQUEE=64]="MARQUEE",Z[Z.MATH=65]="MATH",Z[Z.MENU=66]="MENU",Z[Z.META=67]="META",Z[Z.MGLYPH=68]="MGLYPH",Z[Z.MI=69]="MI",Z[Z.MO=70]="MO",Z[Z.MN=71]="MN",Z[Z.MS=72]="MS",Z[Z.MTEXT=73]="MTEXT",Z[Z.NAV=74]="NAV",Z[Z.NOBR=75]="NOBR",Z[Z.NOFRAMES=76]="NOFRAMES",Z[Z.NOEMBED=77]="NOEMBED",Z[Z.NOSCRIPT=78]="NOSCRIPT",Z[Z.OBJECT=79]="OBJECT",Z[Z.OL=80]="OL",Z[Z.OPTGROUP=81]="OPTGROUP",Z[Z.OPTION=82]="OPTION",Z[Z.P=83]="P",Z[Z.PARAM=84]="PARAM",Z[Z.PLAINTEXT=85]="PLAINTEXT",Z[Z.PRE=86]="PRE",Z[Z.RB=87]="RB",Z[Z.RP=88]="RP",Z[Z.RT=89]="RT",Z[Z.RTC=90]="RTC",Z[Z.RUBY=91]="RUBY",Z[Z.S=92]="S",Z[Z.SCRIPT=93]="SCRIPT",Z[Z.SEARCH=94]="SEARCH",Z[Z.SECTION=95]="SECTION",Z[Z.SELECT=96]="SELECT",Z[Z.SOURCE=97]="SOURCE",Z[Z.SMALL=98]="SMALL",Z[Z.SPAN=99]="SPAN",Z[Z.STRIKE=100]="STRIKE",Z[Z.STRONG=101]="STRONG",Z[Z.STYLE=102]="STYLE",Z[Z.SUB=103]="SUB",Z[Z.SUMMARY=104]="SUMMARY",Z[Z.SUP=105]="SUP",Z[Z.TABLE=106]="TABLE",Z[Z.TBODY=107]="TBODY",Z[Z.TEMPLATE=108]="TEMPLATE",Z[Z.TEXTAREA=109]="TEXTAREA",Z[Z.TFOOT=110]="TFOOT",Z[Z.TD=111]="TD",Z[Z.TH=112]="TH",Z[Z.THEAD=113]="THEAD",Z[Z.TITLE=114]="TITLE",Z[Z.TR=115]="TR",Z[Z.TRACK=116]="TRACK",Z[Z.TT=117]="TT",Z[Z.U=118]="U",Z[Z.UL=119]="UL",Z[Z.SVG=120]="SVG",Z[Z.VAR=121]="VAR",Z[Z.WBR=122]="WBR",Z[Z.XMP=123]="XMP"})(J||(J={}));var f3=new Map([[q.A,J.A],[q.ADDRESS,J.ADDRESS],[q.ANNOTATION_XML,J.ANNOTATION_XML],[q.APPLET,J.APPLET],[q.AREA,J.AREA],[q.ARTICLE,J.ARTICLE],[q.ASIDE,J.ASIDE],[q.B,J.B],[q.BASE,J.BASE],[q.BASEFONT,J.BASEFONT],[q.BGSOUND,J.BGSOUND],[q.BIG,J.BIG],[q.BLOCKQUOTE,J.BLOCKQUOTE],[q.BODY,J.BODY],[q.BR,J.BR],[q.BUTTON,J.BUTTON],[q.CAPTION,J.CAPTION],[q.CENTER,J.CENTER],[q.CODE,J.CODE],[q.COL,J.COL],[q.COLGROUP,J.COLGROUP],[q.DD,J.DD],[q.DESC,J.DESC],[q.DETAILS,J.DETAILS],[q.DIALOG,J.DIALOG],[q.DIR,J.DIR],[q.DIV,J.DIV],[q.DL,J.DL],[q.DT,J.DT],[q.EM,J.EM],[q.EMBED,J.EMBED],[q.FIELDSET,J.FIELDSET],[q.FIGCAPTION,J.FIGCAPTION],[q.FIGURE,J.FIGURE],[q.FONT,J.FONT],[q.FOOTER,J.FOOTER],[q.FOREIGN_OBJECT,J.FOREIGN_OBJECT],[q.FORM,J.FORM],[q.FRAME,J.FRAME],[q.FRAMESET,J.FRAMESET],[q.H1,J.H1],[q.H2,J.H2],[q.H3,J.H3],[q.H4,J.H4],[q.H5,J.H5],[q.H6,J.H6],[q.HEAD,J.HEAD],[q.HEADER,J.HEADER],[q.HGROUP,J.HGROUP],[q.HR,J.HR],[q.HTML,J.HTML],[q.I,J.I],[q.IMG,J.IMG],[q.IMAGE,J.IMAGE],[q.INPUT,J.INPUT],[q.IFRAME,J.IFRAME],[q.KEYGEN,J.KEYGEN],[q.LABEL,J.LABEL],[q.LI,J.LI],[q.LINK,J.LINK],[q.LISTING,J.LISTING],[q.MAIN,J.MAIN],[q.MALIGNMARK,J.MALIGNMARK],[q.MARQUEE,J.MARQUEE],[q.MATH,J.MATH],[q.MENU,J.MENU],[q.META,J.META],[q.MGLYPH,J.MGLYPH],[q.MI,J.MI],[q.MO,J.MO],[q.MN,J.MN],[q.MS,J.MS],[q.MTEXT,J.MTEXT],[q.NAV,J.NAV],[q.NOBR,J.NOBR],[q.NOFRAMES,J.NOFRAMES],[q.NOEMBED,J.NOEMBED],[q.NOSCRIPT,J.NOSCRIPT],[q.OBJECT,J.OBJECT],[q.OL,J.OL],[q.OPTGROUP,J.OPTGROUP],[q.OPTION,J.OPTION],[q.P,J.P],[q.PARAM,J.PARAM],[q.PLAINTEXT,J.PLAINTEXT],[q.PRE,J.PRE],[q.RB,J.RB],[q.RP,J.RP],[q.RT,J.RT],[q.RTC,J.RTC],[q.RUBY,J.RUBY],[q.S,J.S],[q.SCRIPT,J.SCRIPT],[q.SEARCH,J.SEARCH],[q.SECTION,J.SECTION],[q.SELECT,J.SELECT],[q.SOURCE,J.SOURCE],[q.SMALL,J.SMALL],[q.SPAN,J.SPAN],[q.STRIKE,J.STRIKE],[q.STRONG,J.STRONG],[q.STYLE,J.STYLE],[q.SUB,J.SUB],[q.SUMMARY,J.SUMMARY],[q.SUP,J.SUP],[q.TABLE,J.TABLE],[q.TBODY,J.TBODY],[q.TEMPLATE,J.TEMPLATE],[q.TEXTAREA,J.TEXTAREA],[q.TFOOT,J.TFOOT],[q.TD,J.TD],[q.TH,J.TH],[q.THEAD,J.THEAD],[q.TITLE,J.TITLE],[q.TR,J.TR],[q.TRACK,J.TRACK],[q.TT,J.TT],[q.U,J.U],[q.UL,J.UL],[q.SVG,J.SVG],[q.VAR,J.VAR],[q.WBR,J.WBR],[q.XMP,J.XMP]]);function m0(Z){var X;return(X=f3.get(Z))!==null&&X!==void 0?X:J.UNKNOWN}var O=J,p9={[b.HTML]:new Set([O.ADDRESS,O.APPLET,O.AREA,O.ARTICLE,O.ASIDE,O.BASE,O.BASEFONT,O.BGSOUND,O.BLOCKQUOTE,O.BODY,O.BR,O.BUTTON,O.CAPTION,O.CENTER,O.COL,O.COLGROUP,O.DD,O.DETAILS,O.DIR,O.DIV,O.DL,O.DT,O.EMBED,O.FIELDSET,O.FIGCAPTION,O.FIGURE,O.FOOTER,O.FORM,O.FRAME,O.FRAMESET,O.H1,O.H2,O.H3,O.H4,O.H5,O.H6,O.HEAD,O.HEADER,O.HGROUP,O.HR,O.HTML,O.IFRAME,O.IMG,O.INPUT,O.LI,O.LINK,O.LISTING,O.MAIN,O.MARQUEE,O.MENU,O.META,O.NAV,O.NOEMBED,O.NOFRAMES,O.NOSCRIPT,O.OBJECT,O.OL,O.P,O.PARAM,O.PLAINTEXT,O.PRE,O.SCRIPT,O.SECTION,O.SELECT,O.SOURCE,O.STYLE,O.SUMMARY,O.TABLE,O.TBODY,O.TD,O.TEMPLATE,O.TEXTAREA,O.TFOOT,O.TH,O.THEAD,O.TITLE,O.TR,O.TRACK,O.UL,O.WBR,O.XMP]),[b.MATHML]:new Set([O.MI,O.MO,O.MN,O.MS,O.MTEXT,O.ANNOTATION_XML]),[b.SVG]:new Set([O.TITLE,O.FOREIGN_OBJECT,O.DESC]),[b.XLINK]:new Set,[b.XML]:new Set,[b.XMLNS]:new Set},Q1=new Set([O.H1,O.H2,O.H3,O.H4,O.H5,O.H6]),h3=new Set([q.STYLE,q.SCRIPT,q.XMP,q.IFRAME,q.NOEMBED,q.NOFRAMES,q.PLAINTEXT]);function s9(Z,X){return h3.has(Z)||X&&Z===q.NOSCRIPT}var j;(function(Z){Z[Z.DATA=0]="DATA",Z[Z.RCDATA=1]="RCDATA",Z[Z.RAWTEXT=2]="RAWTEXT",Z[Z.SCRIPT_DATA=3]="SCRIPT_DATA",Z[Z.PLAINTEXT=4]="PLAINTEXT",Z[Z.TAG_OPEN=5]="TAG_OPEN",Z[Z.END_TAG_OPEN=6]="END_TAG_OPEN",Z[Z.TAG_NAME=7]="TAG_NAME",Z[Z.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",Z[Z.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",Z[Z.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",Z[Z.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",Z[Z.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",Z[Z.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",Z[Z.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",Z[Z.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",Z[Z.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",Z[Z.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",Z[Z.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",Z[Z.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",Z[Z.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",Z[Z.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",Z[Z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",Z[Z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",Z[Z.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",Z[Z.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",Z[Z.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",Z[Z.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",Z[Z.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",Z[Z.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",Z[Z.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",Z[Z.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",Z[Z.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",Z[Z.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",Z[Z.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",Z[Z.BOGUS_COMMENT=40]="BOGUS_COMMENT",Z[Z.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",Z[Z.COMMENT_START=42]="COMMENT_START",Z[Z.COMMENT_START_DASH=43]="COMMENT_START_DASH",Z[Z.COMMENT=44]="COMMENT",Z[Z.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",Z[Z.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",Z[Z.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",Z[Z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",Z[Z.COMMENT_END_DASH=49]="COMMENT_END_DASH",Z[Z.COMMENT_END=50]="COMMENT_END",Z[Z.COMMENT_END_BANG=51]="COMMENT_END_BANG",Z[Z.DOCTYPE=52]="DOCTYPE",Z[Z.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",Z[Z.DOCTYPE_NAME=54]="DOCTYPE_NAME",Z[Z.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",Z[Z.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",Z[Z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",Z[Z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",Z[Z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",Z[Z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",Z[Z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",Z[Z.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",Z[Z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",Z[Z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",Z[Z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",Z[Z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",Z[Z.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",Z[Z.CDATA_SECTION=68]="CDATA_SECTION",Z[Z.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",Z[Z.CDATA_SECTION_END=70]="CDATA_SECTION_END",Z[Z.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",Z[Z.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(j||(j={}));var o={DATA:j.DATA,RCDATA:j.RCDATA,RAWTEXT:j.RAWTEXT,SCRIPT_DATA:j.SCRIPT_DATA,PLAINTEXT:j.PLAINTEXT,CDATA_SECTION:j.CDATA_SECTION};function N3(Z){return Z>=W.DIGIT_0&&Z<=W.DIGIT_9}function J1(Z){return Z>=W.LATIN_CAPITAL_A&&Z<=W.LATIN_CAPITAL_Z}function D3(Z){return Z>=W.LATIN_SMALL_A&&Z<=W.LATIN_SMALL_Z}function f0(Z){return D3(Z)||J1(Z)}function r9(Z){return f0(Z)||N3(Z)}function i1(Z){return Z+32}function n9(Z){return Z===W.SPACE||Z===W.LINE_FEED||Z===W.TABULATION||Z===W.FORM_FEED}function o9(Z){return n9(Z)||Z===W.SOLIDUS||Z===W.GREATER_THAN_SIGN}function $3(Z){if(Z===W.NULL)return w.nullCharacterReference;else if(Z>1114111)return w.characterReferenceOutsideUnicodeRange;else if(l1(Z))return w.surrogateCharacterReference;else if(d1(Z))return w.noncharacterCharacterReference;else if(c1(Z)||Z===W.CARRIAGE_RETURN)return w.controlCharacterReference;return null}class p1{constructor(Z,X){this.options=Z,this.handler=X,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=j.DATA,this.returnState=j.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new s4(X),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new n4(r4,(Q,K)=>{this.preprocessor.pos=this.entityStartPos+K-1,this._flushCodePointConsumedAsCharacterReference(Q)},X.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(w.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(Q)=>{this._err(w.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+Q)},validateNumericCharacterReference:(Q)=>{let K=$3(Q);if(K)this._err(K,1)}}:void 0)}_err(Z,X=0){var Q,K;(K=(Q=this.handler).onParseError)===null||K===void 0||K.call(Q,this.preprocessor.getError(Z,X))}getCurrentLocation(Z){if(!this.options.sourceCodeLocationInfo)return null;return{startLine:this.preprocessor.line,startCol:this.preprocessor.col-Z,startOffset:this.preprocessor.offset-Z,endLine:-1,endCol:-1,endOffset:-1}}_runParsingLoop(){if(this.inLoop)return;this.inLoop=!0;while(this.active&&!this.paused){this.consumedAfterSnapshot=0;let Z=this._consume();if(!this._ensureHibernation())this._callState(Z)}this.inLoop=!1}pause(){this.paused=!0}resume(Z){if(!this.paused)throw Error("Parser was already resumed");if(this.paused=!1,this.inLoop)return;if(this._runParsingLoop(),!this.paused)Z===null||Z===void 0||Z()}write(Z,X,Q){if(this.active=!0,this.preprocessor.write(Z,X),this._runParsingLoop(),!this.paused)Q===null||Q===void 0||Q()}insertHtmlAtCurrentPos(Z){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(Z),this._runParsingLoop()}_ensureHibernation(){if(this.preprocessor.endOfChunkHit)return this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0;return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(Z){this.consumedAfterSnapshot+=Z;for(let X=0;X<Z;X++)this.preprocessor.advance()}_consumeSequenceIfMatch(Z,X){if(this.preprocessor.startsWith(Z,X))return this._advanceBy(Z.length-1),!0;return!1}_createStartTagToken(){this.currentToken={type:m.START_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:m.END_TAG,tagName:"",tagID:J.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(Z){this.currentToken={type:m.COMMENT,data:"",location:this.getCurrentLocation(Z)}}_createDoctypeToken(Z){this.currentToken={type:m.DOCTYPE,name:Z,forceQuirks:!1,publicId:null,systemId:null,location:this.currentLocation}}_createCharacterToken(Z,X){this.currentCharacterToken={type:Z,chars:X,location:this.currentLocation}}_createAttr(Z){this.currentAttr={name:Z,value:""},this.currentLocation=this.getCurrentLocation(0)}_leaveAttrName(){var Z,X;let Q=this.currentToken;if(a1(Q,this.currentAttr.name)===null){if(Q.attrs.push(this.currentAttr),Q.location&&this.currentLocation){let K=(Z=(X=Q.location).attrs)!==null&&Z!==void 0?Z:X.attrs=Object.create(null);K[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(w.duplicateAttribute)}_leaveAttrValue(){if(this.currentLocation)this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset}prepareToken(Z){if(this._emitCurrentCharacterToken(Z.location),this.currentToken=null,Z.location)Z.location.endLine=this.preprocessor.line,Z.location.endCol=this.preprocessor.col+1,Z.location.endOffset=this.preprocessor.offset+1;this.currentLocation=this.getCurrentLocation(-1)}emitCurrentTagToken(){let Z=this.currentToken;if(this.prepareToken(Z),Z.tagID=m0(Z.tagName),Z.type===m.START_TAG)this.lastStartTagName=Z.tagName,this.handler.onStartTag(Z);else{if(Z.attrs.length>0)this._err(w.endTagWithAttributes);if(Z.selfClosing)this._err(w.endTagWithTrailingSolidus);this.handler.onEndTag(Z)}this.preprocessor.dropParsedChunk()}emitCurrentComment(Z){this.prepareToken(Z),this.handler.onComment(Z),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(Z){this.prepareToken(Z),this.handler.onDoctype(Z),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(Z){if(this.currentCharacterToken){if(Z&&this.currentCharacterToken.location)this.currentCharacterToken.location.endLine=Z.startLine,this.currentCharacterToken.location.endCol=Z.startCol,this.currentCharacterToken.location.endOffset=Z.startOffset;switch(this.currentCharacterToken.type){case m.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case m.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case m.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){let Z=this.getCurrentLocation(0);if(Z)Z.endLine=Z.startLine,Z.endCol=Z.startCol,Z.endOffset=Z.startOffset;this._emitCurrentCharacterToken(Z),this.handler.onEof({type:m.EOF,location:Z}),this.active=!1}_appendCharToCurrentCharacterToken(Z,X){if(this.currentCharacterToken)if(this.currentCharacterToken.type===Z){this.currentCharacterToken.chars+=X;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(Z,X)}_emitCodePoint(Z){let X=n9(Z)?m.WHITESPACE_CHARACTER:Z===W.NULL?m.NULL_CHARACTER:m.CHARACTER;this._appendCharToCurrentCharacterToken(X,Z<65536?String.fromCharCode(Z):String.fromCodePoint(Z))}_emitChars(Z){this._appendCharToCurrentCharacterToken(m.CHARACTER,Z)}_startCharacterReference(){this.returnState=this.state,this.state=j.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?F0.Attribute:F0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===j.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===j.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===j.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(Z){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(Z);else this._emitCodePoint(Z)}_callState(Z){switch(this.state){case j.DATA:{this._stateData(Z);break}case j.RCDATA:{this._stateRcdata(Z);break}case j.RAWTEXT:{this._stateRawtext(Z);break}case j.SCRIPT_DATA:{this._stateScriptData(Z);break}case j.PLAINTEXT:{this._statePlaintext(Z);break}case j.TAG_OPEN:{this._stateTagOpen(Z);break}case j.END_TAG_OPEN:{this._stateEndTagOpen(Z);break}case j.TAG_NAME:{this._stateTagName(Z);break}case j.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(Z);break}case j.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(Z);break}case j.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(Z);break}case j.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(Z);break}case j.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(Z);break}case j.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(Z);break}case j.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(Z);break}case j.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(Z);break}case j.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(Z);break}case j.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(Z);break}case j.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(Z);break}case j.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(Z);break}case j.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(Z);break}case j.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(Z);break}case j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(Z);break}case j.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(Z);break}case j.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(Z);break}case j.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(Z);break}case j.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(Z);break}case j.ATTRIBUTE_NAME:{this._stateAttributeName(Z);break}case j.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(Z);break}case j.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(Z);break}case j.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(Z);break}case j.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(Z);break}case j.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(Z);break}case j.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(Z);break}case j.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(Z);break}case j.BOGUS_COMMENT:{this._stateBogusComment(Z);break}case j.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(Z);break}case j.COMMENT_START:{this._stateCommentStart(Z);break}case j.COMMENT_START_DASH:{this._stateCommentStartDash(Z);break}case j.COMMENT:{this._stateComment(Z);break}case j.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(Z);break}case j.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(Z);break}case j.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(Z);break}case j.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(Z);break}case j.COMMENT_END_DASH:{this._stateCommentEndDash(Z);break}case j.COMMENT_END:{this._stateCommentEnd(Z);break}case j.COMMENT_END_BANG:{this._stateCommentEndBang(Z);break}case j.DOCTYPE:{this._stateDoctype(Z);break}case j.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(Z);break}case j.DOCTYPE_NAME:{this._stateDoctypeName(Z);break}case j.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(Z);break}case j.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(Z);break}case j.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(Z);break}case j.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(Z);break}case j.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(Z);break}case j.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(Z);break}case j.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(Z);break}case j.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(Z);break}case j.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(Z);break}case j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(Z);break}case j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(Z);break}case j.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(Z);break}case j.BOGUS_DOCTYPE:{this._stateBogusDoctype(Z);break}case j.CDATA_SECTION:{this._stateCdataSection(Z);break}case j.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(Z);break}case j.CDATA_SECTION_END:{this._stateCdataSectionEnd(Z);break}case j.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case j.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(Z);break}default:throw Error("Unknown state")}}_stateData(Z){switch(Z){case W.LESS_THAN_SIGN:{this.state=j.TAG_OPEN;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitCodePoint(Z);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateRcdata(Z){switch(Z){case W.AMPERSAND:{this._startCharacterReference();break}case W.LESS_THAN_SIGN:{this.state=j.RCDATA_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateRawtext(Z){switch(Z){case W.LESS_THAN_SIGN:{this.state=j.RAWTEXT_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateScriptData(Z){switch(Z){case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_statePlaintext(Z){switch(Z){case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateTagOpen(Z){if(f0(Z))this._createStartTagToken(),this.state=j.TAG_NAME,this._stateTagName(Z);else switch(Z){case W.EXCLAMATION_MARK:{this.state=j.MARKUP_DECLARATION_OPEN;break}case W.SOLIDUS:{this.state=j.END_TAG_OPEN;break}case W.QUESTION_MARK:{this._err(w.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=j.BOGUS_COMMENT,this._stateBogusComment(Z);break}case W.EOF:{this._err(w.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(w.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=j.DATA,this._stateData(Z)}}_stateEndTagOpen(Z){if(f0(Z))this._createEndTagToken(),this.state=j.TAG_NAME,this._stateTagName(Z);else switch(Z){case W.GREATER_THAN_SIGN:{this._err(w.missingEndTagName),this.state=j.DATA;break}case W.EOF:{this._err(w.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(w.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=j.BOGUS_COMMENT,this._stateBogusComment(Z)}}_stateTagName(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_ATTRIBUTE_NAME;break}case W.SOLIDUS:{this.state=j.SELF_CLOSING_START_TAG;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentTagToken();break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.tagName+=A;break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:X.tagName+=String.fromCodePoint(J1(Z)?i1(Z):Z)}}_stateRcdataLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=j.RCDATA,this._stateRcdata(Z)}_stateRcdataEndTagOpen(Z){if(f0(Z))this.state=j.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(Z);else this._emitChars("</"),this.state=j.RCDATA,this._stateRcdata(Z)}handleSpecialEndTag(Z){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();let X=this.currentToken;switch(X.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=j.BEFORE_ATTRIBUTE_NAME,!1;case W.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=j.SELF_CLOSING_START_TAG,!1;case W.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=j.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.RCDATA,this._stateRcdata(Z)}_stateRawtextLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=j.RAWTEXT,this._stateRawtext(Z)}_stateRawtextEndTagOpen(Z){if(f0(Z))this.state=j.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(Z);else this._emitChars("</"),this.state=j.RAWTEXT,this._stateRawtext(Z)}_stateRawtextEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.RAWTEXT,this._stateRawtext(Z)}_stateScriptDataLessThanSign(Z){switch(Z){case W.SOLIDUS:{this.state=j.SCRIPT_DATA_END_TAG_OPEN;break}case W.EXCLAMATION_MARK:{this.state=j.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}}_stateScriptDataEndTagOpen(Z){if(f0(Z))this.state=j.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(Z);else this._emitChars("</"),this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEscapeStart(Z){if(Z===W.HYPHEN_MINUS)this.state=j.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEscapeStartDash(Z){if(Z===W.HYPHEN_MINUS)this.state=j.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=j.SCRIPT_DATA,this._stateScriptData(Z)}_stateScriptDataEscaped(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateScriptDataEscapedDash(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataEscapedDashDash(Z){switch(Z){case W.HYPHEN_MINUS:{this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case W.GREATER_THAN_SIGN:{this.state=j.SCRIPT_DATA,this._emitChars(">");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataEscapedLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(f0(Z))this._emitChars("<"),this.state=j.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(Z);else this._emitChars("<"),this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataEscapedEndTagOpen(Z){if(f0(Z))this.state=j.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(Z);else this._emitChars("</"),this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataEscapedEndTagName(Z){if(this.handleSpecialEndTag(Z))this._emitChars("</"),this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataDoubleEscapeStart(Z){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&o9(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(Z);for(let X=0;X<t.SCRIPT.length;X++)this._emitCodePoint(this._consume());this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=j.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(Z)}_stateScriptDataDoubleEscaped(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateScriptDataDoubleEscapedDash(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataDoubleEscapedDashDash(Z){switch(Z){case W.HYPHEN_MINUS:{this._emitChars("-");break}case W.LESS_THAN_SIGN:{this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case W.GREATER_THAN_SIGN:{this.state=j.SCRIPT_DATA,this._emitChars(">");break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(A);break}case W.EOF:{this._err(w.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(Z)}}_stateScriptDataDoubleEscapedLessThanSign(Z){if(Z===W.SOLIDUS)this.state=j.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(Z)}_stateScriptDataDoubleEscapeEnd(Z){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&o9(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(Z);for(let X=0;X<t.SCRIPT.length;X++)this._emitCodePoint(this._consume());this.state=j.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=j.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(Z)}_stateBeforeAttributeName(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.SOLIDUS:case W.GREATER_THAN_SIGN:case W.EOF:{this.state=j.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(Z);break}case W.EQUALS_SIGN:{this._err(w.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=j.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=j.ATTRIBUTE_NAME,this._stateAttributeName(Z)}}_stateAttributeName(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:case W.SOLIDUS:case W.GREATER_THAN_SIGN:case W.EOF:{this._leaveAttrName(),this.state=j.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(Z);break}case W.EQUALS_SIGN:{this._leaveAttrName(),this.state=j.BEFORE_ATTRIBUTE_VALUE;break}case W.QUOTATION_MARK:case W.APOSTROPHE:case W.LESS_THAN_SIGN:{this._err(w.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(Z);break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.name+=A;break}default:this.currentAttr.name+=String.fromCodePoint(J1(Z)?i1(Z):Z)}}_stateAfterAttributeName(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.SOLIDUS:{this.state=j.SELF_CLOSING_START_TAG;break}case W.EQUALS_SIGN:{this.state=j.BEFORE_ATTRIBUTE_VALUE;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentTagToken();break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=j.ATTRIBUTE_NAME,this._stateAttributeName(Z)}}_stateBeforeAttributeValue(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.QUOTATION_MARK:{this.state=j.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this.state=j.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingAttributeValue),this.state=j.DATA,this.emitCurrentTagToken();break}default:this.state=j.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(Z)}}_stateAttributeValueDoubleQuoted(Z){switch(Z){case W.QUOTATION_MARK:{this.state=j.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.value+=A;break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(Z)}}_stateAttributeValueSingleQuoted(Z){switch(Z){case W.APOSTROPHE:{this.state=j.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.value+=A;break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(Z)}}_stateAttributeValueUnquoted(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this._leaveAttrValue(),this.state=j.BEFORE_ATTRIBUTE_NAME;break}case W.AMPERSAND:{this._startCharacterReference();break}case W.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=j.DATA,this.emitCurrentTagToken();break}case W.NULL:{this._err(w.unexpectedNullCharacter),this.currentAttr.value+=A;break}case W.QUOTATION_MARK:case W.APOSTROPHE:case W.LESS_THAN_SIGN:case W.EQUALS_SIGN:case W.GRAVE_ACCENT:{this._err(w.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(Z);break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(Z)}}_stateAfterAttributeValueQuoted(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this._leaveAttrValue(),this.state=j.BEFORE_ATTRIBUTE_NAME;break}case W.SOLIDUS:{this._leaveAttrValue(),this.state=j.SELF_CLOSING_START_TAG;break}case W.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=j.DATA,this.emitCurrentTagToken();break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this._err(w.missingWhitespaceBetweenAttributes),this.state=j.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(Z)}}_stateSelfClosingStartTag(Z){switch(Z){case W.GREATER_THAN_SIGN:{let X=this.currentToken;X.selfClosing=!0,this.state=j.DATA,this.emitCurrentTagToken();break}case W.EOF:{this._err(w.eofInTag),this._emitEOFToken();break}default:this._err(w.unexpectedSolidusInTag),this.state=j.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(Z)}}_stateBogusComment(Z){let X=this.currentToken;switch(Z){case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentComment(X);break}case W.EOF:{this.emitCurrentComment(X),this._emitEOFToken();break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.data+=A;break}default:X.data+=String.fromCodePoint(Z)}}_stateMarkupDeclarationOpen(Z){if(this._consumeSequenceIfMatch(t.DASH_DASH,!0))this._createCommentToken(t.DASH_DASH.length+1),this.state=j.COMMENT_START;else if(this._consumeSequenceIfMatch(t.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(t.DOCTYPE.length+1),this.state=j.DOCTYPE;else if(this._consumeSequenceIfMatch(t.CDATA_START,!0))if(this.inForeignNode)this.state=j.CDATA_SECTION;else this._err(w.cdataInHtmlContent),this._createCommentToken(t.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=j.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(w.incorrectlyOpenedComment),this._createCommentToken(2),this.state=j.BOGUS_COMMENT,this._stateBogusComment(Z)}_stateCommentStart(Z){switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_START_DASH;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptClosingOfEmptyComment),this.state=j.DATA;let X=this.currentToken;this.emitCurrentComment(X);break}default:this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentStartDash(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_END;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptClosingOfEmptyComment),this.state=j.DATA,this.emitCurrentComment(X);break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="-",this.state=j.COMMENT,this._stateComment(Z)}}_stateComment(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_END_DASH;break}case W.LESS_THAN_SIGN:{X.data+="<",this.state=j.COMMENT_LESS_THAN_SIGN;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.data+=A;break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+=String.fromCodePoint(Z)}}_stateCommentLessThanSign(Z){let X=this.currentToken;switch(Z){case W.EXCLAMATION_MARK:{X.data+="!",this.state=j.COMMENT_LESS_THAN_SIGN_BANG;break}case W.LESS_THAN_SIGN:{X.data+="<";break}default:this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentLessThanSignBang(Z){if(Z===W.HYPHEN_MINUS)this.state=j.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=j.COMMENT,this._stateComment(Z)}_stateCommentLessThanSignBangDash(Z){if(Z===W.HYPHEN_MINUS)this.state=j.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=j.COMMENT_END_DASH,this._stateCommentEndDash(Z)}_stateCommentLessThanSignBangDashDash(Z){if(Z!==W.GREATER_THAN_SIGN&&Z!==W.EOF)this._err(w.nestedComment);this.state=j.COMMENT_END,this._stateCommentEnd(Z)}_stateCommentEndDash(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{this.state=j.COMMENT_END;break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="-",this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentEnd(Z){let X=this.currentToken;switch(Z){case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentComment(X);break}case W.EXCLAMATION_MARK:{this.state=j.COMMENT_END_BANG;break}case W.HYPHEN_MINUS:{X.data+="-";break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="--",this.state=j.COMMENT,this._stateComment(Z)}}_stateCommentEndBang(Z){let X=this.currentToken;switch(Z){case W.HYPHEN_MINUS:{X.data+="--!",this.state=j.COMMENT_END_DASH;break}case W.GREATER_THAN_SIGN:{this._err(w.incorrectlyClosedComment),this.state=j.DATA,this.emitCurrentComment(X);break}case W.EOF:{this._err(w.eofInComment),this.emitCurrentComment(X),this._emitEOFToken();break}default:X.data+="--!",this.state=j.COMMENT,this._stateComment(Z)}}_stateDoctype(Z){switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_DOCTYPE_NAME;break}case W.GREATER_THAN_SIGN:{this.state=j.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(Z);break}case W.EOF:{this._err(w.eofInDoctype),this._createDoctypeToken(null);let X=this.currentToken;X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingWhitespaceBeforeDoctypeName),this.state=j.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(Z)}}_stateBeforeDoctypeName(Z){if(J1(Z))this._createDoctypeToken(String.fromCharCode(i1(Z))),this.state=j.DOCTYPE_NAME;else switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.NULL:{this._err(w.unexpectedNullCharacter),this._createDoctypeToken(A),this.state=j.DOCTYPE_NAME;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypeName),this._createDoctypeToken(null);let X=this.currentToken;X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),this._createDoctypeToken(null);let X=this.currentToken;X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(Z)),this.state=j.DOCTYPE_NAME}}_stateDoctypeName(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.AFTER_DOCTYPE_NAME;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.name+=A;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.name+=String.fromCodePoint(J1(Z)?i1(Z):Z)}}_stateAfterDoctypeName(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(t.PUBLIC,!1))this.state=j.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(t.SYSTEM,!1))this.state=j.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(w.invalidCharacterSequenceAfterDoctypeName),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateAfterDoctypePublicKeyword(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case W.QUOTATION_MARK:{this._err(w.missingWhitespaceAfterDoctypePublicKeyword),X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this._err(w.missingWhitespaceAfterDoctypePublicKeyword),X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBeforeDoctypePublicIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.QUOTATION_MARK:{X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{X.publicId="",this.state=j.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypePublicIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateDoctypePublicIdentifierDoubleQuoted(Z){let X=this.currentToken;switch(Z){case W.QUOTATION_MARK:{this.state=j.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.publicId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypePublicIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.publicId+=String.fromCodePoint(Z)}}_stateDoctypePublicIdentifierSingleQuoted(Z){let X=this.currentToken;switch(Z){case W.APOSTROPHE:{this.state=j.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.publicId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypePublicIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.publicId+=String.fromCodePoint(Z)}}_stateAfterDoctypePublicIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case W.GREATER_THAN_SIGN:{this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.QUOTATION_MARK:{this._err(w.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this._err(w.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBetweenDoctypePublicAndSystemIdentifiers(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.GREATER_THAN_SIGN:{this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.QUOTATION_MARK:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateAfterDoctypeSystemKeyword(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:{this.state=j.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case W.QUOTATION_MARK:{this._err(w.missingWhitespaceAfterDoctypeSystemKeyword),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{this._err(w.missingWhitespaceAfterDoctypeSystemKeyword),X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBeforeDoctypeSystemIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.QUOTATION_MARK:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case W.APOSTROPHE:{X.systemId="",this.state=j.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case W.GREATER_THAN_SIGN:{this._err(w.missingDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.DATA,this.emitCurrentDoctype(X);break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.missingQuoteBeforeDoctypeSystemIdentifier),X.forceQuirks=!0,this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateDoctypeSystemIdentifierDoubleQuoted(Z){let X=this.currentToken;switch(Z){case W.QUOTATION_MARK:{this.state=j.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.systemId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypeSystemIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.systemId+=String.fromCodePoint(Z)}}_stateDoctypeSystemIdentifierSingleQuoted(Z){let X=this.currentToken;switch(Z){case W.APOSTROPHE:{this.state=j.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case W.NULL:{this._err(w.unexpectedNullCharacter),X.systemId+=A;break}case W.GREATER_THAN_SIGN:{this._err(w.abruptDoctypeSystemIdentifier),X.forceQuirks=!0,this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:X.systemId+=String.fromCodePoint(Z)}}_stateAfterDoctypeSystemIdentifier(Z){let X=this.currentToken;switch(Z){case W.SPACE:case W.LINE_FEED:case W.TABULATION:case W.FORM_FEED:break;case W.GREATER_THAN_SIGN:{this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.EOF:{this._err(w.eofInDoctype),X.forceQuirks=!0,this.emitCurrentDoctype(X),this._emitEOFToken();break}default:this._err(w.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=j.BOGUS_DOCTYPE,this._stateBogusDoctype(Z)}}_stateBogusDoctype(Z){let X=this.currentToken;switch(Z){case W.GREATER_THAN_SIGN:{this.emitCurrentDoctype(X),this.state=j.DATA;break}case W.NULL:{this._err(w.unexpectedNullCharacter);break}case W.EOF:{this.emitCurrentDoctype(X),this._emitEOFToken();break}default:}}_stateCdataSection(Z){switch(Z){case W.RIGHT_SQUARE_BRACKET:{this.state=j.CDATA_SECTION_BRACKET;break}case W.EOF:{this._err(w.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(Z)}}_stateCdataSectionBracket(Z){if(Z===W.RIGHT_SQUARE_BRACKET)this.state=j.CDATA_SECTION_END;else this._emitChars("]"),this.state=j.CDATA_SECTION,this._stateCdataSection(Z)}_stateCdataSectionEnd(Z){switch(Z){case W.GREATER_THAN_SIGN:{this.state=j.DATA;break}case W.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=j.CDATA_SECTION,this._stateCdataSection(Z)}}_stateCharacterReference(){let Z=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(Z<0)if(this.preprocessor.lastChunkWritten)Z=this.entityDecoder.end();else{this.active=!1,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=!0;return}if(Z===0)this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(W.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&r9(this.preprocessor.peek(1))?j.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(Z){if(r9(Z))this._flushCodePointConsumedAsCharacterReference(Z);else{if(Z===W.SEMICOLON)this._err(w.unknownNamedCharacterReference);this.state=this.returnState,this._callState(Z)}}}var X2=new Set([J.DD,J.DT,J.LI,J.OPTGROUP,J.OPTION,J.P,J.RB,J.RP,J.RT,J.RTC]),t9=new Set([...X2,J.CAPTION,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]),s1=new Set([J.APPLET,J.CAPTION,J.HTML,J.MARQUEE,J.OBJECT,J.TABLE,J.TD,J.TEMPLATE,J.TH]),G3=new Set([...s1,J.OL,J.UL]),g3=new Set([...s1,J.BUTTON]),e9=new Set([J.ANNOTATION_XML,J.MI,J.MN,J.MO,J.MS,J.MTEXT]),Z2=new Set([J.DESC,J.FOREIGN_OBJECT,J.TITLE]),E3=new Set([J.TR,J.TEMPLATE,J.HTML]),m3=new Set([J.TBODY,J.TFOOT,J.THEAD,J.TEMPLATE,J.HTML]),_3=new Set([J.TABLE,J.TEMPLATE,J.HTML]),k3=new Set([J.TD,J.TH]);class t4{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(Z,X,Q){this.treeAdapter=X,this.handler=Q,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=J.UNKNOWN,this.current=Z}_indexOf(Z){return this.items.lastIndexOf(Z,this.stackTop)}_isInTemplate(){return this.currentTagId===J.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===b.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(Z,X){if(this.stackTop++,this.items[this.stackTop]=Z,this.current=Z,this.tagIDs[this.stackTop]=X,this.currentTagId=X,this._isInTemplate())this.tmplCount++;this.handler.onItemPush(Z,X,!0)}pop(){let Z=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount--;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(Z,!0)}replace(Z,X){let Q=this._indexOf(Z);if(this.items[Q]=X,Q===this.stackTop)this.current=X}insertAfter(Z,X,Q){let K=this._indexOf(Z)+1;if(this.items.splice(K,0,X),this.tagIDs.splice(K,0,Q),this.stackTop++,K===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,K===this.stackTop)}popUntilTagNamePopped(Z){let X=this.stackTop+1;do X=this.tagIDs.lastIndexOf(Z,X-1);while(X>0&&this.treeAdapter.getNamespaceURI(this.items[X])!==b.HTML);this.shortenToLength(Math.max(X,0))}shortenToLength(Z){while(this.stackTop>=Z){let X=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount-=1;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,this.stackTop<Z)}}popUntilElementPopped(Z){let X=this._indexOf(Z);this.shortenToLength(Math.max(X,0))}popUntilPopped(Z,X){let Q=this._indexOfTagNames(Z,X);this.shortenToLength(Math.max(Q,0))}popUntilNumberedHeaderPopped(){this.popUntilPopped(Q1,b.HTML)}popUntilTableCellPopped(){this.popUntilPopped(k3,b.HTML)}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1)}_indexOfTagNames(Z,X){for(let Q=this.stackTop;Q>=0;Q--)if(Z.has(this.tagIDs[Q])&&this.treeAdapter.getNamespaceURI(this.items[Q])===X)return Q;return-1}clearBackTo(Z,X){let Q=this._indexOfTagNames(Z,X);this.shortenToLength(Q+1)}clearBackToTableContext(){this.clearBackTo(_3,b.HTML)}clearBackToTableBodyContext(){this.clearBackTo(m3,b.HTML)}clearBackToTableRowContext(){this.clearBackTo(E3,b.HTML)}remove(Z){let X=this._indexOf(Z);if(X>=0)if(X===this.stackTop)this.pop();else this.items.splice(X,1),this.tagIDs.splice(X,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(Z,!1)}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===J.BODY?this.items[1]:null}contains(Z){return this._indexOf(Z)>-1}getCommonAncestor(Z){let X=this._indexOf(Z)-1;return X>=0?this.items[X]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===J.HTML}hasInDynamicScope(Z,X){for(let Q=this.stackTop;Q>=0;Q--){let K=this.tagIDs[Q];switch(this.treeAdapter.getNamespaceURI(this.items[Q])){case b.HTML:{if(K===Z)return!0;if(X.has(K))return!1;break}case b.SVG:{if(Z2.has(K))return!1;break}case b.MATHML:{if(e9.has(K))return!1;break}}}return!0}hasInScope(Z){return this.hasInDynamicScope(Z,s1)}hasInListItemScope(Z){return this.hasInDynamicScope(Z,G3)}hasInButtonScope(Z){return this.hasInDynamicScope(Z,g3)}hasNumberedHeaderInScope(){for(let Z=this.stackTop;Z>=0;Z--){let X=this.tagIDs[Z];switch(this.treeAdapter.getNamespaceURI(this.items[Z])){case b.HTML:{if(Q1.has(X))return!0;if(s1.has(X))return!1;break}case b.SVG:{if(Z2.has(X))return!1;break}case b.MATHML:{if(e9.has(X))return!1;break}}}return!0}hasInTableScope(Z){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==b.HTML)continue;switch(this.tagIDs[X]){case Z:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let Z=this.stackTop;Z>=0;Z--){if(this.treeAdapter.getNamespaceURI(this.items[Z])!==b.HTML)continue;switch(this.tagIDs[Z]){case J.TBODY:case J.THEAD:case J.TFOOT:return!0;case J.TABLE:case J.HTML:return!1}}return!0}hasInSelectScope(Z){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==b.HTML)continue;switch(this.tagIDs[X]){case Z:return!0;case J.OPTION:case J.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&X2.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&t9.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(Z){while(this.currentTagId!==void 0&&this.currentTagId!==Z&&t9.has(this.currentTagId))this.pop()}}var z0;(function(Z){Z[Z.Marker=0]="Marker",Z[Z.Element=1]="Element"})(z0||(z0={}));var Q2={type:z0.Marker};class e4{constructor(Z){this.treeAdapter=Z,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(Z,X){let Q=[],K=X.length,Y=this.treeAdapter.getTagName(Z),V=this.treeAdapter.getNamespaceURI(Z);for(let z=0;z<this.entries.length;z++){let U=this.entries[z];if(U.type===z0.Marker)break;let{element:F}=U;if(this.treeAdapter.getTagName(F)===Y&&this.treeAdapter.getNamespaceURI(F)===V){let B=this.treeAdapter.getAttrList(F);if(B.length===K)Q.push({idx:z,attrs:B})}}return Q}_ensureNoahArkCondition(Z){if(this.entries.length<3)return;let X=this.treeAdapter.getAttrList(Z),Q=this._getNoahArkConditionCandidates(Z,X);if(Q.length<3)return;let K=new Map(X.map((V)=>[V.name,V.value])),Y=0;for(let V=0;V<Q.length;V++){let z=Q[V];if(z.attrs.every((U)=>K.get(U.name)===U.value)){if(Y+=1,Y>=3)this.entries.splice(z.idx,1)}}}insertMarker(){this.entries.unshift(Q2)}pushElement(Z,X){this._ensureNoahArkCondition(Z),this.entries.unshift({type:z0.Element,element:Z,token:X})}insertElementAfterBookmark(Z,X){let Q=this.entries.indexOf(this.bookmark);this.entries.splice(Q,0,{type:z0.Element,element:Z,token:X})}removeEntry(Z){let X=this.entries.indexOf(Z);if(X!==-1)this.entries.splice(X,1)}clearToLastMarker(){let Z=this.entries.indexOf(Q2);if(Z===-1)this.entries.length=0;else this.entries.splice(0,Z+1)}getElementEntryInScopeWithTagName(Z){let X=this.entries.find((Q)=>Q.type===z0.Marker||this.treeAdapter.getTagName(Q.element)===Z);return X&&X.type===z0.Element?X:null}getElementEntry(Z){return this.entries.find((X)=>X.type===z0.Element&&X.element===Z)}}var W0={createDocument(){return{nodeName:"#document",mode:e.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(Z,X,Q){return{nodeName:Z,tagName:Z,attrs:Q,namespaceURI:X,childNodes:[],parentNode:null}},createCommentNode(Z){return{nodeName:"#comment",data:Z,parentNode:null}},createTextNode(Z){return{nodeName:"#text",value:Z,parentNode:null}},appendChild(Z,X){Z.childNodes.push(X),X.parentNode=Z},insertBefore(Z,X,Q){let K=Z.childNodes.indexOf(Q);Z.childNodes.splice(K,0,X),X.parentNode=Z},setTemplateContent(Z,X){Z.content=X},getTemplateContent(Z){return Z.content},setDocumentType(Z,X,Q,K){let Y=Z.childNodes.find((V)=>V.nodeName==="#documentType");if(Y)Y.name=X,Y.publicId=Q,Y.systemId=K;else{let V={nodeName:"#documentType",name:X,publicId:Q,systemId:K,parentNode:null};W0.appendChild(Z,V)}},setDocumentMode(Z,X){Z.mode=X},getDocumentMode(Z){return Z.mode},detachNode(Z){if(Z.parentNode){let X=Z.parentNode.childNodes.indexOf(Z);Z.parentNode.childNodes.splice(X,1),Z.parentNode=null}},insertText(Z,X){if(Z.childNodes.length>0){let Q=Z.childNodes[Z.childNodes.length-1];if(W0.isTextNode(Q)){Q.value+=X;return}}W0.appendChild(Z,W0.createTextNode(X))},insertTextBefore(Z,X,Q){let K=Z.childNodes[Z.childNodes.indexOf(Q)-1];if(K&&W0.isTextNode(K))K.value+=X;else W0.insertBefore(Z,W0.createTextNode(X),Q)},adoptAttributes(Z,X){let Q=new Set(Z.attrs.map((K)=>K.name));for(let K=0;K<X.length;K++)if(!Q.has(X[K].name))Z.attrs.push(X[K])},getFirstChild(Z){return Z.childNodes[0]},getChildNodes(Z){return Z.childNodes},getParentNode(Z){return Z.parentNode},getAttrList(Z){return Z.attrs},getTagName(Z){return Z.tagName},getNamespaceURI(Z){return Z.namespaceURI},getTextNodeContent(Z){return Z.value},getCommentNodeContent(Z){return Z.data},getDocumentTypeNodeName(Z){return Z.name},getDocumentTypeNodePublicId(Z){return Z.publicId},getDocumentTypeNodeSystemId(Z){return Z.systemId},isTextNode(Z){return Z.nodeName==="#text"},isCommentNode(Z){return Z.nodeName==="#comment"},isDocumentTypeNode(Z){return Z.nodeName==="#documentType"},isElementNode(Z){return Object.prototype.hasOwnProperty.call(Z,"tagName")},setNodeSourceCodeLocation(Z,X){Z.sourceCodeLocation=X},getNodeSourceCodeLocation(Z){return Z.sourceCodeLocation},updateNodeSourceCodeLocation(Z,X){Z.sourceCodeLocation={...Z.sourceCodeLocation,...X}}};var K2="html",S3="about:legacy-compat",I3="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",Y2=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],T3=[...Y2,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],A3=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),W2=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],u3=[...W2,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function J2(Z,X){return X.some((Q)=>Z.startsWith(Q))}function V2(Z){return Z.name===K2&&Z.publicId===null&&(Z.systemId===null||Z.systemId===S3)}function j2(Z){if(Z.name!==K2)return e.QUIRKS;let{systemId:X}=Z;if(X&&X.toLowerCase()===I3)return e.QUIRKS;let{publicId:Q}=Z;if(Q!==null){if(Q=Q.toLowerCase(),A3.has(Q))return e.QUIRKS;let K=X===null?T3:Y2;if(J2(Q,K))return e.QUIRKS;if(K=X===null?W2:u3,J2(Q,K))return e.LIMITED_QUIRKS}return e.NO_QUIRKS}var z2={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},c3="definitionurl",d3="definitionURL",a3=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((Z)=>[Z.toLowerCase(),Z])),i3=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:b.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:b.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:b.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:b.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:b.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:b.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:b.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:b.XML}],["xml:space",{prefix:"xml",name:"space",namespace:b.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:b.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:b.XMLNS}]]),p3=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((Z)=>[Z.toLowerCase(),Z])),s3=new Set([J.B,J.BIG,J.BLOCKQUOTE,J.BODY,J.BR,J.CENTER,J.CODE,J.DD,J.DIV,J.DL,J.DT,J.EM,J.EMBED,J.H1,J.H2,J.H3,J.H4,J.H5,J.H6,J.HEAD,J.HR,J.I,J.IMG,J.LI,J.LISTING,J.MENU,J.META,J.NOBR,J.OL,J.P,J.PRE,J.RUBY,J.S,J.SMALL,J.SPAN,J.STRONG,J.STRIKE,J.SUB,J.SUP,J.TABLE,J.TT,J.U,J.UL,J.VAR]);function H2(Z){let X=Z.tagID;return X===J.FONT&&Z.attrs.some(({name:K})=>K===x0.COLOR||K===x0.SIZE||K===x0.FACE)||s3.has(X)}function Z8(Z){for(let X=0;X<Z.attrs.length;X++)if(Z.attrs[X].name===c3){Z.attrs[X].name=d3;break}}function X8(Z){for(let X=0;X<Z.attrs.length;X++){let Q=a3.get(Z.attrs[X].name);if(Q!=null)Z.attrs[X].name=Q}}function r1(Z){for(let X=0;X<Z.attrs.length;X++){let Q=i3.get(Z.attrs[X].name);if(Q)Z.attrs[X].prefix=Q.prefix,Z.attrs[X].name=Q.name,Z.attrs[X].namespace=Q.namespace}}function U2(Z){let X=p3.get(Z.tagName);if(X!=null)Z.tagName=X,Z.tagID=m0(Z.tagName)}function r3(Z,X){return X===b.MATHML&&(Z===J.MI||Z===J.MO||Z===J.MN||Z===J.MS||Z===J.MTEXT)}function o3(Z,X,Q){if(X===b.MATHML&&Z===J.ANNOTATION_XML){for(let K=0;K<Q.length;K++)if(Q[K].name===x0.ENCODING){let Y=Q[K].value.toLowerCase();return Y===z2.TEXT_HTML||Y===z2.APPLICATION_XML}}return X===b.SVG&&(Z===J.FOREIGN_OBJECT||Z===J.DESC||Z===J.TITLE)}function q2(Z,X,Q,K){return(!K||K===b.HTML)&&o3(Z,X,Q)||(!K||K===b.MATHML)&&r3(Z,X)}var n3="hidden",t3=8,e3=3,H;(function(Z){Z[Z.INITIAL=0]="INITIAL",Z[Z.BEFORE_HTML=1]="BEFORE_HTML",Z[Z.BEFORE_HEAD=2]="BEFORE_HEAD",Z[Z.IN_HEAD=3]="IN_HEAD",Z[Z.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",Z[Z.AFTER_HEAD=5]="AFTER_HEAD",Z[Z.IN_BODY=6]="IN_BODY",Z[Z.TEXT=7]="TEXT",Z[Z.IN_TABLE=8]="IN_TABLE",Z[Z.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",Z[Z.IN_CAPTION=10]="IN_CAPTION",Z[Z.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",Z[Z.IN_TABLE_BODY=12]="IN_TABLE_BODY",Z[Z.IN_ROW=13]="IN_ROW",Z[Z.IN_CELL=14]="IN_CELL",Z[Z.IN_SELECT=15]="IN_SELECT",Z[Z.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",Z[Z.IN_TEMPLATE=17]="IN_TEMPLATE",Z[Z.AFTER_BODY=18]="AFTER_BODY",Z[Z.IN_FRAMESET=19]="IN_FRAMESET",Z[Z.AFTER_FRAMESET=20]="AFTER_FRAMESET",Z[Z.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",Z[Z.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET"})(H||(H={}));var Z7={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},P2=new Set([J.TABLE,J.TBODY,J.TFOOT,J.THEAD,J.TR]),F2={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:W0,onParseError:null};class q1{constructor(Z,X,Q=null,K=null){if(this.fragmentContext=Q,this.scriptHandler=K,this.currentToken=null,this.stopped=!1,this.insertionMode=H.INITIAL,this.originalInsertionMode=H.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=!1,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1,this.options={...F2,...Z},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError)this.options.sourceCodeLocationInfo=!0;this.document=X!==null&&X!==void 0?X:this.treeAdapter.createDocument(),this.tokenizer=new p1(this.options,this),this.activeFormattingElements=new e4(this.treeAdapter),this.fragmentContextID=Q?m0(this.treeAdapter.getTagName(Q)):J.UNKNOWN,this._setContextModes(Q!==null&&Q!==void 0?Q:this.document,this.fragmentContextID),this.openElements=new t4(this.document,this.treeAdapter,this)}static parse(Z,X){let Q=new this(X);return Q.tokenizer.write(Z,!0),Q.document}static getFragmentParser(Z,X){let Q={...F2,...X};Z!==null&&Z!==void 0||(Z=Q.treeAdapter.createElement(q.TEMPLATE,b.HTML,[]));let K=Q.treeAdapter.createElement("documentmock",b.HTML,[]),Y=new this(Q,K,Z);if(Y.fragmentContextID===J.TEMPLATE)Y.tmplInsertionModeStack.unshift(H.IN_TEMPLATE);return Y._initTokenizerForFragmentParsing(),Y._insertFakeRootElement(),Y._resetInsertionMode(),Y._findFormInFragmentContext(),Y}getFragment(){let Z=this.treeAdapter.getFirstChild(this.document),X=this.treeAdapter.createDocumentFragment();return this._adoptNodes(Z,X),X}_err(Z,X,Q){var K;if(!this.onParseError)return;let Y=(K=Z.location)!==null&&K!==void 0?K:Z7,V={code:X,startLine:Y.startLine,startCol:Y.startCol,startOffset:Y.startOffset,endLine:Q?Y.startLine:Y.endLine,endCol:Q?Y.startCol:Y.endCol,endOffset:Q?Y.startOffset:Y.endOffset};this.onParseError(V)}onItemPush(Z,X,Q){var K,Y;if((Y=(K=this.treeAdapter).onItemPush)===null||Y===void 0||Y.call(K,Z),Q&&this.openElements.stackTop>0)this._setContextModes(Z,X)}onItemPop(Z,X){var Q,K;if(this.options.sourceCodeLocationInfo)this._setEndLocation(Z,this.currentToken);if((K=(Q=this.treeAdapter).onItemPop)===null||K===void 0||K.call(Q,Z,this.openElements.current),X){let Y,V;if(this.openElements.stackTop===0&&this.fragmentContext)Y=this.fragmentContext,V=this.fragmentContextID;else({current:Y,currentTagId:V}=this.openElements);this._setContextModes(Y,V)}}_setContextModes(Z,X){let Q=Z===this.document||Z&&this.treeAdapter.getNamespaceURI(Z)===b.HTML;this.currentNotInHTML=!Q,this.tokenizer.inForeignNode=!Q&&Z!==void 0&&X!==void 0&&!this._isIntegrationPoint(X,Z)}_switchToTextParsing(Z,X){this._insertElement(Z,b.HTML),this.tokenizer.state=X,this.originalInsertionMode=this.insertionMode,this.insertionMode=H.TEXT}switchToPlaintextParsing(){this.insertionMode=H.TEXT,this.originalInsertionMode=H.IN_BODY,this.tokenizer.state=o.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let Z=this.fragmentContext;while(Z){if(this.treeAdapter.getTagName(Z)===q.FORM){this.formElement=Z;break}Z=this.treeAdapter.getParentNode(Z)}}_initTokenizerForFragmentParsing(){if(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==b.HTML)return;switch(this.fragmentContextID){case J.TITLE:case J.TEXTAREA:{this.tokenizer.state=o.RCDATA;break}case J.STYLE:case J.XMP:case J.IFRAME:case J.NOEMBED:case J.NOFRAMES:case J.NOSCRIPT:{this.tokenizer.state=o.RAWTEXT;break}case J.SCRIPT:{this.tokenizer.state=o.SCRIPT_DATA;break}case J.PLAINTEXT:{this.tokenizer.state=o.PLAINTEXT;break}default:}}_setDocumentType(Z){let X=Z.name||"",Q=Z.publicId||"",K=Z.systemId||"";if(this.treeAdapter.setDocumentType(this.document,X,Q,K),Z.location){let V=this.treeAdapter.getChildNodes(this.document).find((z)=>this.treeAdapter.isDocumentTypeNode(z));if(V)this.treeAdapter.setNodeSourceCodeLocation(V,Z.location)}}_attachElementToTree(Z,X){if(this.options.sourceCodeLocationInfo){let Q=X&&{...X,startTag:X};this.treeAdapter.setNodeSourceCodeLocation(Z,Q)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(Z);else{let Q=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(Q!==null&&Q!==void 0?Q:this.document,Z)}}_appendElement(Z,X){let Q=this.treeAdapter.createElement(Z.tagName,X,Z.attrs);this._attachElementToTree(Q,Z.location)}_insertElement(Z,X){let Q=this.treeAdapter.createElement(Z.tagName,X,Z.attrs);this._attachElementToTree(Q,Z.location),this.openElements.push(Q,Z.tagID)}_insertFakeElement(Z,X){let Q=this.treeAdapter.createElement(Z,b.HTML,[]);this._attachElementToTree(Q,null),this.openElements.push(Q,X)}_insertTemplate(Z){let X=this.treeAdapter.createElement(Z.tagName,b.HTML,Z.attrs),Q=this.treeAdapter.createDocumentFragment();if(this.treeAdapter.setTemplateContent(X,Q),this._attachElementToTree(X,Z.location),this.openElements.push(X,Z.tagID),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Q,null)}_insertFakeRootElement(){let Z=this.treeAdapter.createElement(q.HTML,b.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Z,null);this.treeAdapter.appendChild(this.openElements.current,Z),this.openElements.push(Z,J.HTML)}_appendCommentNode(Z,X){let Q=this.treeAdapter.createCommentNode(Z.data);if(this.treeAdapter.appendChild(X,Q),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Q,Z.location)}_insertCharacters(Z){let X,Q;if(this._shouldFosterParentOnInsertion())if({parent:X,beforeElement:Q}=this._findFosterParentingLocation(),Q)this.treeAdapter.insertTextBefore(X,Z.chars,Q);else this.treeAdapter.insertText(X,Z.chars);else X=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(X,Z.chars);if(!Z.location)return;let K=this.treeAdapter.getChildNodes(X),Y=Q?K.lastIndexOf(Q):K.length,V=K[Y-1];if(this.treeAdapter.getNodeSourceCodeLocation(V)){let{endLine:U,endCol:F,endOffset:B}=Z.location;this.treeAdapter.updateNodeSourceCodeLocation(V,{endLine:U,endCol:F,endOffset:B})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(V,Z.location)}_adoptNodes(Z,X){for(let Q=this.treeAdapter.getFirstChild(Z);Q;Q=this.treeAdapter.getFirstChild(Z))this.treeAdapter.detachNode(Q),this.treeAdapter.appendChild(X,Q)}_setEndLocation(Z,X){if(this.treeAdapter.getNodeSourceCodeLocation(Z)&&X.location){let Q=X.location,K=this.treeAdapter.getTagName(Z),Y=X.type===m.END_TAG&&K===X.tagName?{endTag:{...Q},endLine:Q.endLine,endCol:Q.endCol,endOffset:Q.endOffset}:{endLine:Q.startLine,endCol:Q.startCol,endOffset:Q.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(Z,Y)}}shouldProcessStartTagTokenInForeignContent(Z){if(!this.currentNotInHTML)return!1;let X,Q;if(this.openElements.stackTop===0&&this.fragmentContext)X=this.fragmentContext,Q=this.fragmentContextID;else({current:X,currentTagId:Q}=this.openElements);if(Z.tagID===J.SVG&&this.treeAdapter.getTagName(X)===q.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(X)===b.MATHML)return!1;return this.tokenizer.inForeignNode||(Z.tagID===J.MGLYPH||Z.tagID===J.MALIGNMARK)&&Q!==void 0&&!this._isIntegrationPoint(Q,X,b.HTML)}_processToken(Z){switch(Z.type){case m.CHARACTER:{this.onCharacter(Z);break}case m.NULL_CHARACTER:{this.onNullCharacter(Z);break}case m.COMMENT:{this.onComment(Z);break}case m.DOCTYPE:{this.onDoctype(Z);break}case m.START_TAG:{this._processStartTag(Z);break}case m.END_TAG:{this.onEndTag(Z);break}case m.EOF:{this.onEof(Z);break}case m.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(Z);break}}}_isIntegrationPoint(Z,X,Q){let K=this.treeAdapter.getNamespaceURI(X),Y=this.treeAdapter.getAttrList(X);return q2(Z,K,Y,Q)}_reconstructActiveFormattingElements(){let Z=this.activeFormattingElements.entries.length;if(Z){let X=this.activeFormattingElements.entries.findIndex((K)=>K.type===z0.Marker||this.openElements.contains(K.element)),Q=X===-1?Z-1:X-1;for(let K=Q;K>=0;K--){let Y=this.activeFormattingElements.entries[K];this._insertElement(Y.token,this.treeAdapter.getNamespaceURI(Y.element)),Y.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=H.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(J.P),this.openElements.popUntilTagNamePopped(J.P)}_resetInsertionMode(){for(let Z=this.openElements.stackTop;Z>=0;Z--)switch(Z===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[Z]){case J.TR:{this.insertionMode=H.IN_ROW;return}case J.TBODY:case J.THEAD:case J.TFOOT:{this.insertionMode=H.IN_TABLE_BODY;return}case J.CAPTION:{this.insertionMode=H.IN_CAPTION;return}case J.COLGROUP:{this.insertionMode=H.IN_COLUMN_GROUP;return}case J.TABLE:{this.insertionMode=H.IN_TABLE;return}case J.BODY:{this.insertionMode=H.IN_BODY;return}case J.FRAMESET:{this.insertionMode=H.IN_FRAMESET;return}case J.SELECT:{this._resetInsertionModeForSelect(Z);return}case J.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case J.HTML:{this.insertionMode=this.headElement?H.AFTER_HEAD:H.BEFORE_HEAD;return}case J.TD:case J.TH:{if(Z>0){this.insertionMode=H.IN_CELL;return}break}case J.HEAD:{if(Z>0){this.insertionMode=H.IN_HEAD;return}break}}this.insertionMode=H.IN_BODY}_resetInsertionModeForSelect(Z){if(Z>0)for(let X=Z-1;X>0;X--){let Q=this.openElements.tagIDs[X];if(Q===J.TEMPLATE)break;else if(Q===J.TABLE){this.insertionMode=H.IN_SELECT_IN_TABLE;return}}this.insertionMode=H.IN_SELECT}_isElementCausesFosterParenting(Z){return P2.has(Z)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let Z=this.openElements.stackTop;Z>=0;Z--){let X=this.openElements.items[Z];switch(this.openElements.tagIDs[Z]){case J.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(X)===b.HTML)return{parent:this.treeAdapter.getTemplateContent(X),beforeElement:null};break}case J.TABLE:{let Q=this.treeAdapter.getParentNode(X);if(Q)return{parent:Q,beforeElement:X};return{parent:this.openElements.items[Z-1],beforeElement:null}}default:}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(Z){let X=this._findFosterParentingLocation();if(X.beforeElement)this.treeAdapter.insertBefore(X.parent,Z,X.beforeElement);else this.treeAdapter.appendChild(X.parent,Z)}_isSpecialElement(Z,X){let Q=this.treeAdapter.getNamespaceURI(Z);return p9[Q].has(X)}onCharacter(Z){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){$X(this,Z);return}switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{W1(this,Z);break}case H.BEFORE_HEAD:{V1(this,Z);break}case H.IN_HEAD:{j1(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{z1(this,Z);break}case H.AFTER_HEAD:{H1(this,Z);break}case H.IN_BODY:case H.IN_CAPTION:case H.IN_CELL:case H.IN_TEMPLATE:{b2(this,Z);break}case H.TEXT:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:{this._insertCharacters(Z);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{Q8(this,Z);break}case H.IN_TABLE_TEXT:{f2(this,Z);break}case H.IN_COLUMN_GROUP:{n1(this,Z);break}case H.AFTER_BODY:{t1(this,Z);break}case H.AFTER_AFTER_BODY:{o1(this,Z);break}default:}}onNullCharacter(Z){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){DX(this,Z);return}switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{W1(this,Z);break}case H.BEFORE_HEAD:{V1(this,Z);break}case H.IN_HEAD:{j1(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{z1(this,Z);break}case H.AFTER_HEAD:{H1(this,Z);break}case H.TEXT:{this._insertCharacters(Z);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{Q8(this,Z);break}case H.IN_COLUMN_GROUP:{n1(this,Z);break}case H.AFTER_BODY:{t1(this,Z);break}case H.AFTER_AFTER_BODY:{o1(this,Z);break}default:}}onComment(Z){if(this.skipNextNewLine=!1,this.currentNotInHTML){J8(this,Z);return}switch(this.insertionMode){case H.INITIAL:case H.BEFORE_HTML:case H.BEFORE_HEAD:case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:case H.IN_BODY:case H.IN_TABLE:case H.IN_CAPTION:case H.IN_COLUMN_GROUP:case H.IN_TABLE_BODY:case H.IN_ROW:case H.IN_CELL:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:case H.IN_TEMPLATE:case H.IN_FRAMESET:case H.AFTER_FRAMESET:{J8(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.AFTER_BODY:{V7(this,Z);break}case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{j7(this,Z);break}default:}}onDoctype(Z){switch(this.skipNextNewLine=!1,this.insertionMode){case H.INITIAL:{z7(this,Z);break}case H.BEFORE_HEAD:case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:{this._err(Z,w.misplacedDoctype);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}default:}}onStartTag(Z){if(this.skipNextNewLine=!1,this.currentToken=Z,this._processStartTag(Z),Z.selfClosing&&!Z.ackSelfClosing)this._err(Z,w.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(Z){if(this.shouldProcessStartTagTokenInForeignContent(Z))GX(this,Z);else this._startTagOutsideForeignContent(Z)}_startTagOutsideForeignContent(Z){switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{H7(this,Z);break}case H.BEFORE_HEAD:{q7(this,Z);break}case H.IN_HEAD:{H0(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{w7(this,Z);break}case H.AFTER_HEAD:{P7(this,Z);break}case H.IN_BODY:{n(this,Z);break}case H.IN_TABLE:{d0(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.IN_CAPTION:{BX(this,Z);break}case H.IN_COLUMN_GROUP:{V8(this,Z);break}case H.IN_TABLE_BODY:{X4(this,Z);break}case H.IN_ROW:{Q4(this,Z);break}case H.IN_CELL:{LX(this,Z);break}case H.IN_SELECT:{N2(this,Z);break}case H.IN_SELECT_IN_TABLE:{xX(this,Z);break}case H.IN_TEMPLATE:{OX(this,Z);break}case H.AFTER_BODY:{RX(this,Z);break}case H.IN_FRAMESET:{vX(this,Z);break}case H.AFTER_FRAMESET:{fX(this,Z);break}case H.AFTER_AFTER_BODY:{MX(this,Z);break}case H.AFTER_AFTER_FRAMESET:{NX(this,Z);break}default:}}onEndTag(Z){if(this.skipNextNewLine=!1,this.currentToken=Z,this.currentNotInHTML)gX(this,Z);else this._endTagOutsideForeignContent(Z)}_endTagOutsideForeignContent(Z){switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{U7(this,Z);break}case H.BEFORE_HEAD:{B7(this,Z);break}case H.IN_HEAD:{F7(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{L7(this,Z);break}case H.AFTER_HEAD:{x7(this,Z);break}case H.IN_BODY:{Z4(this,Z);break}case H.TEXT:{JX(this,Z);break}case H.IN_TABLE:{U1(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.IN_CAPTION:{FX(this,Z);break}case H.IN_COLUMN_GROUP:{wX(this,Z);break}case H.IN_TABLE_BODY:{K8(this,Z);break}case H.IN_ROW:{M2(this,Z);break}case H.IN_CELL:{PX(this,Z);break}case H.IN_SELECT:{D2(this,Z);break}case H.IN_SELECT_IN_TABLE:{bX(this,Z);break}case H.IN_TEMPLATE:{CX(this,Z);break}case H.AFTER_BODY:{G2(this,Z);break}case H.IN_FRAMESET:{yX(this,Z);break}case H.AFTER_FRAMESET:{hX(this,Z);break}case H.AFTER_AFTER_BODY:{o1(this,Z);break}default:}}onEof(Z){switch(this.insertionMode){case H.INITIAL:{K1(this,Z);break}case H.BEFORE_HTML:{W1(this,Z);break}case H.BEFORE_HEAD:{V1(this,Z);break}case H.IN_HEAD:{j1(this,Z);break}case H.IN_HEAD_NO_SCRIPT:{z1(this,Z);break}case H.AFTER_HEAD:{H1(this,Z);break}case H.IN_BODY:case H.IN_TABLE:case H.IN_CAPTION:case H.IN_COLUMN_GROUP:case H.IN_TABLE_BODY:case H.IN_ROW:case H.IN_CELL:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:{v2(this,Z);break}case H.TEXT:{KX(this,Z);break}case H.IN_TABLE_TEXT:{Y1(this,Z);break}case H.IN_TEMPLATE:{$2(this,Z);break}case H.AFTER_BODY:case H.IN_FRAMESET:case H.AFTER_FRAMESET:case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{W8(this,Z);break}default:}}onWhitespaceCharacter(Z){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,Z.chars.charCodeAt(0)===W.LINE_FEED){if(Z.chars.length===1)return;Z.chars=Z.chars.substr(1)}}if(this.tokenizer.inForeignNode){this._insertCharacters(Z);return}switch(this.insertionMode){case H.IN_HEAD:case H.IN_HEAD_NO_SCRIPT:case H.AFTER_HEAD:case H.TEXT:case H.IN_COLUMN_GROUP:case H.IN_SELECT:case H.IN_SELECT_IN_TABLE:case H.IN_FRAMESET:case H.AFTER_FRAMESET:{this._insertCharacters(Z);break}case H.IN_BODY:case H.IN_CAPTION:case H.IN_CELL:case H.IN_TEMPLATE:case H.AFTER_BODY:case H.AFTER_AFTER_BODY:case H.AFTER_AFTER_FRAMESET:{x2(this,Z);break}case H.IN_TABLE:case H.IN_TABLE_BODY:case H.IN_ROW:{Q8(this,Z);break}case H.IN_TABLE_TEXT:{y2(this,Z);break}default:}}}function X7(Z,X){let Q=Z.activeFormattingElements.getElementEntryInScopeWithTagName(X.tagName);if(Q){if(!Z.openElements.contains(Q.element))Z.activeFormattingElements.removeEntry(Q),Q=null;else if(!Z.openElements.hasInScope(X.tagID))Q=null}else R2(Z,X);return Q}function Q7(Z,X){let Q=null,K=Z.openElements.stackTop;for(;K>=0;K--){let Y=Z.openElements.items[K];if(Y===X.element)break;if(Z._isSpecialElement(Y,Z.openElements.tagIDs[K]))Q=Y}if(!Q)Z.openElements.shortenToLength(Math.max(K,0)),Z.activeFormattingElements.removeEntry(X);return Q}function J7(Z,X,Q){let K=X,Y=Z.openElements.getCommonAncestor(X);for(let V=0,z=Y;z!==Q;V++,z=Y){Y=Z.openElements.getCommonAncestor(z);let U=Z.activeFormattingElements.getElementEntry(z),F=U&&V>=e3;if(!U||F){if(F)Z.activeFormattingElements.removeEntry(U);Z.openElements.remove(z)}else{if(z=K7(Z,U),K===X)Z.activeFormattingElements.bookmark=U;Z.treeAdapter.detachNode(K),Z.treeAdapter.appendChild(z,K),K=z}}return K}function K7(Z,X){let Q=Z.treeAdapter.getNamespaceURI(X.element),K=Z.treeAdapter.createElement(X.token.tagName,Q,X.token.attrs);return Z.openElements.replace(X.element,K),X.element=K,K}function Y7(Z,X,Q){let K=Z.treeAdapter.getTagName(X),Y=m0(K);if(Z._isElementCausesFosterParenting(Y))Z._fosterParentElement(Q);else{let V=Z.treeAdapter.getNamespaceURI(X);if(Y===J.TEMPLATE&&V===b.HTML)X=Z.treeAdapter.getTemplateContent(X);Z.treeAdapter.appendChild(X,Q)}}function W7(Z,X,Q){let K=Z.treeAdapter.getNamespaceURI(Q.element),{token:Y}=Q,V=Z.treeAdapter.createElement(Y.tagName,K,Y.attrs);Z._adoptNodes(X,V),Z.treeAdapter.appendChild(X,V),Z.activeFormattingElements.insertElementAfterBookmark(V,Y),Z.activeFormattingElements.removeEntry(Q),Z.openElements.remove(Q.element),Z.openElements.insertAfter(X,V,Y.tagID)}function Y8(Z,X){for(let Q=0;Q<t3;Q++){let K=X7(Z,X);if(!K)break;let Y=Q7(Z,K);if(!Y)break;Z.activeFormattingElements.bookmark=K;let V=J7(Z,Y,K.element),z=Z.openElements.getCommonAncestor(K.element);if(Z.treeAdapter.detachNode(V),z)Y7(Z,z,V);W7(Z,Y,K)}}function J8(Z,X){Z._appendCommentNode(X,Z.openElements.currentTmplContentOrNode)}function V7(Z,X){Z._appendCommentNode(X,Z.openElements.items[0])}function j7(Z,X){Z._appendCommentNode(X,Z.document)}function W8(Z,X){if(Z.stopped=!0,X.location){let Q=Z.fragmentContext?0:2;for(let K=Z.openElements.stackTop;K>=Q;K--)Z._setEndLocation(Z.openElements.items[K],X);if(!Z.fragmentContext&&Z.openElements.stackTop>=0){let K=Z.openElements.items[0],Y=Z.treeAdapter.getNodeSourceCodeLocation(K);if(Y&&!Y.endTag){if(Z._setEndLocation(K,X),Z.openElements.stackTop>=1){let V=Z.openElements.items[1],z=Z.treeAdapter.getNodeSourceCodeLocation(V);if(z&&!z.endTag)Z._setEndLocation(V,X)}}}}}function z7(Z,X){Z._setDocumentType(X);let Q=X.forceQuirks?e.QUIRKS:j2(X);if(!V2(X))Z._err(X,w.nonConformingDoctype);Z.treeAdapter.setDocumentMode(Z.document,Q),Z.insertionMode=H.BEFORE_HTML}function K1(Z,X){Z._err(X,w.missingDoctype,!0),Z.treeAdapter.setDocumentMode(Z.document,e.QUIRKS),Z.insertionMode=H.BEFORE_HTML,Z._processToken(X)}function H7(Z,X){if(X.tagID===J.HTML)Z._insertElement(X,b.HTML),Z.insertionMode=H.BEFORE_HEAD;else W1(Z,X)}function U7(Z,X){let Q=X.tagID;if(Q===J.HTML||Q===J.HEAD||Q===J.BODY||Q===J.BR)W1(Z,X)}function W1(Z,X){Z._insertFakeRootElement(),Z.insertionMode=H.BEFORE_HEAD,Z._processToken(X)}function q7(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.HEAD:{Z._insertElement(X,b.HTML),Z.headElement=Z.openElements.current,Z.insertionMode=H.IN_HEAD;break}default:V1(Z,X)}}function B7(Z,X){let Q=X.tagID;if(Q===J.HEAD||Q===J.BODY||Q===J.HTML||Q===J.BR)V1(Z,X);else Z._err(X,w.endTagWithoutMatchingOpenElement)}function V1(Z,X){Z._insertFakeElement(q.HEAD,J.HEAD),Z.headElement=Z.openElements.current,Z.insertionMode=H.IN_HEAD,Z._processToken(X)}function H0(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:{Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.TITLE:{Z._switchToTextParsing(X,o.RCDATA);break}case J.NOSCRIPT:{if(Z.options.scriptingEnabled)Z._switchToTextParsing(X,o.RAWTEXT);else Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_HEAD_NO_SCRIPT;break}case J.NOFRAMES:case J.STYLE:{Z._switchToTextParsing(X,o.RAWTEXT);break}case J.SCRIPT:{Z._switchToTextParsing(X,o.SCRIPT_DATA);break}case J.TEMPLATE:{Z._insertTemplate(X),Z.activeFormattingElements.insertMarker(),Z.framesetOk=!1,Z.insertionMode=H.IN_TEMPLATE,Z.tmplInsertionModeStack.unshift(H.IN_TEMPLATE);break}case J.HEAD:{Z._err(X,w.misplacedStartTagForHeadElement);break}default:j1(Z,X)}}function F7(Z,X){switch(X.tagID){case J.HEAD:{Z.openElements.pop(),Z.insertionMode=H.AFTER_HEAD;break}case J.BODY:case J.BR:case J.HTML:{j1(Z,X);break}case J.TEMPLATE:{_0(Z,X);break}default:Z._err(X,w.endTagWithoutMatchingOpenElement)}}function _0(Z,X){if(Z.openElements.tmplCount>0){if(Z.openElements.generateImpliedEndTagsThoroughly(),Z.openElements.currentTagId!==J.TEMPLATE)Z._err(X,w.closingOfElementWithOpenChildElements);Z.openElements.popUntilTagNamePopped(J.TEMPLATE),Z.activeFormattingElements.clearToLastMarker(),Z.tmplInsertionModeStack.shift(),Z._resetInsertionMode()}else Z._err(X,w.endTagWithoutMatchingOpenElement)}function j1(Z,X){Z.openElements.pop(),Z.insertionMode=H.AFTER_HEAD,Z._processToken(X)}function w7(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.BASEFONT:case J.BGSOUND:case J.HEAD:case J.LINK:case J.META:case J.NOFRAMES:case J.STYLE:{H0(Z,X);break}case J.NOSCRIPT:{Z._err(X,w.nestedNoscriptInHead);break}default:z1(Z,X)}}function L7(Z,X){switch(X.tagID){case J.NOSCRIPT:{Z.openElements.pop(),Z.insertionMode=H.IN_HEAD;break}case J.BR:{z1(Z,X);break}default:Z._err(X,w.endTagWithoutMatchingOpenElement)}}function z1(Z,X){let Q=X.type===m.EOF?w.openElementsLeftAfterEof:w.disallowedContentInNoscriptInHead;Z._err(X,Q),Z.openElements.pop(),Z.insertionMode=H.IN_HEAD,Z._processToken(X)}function P7(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.BODY:{Z._insertElement(X,b.HTML),Z.framesetOk=!1,Z.insertionMode=H.IN_BODY;break}case J.FRAMESET:{Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_FRAMESET;break}case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{Z._err(X,w.abandonedHeadElementChild),Z.openElements.push(Z.headElement,J.HEAD),H0(Z,X),Z.openElements.remove(Z.headElement);break}case J.HEAD:{Z._err(X,w.misplacedStartTagForHeadElement);break}default:H1(Z,X)}}function x7(Z,X){switch(X.tagID){case J.BODY:case J.HTML:case J.BR:{H1(Z,X);break}case J.TEMPLATE:{_0(Z,X);break}default:Z._err(X,w.endTagWithoutMatchingOpenElement)}}function H1(Z,X){Z._insertFakeElement(q.BODY,J.BODY),Z.insertionMode=H.IN_BODY,e1(Z,X)}function e1(Z,X){switch(X.type){case m.CHARACTER:{b2(Z,X);break}case m.WHITESPACE_CHARACTER:{x2(Z,X);break}case m.COMMENT:{J8(Z,X);break}case m.START_TAG:{n(Z,X);break}case m.END_TAG:{Z4(Z,X);break}case m.EOF:{v2(Z,X);break}default:}}function x2(Z,X){Z._reconstructActiveFormattingElements(),Z._insertCharacters(X)}function b2(Z,X){Z._reconstructActiveFormattingElements(),Z._insertCharacters(X),Z.framesetOk=!1}function b7(Z,X){if(Z.openElements.tmplCount===0)Z.treeAdapter.adoptAttributes(Z.openElements.items[0],X.attrs)}function O7(Z,X){let Q=Z.openElements.tryPeekProperlyNestedBodyElement();if(Q&&Z.openElements.tmplCount===0)Z.framesetOk=!1,Z.treeAdapter.adoptAttributes(Q,X.attrs)}function C7(Z,X){let Q=Z.openElements.tryPeekProperlyNestedBodyElement();if(Z.framesetOk&&Q)Z.treeAdapter.detachNode(Q),Z.openElements.popAllUpToHtmlElement(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_FRAMESET}function R7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML)}function v7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();if(Z.openElements.currentTagId!==void 0&&Q1.has(Z.openElements.currentTagId))Z.openElements.pop();Z._insertElement(X,b.HTML)}function y7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML),Z.skipNextNewLine=!0,Z.framesetOk=!1}function f7(Z,X){let Q=Z.openElements.tmplCount>0;if(!Z.formElement||Q){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();if(Z._insertElement(X,b.HTML),!Q)Z.formElement=Z.openElements.current}}function h7(Z,X){Z.framesetOk=!1;let Q=X.tagID;for(let K=Z.openElements.stackTop;K>=0;K--){let Y=Z.openElements.tagIDs[K];if(Q===J.LI&&Y===J.LI||(Q===J.DD||Q===J.DT)&&(Y===J.DD||Y===J.DT)){Z.openElements.generateImpliedEndTagsWithExclusion(Y),Z.openElements.popUntilTagNamePopped(Y);break}if(Y!==J.ADDRESS&&Y!==J.DIV&&Y!==J.P&&Z._isSpecialElement(Z.openElements.items[K],Y))break}if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML)}function M7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML),Z.tokenizer.state=o.PLAINTEXT}function N7(Z,X){if(Z.openElements.hasInScope(J.BUTTON))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(J.BUTTON);Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.framesetOk=!1}function D7(Z,X){let Q=Z.activeFormattingElements.getElementEntryInScopeWithTagName(q.A);if(Q)Y8(Z,X),Z.openElements.remove(Q.element),Z.activeFormattingElements.removeEntry(Q);Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.activeFormattingElements.pushElement(Z.openElements.current,X)}function $7(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.activeFormattingElements.pushElement(Z.openElements.current,X)}function G7(Z,X){if(Z._reconstructActiveFormattingElements(),Z.openElements.hasInScope(J.NOBR))Y8(Z,X),Z._reconstructActiveFormattingElements();Z._insertElement(X,b.HTML),Z.activeFormattingElements.pushElement(Z.openElements.current,X)}function g7(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.activeFormattingElements.insertMarker(),Z.framesetOk=!1}function E7(Z,X){if(Z.treeAdapter.getDocumentMode(Z.document)!==e.QUIRKS&&Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._insertElement(X,b.HTML),Z.framesetOk=!1,Z.insertionMode=H.IN_TABLE}function O2(Z,X){Z._reconstructActiveFormattingElements(),Z._appendElement(X,b.HTML),Z.framesetOk=!1,X.ackSelfClosing=!0}function C2(Z){let X=a1(Z,x0.TYPE);return X!=null&&X.toLowerCase()===n3}function m7(Z,X){if(Z._reconstructActiveFormattingElements(),Z._appendElement(X,b.HTML),!C2(X))Z.framesetOk=!1;X.ackSelfClosing=!0}function _7(Z,X){Z._appendElement(X,b.HTML),X.ackSelfClosing=!0}function k7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._appendElement(X,b.HTML),Z.framesetOk=!1,X.ackSelfClosing=!0}function S7(Z,X){X.tagName=q.IMG,X.tagID=J.IMG,O2(Z,X)}function I7(Z,X){Z._insertElement(X,b.HTML),Z.skipNextNewLine=!0,Z.tokenizer.state=o.RCDATA,Z.originalInsertionMode=Z.insertionMode,Z.framesetOk=!1,Z.insertionMode=H.TEXT}function T7(Z,X){if(Z.openElements.hasInButtonScope(J.P))Z._closePElement();Z._reconstructActiveFormattingElements(),Z.framesetOk=!1,Z._switchToTextParsing(X,o.RAWTEXT)}function A7(Z,X){Z.framesetOk=!1,Z._switchToTextParsing(X,o.RAWTEXT)}function w2(Z,X){Z._switchToTextParsing(X,o.RAWTEXT)}function u7(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML),Z.framesetOk=!1,Z.insertionMode=Z.insertionMode===H.IN_TABLE||Z.insertionMode===H.IN_CAPTION||Z.insertionMode===H.IN_TABLE_BODY||Z.insertionMode===H.IN_ROW||Z.insertionMode===H.IN_CELL?H.IN_SELECT_IN_TABLE:H.IN_SELECT}function l7(Z,X){if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML)}function c7(Z,X){if(Z.openElements.hasInScope(J.RUBY))Z.openElements.generateImpliedEndTags();Z._insertElement(X,b.HTML)}function d7(Z,X){if(Z.openElements.hasInScope(J.RUBY))Z.openElements.generateImpliedEndTagsWithExclusion(J.RTC);Z._insertElement(X,b.HTML)}function a7(Z,X){if(Z._reconstructActiveFormattingElements(),Z8(X),r1(X),X.selfClosing)Z._appendElement(X,b.MATHML);else Z._insertElement(X,b.MATHML);X.ackSelfClosing=!0}function i7(Z,X){if(Z._reconstructActiveFormattingElements(),X8(X),r1(X),X.selfClosing)Z._appendElement(X,b.SVG);else Z._insertElement(X,b.SVG);X.ackSelfClosing=!0}function L2(Z,X){Z._reconstructActiveFormattingElements(),Z._insertElement(X,b.HTML)}function n(Z,X){switch(X.tagID){case J.I:case J.S:case J.B:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.SMALL:case J.STRIKE:case J.STRONG:{$7(Z,X);break}case J.A:{D7(Z,X);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{v7(Z,X);break}case J.P:case J.DL:case J.OL:case J.UL:case J.DIV:case J.DIR:case J.NAV:case J.MAIN:case J.MENU:case J.ASIDE:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.DETAILS:case J.ADDRESS:case J.ARTICLE:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{R7(Z,X);break}case J.LI:case J.DD:case J.DT:{h7(Z,X);break}case J.BR:case J.IMG:case J.WBR:case J.AREA:case J.EMBED:case J.KEYGEN:{O2(Z,X);break}case J.HR:{k7(Z,X);break}case J.RB:case J.RTC:{c7(Z,X);break}case J.RT:case J.RP:{d7(Z,X);break}case J.PRE:case J.LISTING:{y7(Z,X);break}case J.XMP:{T7(Z,X);break}case J.SVG:{i7(Z,X);break}case J.HTML:{b7(Z,X);break}case J.BASE:case J.LINK:case J.META:case J.STYLE:case J.TITLE:case J.SCRIPT:case J.BGSOUND:case J.BASEFONT:case J.TEMPLATE:{H0(Z,X);break}case J.BODY:{O7(Z,X);break}case J.FORM:{f7(Z,X);break}case J.NOBR:{G7(Z,X);break}case J.MATH:{a7(Z,X);break}case J.TABLE:{E7(Z,X);break}case J.INPUT:{m7(Z,X);break}case J.PARAM:case J.TRACK:case J.SOURCE:{_7(Z,X);break}case J.IMAGE:{S7(Z,X);break}case J.BUTTON:{N7(Z,X);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{g7(Z,X);break}case J.IFRAME:{A7(Z,X);break}case J.SELECT:{u7(Z,X);break}case J.OPTION:case J.OPTGROUP:{l7(Z,X);break}case J.NOEMBED:case J.NOFRAMES:{w2(Z,X);break}case J.FRAMESET:{C7(Z,X);break}case J.TEXTAREA:{I7(Z,X);break}case J.NOSCRIPT:{if(Z.options.scriptingEnabled)w2(Z,X);else L2(Z,X);break}case J.PLAINTEXT:{M7(Z,X);break}case J.COL:case J.TH:case J.TD:case J.TR:case J.HEAD:case J.FRAME:case J.TBODY:case J.TFOOT:case J.THEAD:case J.CAPTION:case J.COLGROUP:break;default:L2(Z,X)}}function p7(Z,X){if(Z.openElements.hasInScope(J.BODY)){if(Z.insertionMode=H.AFTER_BODY,Z.options.sourceCodeLocationInfo){let Q=Z.openElements.tryPeekProperlyNestedBodyElement();if(Q)Z._setEndLocation(Q,X)}}}function s7(Z,X){if(Z.openElements.hasInScope(J.BODY))Z.insertionMode=H.AFTER_BODY,G2(Z,X)}function r7(Z,X){let Q=X.tagID;if(Z.openElements.hasInScope(Q))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(Q)}function o7(Z){let X=Z.openElements.tmplCount>0,{formElement:Q}=Z;if(!X)Z.formElement=null;if((Q||X)&&Z.openElements.hasInScope(J.FORM)){if(Z.openElements.generateImpliedEndTags(),X)Z.openElements.popUntilTagNamePopped(J.FORM);else if(Q)Z.openElements.remove(Q)}}function n7(Z){if(!Z.openElements.hasInButtonScope(J.P))Z._insertFakeElement(q.P,J.P);Z._closePElement()}function t7(Z){if(Z.openElements.hasInListItemScope(J.LI))Z.openElements.generateImpliedEndTagsWithExclusion(J.LI),Z.openElements.popUntilTagNamePopped(J.LI)}function e7(Z,X){let Q=X.tagID;if(Z.openElements.hasInScope(Q))Z.openElements.generateImpliedEndTagsWithExclusion(Q),Z.openElements.popUntilTagNamePopped(Q)}function ZX(Z){if(Z.openElements.hasNumberedHeaderInScope())Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilNumberedHeaderPopped()}function XX(Z,X){let Q=X.tagID;if(Z.openElements.hasInScope(Q))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(Q),Z.activeFormattingElements.clearToLastMarker()}function QX(Z){Z._reconstructActiveFormattingElements(),Z._insertFakeElement(q.BR,J.BR),Z.openElements.pop(),Z.framesetOk=!1}function R2(Z,X){let{tagName:Q,tagID:K}=X;for(let Y=Z.openElements.stackTop;Y>0;Y--){let V=Z.openElements.items[Y],z=Z.openElements.tagIDs[Y];if(K===z&&(K!==J.UNKNOWN||Z.treeAdapter.getTagName(V)===Q)){if(Z.openElements.generateImpliedEndTagsWithExclusion(K),Z.openElements.stackTop>=Y)Z.openElements.shortenToLength(Y);break}if(Z._isSpecialElement(V,z))break}}function Z4(Z,X){switch(X.tagID){case J.A:case J.B:case J.I:case J.S:case J.U:case J.EM:case J.TT:case J.BIG:case J.CODE:case J.FONT:case J.NOBR:case J.SMALL:case J.STRIKE:case J.STRONG:{Y8(Z,X);break}case J.P:{n7(Z);break}case J.DL:case J.UL:case J.OL:case J.DIR:case J.DIV:case J.NAV:case J.PRE:case J.MAIN:case J.MENU:case J.ASIDE:case J.BUTTON:case J.CENTER:case J.FIGURE:case J.FOOTER:case J.HEADER:case J.HGROUP:case J.DIALOG:case J.ADDRESS:case J.ARTICLE:case J.DETAILS:case J.SEARCH:case J.SECTION:case J.SUMMARY:case J.LISTING:case J.FIELDSET:case J.BLOCKQUOTE:case J.FIGCAPTION:{r7(Z,X);break}case J.LI:{t7(Z);break}case J.DD:case J.DT:{e7(Z,X);break}case J.H1:case J.H2:case J.H3:case J.H4:case J.H5:case J.H6:{ZX(Z);break}case J.BR:{QX(Z);break}case J.BODY:{p7(Z,X);break}case J.HTML:{s7(Z,X);break}case J.FORM:{o7(Z);break}case J.APPLET:case J.OBJECT:case J.MARQUEE:{XX(Z,X);break}case J.TEMPLATE:{_0(Z,X);break}default:R2(Z,X)}}function v2(Z,X){if(Z.tmplInsertionModeStack.length>0)$2(Z,X);else W8(Z,X)}function JX(Z,X){var Q;if(X.tagID===J.SCRIPT)(Q=Z.scriptHandler)===null||Q===void 0||Q.call(Z,Z.openElements.current);Z.openElements.pop(),Z.insertionMode=Z.originalInsertionMode}function KX(Z,X){Z._err(X,w.eofInElementThatCanContainOnlyText),Z.openElements.pop(),Z.insertionMode=Z.originalInsertionMode,Z.onEof(X)}function Q8(Z,X){if(Z.openElements.currentTagId!==void 0&&P2.has(Z.openElements.currentTagId))switch(Z.pendingCharacterTokens.length=0,Z.hasNonWhitespacePendingCharacterToken=!1,Z.originalInsertionMode=Z.insertionMode,Z.insertionMode=H.IN_TABLE_TEXT,X.type){case m.CHARACTER:{f2(Z,X);break}case m.WHITESPACE_CHARACTER:{y2(Z,X);break}}else B1(Z,X)}function YX(Z,X){Z.openElements.clearBackToTableContext(),Z.activeFormattingElements.insertMarker(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_CAPTION}function WX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_COLUMN_GROUP}function VX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertFakeElement(q.COLGROUP,J.COLGROUP),Z.insertionMode=H.IN_COLUMN_GROUP,V8(Z,X)}function jX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_TABLE_BODY}function zX(Z,X){Z.openElements.clearBackToTableContext(),Z._insertFakeElement(q.TBODY,J.TBODY),Z.insertionMode=H.IN_TABLE_BODY,X4(Z,X)}function HX(Z,X){if(Z.openElements.hasInTableScope(J.TABLE))Z.openElements.popUntilTagNamePopped(J.TABLE),Z._resetInsertionMode(),Z._processStartTag(X)}function UX(Z,X){if(C2(X))Z._appendElement(X,b.HTML);else B1(Z,X);X.ackSelfClosing=!0}function qX(Z,X){if(!Z.formElement&&Z.openElements.tmplCount===0)Z._insertElement(X,b.HTML),Z.formElement=Z.openElements.current,Z.openElements.pop()}function d0(Z,X){switch(X.tagID){case J.TD:case J.TH:case J.TR:{zX(Z,X);break}case J.STYLE:case J.SCRIPT:case J.TEMPLATE:{H0(Z,X);break}case J.COL:{VX(Z,X);break}case J.FORM:{qX(Z,X);break}case J.TABLE:{HX(Z,X);break}case J.TBODY:case J.TFOOT:case J.THEAD:{jX(Z,X);break}case J.INPUT:{UX(Z,X);break}case J.CAPTION:{YX(Z,X);break}case J.COLGROUP:{WX(Z,X);break}default:B1(Z,X)}}function U1(Z,X){switch(X.tagID){case J.TABLE:{if(Z.openElements.hasInTableScope(J.TABLE))Z.openElements.popUntilTagNamePopped(J.TABLE),Z._resetInsertionMode();break}case J.TEMPLATE:{_0(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:B1(Z,X)}}function B1(Z,X){let Q=Z.fosterParentingEnabled;Z.fosterParentingEnabled=!0,e1(Z,X),Z.fosterParentingEnabled=Q}function y2(Z,X){Z.pendingCharacterTokens.push(X)}function f2(Z,X){Z.pendingCharacterTokens.push(X),Z.hasNonWhitespacePendingCharacterToken=!0}function Y1(Z,X){let Q=0;if(Z.hasNonWhitespacePendingCharacterToken)for(;Q<Z.pendingCharacterTokens.length;Q++)B1(Z,Z.pendingCharacterTokens[Q]);else for(;Q<Z.pendingCharacterTokens.length;Q++)Z._insertCharacters(Z.pendingCharacterTokens[Q]);Z.insertionMode=Z.originalInsertionMode,Z._processToken(X)}var h2=new Set([J.CAPTION,J.COL,J.COLGROUP,J.TBODY,J.TD,J.TFOOT,J.TH,J.THEAD,J.TR]);function BX(Z,X){let Q=X.tagID;if(h2.has(Q)){if(Z.openElements.hasInTableScope(J.CAPTION))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(J.CAPTION),Z.activeFormattingElements.clearToLastMarker(),Z.insertionMode=H.IN_TABLE,d0(Z,X)}else n(Z,X)}function FX(Z,X){let Q=X.tagID;switch(Q){case J.CAPTION:case J.TABLE:{if(Z.openElements.hasInTableScope(J.CAPTION)){if(Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(J.CAPTION),Z.activeFormattingElements.clearToLastMarker(),Z.insertionMode=H.IN_TABLE,Q===J.TABLE)U1(Z,X)}break}case J.BODY:case J.COL:case J.COLGROUP:case J.HTML:case J.TBODY:case J.TD:case J.TFOOT:case J.TH:case J.THEAD:case J.TR:break;default:Z4(Z,X)}}function V8(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.COL:{Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.TEMPLATE:{H0(Z,X);break}default:n1(Z,X)}}function wX(Z,X){switch(X.tagID){case J.COLGROUP:{if(Z.openElements.currentTagId===J.COLGROUP)Z.openElements.pop(),Z.insertionMode=H.IN_TABLE;break}case J.TEMPLATE:{_0(Z,X);break}case J.COL:break;default:n1(Z,X)}}function n1(Z,X){if(Z.openElements.currentTagId===J.COLGROUP)Z.openElements.pop(),Z.insertionMode=H.IN_TABLE,Z._processToken(X)}function X4(Z,X){switch(X.tagID){case J.TR:{Z.openElements.clearBackToTableBodyContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_ROW;break}case J.TH:case J.TD:{Z.openElements.clearBackToTableBodyContext(),Z._insertFakeElement(q.TR,J.TR),Z.insertionMode=H.IN_ROW,Q4(Z,X);break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{if(Z.openElements.hasTableBodyContextInTableScope())Z.openElements.clearBackToTableBodyContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE,d0(Z,X);break}default:d0(Z,X)}}function K8(Z,X){let Q=X.tagID;switch(X.tagID){case J.TBODY:case J.TFOOT:case J.THEAD:{if(Z.openElements.hasInTableScope(Q))Z.openElements.clearBackToTableBodyContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE;break}case J.TABLE:{if(Z.openElements.hasTableBodyContextInTableScope())Z.openElements.clearBackToTableBodyContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE,U1(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:case J.TR:break;default:U1(Z,X)}}function Q4(Z,X){switch(X.tagID){case J.TH:case J.TD:{Z.openElements.clearBackToTableRowContext(),Z._insertElement(X,b.HTML),Z.insertionMode=H.IN_CELL,Z.activeFormattingElements.insertMarker();break}case J.CAPTION:case J.COL:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY,X4(Z,X);break}default:d0(Z,X)}}function M2(Z,X){switch(X.tagID){case J.TR:{if(Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY;break}case J.TABLE:{if(Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY,K8(Z,X);break}case J.TBODY:case J.TFOOT:case J.THEAD:{if(Z.openElements.hasInTableScope(X.tagID)||Z.openElements.hasInTableScope(J.TR))Z.openElements.clearBackToTableRowContext(),Z.openElements.pop(),Z.insertionMode=H.IN_TABLE_BODY,K8(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:case J.TD:case J.TH:break;default:U1(Z,X)}}function LX(Z,X){let Q=X.tagID;if(h2.has(Q)){if(Z.openElements.hasInTableScope(J.TD)||Z.openElements.hasInTableScope(J.TH))Z._closeTableCell(),Q4(Z,X)}else n(Z,X)}function PX(Z,X){let Q=X.tagID;switch(Q){case J.TD:case J.TH:{if(Z.openElements.hasInTableScope(Q))Z.openElements.generateImpliedEndTags(),Z.openElements.popUntilTagNamePopped(Q),Z.activeFormattingElements.clearToLastMarker(),Z.insertionMode=H.IN_ROW;break}case J.TABLE:case J.TBODY:case J.TFOOT:case J.THEAD:case J.TR:{if(Z.openElements.hasInTableScope(Q))Z._closeTableCell(),M2(Z,X);break}case J.BODY:case J.CAPTION:case J.COL:case J.COLGROUP:case J.HTML:break;default:Z4(Z,X)}}function N2(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.OPTION:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();Z._insertElement(X,b.HTML);break}case J.OPTGROUP:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();if(Z.openElements.currentTagId===J.OPTGROUP)Z.openElements.pop();Z._insertElement(X,b.HTML);break}case J.HR:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();if(Z.openElements.currentTagId===J.OPTGROUP)Z.openElements.pop();Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.INPUT:case J.KEYGEN:case J.TEXTAREA:case J.SELECT:{if(Z.openElements.hasInSelectScope(J.SELECT)){if(Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode(),X.tagID!==J.SELECT)Z._processStartTag(X)}break}case J.SCRIPT:case J.TEMPLATE:{H0(Z,X);break}default:}}function D2(Z,X){switch(X.tagID){case J.OPTGROUP:{if(Z.openElements.stackTop>0&&Z.openElements.currentTagId===J.OPTION&&Z.openElements.tagIDs[Z.openElements.stackTop-1]===J.OPTGROUP)Z.openElements.pop();if(Z.openElements.currentTagId===J.OPTGROUP)Z.openElements.pop();break}case J.OPTION:{if(Z.openElements.currentTagId===J.OPTION)Z.openElements.pop();break}case J.SELECT:{if(Z.openElements.hasInSelectScope(J.SELECT))Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode();break}case J.TEMPLATE:{_0(Z,X);break}default:}}function xX(Z,X){let Q=X.tagID;if(Q===J.CAPTION||Q===J.TABLE||Q===J.TBODY||Q===J.TFOOT||Q===J.THEAD||Q===J.TR||Q===J.TD||Q===J.TH)Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode(),Z._processStartTag(X);else N2(Z,X)}function bX(Z,X){let Q=X.tagID;if(Q===J.CAPTION||Q===J.TABLE||Q===J.TBODY||Q===J.TFOOT||Q===J.THEAD||Q===J.TR||Q===J.TD||Q===J.TH){if(Z.openElements.hasInTableScope(Q))Z.openElements.popUntilTagNamePopped(J.SELECT),Z._resetInsertionMode(),Z.onEndTag(X)}else D2(Z,X)}function OX(Z,X){switch(X.tagID){case J.BASE:case J.BASEFONT:case J.BGSOUND:case J.LINK:case J.META:case J.NOFRAMES:case J.SCRIPT:case J.STYLE:case J.TEMPLATE:case J.TITLE:{H0(Z,X);break}case J.CAPTION:case J.COLGROUP:case J.TBODY:case J.TFOOT:case J.THEAD:{Z.tmplInsertionModeStack[0]=H.IN_TABLE,Z.insertionMode=H.IN_TABLE,d0(Z,X);break}case J.COL:{Z.tmplInsertionModeStack[0]=H.IN_COLUMN_GROUP,Z.insertionMode=H.IN_COLUMN_GROUP,V8(Z,X);break}case J.TR:{Z.tmplInsertionModeStack[0]=H.IN_TABLE_BODY,Z.insertionMode=H.IN_TABLE_BODY,X4(Z,X);break}case J.TD:case J.TH:{Z.tmplInsertionModeStack[0]=H.IN_ROW,Z.insertionMode=H.IN_ROW,Q4(Z,X);break}default:Z.tmplInsertionModeStack[0]=H.IN_BODY,Z.insertionMode=H.IN_BODY,n(Z,X)}}function CX(Z,X){if(X.tagID===J.TEMPLATE)_0(Z,X)}function $2(Z,X){if(Z.openElements.tmplCount>0)Z.openElements.popUntilTagNamePopped(J.TEMPLATE),Z.activeFormattingElements.clearToLastMarker(),Z.tmplInsertionModeStack.shift(),Z._resetInsertionMode(),Z.onEof(X);else W8(Z,X)}function RX(Z,X){if(X.tagID===J.HTML)n(Z,X);else t1(Z,X)}function G2(Z,X){var Q;if(X.tagID===J.HTML){if(!Z.fragmentContext)Z.insertionMode=H.AFTER_AFTER_BODY;if(Z.options.sourceCodeLocationInfo&&Z.openElements.tagIDs[0]===J.HTML){Z._setEndLocation(Z.openElements.items[0],X);let K=Z.openElements.items[1];if(K&&!((Q=Z.treeAdapter.getNodeSourceCodeLocation(K))===null||Q===void 0?void 0:Q.endTag))Z._setEndLocation(K,X)}}else t1(Z,X)}function t1(Z,X){Z.insertionMode=H.IN_BODY,e1(Z,X)}function vX(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.FRAMESET:{Z._insertElement(X,b.HTML);break}case J.FRAME:{Z._appendElement(X,b.HTML),X.ackSelfClosing=!0;break}case J.NOFRAMES:{H0(Z,X);break}default:}}function yX(Z,X){if(X.tagID===J.FRAMESET&&!Z.openElements.isRootHtmlElementCurrent()){if(Z.openElements.pop(),!Z.fragmentContext&&Z.openElements.currentTagId!==J.FRAMESET)Z.insertionMode=H.AFTER_FRAMESET}}function fX(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.NOFRAMES:{H0(Z,X);break}default:}}function hX(Z,X){if(X.tagID===J.HTML)Z.insertionMode=H.AFTER_AFTER_FRAMESET}function MX(Z,X){if(X.tagID===J.HTML)n(Z,X);else o1(Z,X)}function o1(Z,X){Z.insertionMode=H.IN_BODY,e1(Z,X)}function NX(Z,X){switch(X.tagID){case J.HTML:{n(Z,X);break}case J.NOFRAMES:{H0(Z,X);break}default:}}function DX(Z,X){X.chars=A,Z._insertCharacters(X)}function $X(Z,X){Z._insertCharacters(X),Z.framesetOk=!1}function g2(Z){while(Z.treeAdapter.getNamespaceURI(Z.openElements.current)!==b.HTML&&Z.openElements.currentTagId!==void 0&&!Z._isIntegrationPoint(Z.openElements.currentTagId,Z.openElements.current))Z.openElements.pop()}function GX(Z,X){if(H2(X))g2(Z),Z._startTagOutsideForeignContent(X);else{let Q=Z._getAdjustedCurrentElement(),K=Z.treeAdapter.getNamespaceURI(Q);if(K===b.MATHML)Z8(X);else if(K===b.SVG)U2(X),X8(X);if(r1(X),X.selfClosing)Z._appendElement(X,K);else Z._insertElement(X,K);X.ackSelfClosing=!0}}function gX(Z,X){if(X.tagID===J.P||X.tagID===J.BR){g2(Z),Z._endTagOutsideForeignContent(X);return}for(let Q=Z.openElements.stackTop;Q>0;Q--){let K=Z.openElements.items[Q];if(Z.treeAdapter.getNamespaceURI(K)===b.HTML){Z._endTagOutsideForeignContent(X);break}let Y=Z.treeAdapter.getTagName(K);if(Y.toLowerCase()===X.tagName){X.tagName=Y,Z.openElements.shortenToLength(Q);break}}}var qY=typeof String.prototype.codePointAt==="function"?(Z,X)=>Z.codePointAt(X):(Z,X)=>(Z.charCodeAt(X)&64512)===55296?(Z.charCodeAt(X)-55296)*1024+Z.charCodeAt(X+1)-56320+65536:Z.charCodeAt(X);function E2(Z,X){return function(K){let Y,V=0,z="";while(Y=Z.exec(K)){if(V!==Y.index)z+=K.substring(V,Y.index);z+=X.get(Y[0].charCodeAt(0)),V=Y.index+1}return z+K.substring(V)}}var m2=E2(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]])),_2=E2(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]));var EX=new Set([q.AREA,q.BASE,q.BASEFONT,q.BGSOUND,q.BR,q.COL,q.EMBED,q.FRAME,q.HR,q.IMG,q.INPUT,q.KEYGEN,q.LINK,q.META,q.PARAM,q.SOURCE,q.TRACK,q.WBR]);function k2(Z,X){return X.treeAdapter.isElementNode(Z)&&X.treeAdapter.getNamespaceURI(Z)===b.HTML&&EX.has(X.treeAdapter.getTagName(Z))}var mX={treeAdapter:W0,scriptingEnabled:!0};function k0(Z,X){let Q={...mX,...X};if(k2(Z,Q))return"";return S2(Z,Q)}function S2(Z,X){let Q="",K=X.treeAdapter.isElementNode(Z)&&X.treeAdapter.getTagName(Z)===q.TEMPLATE&&X.treeAdapter.getNamespaceURI(Z)===b.HTML?X.treeAdapter.getTemplateContent(Z):Z,Y=X.treeAdapter.getChildNodes(K);if(Y)for(let V of Y)Q+=_X(V,X);return Q}function _X(Z,X){if(X.treeAdapter.isElementNode(Z))return kX(Z,X);if(X.treeAdapter.isTextNode(Z))return IX(Z,X);if(X.treeAdapter.isCommentNode(Z))return TX(Z,X);if(X.treeAdapter.isDocumentTypeNode(Z))return AX(Z,X);return""}function kX(Z,X){let Q=X.treeAdapter.getTagName(Z);return`<${Q}${SX(Z,X)}>${k2(Z,X)?"":`${S2(Z,X)}</${Q}>`}`}function SX(Z,{treeAdapter:X}){let Q="";for(let K of X.getAttrList(Z)){if(Q+=" ",K.namespace)switch(K.namespace){case b.XML:{Q+=`xml:${K.name}`;break}case b.XMLNS:{if(K.name!=="xmlns")Q+="xmlns:";Q+=K.name;break}case b.XLINK:{Q+=`xlink:${K.name}`;break}default:Q+=`${K.prefix}:${K.name}`}else Q+=K.name;Q+=`="${m2(K.value)}"`}return Q}function IX(Z,X){let{treeAdapter:Q}=X,K=Q.getTextNodeContent(Z),Y=Q.getParentNode(Z),V=Y&&Q.isElementNode(Y)&&Q.getTagName(Y);return V&&Q.getNamespaceURI(Y)===b.HTML&&s9(V,X.scriptingEnabled)?K:_2(K)}function TX(Z,{treeAdapter:X}){return`<!--${X.getCommentNodeContent(Z)}-->`}function AX(Z,{treeAdapter:X}){return`<!DOCTYPE ${X.getDocumentTypeNodeName(Z)}>`}function a0(Z,X){return q1.parse(Z,X)}function I2(Z,X,Q){if(typeof Z==="string")Q=X,X=Z,Z=null;let K=q1.getFragmentParser(Z,Q);return K.tokenizer.write(X,!0),K.getFragment()}import{z as k}from"zod";import*as i0 from"css-tree";var F1=20971520,uX=new Set(["script","form","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),lX=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),j8=/^data:(?:image\/(?:png|jpe?g|gif|webp|avif|bmp|x-icon)|font\/[a-z0-9.+-]+|application\/(?:font-[a-z0-9.+-]+|vnd\.ms-fontobject|x-font-[a-z0-9.+-]+));/i;function cX(Z){return"tagName"in Z}function T2(Z){try{let X=i0.parse(Z,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return i0.walk(X,{enter(Q,K,Y){if(Q.type==="Atrule"&&Q.name.toLowerCase()==="import"){Y.remove(K);return}if(Q.type==="Declaration"){let V=Q.property.toLowerCase();if(V==="behavior"||V==="-moz-binding")Y.remove(K);return}if(Q.type==="Url"&&!j8.test(Q.value)){Q.value="data:,";return}if(Q.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!j8.test(Q.value))Q.value="data:,"}}),i0.generate(X)}catch{return""}}function dX(Z){return T2(`x{${Z}}`).replace(/^x\{/,"").replace(/\}$/,"")}function aX(Z){if(Z.attrs=Z.attrs.flatMap((X)=>{let Q=X.name.toLowerCase();if(Q.startsWith("on")||Q==="srcdoc"||Q==="nonce")return[];if(Q==="style"){let K=dX(X.value);return K?[{...X,value:K}]:[]}if(lX.has(Q)){if(Q==="src"&&j8.test(X.value))return[X];if(Q==="href"&&X.value.startsWith("#"))return[X];return[]}if(Q==="target"||Q==="download"||Q==="http-equiv")return[];return[X]}),Z.tagName==="style"&&Z.childNodes){for(let X of Z.childNodes)if("value"in X&&typeof X.value==="string")X.value=T2(X.value)}}function A2(Z){let X=[];for(let Q of Z.childNodes){if(cX(Q)){let K=Q.tagName.toLowerCase();if(uX.has(K))continue;if(K==="meta"&&Q.attrs.some((Y)=>Y.name.toLowerCase()==="http-equiv"&&Y.value.toLowerCase()!=="content-type"))continue;if(K==="link")continue;aX(Q),A2(Q)}X.push(Q)}Z.childNodes=X}function u2(Z){if(Buffer.byteLength(Z,"utf8")>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let X=a0(Z);A2(X);let Q=k0(X);if(Buffer.byteLength(Q,"utf8")>F1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return Q}import{lookup as iX}from"node:dns/promises";import pX from"node:http";import sX from"node:https";import{isIP as c2}from"node:net";var l2=5,rX=15000,d2=8388608,J4=12582912;function oX(Z){let X=Z.split(".").map(Number);return X.length===4&&X.every((Q)=>Number.isInteger(Q)&&Q>=0&&Q<=255)?X:null}function U0(Z,X,Q=0,K=255){return Z[0]===X&&(Z[1]??0)>=Q&&(Z[1]??0)<=K}function a2(Z){let X=c2(Z);if(X===4){let Y=oX(Z);if(!Y)return!1;if(U0(Y,0))return!1;if(U0(Y,10))return!1;if(U0(Y,100,64,127))return!1;if(U0(Y,127))return!1;if(U0(Y,169,254,254))return!1;if(U0(Y,172,16,31))return!1;if(U0(Y,192,0,0))return!1;if(U0(Y,192,168,168))return!1;if(U0(Y,198,18,19))return!1;if(U0(Y,198,51,51)&&Y[2]===100)return!1;if(U0(Y,203,0,0)&&Y[2]===113)return!1;if((Y[0]??0)>=224)return!1;return!0}if(X!==6)return!1;let Q=Z.toLowerCase().split("%")[0]??"";if(Q==="::"||Q==="::1")return!1;if(Q.startsWith("::"))return!1;if(Q.startsWith("fc")||Q.startsWith("fd"))return!1;if(/^fe[89a-f]/.test(Q))return!1;if(Q.startsWith("ff"))return!1;let K=Number.parseInt(Q.split(":")[0]??"",16);if(!Number.isFinite(K)||K<8192||K>16383)return!1;if(Q.startsWith("2002:"))return!1;if(Q.startsWith("3fff:"))return!1;if(Q==="2001::"||Q.startsWith("2001:0:"))return!1;if(Q.startsWith("2001:db8:"))return!1;if(Q.startsWith("2001:2:"))return!1;if(Q.startsWith("2001:10:"))return!1;if(Q.startsWith("2001:20:"))return!1;return!0}function w0(Z){let X;try{X=new URL(Z)}catch{throw Error("Browser URL is invalid")}if(X.protocol!=="http:"&&X.protocol!=="https:")throw Error("Only HTTP(S) browser URLs are allowed");if(X.username||X.password)throw Error("Browser URLs containing credentials are not allowed");let Q=X.hostname.replace(/^\[|\]$/g,"");if(c2(Q)&&!a2(Q))throw Error("Browser destination is not on a public network");return X.hash="",X}async function nX(Z){return(await iX(Z,{all:!0,verbatim:!0})).flatMap((Q)=>Q.family===4||Q.family===6?[{address:Q.address,family:Q.family}]:[])}function tX(Z){let X={};for(let[Q,K]of Object.entries(Z))if(typeof K==="string")X[Q.toLowerCase()]=K;else if(Array.isArray(K))X[Q.toLowerCase()]=K.join(", ");return X}function eX(Z){return(X,Q,K)=>{if(Q.all){K(null,[Z]);return}K(null,Z.address,Z.family)}}function Z5(Z){return new Promise((X,Q)=>{let K=Z.url.protocol==="https:"?sX:pX,Y=!1,V=(U)=>{if(Y)return;Y=!0,Q(U)},z=K.request(Z.url,{method:Z.method,headers:{accept:"text/html,application/xhtml+xml,text/css,image/*,font/*,*/*;q=0.7","accept-encoding":"identity","user-agent":Z.userAgent??"IdeaWave-Browser-Proxy/1.0"},servername:Z.url.hostname,lookup:eX(Z.address)},(U)=>{let F=tX(U.headers),B=Number(F["content-length"]??"0");if(Number.isFinite(B)&&B>Z.maxBytes){U.destroy(),V(Error("Browser proxy response exceeds the size limit"));return}if((F["content-type"]??"").toLowerCase().startsWith("text/event-stream")){U.destroy(),V(Error("Server-sent events are not supported"));return}if(!Z.allowAttachment&&/attachment/i.test(F["content-disposition"]??"")){U.destroy(),V(Error("Downloads are not supported"));return}if(U.statusCode===101||F.upgrade){U.destroy(),V(Error("Protocol upgrades are not supported"));return}let L=[],f=0;U.on("data",(x)=>{let C=Buffer.isBuffer(x)?x:Buffer.from(x);if(f+=C.byteLength,f>Z.maxBytes){U.destroy(Error("Browser proxy response exceeds the size limit"));return}L.push(C)}),U.once("error",V),U.once("end",()=>{if(Y)return;Y=!0,X({url:Z.url.href,status:U.statusCode??502,headers:F,body:Buffer.concat(L)})})});z.setTimeout(Z.timeoutMs,()=>{z.destroy(Error("Browser proxy request timed out"))}),z.once("error",V),z.end()})}async function i2(Z){let X=w0(Z.url),Q=Z.resolver??nX,K=Z.request??Z5;for(let Y=0;Y<=l2;Y+=1){let V=await Q(X.hostname);if(V.length===0)throw Error("Browser destination did not resolve");if(V.some((F)=>!a2(F.address)))throw Error("Browser destination resolves to a non-public network");let z=await K({url:X,method:Z.method??"GET",address:V[0],maxBytes:Z.maxBytes??J4,timeoutMs:Z.timeoutMs??rX,userAgent:Z.userAgent,allowAttachment:Z.allowAttachment});if(![301,302,303,307,308].includes(z.status))return z;let U=z.headers.location;if(!U)return z;if(Y===l2)throw Error("Browser destination exceeded the redirect limit");X=w0(new URL(U,X).href)}throw Error("Browser request failed")}import*as s0 from"css-tree";function h0(Z){return JSON.stringify(Z).replace(/</g,"\\u003c")}function X5(Z){try{let X=new URL(Z);if(X.protocol!=="https:"||X.hostname!=="www.google.com"||X.username||X.password||X.pathname!=="/"&&X.pathname!=="/webhp")return null;return"https://www.google.com/search"}catch{return null}}function p2(Z){let X=h0(X5(Z.sourceUrl));return`(() => {
25
25
  "use strict";
26
- let TOKEN = ${k0(Z.token)};
27
- const SOURCE_URL = ${k0(Z.sourceUrl)};
28
- const REVISION = ${k0(Z.revision)};
29
- const NAVIGATE_PREFIX = ${k0(Z.navigateUrlPrefix??null)};
30
- const RESOURCE_PREFIX = ${k0(Z.resourceUrlPrefix??null)};
31
- const PARENT_ORIGIN = ${k0(Z.parentOrigin??null)};
32
- const FROZEN = ${k0(Z.frozen===!0)};
26
+ let TOKEN = ${h0(Z.token)};
27
+ const SOURCE_URL = ${h0(Z.sourceUrl)};
28
+ const REVISION = ${h0(Z.revision)};
29
+ const NAVIGATE_PREFIX = ${h0(Z.navigateUrlPrefix??null)};
30
+ const RESOURCE_PREFIX = ${h0(Z.resourceUrlPrefix??null)};
31
+ const PARENT_ORIGIN = ${h0(Z.parentOrigin??null)};
32
+ const FROZEN = ${h0(Z.frozen===!0)};
33
+ const GOOGLE_HOMEPAGE_SEARCH_URL = ${X};
33
34
  const BRIDGE_SCRIPT = document.currentScript;
34
35
  const parentPostMessage = window.parent.postMessage.bind(window.parent);
35
36
  const stopImmediatePropagation = Event.prototype.stopImmediatePropagation;
@@ -75,6 +76,15 @@ Runtime run folder:
75
76
  };
76
77
  }
77
78
 
79
+ const googleSearchProxyUrl = (value) => {
80
+ if (FROZEN || !NAVIGATE_PREFIX || !GOOGLE_HOMEPAGE_SEARCH_URL) return null;
81
+ const query = String(value).trim();
82
+ if (!query) return null;
83
+ const target = new URL(GOOGLE_HOMEPAGE_SEARCH_URL);
84
+ target.searchParams.set("q", query);
85
+ return NAVIGATE_PREFIX + encodeURIComponent(target.href);
86
+ };
87
+
78
88
  const cssEscape = (value) => {
79
89
  if (window.CSS && typeof window.CSS.escape === "function") return window.CSS.escape(value);
80
90
  return String(value).replace(/[^a-zA-Z0-9_-]/g, (match) => "\\\\" + match);
@@ -361,6 +371,27 @@ Runtime run folder:
361
371
  window.addEventListener("hashchange", state);
362
372
  window.addEventListener("popstate", state);
363
373
  window.addEventListener("beforeunload", () => send("navigating", { sourceUrl: SOURCE_URL, revision: REVISION }));
374
+ document.addEventListener("keydown", (event) => {
375
+ if (event.key !== "Enter" || event.isComposing) return;
376
+ const input = event.target;
377
+ if (!(input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement) || input.name !== "q") return;
378
+ const next = googleSearchProxyUrl(input.value);
379
+ if (!next) return;
380
+ event.preventDefault();
381
+ stopImmediatePropagation.call(event);
382
+ window.location.assign(next);
383
+ }, true);
384
+ document.addEventListener("click", (event) => {
385
+ const control = event.target instanceof Element ? event.target.closest('button[name="btnK"],input[name="btnK"]') : null;
386
+ if (!control) return;
387
+ const input = document.querySelector('textarea[name="q"],input[name="q"]');
388
+ if (!(input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement)) return;
389
+ const next = googleSearchProxyUrl(input.value);
390
+ if (!next) return;
391
+ event.preventDefault();
392
+ stopImmediatePropagation.call(event);
393
+ window.location.assign(next);
394
+ }, true);
364
395
  document.addEventListener("submit", (event) => event.preventDefault(), true);
365
396
  document.addEventListener("selectionchange", () => {
366
397
  const selection = window.getSelection();
@@ -370,7 +401,7 @@ Runtime run folder:
370
401
  if (BRIDGE_SCRIPT) BRIDGE_SCRIPT.remove();
371
402
  if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", state, { once: true });
372
403
  else state();
373
- })();`}function r2(Z){return"tagName"in Z}function p0(Z,X){if(!Z||Z.startsWith("#"))return Z;try{let Q=new URL(Z,X);if(Q.protocol!=="http:"&&Q.protocol!=="https:")return null;if(Q.username||Q.password)return null;return Q.href}catch{return null}}function w1(Z){try{let X=s0.parse(Z.css,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return s0.walk(X,{enter(Q,K,Y){if(Q.type==="Atrule"&&Q.name.toLowerCase()==="import"){if(K&&Y)Y.remove(K);return}if(Q.type==="Declaration"){let z=Q.property.toLowerCase();if(z==="behavior"||z==="-moz-binding"){if(K&&Y)Y.remove(K)}return}if(Q.type!=="Url")return;let V=p0(Q.value,Z.baseUrl);if(V&&!V.startsWith("#"))Q.value=Z.resourceUrl(V);else if(!V)Q.value="data:,"}}),s0.generate(X)}catch{return""}}function O0(Z,X){return Z.attrs.find((Q)=>!Q.prefix&&Q.name.toLowerCase()===X.toLowerCase())?.value??null}function Z5(Z,X,Q){return Z.attrs.find((K)=>K.prefix?.toLowerCase()===X.toLowerCase()&&K.name.toLowerCase()===Q.toLowerCase())?.value??null}function J0(Z,X,Q){let K=Z.attrs.find((Y)=>!Y.prefix&&Y.name.toLowerCase()===X.toLowerCase());if(K)K.value=Q;else Z.attrs.push({name:X,value:Q})}function X5(Z,X,Q,K){let Y=Z.attrs.find((V)=>V.prefix?.toLowerCase()===X.toLowerCase()&&V.name.toLowerCase()===Q.toLowerCase());if(Y)Y.value=K}function p2(Z,X){let Q=new URL(Z),K=Q.hash;return Q.hash="",`${X(Q.href)}${K}`}function s2(Z,X){Z.attrs=Z.attrs.filter((Q)=>!X.has(Q.name.toLowerCase()))}function Q5(Z,X,Q){return Z.split(",").map((K)=>{let[Y,...V]=K.trim().split(/\s+/);if(!Y)return"";let z=p0(Y,X);if(!z||z.startsWith("#"))return"";return[Q(z),...V].join(" ")}).filter(Boolean).join(", ")}function J5(Z,X,Q){let K=Z.tagName.toLowerCase();if(s2(Z,new Set(["action","formaction","download","target","ping","srcdoc"])),K==="form")Z.tagName="div",Z.nodeName="div";if(K==="input"&&O0(Z,"type")?.toLowerCase()==="file")J0(Z,"disabled","");let Y=O0(Z,"style");if(Y!==null)J0(Z,"style",w1({css:`x{${Y}}`,baseUrl:X,resourceUrl:Q.resource}).replace(/^x\{/,"").replace(/\}$/,""));let V=O0(Z,"href");if(V!==null){let L=p0(V,X);if(L&&K==="link"&&(O0(Z,"rel")??"").toLowerCase().split(/\s+/).includes("icon"))J0(Z,"data-ideawave-original-href",L);if(!L)J0(Z,"href","#");else if(L.startsWith("#"))J0(Z,"href",L);else if(K==="a"||K==="area")J0(Z,"href",Q.page(L));else if(K==="use")J0(Z,"href",p2(L,Q.resource));else J0(Z,"href",Q.resource(L))}let z=O0(Z,"src");if(z!==null){let L=p0(z,X);if(!L||L.startsWith("#"))J0(Z,"src","data:,");else if(K==="iframe"||K==="frame")J0(Z,"src",Q.frame(L));else J0(Z,"src",Q.resource(L))}let U=O0(Z,"srcset");if(U!==null)J0(Z,"srcset",Q5(U,X,Q.resource));let F=O0(Z,"poster");if(F!==null){let L=p0(F,X);J0(Z,"poster",L&&!L.startsWith("#")?Q.resource(L):"data:,")}let B=Z5(Z,"xlink","href");if(B!==null){let L=p0(B,X);X5(Z,"xlink","href",!L?"#":L.startsWith("#")?L:p2(L,Q.resource))}if(K==="meta")s2(Z,new Set(["http-equiv"]))}function o2(Z,X,Q){let K=[];for(let Y of Z.childNodes){if(r2(Y)){let V=Y.tagName.toLowerCase();if(V==="base")continue;if(V==="meta"&&O0(Y,"http-equiv")&&O0(Y,"http-equiv")?.toLowerCase()!=="content-type")continue;if(J5(Y,X,Q),V==="style"){for(let z of Y.childNodes)if("value"in z&&typeof z.value==="string")z.value=w1({css:z.value,baseUrl:X,resourceUrl:Q.resource})}o2(Y,X,Q)}K.push(Y)}Z.childNodes=K}function z8(Z,X){for(let Q of Z.childNodes){if(!r2(Q))continue;if(Q.tagName===X)return Q;let K=z8(Q,X);if(K)return K}return null}function n2(Z){let X=a0(Z.html);o2(X,Z.baseUrl,Z.urls);let Q=z8(X,"head")??z8(X,"html");if(Q){let K=Z.injectBridge===!1?"":`<script>${i2({token:null,sourceUrl:Z.baseUrl,revision:Z.revision,navigateUrlPrefix:Z.navigateUrlPrefix,resourceUrlPrefix:Z.resourceUrlPrefix,parentOrigin:Z.parentOrigin})}</script>`,Y=S2(`<style>html{scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}form{pointer-events:none}</style>${K}`);for(let V of[...Y.childNodes].reverse())Q.childNodes.unshift(V)}return _0(X)}function Q4(Z,X){let Q={"cache-control":"no-store","content-security-policy":["default-src 'self' data: blob:","script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:","style-src 'self' 'unsafe-inline' data:","img-src 'self' data: blob:","font-src 'self' data:","connect-src 'self'","frame-src 'self'","media-src 'none'","object-src 'none'","form-action 'none'","base-uri 'none'"].join("; "),"content-type":Z,"cross-origin-resource-policy":"cross-origin","referrer-policy":"no-referrer",vary:"Origin","x-content-type-options":"nosniff"};if(X)Q["access-control-allow-origin"]=X;return Q}var K5=33554432,Y5=134217728,W5=1200000,e2="000888210889775888983:y9tkcjel090",z6="ideawaveGoogleSearch",Z6=2097152,V5=1024,j5=8,z5=240,H5=60000,U5=200,X6=8,q5=S.object({language:S.string().regex(/^[A-Za-z-]{2,20}$/),cse_token:S.string().min(1).max(2000),cselibVersion:S.string().regex(/^[A-Za-z0-9_-]{1,100}$/),exp:S.array(S.string().regex(/^[A-Za-z0-9_-]{1,100}$/)).max(50).default([]),fexp:S.array(S.union([S.string(),S.number()])).max(100).default([])}).passthrough(),B5=S.object({titleNoFormatting:S.string().max(2000),contentNoFormatting:S.string().max(20000).optional(),visibleUrl:S.string().max(4000).optional(),unescapedUrl:S.string().max(8000).optional(),url:S.string().max(8000).optional()}).passthrough(),F5=S.object({cursor:S.object({resultCount:S.string().max(100).optional(),searchResultTime:S.string().max(100).optional()}).passthrough().optional(),results:S.array(B5).max(20).optional()}).passthrough(),w5=S.object({browserNodeId:S.string().uuid(),url:S.string().max(4000)}).strict(),L5=S.object({proxySessionId:S.string().uuid()}).strict(),P5=S.object({proxySessionId:S.string().uuid(),revision:S.string().min(1).max(200),html:S.string().max(F1)}).strict();function Q6(){return j6(18).toString("hex")}function x5(Z){if(!Z)return"";if(Z.startsWith("["))return Z.slice(1,Z.indexOf("]"));return Z.split(":")[0]?.toLowerCase()??""}function J6(Z){return typeof Z==="string"?Z:void 0}function b5(Z){let X=new URL(Z);if(X.protocol!=="http:"&&X.protocol!=="https:"||X.username||X.password)throw Error("Browser proxy frontend origin is invalid");return X.origin}function O5(Z){let X=Z.headers["service-worker"],Q=Z.headers["sec-fetch-dest"];return(Array.isArray(X)?X[0]:X)?.toLowerCase()==="script"||(Array.isArray(Q)?Q[0]:Q)?.toLowerCase()==="serviceworker"}function K6(Z){try{let X=w0(Z);if(X.protocol!=="https:"||X.hostname!=="www.google.com"||X.pathname!=="/search"||!X.searchParams.has("q"))return null;return X.searchParams.get("q")??""}catch{return null}}function Y6(Z){if(typeof Z!=="string")return;let X=Z.trim();if(!X||X.length>V5||[...X].some((Q)=>{let K=Q.codePointAt(0)??0;return K<=31||K===127}))return;return X}function C5(Z){let X=Z.lastIndexOf("})({"),Q=Z.lastIndexOf("});");if(X<0||Q<=X+3)throw Error("Google Search configuration was malformed");return q5.parse(JSON.parse(Z.slice(X+3,Q+1)))}function R5(Z){let X=`${z6}(`,Q=Z.indexOf(X),K=Z.lastIndexOf(");");if(Q<0||K<=Q+X.length)throw Error("Google Search results were malformed");return F5.parse(JSON.parse(Z.slice(Q+X.length,K)))}function K4(Z){return(Z["content-type"]??"application/octet-stream").split(";")[0]?.trim().toLowerCase()??"application/octet-stream"}function v5(Z){return"tagName"in Z}function H8(Z,X){return Z.attrs.find((Q)=>Q.name.toLowerCase()===X)?.value??null}function W6(Z,X,Q){let K=Z.attrs.find((Y)=>Y.name.toLowerCase()===X);if(K)K.value=Q;else Z.attrs.push({name:X,value:Q})}function L0(Z){return Z.replace(/[&<>"']/g,(X)=>{if(X==="&")return"&amp;";if(X==="<")return"&lt;";if(X===">")return"&gt;";if(X==='"')return"&quot;";return"&#39;"})}function y5(Z){for(let X of[Z.unescapedUrl,Z.url]){if(!X)continue;try{return w0(X).href}catch{}}return null}function f5(Z,X){let Q=(X.results??[]).flatMap((U)=>{let F=y5(U);if(!F)return[];return[{...U,url:F}]}),K=X.cursor?.resultCount,Y=X.cursor?.searchResultTime,V=K?`About ${L0(K)} results${Y?` (${L0(Y)} seconds)`:""}`:`Google results for “${L0(Z)}”`,z=Q.length>0?Q.map((U)=>`<article><a class="result-title" href="${L0(U.url)}"><h2>${L0(U.titleNoFormatting)}</h2></a><div class="result-url">${L0(U.visibleUrl??new URL(U.url).hostname)}</div>${U.contentNoFormatting?`<p>${L0(U.contentNoFormatting)}</p>`:""}</article>`).join(""):`<p class="empty">Google found no results for “${L0(Z)}”.</p>`;return`<!doctype html><html><head><meta charset="utf-8"><meta name="color-scheme" content="light"><title>Google Search</title><style>*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#fff;color:#202124;font-family:Arial,sans-serif}main{width:min(820px,100%);padding:28px 36px 48px}.brand{margin:0 0 22px;font-size:22px;font-weight:600;letter-spacing:-.4px}.brand span:nth-child(1),.brand span:nth-child(4){color:#4285f4}.brand span:nth-child(2),.brand span:nth-child(6){color:#ea4335}.brand span:nth-child(3){color:#fbbc05}.brand span:nth-child(5){color:#34a853}.summary{margin-bottom:24px;color:#70757a;font-size:13px}article{margin:0 0 30px}.result-title{color:#1a0dab;text-decoration:none}.result-title:hover{text-decoration:underline}h2{margin:0 0 5px;font-size:20px;font-weight:400;line-height:1.3}.result-url{margin-bottom:7px;color:#188038;font-size:13px;overflow-wrap:anywhere}p{margin:0;color:#4d5156;font-size:14px;line-height:1.5}.empty{padding:24px 0}.attribution{margin-top:40px;color:#70757a;font-size:11px}@media(max-width:560px){main{padding:22px 20px}}</style></head><body><main><div class="brand" aria-label="Google"><span>G</span><span>o</span><span>o</span><span>g</span><span>l</span><span>e</span></div><div class="summary">${V}</div>${z}<div class="attribution">Search results enhanced by Google</div></main></body></html>`}function h5(Z){let X=JSON.stringify(Z.bridgeToken).replace(/</g,"\\u003c"),Q=JSON.stringify(Z.contentOrigin).replace(/</g,"\\u003c"),K=JSON.stringify(Z.frontendOrigin).replace(/</g,"\\u003c");return`<!doctype html><html><head><meta charset="utf-8"><style>html,body,iframe{border:0;margin:0;width:100%;height:100%;overflow:hidden}body{background:#fff}</style></head><body><iframe id="content" title="Browser page" sandbox="allow-scripts allow-same-origin" src="${L0(Z.bootUrl)}"></iframe><script>(()=>{const TOKEN=${X};const CONTENT_ORIGIN=${Q};const FRONTEND_ORIGIN=${K};const frame=document.getElementById("content");const initialize=()=>frame.contentWindow.postMessage({type:"ideawave-browser-init",token:TOKEN},CONTENT_ORIGIN);frame.addEventListener("load",initialize);window.addEventListener("message",event=>{const data=event.data;if(event.source===frame.contentWindow&&event.origin===CONTENT_ORIGIN&&data&&data.type==="ideawave-browser-event"&&data.token===TOKEN){window.parent.postMessage(data,FRONTEND_ORIGIN);return}if(event.source===window.parent&&event.origin===FRONTEND_ORIGIN&&data&&data.type==="ideawave-browser-command"&&data.token===TOKEN){frame.contentWindow.postMessage(data,CONTENT_ORIGIN)}})})();</script></body></html>`}function M5(Z){return`<!doctype html><meta charset="utf-8"><script>(()=>{const next=${JSON.stringify(Z.pageUrl)};if(!("serviceWorker" in navigator)){location.replace(next);return}navigator.serviceWorker.register(${JSON.stringify(Z.serviceWorkerUrl)},{scope:"/"}).then(()=>navigator.serviceWorker.ready).then(()=>location.replace(next),()=>location.replace(next))})();</script>`}function N5(Z){return`"use strict";
404
+ })();`}function o2(Z){return"tagName"in Z}function p0(Z,X){if(!Z||Z.startsWith("#"))return Z;try{let Q=new URL(Z,X);if(Q.protocol!=="http:"&&Q.protocol!=="https:")return null;if(Q.username||Q.password)return null;return Q.href}catch{return null}}function w1(Z){try{let X=s0.parse(Z.css,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return s0.walk(X,{enter(Q,K,Y){if(Q.type==="Atrule"&&Q.name.toLowerCase()==="import"){if(K&&Y)Y.remove(K);return}if(Q.type==="Declaration"){let z=Q.property.toLowerCase();if(z==="behavior"||z==="-moz-binding"){if(K&&Y)Y.remove(K)}return}if(Q.type!=="Url")return;let V=p0(Q.value,Z.baseUrl);if(V&&!V.startsWith("#"))Q.value=Z.resourceUrl(V);else if(!V)Q.value="data:,"}}),s0.generate(X)}catch{return""}}function b0(Z,X){return Z.attrs.find((Q)=>!Q.prefix&&Q.name.toLowerCase()===X.toLowerCase())?.value??null}function Q5(Z,X,Q){return Z.attrs.find((K)=>K.prefix?.toLowerCase()===X.toLowerCase()&&K.name.toLowerCase()===Q.toLowerCase())?.value??null}function J0(Z,X,Q){let K=Z.attrs.find((Y)=>!Y.prefix&&Y.name.toLowerCase()===X.toLowerCase());if(K)K.value=Q;else Z.attrs.push({name:X,value:Q})}function J5(Z,X,Q,K){let Y=Z.attrs.find((V)=>V.prefix?.toLowerCase()===X.toLowerCase()&&V.name.toLowerCase()===Q.toLowerCase());if(Y)Y.value=K}function s2(Z,X){let Q=new URL(Z),K=Q.hash;return Q.hash="",`${X(Q.href)}${K}`}function r2(Z,X){Z.attrs=Z.attrs.filter((Q)=>!X.has(Q.name.toLowerCase()))}function K5(Z,X,Q){return Z.split(",").map((K)=>{let[Y,...V]=K.trim().split(/\s+/);if(!Y)return"";let z=p0(Y,X);if(!z||z.startsWith("#"))return"";return[Q(z),...V].join(" ")}).filter(Boolean).join(", ")}function Y5(Z,X,Q){let K=Z.tagName.toLowerCase();if(r2(Z,new Set(["action","formaction","download","target","ping","srcdoc"])),K==="form")Z.tagName="div",Z.nodeName="div";if(K==="input"&&b0(Z,"type")?.toLowerCase()==="file")J0(Z,"disabled","");let Y=b0(Z,"style");if(Y!==null)J0(Z,"style",w1({css:`x{${Y}}`,baseUrl:X,resourceUrl:Q.resource}).replace(/^x\{/,"").replace(/\}$/,""));let V=b0(Z,"href");if(V!==null){let L=p0(V,X);if(L&&K==="link"&&(b0(Z,"rel")??"").toLowerCase().split(/\s+/).includes("icon"))J0(Z,"data-ideawave-original-href",L);if(!L)J0(Z,"href","#");else if(L.startsWith("#"))J0(Z,"href",L);else if(K==="a"||K==="area")J0(Z,"href",Q.page(L));else if(K==="use")J0(Z,"href",s2(L,Q.resource));else J0(Z,"href",Q.resource(L))}let z=b0(Z,"src");if(z!==null){let L=p0(z,X);if(!L||L.startsWith("#"))J0(Z,"src","data:,");else if(K==="iframe"||K==="frame")J0(Z,"src",Q.frame(L));else J0(Z,"src",Q.resource(L))}let U=b0(Z,"srcset");if(U!==null)J0(Z,"srcset",K5(U,X,Q.resource));let F=b0(Z,"poster");if(F!==null){let L=p0(F,X);J0(Z,"poster",L&&!L.startsWith("#")?Q.resource(L):"data:,")}let B=Q5(Z,"xlink","href");if(B!==null){let L=p0(B,X);J5(Z,"xlink","href",!L?"#":L.startsWith("#")?L:s2(L,Q.resource))}if(K==="meta")r2(Z,new Set(["http-equiv"]))}function n2(Z,X,Q){let K=[];for(let Y of Z.childNodes){if(o2(Y)){let V=Y.tagName.toLowerCase();if(V==="base")continue;if(V==="meta"&&b0(Y,"http-equiv")&&b0(Y,"http-equiv")?.toLowerCase()!=="content-type")continue;if(Y5(Y,X,Q),V==="style"){for(let z of Y.childNodes)if("value"in z&&typeof z.value==="string")z.value=w1({css:z.value,baseUrl:X,resourceUrl:Q.resource})}n2(Y,X,Q)}K.push(Y)}Z.childNodes=K}function z8(Z,X){for(let Q of Z.childNodes){if(!o2(Q))continue;if(Q.tagName===X)return Q;let K=z8(Q,X);if(K)return K}return null}function t2(Z){let X=a0(Z.html);n2(X,Z.baseUrl,Z.urls);let Q=z8(X,"head")??z8(X,"html");if(Q){let K=Z.injectBridge===!1?"":`<script>${p2({token:null,sourceUrl:Z.baseUrl,revision:Z.revision,navigateUrlPrefix:Z.navigateUrlPrefix,resourceUrlPrefix:Z.resourceUrlPrefix,parentOrigin:Z.parentOrigin})}</script>`,Y=I2(`<style>html{scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}form{pointer-events:none}</style>${K}`);for(let V of[...Y.childNodes].reverse())Q.childNodes.unshift(V)}return k0(X)}function K4(Z,X){let Q={"cache-control":"no-store","content-security-policy":["default-src 'self' data: blob:","script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:","style-src 'self' 'unsafe-inline' data:","img-src 'self' data: blob:","font-src 'self' data:","connect-src 'self'","frame-src 'self'","media-src 'none'","object-src 'none'","form-action 'none'","base-uri 'none'"].join("; "),"content-type":Z,"cross-origin-resource-policy":"cross-origin","referrer-policy":"no-referrer",vary:"Origin","x-content-type-options":"nosniff"};if(X)Q["access-control-allow-origin"]=X;return Q}var W5=33554432,V5=134217728,j5=1200000,Z6="000888210889775888983:y9tkcjel090",z6="ideawaveGoogleSearch",X6=2097152,z5=1024,H5=8,U5=240,q5=60000,B5=200,Q6=8,F5=k.object({language:k.string().regex(/^[A-Za-z-]{2,20}$/),cse_token:k.string().min(1).max(2000),cselibVersion:k.string().regex(/^[A-Za-z0-9_-]{1,100}$/),exp:k.array(k.string().regex(/^[A-Za-z0-9_-]{1,100}$/)).max(50).default([]),fexp:k.array(k.union([k.string(),k.number()])).max(100).default([])}).passthrough(),w5=k.object({titleNoFormatting:k.string().max(2000),contentNoFormatting:k.string().max(20000).optional(),visibleUrl:k.string().max(4000).optional(),unescapedUrl:k.string().max(8000).optional(),url:k.string().max(8000).optional()}).passthrough(),L5=k.object({cursor:k.object({resultCount:k.string().max(100),searchResultTime:k.string().max(100).optional()}).passthrough(),results:k.array(w5).max(20).optional()}).passthrough(),P5=k.object({error:k.object({code:k.number().int(),message:k.string().max(2000).optional()}).passthrough()}).passthrough(),x5=k.object({browserNodeId:k.string().uuid(),url:k.string().max(4000)}).strict(),b5=k.object({proxySessionId:k.string().uuid()}).strict(),O5=k.object({proxySessionId:k.string().uuid(),revision:k.string().min(1).max(200),html:k.string().max(F1)}).strict();function J6(){return j6(18).toString("hex")}function C5(Z){if(!Z)return"";if(Z.startsWith("["))return Z.slice(1,Z.indexOf("]"));return Z.split(":")[0]?.toLowerCase()??""}function K6(Z){return typeof Z==="string"?Z:void 0}function R5(Z){let X=new URL(Z);if(X.protocol!=="http:"&&X.protocol!=="https:"||X.username||X.password)throw Error("Browser proxy frontend origin is invalid");return X.origin}function v5(Z){let X=Z.headers["service-worker"],Q=Z.headers["sec-fetch-dest"];return(Array.isArray(X)?X[0]:X)?.toLowerCase()==="script"||(Array.isArray(Q)?Q[0]:Q)?.toLowerCase()==="serviceworker"}function y5(Z){try{let X=w0(Z);if(X.protocol!=="https:"||X.hostname!=="www.google.com"||X.pathname!=="/search"||!X.searchParams.has("q"))return null;return X.searchParams.get("q")??""}catch{return null}}function Y6(Z){if(typeof Z!=="string")return;let X=Z.trim();if(!X||X.length>z5||[...X].some((Q)=>{let K=Q.codePointAt(0)??0;return K<=31||K===127}))return;return X}function f5(Z){let X=Z.lastIndexOf("})({"),Q=Z.lastIndexOf("});");if(X<0||Q<=X+3)throw Error("Google Search configuration was malformed");return F5.parse(JSON.parse(Z.slice(X+3,Q+1)))}function h5(Z){let X=`${z6}(`,Q=Z.indexOf(X),K=Z.lastIndexOf(");");if(Q<0||K<=Q+X.length)throw Error("Google Search results were malformed");let Y=JSON.parse(Z.slice(Q+X.length,K));if(P5.safeParse(Y).success)throw Error("Google Search is temporarily unavailable");let V=L5.safeParse(Y);if(!V.success)throw Error("Google Search is temporarily unavailable");if((V.data.results?.length??0)===0&&V.data.cursor.resultCount!=="0")throw Error("Google Search is temporarily unavailable");return V.data}function W4(Z){return(Z["content-type"]??"application/octet-stream").split(";")[0]?.trim().toLowerCase()??"application/octet-stream"}function M5(Z){return"tagName"in Z}function H8(Z,X){return Z.attrs.find((Q)=>Q.name.toLowerCase()===X)?.value??null}function W6(Z,X,Q){let K=Z.attrs.find((Y)=>Y.name.toLowerCase()===X);if(K)K.value=Q;else Z.attrs.push({name:X,value:Q})}function O0(Z){return Z.replace(/[&<>"']/g,(X)=>{if(X==="&")return"&amp;";if(X==="<")return"&lt;";if(X===">")return"&gt;";if(X==='"')return"&quot;";return"&#39;"})}function N5(Z){for(let X of[Z.unescapedUrl,Z.url]){if(!X)continue;try{return w0(X).href}catch{}}return null}function D5(Z,X){let Q=(X.results??[]).flatMap((U)=>{let F=N5(U);if(!F)return[];return[{...U,url:F}]}),K=X.cursor.resultCount,Y=X.cursor.searchResultTime,V=`About ${O0(K)} results${Y?` (${O0(Y)} seconds)`:""}`,z=Q.length>0?Q.map((U)=>`<article><a class="result-title" href="${O0(U.url)}"><h2>${O0(U.titleNoFormatting)}</h2></a><div class="result-url">${O0(U.visibleUrl??new URL(U.url).hostname)}</div>${U.contentNoFormatting?`<p>${O0(U.contentNoFormatting)}</p>`:""}</article>`).join(""):`<p class="empty">Google found no results for “${O0(Z)}”.</p>`;return`<!doctype html><html><head><meta charset="utf-8"><meta name="color-scheme" content="light"><title>Google Search</title><style>*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#fff;color:#202124;font-family:Arial,sans-serif}main{width:min(820px,100%);padding:28px 36px 48px}.brand{margin:0 0 22px;font-size:22px;font-weight:600;letter-spacing:-.4px}.brand span:nth-child(1),.brand span:nth-child(4){color:#4285f4}.brand span:nth-child(2),.brand span:nth-child(6){color:#ea4335}.brand span:nth-child(3){color:#fbbc05}.brand span:nth-child(5){color:#34a853}.summary{margin-bottom:24px;color:#70757a;font-size:13px}article{margin:0 0 30px}.result-title{color:#1a0dab;text-decoration:none}.result-title:hover{text-decoration:underline}h2{margin:0 0 5px;font-size:20px;font-weight:400;line-height:1.3}.result-url{margin-bottom:7px;color:#188038;font-size:13px;overflow-wrap:anywhere}p{margin:0;color:#4d5156;font-size:14px;line-height:1.5}.empty{padding:24px 0}.attribution{margin-top:40px;color:#70757a;font-size:11px}@media(max-width:560px){main{padding:22px 20px}}</style></head><body><main><div class="brand" aria-label="Google"><span>G</span><span>o</span><span>o</span><span>g</span><span>l</span><span>e</span></div><div class="summary">${V}</div>${z}<div class="attribution">Search results enhanced by Google</div></main></body></html>`}function $5(Z){let X=JSON.stringify(Z.bridgeToken).replace(/</g,"\\u003c"),Q=JSON.stringify(Z.contentOrigin).replace(/</g,"\\u003c"),K=JSON.stringify(Z.frontendOrigin).replace(/</g,"\\u003c");return`<!doctype html><html><head><meta charset="utf-8"><style>html,body,iframe{border:0;margin:0;width:100%;height:100%;overflow:hidden}body{background:#fff}</style></head><body><iframe id="content" title="Browser page" sandbox="allow-scripts allow-same-origin" src="${O0(Z.bootUrl)}"></iframe><script>(()=>{const TOKEN=${X};const CONTENT_ORIGIN=${Q};const FRONTEND_ORIGIN=${K};const frame=document.getElementById("content");const initialize=()=>frame.contentWindow.postMessage({type:"ideawave-browser-init",token:TOKEN},CONTENT_ORIGIN);frame.addEventListener("load",initialize);window.addEventListener("message",event=>{const data=event.data;if(event.source===frame.contentWindow&&event.origin===CONTENT_ORIGIN&&data&&data.type==="ideawave-browser-event"&&data.token===TOKEN){window.parent.postMessage(data,FRONTEND_ORIGIN);return}if(event.source===window.parent&&event.origin===FRONTEND_ORIGIN&&data&&data.type==="ideawave-browser-command"&&data.token===TOKEN){frame.contentWindow.postMessage(data,CONTENT_ORIGIN)}})})();</script></body></html>`}function G5(Z){return`<!doctype html><meta charset="utf-8"><script>(()=>{const next=${JSON.stringify(Z.pageUrl)};if(!("serviceWorker" in navigator)){location.replace(next);return}navigator.serviceWorker.register(${JSON.stringify(Z.serviceWorkerUrl)},{scope:"/"}).then(()=>navigator.serviceWorker.ready).then(()=>location.replace(next),()=>location.replace(next))})();</script>`}function g5(Z){return`"use strict";
374
405
  const CONTENT_ORIGIN=${JSON.stringify(Z.contentOrigin)};
375
406
  const BOOT_PREFIX=${JSON.stringify(Z.bootPrefix)};
376
407
  const RESOURCE_PREFIX=${JSON.stringify(Z.resourcePrefix)};
@@ -408,8 +439,8 @@ const proxyRequest=async(event)=>{
408
439
  const prefix=request.mode==="navigate"?BOOT_PREFIX:RESOURCE_PREFIX;
409
440
  return fetch(prefix+encodeURIComponent(target.href),{method:request.method,headers:request.headers,credentials:"omit",redirect:"follow",cache:"no-store"});
410
441
  };
411
- self.addEventListener("fetch",event=>event.respondWith(proxyRequest(event)));`}function D5(Z){return`<!doctype html><html><body style="font:14px system-ui;padding:24px"><h1>Page unavailable</h1><p>${L0(Z)}</p></body></html>`}function J4(Z,X){try{let Q=new URL(Z);if(Q.hostname!==`${X.contentHost}.localhost`)return null;if(!Q.pathname.startsWith("/browser/"))return null;let K=Q.searchParams.get("url");return K?w0(K).href:null}catch{return null}}function V6(Z){let X=K4(Z.headers);if(!(/^image\/(?:png|jpeg|gif|webp|avif|bmp|x-icon)$/.test(X)||/^(?:font\/|application\/(?:font-|vnd\.ms-fontobject|x-font-))/.test(X)))return null;return`data:${X};base64,${Buffer.from(Z.body).toString("base64")}`}class U8{fetchResource;sessions=new Map;port=null;sweepTimer;constructor(Z=a2){this.fetchResource=Z;this.sweepTimer=setInterval(()=>this.sweep(),60000),this.sweepTimer.unref?.()}setPort(Z){this.port=Z}origin(Z){if(!this.port)throw Error("Browser proxy is not ready");return`http://${Z}.localhost:${this.port}`}urls(Z){let X=this.origin(Z.contentHost),Q=`session=${encodeURIComponent(Z.id)}&url=`;return{wrapperOrigin:this.origin(Z.wrapperHost),contentOrigin:X,bootPrefix:`${X}/browser/boot?${Q}`,frameBootPrefix:`${X}/browser/boot?session=${encodeURIComponent(Z.id)}&frame=1&url=`,pagePrefix:`${X}/browser/page?${Q}`,framePrefix:`${X}/browser/page?session=${encodeURIComponent(Z.id)}&frame=1&url=`,resourcePrefix:`${X}/browser/resource?${Q}`}}result(Z){let X=this.urls(Z),Q=`${X.wrapperOrigin}/browser/wrapper?session=${encodeURIComponent(Z.id)}&url=${encodeURIComponent(Z.initialUrl)}`;return{proxySessionId:Z.id,wrapperUrl:Q,bridgeToken:Z.bridgeToken,navigateUrlPrefix:X.bootPrefix}}async handleRpc(Z,X,Q){switch(Q.method){case"open_proxy_session":{let K=w5.parse(Q.params),Y=w0(K.url).href,V=b5(X),z=[...this.sessions.values()].find((F)=>F.frontendSessionId===Z&&F.browserNodeId===K.browserNodeId);if(z){if(z.frontendOrigin!==V)throw Error("Browser proxy session origin changed unexpectedly");return z.initialUrl=Y,z.lastUsedAt=Date.now(),this.result(z)}let U={id:t2(),frontendSessionId:Z,frontendOrigin:V,browserNodeId:K.browserNodeId,wrapperHost:`iw-wrapper-${Q6()}`,contentHost:`iw-content-${Q6()}`,bridgeToken:j6(24).toString("base64url"),initialUrl:Y,currentUrl:Y,currentRevision:null,cache:new Map,cacheBytes:0,activeRequests:0,requestTimestamps:[],lastUsedAt:Date.now()};return this.sessions.set(U.id,U),this.result(U)}case"close_proxy_session":{let K=L5.parse(Q.params),Y=this.sessions.get(K.proxySessionId);if(Y&&Y.frontendSessionId!==Z)throw Error("Browser proxy session belongs to another frontend session");if(Y)this.sessions.delete(Y.id);return{closed:!0}}case"build_snapshot":{let K=P5.parse(Q.params),Y=this.ownedSession(Z,K.proxySessionId);if(Y.currentRevision!==K.revision)throw Error("STALE_BROWSER_REF: inspect the browser again before freezing");return this.buildSnapshot(Y,K.html,K.revision)}}}closeFrontendSession(Z){for(let X of this.sessions.values())if(X.frontendSessionId===Z)this.sessions.delete(X.id)}close(){clearInterval(this.sweepTimer),this.sessions.clear()}ownedSession(Z,X){let Q=this.sessions.get(X);if(!Q||Q.frontendSessionId!==Z)throw Error("Browser proxy session is unavailable");return Q.lastUsedAt=Date.now(),Q}sweep(){let Z=Date.now()-W5;for(let X of this.sessions.values())if(X.lastUsedAt<Z)this.sessions.delete(X.id)}async upstream(Z,X,Q,K={}){let Y=w0(X).href,V=K.cache===!1?void 0:Z.cache.get(Y);if(V)return V.lastUsedAt=Date.now(),V;let z=await this.fetchUpstream(Z,{url:Y,maxBytes:Q,userAgent:K.userAgent,allowAttachment:K.allowAttachment});if(K.cache===!1)return z;let U={...z,lastUsedAt:Date.now()};return Z.cache.set(Y,U),Z.cacheBytes+=z.body.byteLength,this.trimCache(Z),U}async fetchUpstream(Z,X){let Q=Date.now();if(Z.requestTimestamps=Z.requestTimestamps.filter((K)=>Q-K<H5),Z.activeRequests>=j5)throw Error("Browser proxy concurrent request limit exceeded");if(Z.requestTimestamps.length>=z5)throw Error("Browser proxy request rate limit exceeded");Z.activeRequests+=1,Z.requestTimestamps.push(Q);try{return await this.fetchResource(X)}finally{Z.activeRequests-=1}}async googleSearch(Z,X,Q,K){let Y=new URL("https://cse.google.com/cse.js");Y.searchParams.set("cx",e2);let V=await this.fetchUpstream(Z,{url:Y.href,maxBytes:Z6,userAgent:K,allowAttachment:!0});if(V.status!==200)throw Error("Google Search configuration was unavailable");let z=C5(Buffer.from(V.body).toString("utf8")),U=new URL("https://cse.google.com/cse/element/v1");for(let[B,L]of[["rsz","filtered_cse"],["num","10"],["hl",z.language],["source","gcsc"],["cselibv",z.cselibVersion],["cx",e2],["q",X],["safe","off"],["cse_tok",z.cse_token],["sort",""],["exp",z.exp.join(",")],["fexp",z.fexp.join(",")],["callback",z6],["rurl",Q]])U.searchParams.set(B,L);let F=await this.fetchUpstream(Z,{url:U.href,maxBytes:Z6,userAgent:K,allowAttachment:!0});if(F.status!==200)throw Error("Google Search results were unavailable");return R5(Buffer.from(F.body).toString("utf8"))}trimCache(Z){while(Z.cacheBytes>K5&&Z.cache.size>1){let Q=[...Z.cache.entries()].sort((K,Y)=>K[1].lastUsedAt-Y[1].lastUsedAt)[0];if(!Q)break;Z.cache.delete(Q[0]),Z.cacheBytes-=Q[1].body.byteLength}let X=()=>[...this.sessions.values()].reduce((Q,K)=>Q+K.cacheBytes,0);while(X()>Y5){let K=[...this.sessions.values()].flatMap((Y)=>[...Y.cache.entries()].map(([V,z])=>({item:Y,key:V,value:z}))).sort((Y,V)=>Y.value.lastUsedAt-V.value.lastUsedAt)[0];if(!K)break;K.item.cache.delete(K.key),K.item.cacheBytes-=K.value.body.byteLength}}async handleHttpRequest(Z,X){let Q=new URL(Z.url??"/","http://localhost");if(!Q.pathname.startsWith("/browser/"))return!1;let K=Q.searchParams.get("session"),Y=K?this.sessions.get(K):null;if(!Y)return X.writeHead(404),X.end(),!0;Y.lastUsedAt=Date.now();let V=x5(Z.headers.host),z=this.urls(Y),U=Q.pathname==="/browser/wrapper"?`${Y.wrapperHost}.localhost`:`${Y.contentHost}.localhost`;if(V!==U)return X.writeHead(403),X.end(),!0;let F=J6(Z.headers.origin),B=new Set([Y.frontendOrigin,z.wrapperOrigin,z.contentOrigin]);if(Z.headers.origin!==void 0&&(!F||!B.has(F)))return X.writeHead(403,{vary:"Origin"}),X.end(),!0;if(Z.method==="OPTIONS"){if(!F)return X.writeHead(403,{vary:"Origin"}),X.end(),!0;let L={"access-control-allow-origin":F,"access-control-allow-methods":"GET, HEAD, OPTIONS",vary:"Origin"};if(J6(Z.headers["access-control-request-private-network"])?.toLowerCase()==="true")L["access-control-allow-private-network"]="true";return X.writeHead(204,L),X.end(),!0}if(Z.method!=="GET"&&Z.method!=="HEAD")return X.writeHead(405),X.end(),!0;try{if(Q.pathname==="/browser/wrapper"){let f=w0(Q.searchParams.get("url")??Y.initialUrl).href,P=`${z.bootPrefix}${encodeURIComponent(f)}`;return this.sendHtml(X,h5({bridgeToken:Y.bridgeToken,contentOrigin:z.contentOrigin,frontendOrigin:Y.frontendOrigin,bootUrl:P}),Z.method==="HEAD",200,Y.frontendOrigin,z.contentOrigin,F),!0}if(Q.pathname==="/browser/sw.js")return X.writeHead(200,{...Q4("text/javascript; charset=utf-8",F),"service-worker-allowed":"/"}),X.end(Z.method==="HEAD"?void 0:N5({contentOrigin:z.contentOrigin,bootPrefix:z.bootPrefix,resourcePrefix:z.resourcePrefix})),!0;let L=w0(Q.searchParams.get("url")??"").href;if(Q.pathname==="/browser/boot"){let f=Q.searchParams.get("frame")==="1",P=K6(L),R=`${f?z.framePrefix:z.pagePrefix}${encodeURIComponent(L)}${P===null?"":`&q=${encodeURIComponent(P)}`}`;return this.sendHtml(X,M5({serviceWorkerUrl:`${z.contentOrigin}/browser/sw.js?session=${encodeURIComponent(Y.id)}`,pageUrl:R}),Z.method==="HEAD",200,void 0,void 0,F),!0}if(Q.pathname==="/browser/page"){let f=Q.searchParams.get("frame")==="1",P=K6(L),R=P===null?null:await this.googleSearch(Y,P,`${f?z.framePrefix:z.pagePrefix}${encodeURIComponent(L)}&q=${encodeURIComponent(P)}`,Y6(Z.headers["user-agent"])),v=P===null?await this.upstream(Y,L,c2,{cache:!1,userAgent:Y6(Z.headers["user-agent"])}):null;if(v){let y=K4(v.headers);if(y!=="text/html"&&y!=="application/xhtml+xml")throw Error("The target did not return an HTML page")}let D=v?.url??L,C=t2();if(!f)Y.currentUrl=D,Y.currentRevision=C;let h=n2({html:P===null?Buffer.from(v?.body??[]).toString("utf8"):f5(P,R??{results:[]}),baseUrl:D,bridgeToken:Y.bridgeToken,revision:C,navigateUrlPrefix:z.bootPrefix,resourceUrlPrefix:z.resourcePrefix,parentOrigin:z.wrapperOrigin,injectBridge:!f,urls:{page:(y)=>`${f?z.frameBootPrefix:z.bootPrefix}${encodeURIComponent(y)}`,frame:(y)=>`${z.framePrefix}${encodeURIComponent(y)}`,resource:(y)=>`${z.resourcePrefix}${encodeURIComponent(y)}`}});return this.sendHtml(X,h,Z.method==="HEAD",200,void 0,void 0,F),!0}if(Q.pathname==="/browser/resource"){if(O5(Z))return X.writeHead(403,{"content-type":"text/plain; charset=utf-8","x-content-type-options":"nosniff"}),X.end(Z.method==="HEAD"?void 0:"Target resources cannot be installed as service workers."),!0;let f=await this.upstream(Y,L,X4),P=K4(f.headers),R=Buffer.from(f.body);if(P==="text/css")R=Buffer.from(w1({css:R.toString("utf8"),baseUrl:f.url,resourceUrl:(v)=>`${z.resourcePrefix}${encodeURIComponent(v)}`}),"utf8");return X.writeHead(f.status,{...Q4(f.headers["content-type"]??P,F),"content-length":String(R.byteLength)}),X.end(Z.method==="HEAD"?void 0:R),!0}return X.writeHead(404),X.end(),!0}catch(L){let f=L instanceof Error?L.message:"Browser proxy failed";return this.sendHtml(X,D5(f),Z.method==="HEAD",502,void 0,void 0,F),!0}}sendHtml(Z,X,Q,K=200,Y,V,z){let U=Buffer.from(X,"utf8"),F=Q4("text/html; charset=utf-8",z);if(V)F["content-security-policy"]=F["content-security-policy"].replace("frame-src 'self'",`frame-src 'self' ${new URL(V).origin}`);if(Y)F["content-security-policy"]=`${F["content-security-policy"]}; frame-ancestors ${new URL(Y).origin}`;Z.writeHead(K,{...F,"content-length":String(U.byteLength)}),Z.end(Q?void 0:U)}async snapshotUpstream(Z,X,Q){if(Q.remaining<=0)return null;return Q.remaining-=1,Q.resourceCount+=1,this.upstream(Z,X,X4)}async inlineCss(Z,X,Q,K){let Y=new Set;try{let U=Y4.parse(X,{context:"stylesheet",parseCustomProperty:!0});Y4.walk(U,(F)=>{if(F.type!=="Url")return;try{let B=J4(F.value,Z);Y.add(B??new URL(F.value,Q).href)}catch{}})}catch{return""}let V=new Map,z=[...Y].slice(0,K.remaining);for(let U=0;U<z.length;U+=X6)await Promise.all(z.slice(U,U+X6).map(async(F)=>{try{let B=await this.snapshotUpstream(Z,F,K);if(!B)return;let L=V6(B);if(L)V.set(F,L)}catch{}}));return w1({css:X,baseUrl:Q,resourceUrl:(U)=>V.get(J4(U,Z)??U)??"data:,"})}async inlineSnapshotTree(Z,X,Q){let K=[];for(let Y of X.childNodes){if(v5(Y)){let V=Y.tagName.toLowerCase();if(V==="link"&&(H8(Y,"rel")??"").toLowerCase().includes("stylesheet")){let z=H8(Y,"href"),U=z?J4(z,Z)??z:null;if(U)try{let F=await this.snapshotUpstream(Z,U,Q);if(!F)continue;if(K4(F.headers)==="text/css")Y.tagName="style",Y.nodeName="style",Y.attrs=[],Y.childNodes=[{nodeName:"#text",value:await this.inlineCss(Z,Buffer.from(F.body).toString("utf8"),F.url,Q),parentNode:Y}]}catch{continue}}if(V==="style"){for(let z of Y.childNodes)if("value"in z&&typeof z.value==="string")z.value=await this.inlineCss(Z,z.value,Z.currentUrl,Q)}if(V==="img"){let z=H8(Y,"src"),U=z?J4(z,Z)??z:null;if(U&&!U.startsWith("data:"))try{let F=await this.snapshotUpstream(Z,U,Q),B=F?V6(F):null;W6(Y,"src",B??"data:,")}catch{W6(Y,"src","data:,")}}await this.inlineSnapshotTree(Z,Y,Q)}K.push(Y)}X.childNodes=K}async buildSnapshot(Z,X,Q){if(Buffer.byteLength(X,"utf8")>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let K=a0(X),Y={remaining:U5,resourceCount:0};await this.inlineSnapshotTree(Z,K,Y);let V=_0(K),z=A2(V),U=V.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()??"";return{html:z,sourceUrl:Z.currentUrl,title:U,revision:Q,byteLength:Buffer.byteLength(z,"utf8"),resourceCount:Y.resourceCount,createdAt:new Date().toISOString()}}}import{randomUUID as g5}from"node:crypto";import{createServer as E5}from"node:http";import{WebSocket as L6,WebSocketServer as m5}from"ws";var q8="/cli-bridge",H6="/ping";function B8(Z=43275,X=43277){let Q=[];for(let K=Z;K<=X;K+=1)Q.push(K);return Q}function U6(Z=B8(),X="127.0.0.1",Q="/cli-bridge"){return Z.map((K)=>`ws://${X}:${K}${Q}`)}var $5=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","tool_metadata","run_turn","cancel_run","tool_result","request_tool_metadata","tool_call","partial_text","tool_activity","run_settled","runtime_rpc","runtime_rpc_result","browser_rpc","browser_rpc_result","warmup_run","warmup_result"]);function W4(Z){try{let X=JSON.parse(Z);if(X&&typeof X==="object"&&typeof X.type==="string"&&$5.has(X.type))return X}catch{}return null}function V4(Z){return JSON.stringify(Z)}var G5=800;function q6({candidates:Z,createWebSocket:X,timeoutMs:Q=G5,maxConcurrent:K=1,staggerMs:Y=0,setTimeoutFn:V=setTimeout,clearTimeoutFn:z=clearTimeout}){return new Promise((U,F)=>{let B=0,L=!1,f=null,P=new Map,R=Math.max(1,Math.floor(K)),v=()=>{if(f===null)return;z(f),f=null},D=(N)=>{let{socket:x,listeners:G,timer:l}=N;x.removeEventListener("open",G.open),x.removeEventListener("message",G.message),x.removeEventListener("error",G.error),x.removeEventListener("close",G.close),z(l),P.delete(x)},C=(N)=>{v();for(let x of Array.from(P.values()))if(D(x),x.socket!==N)try{x.socket.close()}catch{}},h=()=>{if(L)return;if(B<Z.length)return;if(P.size>0)return;if(f!==null)return;L=!0,F(Error("No IdeaWave CLI bridge is reachable"))},y=(N)=>{if(L)return;if(B>=Z.length){h();return}if(P.size>=R)return;if(N<=0){v(),I();return}if(f!==null)return;f=V(()=>{f=null,I()},N)},g=()=>{if(L)return;if(P.size>=R)return;if(P.size===0||Y<=0||R===1){y(0);return}y(Y)},$=(N)=>{if(L)return;let x=P.get(N);if(!x)return;D(x);try{N.close()}catch{}g(),h()};function I(){if(L)return;if(P.size>=R)return;let N=Z[B];if(B+=1,!N){h();return}let x;try{x=X(N)}catch{g(),h();return}let G={open:()=>{if(L||!P.has(x))return;x.send(V4({type:"bridge_probe",protocolVersion:1}))},message:(a)=>{if(L||!P.has(x))return;if(W4(String(a?.data??""))?.type!=="bridge_probe_ack")return;L=!0,C(x),U({url:N,socket:x})},error:()=>$(x),close:()=>$(x)};x.addEventListener("open",G.open),x.addEventListener("message",G.message),x.addEventListener("error",G.error),x.addEventListener("close",G.close);let l=V(()=>$(x),Q);P.set(x,{url:N,socket:x,listeners:G,timer:l}),g()}I()})}var _5=0,k5=30000,S5=15000,P6="http://127.0.0.1",w8="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";async function x6(Z=U6(),X=(Q)=>new L6(Q,{headers:{origin:P6}})){try{let{url:Q,socket:K}=await q6({candidates:Z,createWebSocket:X});try{K.close()}catch{}return Q}catch{return null}}var I5=new Set(["https://ideawave-app-production.up.railway.app"]);function T5(Z){return Z==="ideawave.app"||Z.endsWith(".ideawave.app")}function A5(Z){return Z==="1"||Z?.toLowerCase()==="true"}function u5(Z){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(Z)}function l5(){let Z=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!Z)return c5;let X=new Set;for(let Q of Z.split(",")){let K=Q.trim();if(!K)continue;try{X.add(new URL(K).origin)}catch{}}return X}var c5=new Set;function B6(Z){if(!Z)return!1;let X;try{X=new URL(Z)}catch{return!1}if(I5.has(X.origin))return!0;if(l5().has(X.origin))return!0;if(X.protocol==="https:"&&A5(process.env[w8])&&u5(X.hostname))return!0;if(X.protocol==="https:"&&T5(X.hostname))return!0;if(X.protocol!=="http:"&&X.protocol!=="https:")return!1;return X.hostname==="localhost"||X.hostname==="127.0.0.1"||X.hostname==="::1"}function r0(Z,X){if(Z.readyState!==L6.OPEN)return;try{Z.send(V4(X))}catch{}}function d5(Z){if(typeof Z==="string")return Z;if(Buffer.isBuffer(Z))return Z.toString("utf8");if(Array.isArray(Z))return Buffer.concat(Z).toString("utf8");return Buffer.from(Z).toString("utf8")}function F8(Z){if(typeof Z==="string")return Z;if(Array.isArray(Z))return Z[0]??null;return null}function F6(Z,X,Q){Z.write(`HTTP/1.1 ${X} ${Q}\r
442
+ self.addEventListener("fetch",event=>event.respondWith(proxyRequest(event)));`}function E5(Z){return`<!doctype html><html><body style="font:14px system-ui;padding:24px"><h1>Page unavailable</h1><p>${O0(Z)}</p></body></html>`}function Y4(Z,X){try{let Q=new URL(Z);if(Q.hostname!==`${X.contentHost}.localhost`)return null;if(!Q.pathname.startsWith("/browser/"))return null;let K=Q.searchParams.get("url");return K?w0(K).href:null}catch{return null}}function V6(Z){let X=W4(Z.headers);if(!(/^image\/(?:png|jpeg|gif|webp|avif|bmp|x-icon)$/.test(X)||/^(?:font\/|application\/(?:font-|vnd\.ms-fontobject|x-font-))/.test(X)))return null;return`data:${X};base64,${Buffer.from(Z.body).toString("base64")}`}class U8{fetchResource;sessions=new Map;port=null;sweepTimer;constructor(Z=i2){this.fetchResource=Z;this.sweepTimer=setInterval(()=>this.sweep(),60000),this.sweepTimer.unref?.()}setPort(Z){this.port=Z}origin(Z){if(!this.port)throw Error("Browser proxy is not ready");return`http://${Z}.localhost:${this.port}`}urls(Z){let X=this.origin(Z.contentHost),Q=`session=${encodeURIComponent(Z.id)}&url=`;return{wrapperOrigin:this.origin(Z.wrapperHost),contentOrigin:X,bootPrefix:`${X}/browser/boot?${Q}`,frameBootPrefix:`${X}/browser/boot?session=${encodeURIComponent(Z.id)}&frame=1&url=`,pagePrefix:`${X}/browser/page?${Q}`,framePrefix:`${X}/browser/page?session=${encodeURIComponent(Z.id)}&frame=1&url=`,resourcePrefix:`${X}/browser/resource?${Q}`}}result(Z){let X=this.urls(Z),Q=`${X.wrapperOrigin}/browser/wrapper?session=${encodeURIComponent(Z.id)}&url=${encodeURIComponent(Z.initialUrl)}`;return{proxySessionId:Z.id,wrapperUrl:Q,bridgeToken:Z.bridgeToken,navigateUrlPrefix:X.bootPrefix}}async handleRpc(Z,X,Q){switch(Q.method){case"open_proxy_session":{let K=x5.parse(Q.params),Y=w0(K.url).href,V=R5(X),z=[...this.sessions.values()].find((F)=>F.frontendSessionId===Z&&F.browserNodeId===K.browserNodeId);if(z){if(z.frontendOrigin!==V)throw Error("Browser proxy session origin changed unexpectedly");return z.initialUrl=Y,z.lastUsedAt=Date.now(),this.result(z)}let U={id:e2(),frontendSessionId:Z,frontendOrigin:V,browserNodeId:K.browserNodeId,wrapperHost:`iw-wrapper-${J6()}`,contentHost:`iw-content-${J6()}`,bridgeToken:j6(24).toString("base64url"),initialUrl:Y,currentUrl:Y,currentRevision:null,cache:new Map,cacheBytes:0,activeRequests:0,requestTimestamps:[],lastUsedAt:Date.now()};return this.sessions.set(U.id,U),this.result(U)}case"close_proxy_session":{let K=b5.parse(Q.params),Y=this.sessions.get(K.proxySessionId);if(Y&&Y.frontendSessionId!==Z)throw Error("Browser proxy session belongs to another frontend session");if(Y)this.sessions.delete(Y.id);return{closed:!0}}case"build_snapshot":{let K=O5.parse(Q.params),Y=this.ownedSession(Z,K.proxySessionId);if(Y.currentRevision!==K.revision)throw Error("STALE_BROWSER_REF: inspect the browser again before freezing");return this.buildSnapshot(Y,K.html,K.revision)}}}closeFrontendSession(Z){for(let X of this.sessions.values())if(X.frontendSessionId===Z)this.sessions.delete(X.id)}close(){clearInterval(this.sweepTimer),this.sessions.clear()}ownedSession(Z,X){let Q=this.sessions.get(X);if(!Q||Q.frontendSessionId!==Z)throw Error("Browser proxy session is unavailable");return Q.lastUsedAt=Date.now(),Q}sweep(){let Z=Date.now()-j5;for(let X of this.sessions.values())if(X.lastUsedAt<Z)this.sessions.delete(X.id)}async upstream(Z,X,Q,K={}){let Y=w0(X).href,V=K.cache===!1?void 0:Z.cache.get(Y);if(V)return V.lastUsedAt=Date.now(),V;let z=await this.fetchUpstream(Z,{url:Y,maxBytes:Q,userAgent:K.userAgent,allowAttachment:K.allowAttachment});if(K.cache===!1)return z;let U={...z,lastUsedAt:Date.now()};return Z.cache.set(Y,U),Z.cacheBytes+=z.body.byteLength,this.trimCache(Z),U}async fetchUpstream(Z,X){let Q=Date.now();if(Z.requestTimestamps=Z.requestTimestamps.filter((K)=>Q-K<q5),Z.activeRequests>=H5)throw Error("Browser proxy concurrent request limit exceeded");if(Z.requestTimestamps.length>=U5)throw Error("Browser proxy request rate limit exceeded");Z.activeRequests+=1,Z.requestTimestamps.push(Q);try{return await this.fetchResource(X)}finally{Z.activeRequests-=1}}async googleSearch(Z,X,Q,K){let Y=new URL("https://cse.google.com/cse.js");Y.searchParams.set("cx",Z6);let V=await this.fetchUpstream(Z,{url:Y.href,maxBytes:X6,userAgent:K,allowAttachment:!0});if(V.status!==200)throw Error("Google Search configuration was unavailable");let z=f5(Buffer.from(V.body).toString("utf8")),U=new URL("https://cse.google.com/cse/element/v1");for(let[B,L]of[["rsz","filtered_cse"],["num","10"],["hl",z.language],["source","gcsc"],["cselibv",z.cselibVersion],["cx",Z6],["q",X],["safe","off"],["cse_tok",z.cse_token],["sort",""],["exp",z.exp.join(",")],["fexp",z.fexp.join(",")],["callback",z6],["rurl",Q]])U.searchParams.set(B,L);let F=await this.fetchUpstream(Z,{url:U.href,maxBytes:X6,userAgent:K,allowAttachment:!0});if(F.status!==200)throw Error("Google Search results were unavailable");return h5(Buffer.from(F.body).toString("utf8"))}trimCache(Z){while(Z.cacheBytes>W5&&Z.cache.size>1){let Q=[...Z.cache.entries()].sort((K,Y)=>K[1].lastUsedAt-Y[1].lastUsedAt)[0];if(!Q)break;Z.cache.delete(Q[0]),Z.cacheBytes-=Q[1].body.byteLength}let X=()=>[...this.sessions.values()].reduce((Q,K)=>Q+K.cacheBytes,0);while(X()>V5){let K=[...this.sessions.values()].flatMap((Y)=>[...Y.cache.entries()].map(([V,z])=>({item:Y,key:V,value:z}))).sort((Y,V)=>Y.value.lastUsedAt-V.value.lastUsedAt)[0];if(!K)break;K.item.cache.delete(K.key),K.item.cacheBytes-=K.value.body.byteLength}}async handleHttpRequest(Z,X){let Q=new URL(Z.url??"/","http://localhost");if(!Q.pathname.startsWith("/browser/"))return!1;let K=Q.searchParams.get("session"),Y=K?this.sessions.get(K):null;if(!Y)return X.writeHead(404),X.end(),!0;Y.lastUsedAt=Date.now();let V=C5(Z.headers.host),z=this.urls(Y),U=Q.pathname==="/browser/wrapper"?`${Y.wrapperHost}.localhost`:`${Y.contentHost}.localhost`;if(V!==U)return X.writeHead(403),X.end(),!0;let F=K6(Z.headers.origin),B=new Set([Y.frontendOrigin,z.wrapperOrigin,z.contentOrigin]);if(Z.headers.origin!==void 0&&(!F||!B.has(F)))return X.writeHead(403,{vary:"Origin"}),X.end(),!0;if(Z.method==="OPTIONS"){if(!F)return X.writeHead(403,{vary:"Origin"}),X.end(),!0;let L={"access-control-allow-origin":F,"access-control-allow-methods":"GET, HEAD, OPTIONS",vary:"Origin"};if(K6(Z.headers["access-control-request-private-network"])?.toLowerCase()==="true")L["access-control-allow-private-network"]="true";return X.writeHead(204,L),X.end(),!0}if(Z.method!=="GET"&&Z.method!=="HEAD")return X.writeHead(405),X.end(),!0;try{if(Q.pathname==="/browser/wrapper"){let f=w0(Q.searchParams.get("url")??Y.initialUrl).href,x=`${z.bootPrefix}${encodeURIComponent(f)}`;return this.sendHtml(X,$5({bridgeToken:Y.bridgeToken,contentOrigin:z.contentOrigin,frontendOrigin:Y.frontendOrigin,bootUrl:x}),Z.method==="HEAD",200,Y.frontendOrigin,z.contentOrigin,F),!0}if(Q.pathname==="/browser/sw.js")return X.writeHead(200,{...K4("text/javascript; charset=utf-8",F),"service-worker-allowed":"/"}),X.end(Z.method==="HEAD"?void 0:g5({contentOrigin:z.contentOrigin,bootPrefix:z.bootPrefix,resourcePrefix:z.resourcePrefix})),!0;let L=w0(Q.searchParams.get("url")??"").href;if(Q.pathname==="/browser/boot"){let x=`${Q.searchParams.get("frame")==="1"?z.framePrefix:z.pagePrefix}${encodeURIComponent(L)}`;return this.sendHtml(X,G5({serviceWorkerUrl:`${z.contentOrigin}/browser/sw.js?session=${encodeURIComponent(Y.id)}`,pageUrl:x}),Z.method==="HEAD",200,void 0,void 0,F),!0}if(Q.pathname==="/browser/page"){let f=Q.searchParams.get("frame")==="1",x=y5(L),C=null,y;if(x===null)C=await this.upstream(Y,L,d2,{cache:!1,userAgent:Y6(Z.headers["user-agent"])}),y=Buffer.from(C.body).toString("utf8");else{let v=await this.googleSearch(Y,x,L,Y6(Z.headers["user-agent"]));y=D5(x,v)}if(C){let v=W4(C.headers);if(v!=="text/html"&&v!=="application/xhtml+xml")throw Error("The target did not return an HTML page")}let D=C?.url??L,R=e2();if(!f)Y.currentUrl=D,Y.currentRevision=R;let h=t2({html:y,baseUrl:D,bridgeToken:Y.bridgeToken,revision:R,navigateUrlPrefix:z.bootPrefix,resourceUrlPrefix:z.resourcePrefix,parentOrigin:z.wrapperOrigin,injectBridge:!f,urls:{page:(v)=>`${f?z.frameBootPrefix:z.bootPrefix}${encodeURIComponent(v)}`,frame:(v)=>`${z.framePrefix}${encodeURIComponent(v)}`,resource:(v)=>`${z.resourcePrefix}${encodeURIComponent(v)}`}});return this.sendHtml(X,h,Z.method==="HEAD",200,void 0,void 0,F),!0}if(Q.pathname==="/browser/resource"){if(v5(Z))return X.writeHead(403,{"content-type":"text/plain; charset=utf-8","x-content-type-options":"nosniff"}),X.end(Z.method==="HEAD"?void 0:"Target resources cannot be installed as service workers."),!0;let f=await this.upstream(Y,L,J4),x=W4(f.headers),C=Buffer.from(f.body);if(x==="text/css")C=Buffer.from(w1({css:C.toString("utf8"),baseUrl:f.url,resourceUrl:(y)=>`${z.resourcePrefix}${encodeURIComponent(y)}`}),"utf8");return X.writeHead(f.status,{...K4(f.headers["content-type"]??x,F),"content-length":String(C.byteLength)}),X.end(Z.method==="HEAD"?void 0:C),!0}return X.writeHead(404),X.end(),!0}catch(L){let f=L instanceof Error?L.message:"Browser proxy failed";return this.sendHtml(X,E5(f),Z.method==="HEAD",502,void 0,void 0,F),!0}}sendHtml(Z,X,Q,K=200,Y,V,z){let U=Buffer.from(X,"utf8"),F=K4("text/html; charset=utf-8",z);if(V)F["content-security-policy"]=F["content-security-policy"].replace("frame-src 'self'",`frame-src 'self' ${new URL(V).origin}`);if(Y)F["content-security-policy"]=`${F["content-security-policy"]}; frame-ancestors ${new URL(Y).origin}`;Z.writeHead(K,{...F,"content-length":String(U.byteLength)}),Z.end(Q?void 0:U)}async snapshotUpstream(Z,X,Q){if(Q.remaining<=0)return null;return Q.remaining-=1,Q.resourceCount+=1,this.upstream(Z,X,J4)}async inlineCss(Z,X,Q,K){let Y=new Set;try{let U=V4.parse(X,{context:"stylesheet",parseCustomProperty:!0});V4.walk(U,(F)=>{if(F.type!=="Url")return;try{let B=Y4(F.value,Z);Y.add(B??new URL(F.value,Q).href)}catch{}})}catch{return""}let V=new Map,z=[...Y].slice(0,K.remaining);for(let U=0;U<z.length;U+=Q6)await Promise.all(z.slice(U,U+Q6).map(async(F)=>{try{let B=await this.snapshotUpstream(Z,F,K);if(!B)return;let L=V6(B);if(L)V.set(F,L)}catch{}}));return w1({css:X,baseUrl:Q,resourceUrl:(U)=>V.get(Y4(U,Z)??U)??"data:,"})}async inlineSnapshotTree(Z,X,Q){let K=[];for(let Y of X.childNodes){if(M5(Y)){let V=Y.tagName.toLowerCase();if(V==="link"&&(H8(Y,"rel")??"").toLowerCase().includes("stylesheet")){let z=H8(Y,"href"),U=z?Y4(z,Z)??z:null;if(U)try{let F=await this.snapshotUpstream(Z,U,Q);if(!F)continue;if(W4(F.headers)==="text/css")Y.tagName="style",Y.nodeName="style",Y.attrs=[],Y.childNodes=[{nodeName:"#text",value:await this.inlineCss(Z,Buffer.from(F.body).toString("utf8"),F.url,Q),parentNode:Y}]}catch{continue}}if(V==="style"){for(let z of Y.childNodes)if("value"in z&&typeof z.value==="string")z.value=await this.inlineCss(Z,z.value,Z.currentUrl,Q)}if(V==="img"){let z=H8(Y,"src"),U=z?Y4(z,Z)??z:null;if(U&&!U.startsWith("data:"))try{let F=await this.snapshotUpstream(Z,U,Q),B=F?V6(F):null;W6(Y,"src",B??"data:,")}catch{W6(Y,"src","data:,")}}await this.inlineSnapshotTree(Z,Y,Q)}K.push(Y)}X.childNodes=K}async buildSnapshot(Z,X,Q){if(Buffer.byteLength(X,"utf8")>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let K=a0(X),Y={remaining:B5,resourceCount:0};await this.inlineSnapshotTree(Z,K,Y);let V=k0(K),z=u2(V),U=V.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()??"";return{html:z,sourceUrl:Z.currentUrl,title:U,revision:Q,byteLength:Buffer.byteLength(z,"utf8"),resourceCount:Y.resourceCount,createdAt:new Date().toISOString()}}}import{randomUUID as _5}from"node:crypto";import{createServer as k5}from"node:http";import{WebSocket as L6,WebSocketServer as S5}from"ws";var q8="/cli-bridge",H6="/ping";function B8(Z=43275,X=43277){let Q=[];for(let K=Z;K<=X;K+=1)Q.push(K);return Q}function U6(Z=B8(),X="127.0.0.1",Q="/cli-bridge"){return Z.map((K)=>`ws://${X}:${K}${Q}`)}var m5=800;function q6({candidates:Z,createWebSocket:X,timeoutMs:Q=m5,maxConcurrent:K=1,staggerMs:Y=0,setTimeoutFn:V=setTimeout,clearTimeoutFn:z=clearTimeout}){return new Promise((U,F)=>{let B=0,L=!1,f=null,x=new Map,C=Math.max(1,Math.floor(K)),y=()=>{if(f===null)return;z(f),f=null},D=(N)=>{let{socket:P,listeners:G,timer:l}=N;P.removeEventListener("open",G.open),P.removeEventListener("message",G.message),P.removeEventListener("error",G.error),P.removeEventListener("close",G.close),z(l),x.delete(P)},R=(N)=>{y();for(let P of Array.from(x.values()))if(D(P),P.socket!==N)try{P.socket.close()}catch{}},h=()=>{if(L)return;if(B<Z.length)return;if(x.size>0)return;if(f!==null)return;L=!0,F(Error("No IdeaWave CLI bridge is reachable"))},v=(N)=>{if(L)return;if(B>=Z.length){h();return}if(x.size>=C)return;if(N<=0){y(),I();return}if(f!==null)return;f=V(()=>{f=null,I()},N)},g=()=>{if(L)return;if(x.size>=C)return;if(x.size===0||Y<=0||C===1){v(0);return}v(Y)},$=(N)=>{if(L)return;let P=x.get(N);if(!P)return;D(P);try{N.close()}catch{}g(),h()};function I(){if(L)return;if(x.size>=C)return;let N=Z[B];if(B+=1,!N){h();return}let P;try{P=X(N)}catch{g(),h();return}let G={open:()=>{if(L||!x.has(P))return;P.send(y1({type:"bridge_probe",protocolVersion:1}))},message:(a)=>{if(L||!x.has(P))return;if(v1(String(a?.data??""))?.type!=="bridge_probe_ack")return;L=!0,R(P),U({url:N,socket:P})},error:()=>$(P),close:()=>$(P)};P.addEventListener("open",G.open),P.addEventListener("message",G.message),P.addEventListener("error",G.error),P.addEventListener("close",G.close);let l=V(()=>$(P),Q);x.set(P,{url:N,socket:P,listeners:G,timer:l}),g()}I()})}var I5=0,T5=30000,A5=15000,P6="http://127.0.0.1",w8="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";async function x6(Z=U6(),X=(Q)=>new L6(Q,{headers:{origin:P6}})){try{let{url:Q,socket:K}=await q6({candidates:Z,createWebSocket:X});try{K.close()}catch{}return Q}catch{return null}}var u5=new Set(["https://ideawave-app-production.up.railway.app"]);function l5(Z){return Z==="ideawave.app"||Z.endsWith(".ideawave.app")}function c5(Z){return Z==="1"||Z?.toLowerCase()==="true"}function d5(Z){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(Z)}function a5(){let Z=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!Z)return i5;let X=new Set;for(let Q of Z.split(",")){let K=Q.trim();if(!K)continue;try{X.add(new URL(K).origin)}catch{}}return X}var i5=new Set;function B6(Z){if(!Z)return!1;let X;try{X=new URL(Z)}catch{return!1}if(u5.has(X.origin))return!0;if(a5().has(X.origin))return!0;if(X.protocol==="https:"&&c5(process.env[w8])&&d5(X.hostname))return!0;if(X.protocol==="https:"&&l5(X.hostname))return!0;if(X.protocol!=="http:"&&X.protocol!=="https:")return!1;return X.hostname==="localhost"||X.hostname==="127.0.0.1"||X.hostname==="::1"}function r0(Z,X){if(Z.readyState!==L6.OPEN)return;try{Z.send(y1(X))}catch{}}function p5(Z){if(typeof Z==="string")return Z;if(Buffer.isBuffer(Z))return Z.toString("utf8");if(Array.isArray(Z))return Buffer.concat(Z).toString("utf8");return Buffer.from(Z).toString("utf8")}function F8(Z){if(typeof Z==="string")return Z;if(Array.isArray(Z))return Z[0]??null;return null}function F6(Z,X,Q){Z.write(`HTTP/1.1 ${X} ${Q}\r
412
443
  Connection: close\r
413
444
  Content-Length: ${Buffer.byteLength(Q)}\r
414
445
  \r
415
- ${Q}`),Z.destroy()}function a5(Z,X){return new Promise((Q,K)=>{let Y=(z)=>{Z.off("listening",V),K(z)},V=()=>{Z.off("error",Y);let z=Z.address();if(!z||typeof z==="string"){K(Error("Failed to read CLI bridge server address"));return}Q(z.port)};Z.once("error",Y),Z.once("listening",V),Z.listen(X,"127.0.0.1")})}function w6(Z){return new Promise((X,Q)=>{Z.close((K)=>{if(K)Q(K);else X()})})}async function b6(Z,X=B8()){let Q=new Map,K=new Map,Y=Z.maxMessageSize??_5,V=!1,z=(P)=>{let R=K.get(P);if(R)clearTimeout(R);K.delete(P)},U=(P)=>{K.delete(P);let{activeRunIds:R}=Z.registry.disconnect(P);Z.onDisconnect(P,R)},F=(P,R)=>{let v={type:"cli_status",connected:!0,runtime:Z.runtime,mcpReady:Z.mcpReady(),error:R,capabilities:Z.capabilities??[],cliVersion:Z.cliVersion};if(P){let D=Q.get(P);if(D)r0(D,v);return}for(let D of Q.values())r0(D,v)},B=(P,R)=>{let v=R.sessionId.trim(),D=R.userId.trim();if(!v||!D){r0(P,{type:"cli_status",connected:!1,runtime:Z.runtime,mcpReady:Z.mcpReady(),error:"Missing frontend session or user id"}),P.close();return}z(v);let C=Q.get(v);if(C&&C!==P)C.close();P.data.frontendSessionId=v,Q.set(v,P),Z.registry.register({frontendSessionId:v,userId:D,tools:R.tools,send:(h)=>r0(P,h)}),F(v),Z.onToolMetadata?.(v)},L=(P,R)=>{let v=Z.registry.getUserId(P);if(!v)return;switch(R.type){case"bridge_ping":{let D=Q.get(P);if(D)r0(D,{type:"bridge_pong"});break}case"tool_metadata":Z.registry.setMetadata(P,R.tools),Z.onToolMetadata?.(P);break;case"tool_result":Z.registry.handleToolResult(P,R);break;case"run_turn":E("bridge.run_received",{runId:R.run.runId,cardId:R.run.cardId,frontendSessionId:P}),Z.registry.markRunActive(P,R.run.runId,R.run.cardId),Z.onRunTurn(P,{...R.run,frontendSessionId:P,userId:v});break;case"cancel_run":if(Z.registry.ownsRun(P,R.runId))Z.onCancelRun(P,R.runId);break;case"runtime_rpc":Z.onRuntimeRpc(P,R);break;case"browser_rpc":Z.onBrowserRpc?.(P,Q.get(P)?.data.frontendOrigin??"",R);break;case"warmup_run":Z.onWarmupRun(P,{...R,frontendSessionId:P},v);break;default:break}},f=(P,R)=>{let v=F8(P.headers.origin),D=B6(v),C={Vary:"Origin"};if(D&&v)C["Access-Control-Allow-Origin"]=v,C["Access-Control-Allow-Private-Network"]="true";if(P.method==="OPTIONS"){R.writeHead(204,{...C,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),R.end();return}if(P.method!=="GET"){R.writeHead(405,C),R.end();return}R.writeHead(200,{...C,"content-type":"application/json","cache-control":"no-store"}),R.end(JSON.stringify({ideawave:!0,runtime:Z.runtime,mcpReady:Z.mcpReady(),capabilities:Z.capabilities??[],cliVersion:Z.cliVersion}))};for(let P of X){let R=E5((C,h)=>{(async()=>{if(new URL(C.url??"/","http://127.0.0.1").pathname===H6){f(C,h);return}if(await Z.onHttpRequest?.(C,h))return;h.writeHead(404,{"content-type":"text/plain"}),h.end("IdeaWave CLI bridge")})().catch((y)=>{if(h.headersSent){h.destroy(y instanceof Error?y:void 0);return}h.writeHead(500,{"content-type":"text/plain"}),h.end("IdeaWave CLI bridge request failed")})}),v=new m5({noServer:!0,maxPayload:Y}),D=(C)=>{if(C.idleTimer)clearTimeout(C.idleTimer);C.idleTimer=setTimeout(()=>{C.close()},k5),C.idleTimer.unref?.()};v.on("connection",(C,h)=>{let y=C;y.data={id:g5(),frontendSessionId:null,frontendOrigin:new URL(F8(h.headers.origin)??P6).origin},y.idleTimer=null,D(y),y.on("ping",()=>D(y)),y.on("pong",()=>D(y)),y.on("error",()=>{if(y.idleTimer)clearTimeout(y.idleTimer);y.close()}),y.on("message",(g)=>{D(y);let $=d5(g);if(Y>0&&$.length>Y)return;let I=W4($);if(!I)return;let N=y.data.frontendSessionId;if(!N){if(I.type==="bridge_probe")r0(y,{type:"bridge_probe_ack",protocolVersion:I.protocolVersion});else if(I.type==="frontend_hello")B(y,I);return}L(N,I)}),y.on("close",()=>{if(y.idleTimer)clearTimeout(y.idleTimer);let g=y.data.frontendSessionId;if(!g)return;if(Q.get(g)!==y)return;if(Q.delete(g),z(g),V)return;K.set(g,setTimeout(()=>U(g),S5))})}),R.on("upgrade",(C,h,y)=>{if(new URL(C.url??"/","http://127.0.0.1").pathname!==q8){F6(h,404,"Not Found");return}if(!B6(F8(C.headers.origin))){F6(h,403,"Forbidden");return}v.handleUpgrade(C,h,y,($)=>{v.emit("connection",$,C)})});try{let C=await a5(R,P);return{url:`ws://127.0.0.1:${C}${q8}`,port:C,sendStatus:F,close:async()=>{V=!0;for(let h of K.values())clearTimeout(h);K.clear();for(let h of v.clients){let y=h;if(y.idleTimer)clearTimeout(y.idleTimer);y.close()}v.close(),await w6(R).catch(()=>{return})}}}catch(C){if(v.close(),await w6(R).catch(()=>{return}),C?.code==="EADDRINUSE")continue;throw C}}throw Error(`No free IdeaWave CLI bridge port found in ${X[0]}-${X.at(-1)}`)}import{Server as YQ}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as WQ,ListToolsRequestSchema as VQ}from"@modelcontextprotocol/sdk/types.js";import{randomUUID as p5}from"node:crypto";import{createServer as s5}from"node:http";import{StreamableHTTPServerTransport as r5}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as v6}from"@modelcontextprotocol/sdk/types.js";var O6=new Set(["127.0.0.1","localhost","[::1]","::1"]);function i5(Z){let X=Z.trim();if(X.length===0)return null;if(X.startsWith("[")){let V=X.indexOf("]");if(V===-1)return null;let z=X.slice(0,V+1),U=X.slice(V+1);if(U.length===0)return{host:z,port:null};if(!U.startsWith(":"))return null;let F=Number(U.slice(1));if(!Number.isInteger(F)||F<=0||F>65535)return null;return{host:z,port:F}}let Q=X.lastIndexOf(":");if(Q===-1)return{host:X,port:null};let K=X.slice(Q+1),Y=Number(K);if(!Number.isInteger(Y)||Y<=0||Y>65535)return{host:X,port:null};return{host:X.slice(0,Q),port:Y}}function C6(Z){return O6.has(Z)||O6.has(Z.toLowerCase())}function R6(Z,X){let Q=Z.headers.host;if(typeof Q!=="string")return{ok:!1,status:403,reason:"missing-host"};let K=i5(Q);if(!K)return{ok:!1,status:403,reason:"bad-host"};if(!C6(K.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(K.port!==null&&K.port!==X)return{ok:!1,status:403,reason:"host-port-mismatch"};let Y=Z.headers.origin;if(typeof Y==="string"&&Y.length>0){if(Y!=="null"){let V;try{V=new URL(Y)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!C6(V.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var y6="/mcp",o5=43274,h6=16777216,n5=1800000,t5=300000,f6=200,e5=-32700,h0=-32600,L8=-32603;function V0(Z,X,Q,K,Y){Z.statusCode=X,Z.setHeader("content-type","application/json"),Z.end(JSON.stringify({jsonrpc:"2.0",error:{code:Q,message:K,...Y?{data:Y}:{}},id:null}))}class P8 extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class x8 extends Error{constructor(){super(`body exceeds ${h6} bytes`);this.name="BodyTooLargeError"}}async function ZQ(Z){if(Z.method&&Z.method!=="POST")return;let X=Z.headers["content-type"];if(typeof X==="string"&&X.trim().length>0){if(!X.toLowerCase().includes("application/json"))throw new P8}let Q=0,K=[];for await(let V of Z){let z=typeof V==="string"?Buffer.from(V):V;if(Q+=z.byteLength,Q>h6)throw new x8;K.push(z)}if(K.length===0)return;let Y=Buffer.concat(K).toString("utf8");if(Y.length===0)return;return JSON.parse(Y)}function XQ(Z){if(Array.isArray(Z))return Z.some(v6);return v6(Z)}function QQ(Z){if(typeof Z==="number")return Z;let X=process.env.IDEAWAVE_MCP_PORT;if(X&&X.trim().length>0){let Q=Number(X);if(Number.isInteger(Q)&&Q>=0&&Q<65536)return Q}return o5}async function JQ(Z,X){let Q=(Y)=>new Promise((V,z)=>{let U=(B)=>{Z.off("listening",F),z(B)},F=()=>{Z.off("error",U),V()};Z.once("error",U),Z.once("listening",F),Z.listen(Y,"127.0.0.1")});try{await Q(X)}catch(Y){if(Y.code!=="EADDRINUSE"||X===0)throw Y;console.warn(`[mcp] port ${X} in use, falling back to an OS-assigned port; external CLIs will need to re-paste the install command from Settings → External agents`),await Q(0)}let K=Z.address();if(K==null||typeof K==="string")throw Error("[mcp] failed to read bound address");return K.port}function KQ(Z,X){if(X&&typeof X==="object"&&!Array.isArray(X)){let K=X.params;if(K&&typeof K==="object"&&!Array.isArray(K)){let Y=K.clientInfo;if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let V=Y.name;if(typeof V==="string"&&V.trim().length>0)return V.trim()}}}let Q=Z.headers["user-agent"];if(typeof Q==="string"&&Q.trim().length>0)return Q.trim();return null}async function M6(Z){let X=new Map,Q=0;function K(B){let L=X.get(B);if(L)L.lastActivity=Date.now()}async function Y(B,L){X.delete(B),await L.transport.close().catch(()=>{return})}async function V(){let B=null,L=1/0;for(let[f,P]of X)if(P.lastActivity<L)L=P.lastActivity,B=f;if(B!==null){let f=X.get(B);if(f)console.warn(`[mcp] session cap of ${f6} reached; evicting ${B}`),await Y(B,f)}}let z=setInterval(()=>{let B=Date.now()-n5;for(let[L,f]of X)if(f.lastActivity<B)console.log(`[mcp] sweeping idle session ${L}`),Y(L,f)},t5);z.unref?.();let U=s5((B,L)=>{(async()=>{let f;try{f=new URL(B.url??"/","http://127.0.0.1").pathname}catch{V0(L,400,h0,"bad-url");return}if(f!==y6){V0(L,404,h0,"not-found");return}let P=B.method??"POST";if(P!=="POST"&&P!=="GET"&&P!=="DELETE"){L.setHeader("Allow","GET, POST, DELETE"),V0(L,405,h0,"method-not-allowed");return}let R=R6(B,Q);if(!R.ok){V0(L,R.status,h0,"forbidden",{reason:R.reason});return}let v=B.headers["mcp-session-id"],D=typeof v==="string"?v:void 0;if(P==="GET"||P==="DELETE"){if(!D||!X.has(D)){V0(L,400,h0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let y=X.get(D).transport;K(D);try{await y.handleRequest(B,L)}catch(g){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",g),!L.headersSent)V0(L,500,L8,"internal")}return}let C;try{C=await ZQ(B)}catch(y){if(y instanceof P8){V0(L,415,h0,"expected-application-json");return}if(y instanceof x8){V0(L,413,h0,"body-too-large");return}V0(L,400,e5,"invalid-json");return}let h;if(D&&X.has(D))h=X.get(D).transport,K(D);else if(!D&&C!==void 0&&XQ(C)){let y=B.headers["x-ideawave-user-id"],g=typeof y==="string"&&y.trim().length>0?y.trim():null,$=B.headers["x-ideawave-frontend-session-id"],I=typeof $==="string"&&$.trim().length>0?$.trim():null,N=B.headers["x-ideawave-tool-surface"],x=typeof N==="string"&&N.trim()==="read"?"read":"full",G=B.headers["x-ideawave-images-supported"],l=typeof G==="string"&&G.trim()==="1",a=B.headers["x-ideawave-card-id"],T0=typeof a==="string"&&a.trim().length>0?a.trim():null,C0=B.headers["x-ideawave-board-id"],_=typeof C0==="string"&&C0.trim().length>0?C0.trim():null,i=B.headers["x-ideawave-run-folder"],u=typeof i==="string"&&i.trim().length>0?i.trim():null,Z0=KQ(B,C);if(X.size>=f6)await V();let s=null,N0=new r5({sessionIdGenerator:()=>p5(),onsessioninitialized:(A0)=>{s=A0,X.set(A0,{transport:N0,lastActivity:Date.now()})},onsessionclosed:(A0)=>{X.delete(A0)}});N0.onclose=()=>{if(N0.sessionId)X.delete(N0.sessionId)};try{await Z.buildServer({userId:g,frontendSessionId:I,boardId:_,toolSurface:x,imagesSupported:l,cardId:T0,runFolder:u,clientHint:Z0}).connect(N0)}catch(A0){if(console.error("[mcp] buildServer/connect failed",A0),s)X.delete(s);await N0.close().catch(()=>{return}),V0(L,500,L8,"server-init-failed");return}h=N0}else{V0(L,400,h0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await h.handleRequest(B,L,C)}catch(y){if(console.error("[mcp] transport.handleRequest threw",y),!L.headersSent)V0(L,500,L8,"internal")}})().catch((f)=>{console.error("[mcp] unhandled request handler error:",f)})});return Q=await JQ(U,QQ(Z.port)),{url:`http://127.0.0.1:${Q}${y6}`,port:Q,close:async()=>{clearInterval(z);for(let B of X.values())await B.transport.close().catch(()=>{return});X.clear(),await new Promise((B)=>U.close(()=>B()))}}}var jQ={name:"ideawave-board",version:"1.0.0"},j4="list_run_folder",z4="read_run_folder_file",$6=new Set(["list_boards","get_board","list_nodes","list_edges","inspect_node","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","get_card_messages","list_agent_cards","inspect_neighbors",j4,z4]),G6=new Set(["inspect_diagram"]),zQ=[{name:j4,description:"List visible files and folders under the selected runtime run folder. Hidden/config folders are omitted.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Optional relative path inside the selected run folder. Defaults to the run-folder root."}},additionalProperties:!1}},{name:z4,description:"Read a text file inside the selected runtime run folder. Hidden/config paths and outside-folder paths are denied.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative path to a text file inside the selected run folder."}},required:["path"],additionalProperties:!1}}];function b8(Z){return{content:[{type:"text",text:Z}]}}function HQ(Z){return b8(JSON.stringify(Z,null,2))}function N6(Z){return{...b8(Z),isError:!0}}function UQ(Z,X,Q="full",K=!1){return Z.getMetadata(X).filter((Y)=>{let V=_1(Y.name);if(Q==="read"&&!$6.has(V))return!1;if(!K&&G6.has(V))return!1;return!0}).map((Y)=>({name:Y.name,description:Y.description,inputSchema:Y.inputSchema}))}function qQ(Z,X,Q={}){let K=UQ(Z,X,Q.toolSurface??"full",Q.imagesSupported??!1);return Q.includeRunFolderTools?[...K,...zQ]:K}function D6(Z,X){if(!Z||typeof Z!=="object"||Array.isArray(Z))return null;let Q=Z[X];return typeof Q==="string"?Q:null}async function BQ(Z,X,Q){if(Q&&Q.trim().length>0)return Q.trim();if(!Z||!X)throw Error("Run-folder tools require an active IdeaWave board and card.");return(await y0({boardId:Z,cardId:X})).runFolder}async function FQ(Z){let X=await BQ(Z.boardId,Z.cardId,Z.runFolder);if(Z.name===j4){let Q=D6(Z.args,"path")??"",K=await w9(X,Q);return HQ(K)}if(Z.name===z4){let Q=D6(Z.args,"path");if(!Q)return N6("read_run_folder_file requires a path.");return b8(await m1(X,Q))}return N6(`Unknown local tool "${Z.name}"`)}function wQ(Z,X,Q,K,Y,V="full",z=!1){let U=new YQ(jQ,{capabilities:{tools:{}}}),F=async()=>{if(z)return!0;if(_9(K))return!0;if(Q&&K)try{return(await y0({boardId:Q,cardId:K})).adapter.supportsImages===!0}catch{return!1}return!1};return U.setRequestHandler(VQ,async()=>({tools:qQ(Z,X,{includeRunFolderTools:Boolean(Y||Q&&K),toolSurface:V,imagesSupported:await F()})})),U.setRequestHandler(WQ,async(B)=>{let{name:L,arguments:f}=B.params,P=_1(L),R=Date.now();E("mcp.tool_call_received",{frontendSessionId:X,cardId:K,toolName:P});try{if(P===j4||P===z4)return await FQ({name:P,args:f,boardId:Q,cardId:K,runFolder:Y});if(V==="read"&&!$6.has(P))throw Error(`Tool "${L}" is not available in read-only mode`);if(G6.has(P)&&!await F())throw Error(`Tool "${L}" requires a runtime that supports image input`);let v=await Z.callTool(X,P,f??{},void 0,K??void 0);if(E("mcp.tool_result_returned",{frontendSessionId:X,cardId:K,toolName:P,elapsedMs:Date.now()-R}),v&&typeof v==="object"&&Array.isArray(v.content))return v;return{content:[{type:"text",text:typeof v==="string"?v:JSON.stringify(v)}]}}catch(v){return E("mcp.tool_result_returned",{frontendSessionId:X,cardId:K,toolName:P,elapsedMs:Date.now()-R,hasError:!0}),{content:[{type:"text",text:v instanceof Error?v.message:"Tool call failed"}],isError:!0}}}),U}function g6(Z,X){return M6({buildServer:(Q)=>wQ(Z,Q.frontendSessionId,Q.boardId,Q.cardId,Q.runFolder,Q.toolSurface,Q.imagesSupported),port:X})}import H4 from"node:fs/promises";import O8 from"node:os";import U4 from"node:path";function E6(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function LQ(){let[Z,X]=await Promise.all([K0(),H9()]),Q=Z.globalDefaultConfigId?Z.runtimes.find((K)=>K.id===Z.globalDefaultConfigId)??null:null;return{runtimes:Z.runtimes,globalDefaultConfigId:Z.globalDefaultConfigId,globalDefaultEffective:Q?{runFolder:Q.runFolder??O8.homedir(),modelId:Q.defaultModelId??null,configValues:Q.defaultConfigValues??{}}:null,knownAdapters:c0().map((K)=>({id:K.id,displayName:K.displayName})),readiness:X}}async function PQ(Z){try{let X=await y0({boardId:Z.boardId,cardId:Z.cardId});return{resolved:{configId:X.entry.id,adapterId:X.entry.kind==="registered"?X.entry.adapterId:null,displayName:X.entry.displayName,runFolder:X.runFolder,modelId:X.modelId,configValues:X.configValues}}}catch(X){if(X instanceof D0)return{resolved:null};throw X}}async function xQ(Z){return j0((X)=>{let Q=X.runtimes.find((V)=>V.kind==="registered"&&V.adapterId===Z.adapterId);if(Q)return Q;let K=c0().find((V)=>V.id===Z.adapterId);if(!K)throw Error(`Unknown adapterId: ${Z.adapterId}`);let Y={id:E6(),kind:"registered",adapterId:Z.adapterId,displayName:K.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return X.runtimes.push(Y),Y})}async function bQ(Z){return j0((X)=>{let Q={id:E6(),kind:"custom",displayName:Z.displayName,command:Z.command,args:Z.args,env:Z.env,runFolder:Z.runFolder,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return X.runtimes.push(Q),Q})}async function OQ(Z){await j0((X)=>{if(X.runtimes=X.runtimes.filter((Q)=>Q.id!==Z.runtimeConfigId),X.globalDefaultConfigId===Z.runtimeConfigId)X.globalDefaultConfigId=null;for(let Q of Object.keys(X.boardOverrides))if(X.boardOverrides[Q].runtimeConfigId===Z.runtimeConfigId)delete X.boardOverrides[Q];for(let Q of Object.keys(X.cardOverrides))if(X.cardOverrides[Q].runtimeConfigId===Z.runtimeConfigId)delete X.cardOverrides[Q]})}async function CQ(Z){await j0((X)=>{let Q=X.runtimes.find((K)=>K.id===Z.runtimeConfigId);if(!Q)throw Error(`Runtime config not found: ${Z.runtimeConfigId}`);if(X.globalDefaultConfigId=Z.runtimeConfigId,Z.runFolder!==void 0)Q.runFolder=Z.runFolder;if(Z.modelId!==void 0)Q.defaultModelId=Z.modelId;if(Z.configValues!==void 0)Q.defaultConfigValues=Z.configValues})}async function RQ(Z){Z.boardId,await j0((X)=>{if(Z.runtimeConfigId===null){delete X.cardOverrides[Z.cardId];return}if(!X.runtimes.some((Y)=>Y.id===Z.runtimeConfigId))throw Error(`Runtime config not found: ${Z.runtimeConfigId}`);let K=X.cardOverrides[Z.cardId];X.cardOverrides[Z.cardId]={runtimeConfigId:Z.runtimeConfigId,runFolder:Z.runFolder!==void 0?Z.runFolder:K?.runFolder??null,modelId:Z.modelId!==void 0?Z.modelId:K?.modelId??null,configValues:Z.configValues!==void 0?Z.configValues:K?.configValues??{}}})}async function vQ(Z){let Q=(await K0()).runtimes.find((z)=>z.id===Z.runtimeConfigId);if(!Q)throw Error(`Runtime config not found: ${Z.runtimeConfigId}`);let K=B0(Q),Y=await K.resolveSpawnConfig(Q),V=Q.runFolder??O8.homedir();try{let z=await G9({spawn:{...Y,cwd:V},modelId:Z.modelId??Q.defaultModelId??null,configValues:Z.configValues??Q.defaultConfigValues??{}}),U=g1({adapterId:K.id,models:z.models,currentModelId:z.currentModelId}),F=new Date().toISOString();return await j0((B)=>{let L=B.runtimes.find((f)=>f.id===Z.runtimeConfigId);if(L)L.discoveredModels=U,L.discoveredConfigOptions=z.configOptions,L.discoveredAt=F}),{ok:!0,models:U,configOptions:z.configOptions,currentModelId:z.currentModelId}}catch(z){if(z instanceof u0)throw Error(`${z.message}${K.authHint?` ${K.authHint}`:""}`);if(z instanceof k||z instanceof q0)throw Error(z.message);throw z}}async function yQ(Z){let X=O8.homedir(),Q=Z.path?.trim()?Z.path.trim():X,K=U4.resolve(Q),Y=!0;try{if(!(await H4.stat(K)).isDirectory())K=U4.dirname(K)}catch{Y=!1,K=X}let V=[];try{V=(await H4.readdir(K,{withFileTypes:!0})).filter((F)=>F.isDirectory()&&!F.name.startsWith(".")).map((F)=>({name:F.name,path:U4.join(K,F.name)})).sort((F,B)=>F.name.localeCompare(B.name))}catch{V=[]}let z=U4.dirname(K);return{path:K,parent:z===K?null:z,home:X,exists:Y,entries:V}}var m6={list:LQ,getEffectiveForCard:PQ,registerRegistered:xQ,registerCustom:bQ,unregister:OQ,setUserDefault:CQ,setCardOverride:RQ,refreshModels:vQ,browseFolder:yQ};var fQ=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function hQ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function _6(){try{let Z=await K0();if(Z.globalDefaultConfigId){if(Z.runtimes.some((Q)=>Q.id===Z.globalDefaultConfigId))return Z.globalDefaultConfigId}for(let X of fQ){if((await U9(X.id))?.status!=="ready")continue;let K=null;if(await j0((Y)=>{if(Y.globalDefaultConfigId){if(Y.runtimes.some((U)=>U.id===Y.globalDefaultConfigId)){K=Y.globalDefaultConfigId;return}}let V=Y.runtimes.find((z)=>z.kind==="registered"&&z.adapterId===X.id);if(!V){let z={id:hQ(),kind:"registered",adapterId:X.id,displayName:X.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};Y.runtimes.push(z),V=z}Y.globalDefaultConfigId=V.id,K=V.id}),K)return console.log(`[ideawave-cli] using agent runtime: ${X.displayName}`),K}return console.warn("[ideawave-cli] no agent runtime detected on PATH (tried claude, codex, gh copilot, opencode). Install one to run agents."),null}catch(Z){return console.warn("[ideawave-cli] runtime auto-seed failed",Z),null}}var MQ=120000;function NQ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class C8{sessions=new Map;createCallId;toolCallTimeoutMs;constructor(Z={}){this.createCallId=Z.createCallId??NQ,this.toolCallTimeoutMs=Z.toolCallTimeoutMs??MQ}register(Z){let X=this.sessions.get(Z.frontendSessionId);if(X){if(X.userId!==Z.userId)this.rejectPending(X,"frontend session user changed"),X.activeRunIds.clear();this.sessions.set(Z.frontendSessionId,{frontendSessionId:Z.frontendSessionId,userId:Z.userId,tools:Z.tools,send:Z.send,pendingToolCalls:X.pendingToolCalls,activeRunIds:X.activeRunIds,activeRunCardIds:X.activeRunCardIds});return}this.sessions.set(Z.frontendSessionId,{frontendSessionId:Z.frontendSessionId,userId:Z.userId,tools:Z.tools,send:Z.send,pendingToolCalls:new Map,activeRunIds:new Set,activeRunCardIds:new Map})}disconnect(Z,X="frontend session disconnected"){let Q=this.sessions.get(Z);if(!Q)return{activeRunIds:[]};return this.sessions.delete(Z),this.rejectPending(Q,X),{activeRunIds:Array.from(Q.activeRunIds)}}sessionCount(){return this.sessions.size}has(Z){return this.sessions.has(Z)}getUserId(Z){return this.sessions.get(Z)?.userId??null}setMetadata(Z,X){let Q=this.sessions.get(Z);if(Q)Q.tools=X}getMetadata(Z){if(!Z)return[];return this.sessions.get(Z)?.tools??[]}sendToSession(Z,X){let Q=this.sessions.get(Z);if(!Q)return!1;return Q.send(X),!0}callTool(Z,X,Q,K,Y){if(!Z)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let V=this.sessions.get(Z);if(!V)return Promise.reject(Error(`Frontend session ${Z} is not connected`));let z=this.createCallId();return new Promise((U,F)=>{let B=K??(Y?this.getActiveRunIdForCard(V,Y):this.getSoleActiveRunId(V)),L=Y??(B?V.activeRunCardIds.get(B):void 0),f=Date.now(),P=setTimeout(()=>{V.pendingToolCalls.delete(z),E("tool_queue.timeout",{frontendSessionId:Z,runId:B,cardId:L,callId:z,toolName:X,elapsedMs:Date.now()-f,queueDepth:V.pendingToolCalls.size}),F(Error(`Tool "${X}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);V.pendingToolCalls.set(z,{resolve:U,reject:F,timer:P,name:X,runId:B??null,cardId:L??null,startedAt:f}),E("tool_queue.forwarded_to_browser",{frontendSessionId:Z,runId:B,cardId:L,callId:z,toolName:X,queueDepth:V.pendingToolCalls.size}),V.send({type:"tool_call",callId:z,name:X,args:Q,...B?{runId:B}:{},...L?{cardId:L}:{}})})}handleToolResult(Z,X){let Q=this.sessions.get(Z);if(!Q)return;let K=Q.pendingToolCalls.get(X.callId);if(!K)return;if(Q.pendingToolCalls.delete(X.callId),clearTimeout(K.timer),E("tool_queue.result_received",{frontendSessionId:Z,runId:K.runId,cardId:K.cardId,callId:X.callId,toolName:K.name,elapsedMs:Date.now()-K.startedAt,queueDepth:Q.pendingToolCalls.size,ok:X.ok}),X.ok){K.resolve(X.result);return}let Y=X.result;if(Y&&typeof Y==="object"&&Array.isArray(Y.content)){K.resolve({...Y,isError:!0});return}K.reject(Error(X.error??"Tool execution failed"))}markRunActive(Z,X,Q){let K=this.sessions.get(Z);if(!K)return;if(K.activeRunIds.add(X),Q)K.activeRunCardIds.set(X,Q)}markRunSettled(Z,X){let Q=this.sessions.get(Z);if(!Q)return;Q.activeRunIds.delete(X),Q.activeRunCardIds.delete(X)}ownsRun(Z,X){return this.sessions.get(Z)?.activeRunIds.has(X)??!1}rejectPending(Z,X){for(let Q of Z.pendingToolCalls.values())clearTimeout(Q.timer),E("tool_queue.rejected",{frontendSessionId:Z.frontendSessionId,runId:Q.runId,cardId:Q.cardId,toolName:Q.name,elapsedMs:Date.now()-Q.startedAt}),Q.reject(Error(X));Z.pendingToolCalls.clear()}getSoleActiveRunId(Z){return Z.activeRunIds.size===1?Z.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(Z,X){let Q=[...Z.activeRunCardIds.entries()].filter(([K,Y])=>Z.activeRunIds.has(K)&&Y===X).map(([K])=>K);return Q.length===1?Q[0]:void 0}}function S6(){return"0.0.58".trim()?"0.0.58":"dev"}var DQ=process.argv.slice(2),I6=[];for(let Z of DQ){if(Z==="--dev"){process.env[w8]="1";continue}I6.push(Z)}var M0=I6[0];if(M0==="--help"||M0==="-h"||M0==="help")console.log("ideawave — host the local bridge for a running ideawave.app session."),console.log(""),console.log("Usage:"),console.log(" ideawave Serve the browser bridge and MCP forwarder."),console.log(" ideawave --version Print the CLI version."),process.exit(0);if(M0==="--version"||M0==="-v"||M0==="version")console.log(S6()),process.exit(0);if(M0)console.error(`Unknown command: ${M0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var P1=new C8,x1=new U8,I0=null;function S0(Z,X){P1.sendToSession(Z,X)}async function $Q(Z,X){try{let Q=m6[X.method],K=await Q(X.params);S0(Z,{type:"runtime_rpc_result",requestId:X.requestId,ok:!0,result:K})}catch(Q){S0(Z,{type:"runtime_rpc_result",requestId:X.requestId,ok:!1,error:Q instanceof Error?Q.message:String(Q)})}}var b1=!1,L1=null;async function R8(){if(b1)return;if(L1)return L1;return L1=(async()=>{try{let Z=await g6(P1);D8({...Z,requestedPort:Z.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${Z.url}`);try{await a8({onStatusChange:(X)=>{if(q9(),I0?.sendStatus(),X.status==="failed")console.warn(`[ideawave-cli] ACP bridge setup failed for ${X.packageName}: ${X.error??"unknown error"}`)}})}catch(X){console.warn("[ideawave-cli] ACP bridge setup skipped:",X instanceof Error?X.message:String(X))}await _6(),b1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),I0?.sendStatus()}catch(Z){console.error("[ideawave-cli] failed to start agent host:",Z),I0?.sendStatus(void 0,Z instanceof Error?Z.message:String(Z))}finally{L1=null}})(),L1}if(process.env.APP_ENV!=="development"){let Z=await x6();if(Z)console.error(`[ideawave-cli] An IdeaWave CLI is already running at ${Z}.`),console.error("[ideawave-cli] Only one CLI per machine is supported — it already serves every browser tab. Exiting."),process.exit(0)}I0=await b6({registry:P1,runtime:null,mcpReady:()=>b1,capabilities:["browser-proxy-v1"],cliVersion:S6(),onToolMetadata:(Z)=>{console.log(`[ideawave-cli] session ${Z} advertised ${P1.getMetadata(Z).length} tools`),R8()},onRunTurn:(Z,X)=>{console.log(`[ideawave-cli] running agent turn for card ${X.cardId} (session ${Z})`),(async()=>{if(await R8(),!b1){S0(Z,{type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"IdeaWave CLI agent host is not ready",partialText:null}});return}await T9(X,(Q)=>S0(Z,Q))})().catch(()=>{return}).finally(()=>P1.markRunSettled(Z,X.runId))},onCancelRun:(Z,X)=>{p4(X)},onRuntimeRpc:(Z,X)=>{$Q(Z,X)},onBrowserRpc:(Z,X,Q)=>{x1.handleRpc(Z,X,Q).then((K)=>{S0(Z,{type:"browser_rpc_result",requestId:Q.requestId,ok:!0,result:K})},(K)=>{S0(Z,{type:"browser_rpc_result",requestId:Q.requestId,ok:!1,error:K instanceof Error?K.message:String(K)})})},onHttpRequest:(Z,X)=>x1.handleHttpRequest(Z,X),onWarmupRun:(Z,X,Q)=>{(async()=>{if(await R8(),!b1)return{status:"retryable",error:"agent host is not ready"};return A9({cardId:X.cardId,boardId:X.boardId,userId:Q,frontendSessionId:Z})})().then((K)=>{if(!X.warmupId)return;S0(Z,{type:"warmup_result",warmupId:X.warmupId,cardId:X.cardId,...K})})},onDisconnect:(Z,X)=>{x1.closeFrontendSession(Z),k9(Z);for(let Q of X)p4(Q);E("bridge.frontend_disconnected",{frontendSessionId:Z,activeRuns:X.length}),f8(Z).catch((Q)=>{console.warn(`[ideawave-cli] failed to evict sessions for ${Z}:`,Q instanceof Error?Q.message:String(Q))}),console.log(`[ideawave-cli] browser session ${Z} disconnected`)}});x1.setPort(I0.port);console.log(`[ideawave-cli] browser bridge listening on ${I0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var k6=!1;for(let Z of["SIGINT","SIGTERM"])process.once(Z,()=>{if(k6)return;k6=!0,S9(),(async()=>{x1.close(),await I0?.close().catch(()=>{return}),process.exit(0)})()});
446
+ ${Q}`),Z.destroy()}function s5(Z,X){return new Promise((Q,K)=>{let Y=(z)=>{Z.off("listening",V),K(z)},V=()=>{Z.off("error",Y);let z=Z.address();if(!z||typeof z==="string"){K(Error("Failed to read CLI bridge server address"));return}Q(z.port)};Z.once("error",Y),Z.once("listening",V),Z.listen(X,"127.0.0.1")})}function w6(Z){return new Promise((X,Q)=>{Z.close((K)=>{if(K)Q(K);else X()})})}async function b6(Z,X=B8()){let Q=new Map,K=new Map,Y=Z.maxMessageSize??I5,V=!1,z=(x)=>{let C=K.get(x);if(C)clearTimeout(C);K.delete(x)},U=(x)=>{K.delete(x);let{activeRunIds:C}=Z.registry.disconnect(x);Z.onDisconnect(x,C)},F=(x,C)=>{let y={type:"cli_status",connected:!0,runtime:Z.runtime,mcpReady:Z.mcpReady(),error:C,capabilities:Z.capabilities??[],cliVersion:Z.cliVersion};if(x){let D=Q.get(x);if(D)r0(D,y);return}for(let D of Q.values())r0(D,y)},B=(x,C)=>{let y=C.sessionId.trim(),D=C.userId.trim();if(!y||!D){r0(x,{type:"cli_status",connected:!1,runtime:Z.runtime,mcpReady:Z.mcpReady(),error:"Missing frontend session or user id"}),x.close();return}z(y);let R=Q.get(y);if(R&&R!==x)R.close();x.data.frontendSessionId=y,Q.set(y,x),Z.registry.register({frontendSessionId:y,userId:D,tools:C.tools,send:(h)=>r0(x,h)}),F(y),Z.onToolMetadata?.(y)},L=(x,C)=>{let y=Z.registry.getUserId(x);if(!y)return;switch(C.type){case"bridge_ping":{let D=Q.get(x);if(D)r0(D,{type:"bridge_pong"});break}case"tool_metadata":Z.registry.setMetadata(x,C.tools),Z.onToolMetadata?.(x);break;case"tool_result":Z.registry.handleToolResult(x,C);break;case"run_turn":E("bridge.run_received",{runId:C.run.runId,cardId:C.run.cardId,frontendSessionId:x}),Z.registry.markRunActive(x,C.run.runId,C.run.cardId),Z.onRunTurn(x,{...C.run,frontendSessionId:x,userId:y});break;case"cancel_run":if(Z.registry.ownsRun(x,C.runId))Z.onCancelRun(x,C.runId);break;case"runtime_rpc":Z.onRuntimeRpc(x,C);break;case"browser_rpc":Z.onBrowserRpc?.(x,Q.get(x)?.data.frontendOrigin??"",C);break;case"warmup_run":Z.onWarmupRun(x,{...C,frontendSessionId:x},y);break;default:break}},f=(x,C)=>{let y=F8(x.headers.origin),D=B6(y),R={Vary:"Origin"};if(D&&y)R["Access-Control-Allow-Origin"]=y,R["Access-Control-Allow-Private-Network"]="true";if(x.method==="OPTIONS"){C.writeHead(204,{...R,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),C.end();return}if(x.method!=="GET"){C.writeHead(405,R),C.end();return}C.writeHead(200,{...R,"content-type":"application/json","cache-control":"no-store"}),C.end(JSON.stringify({ideawave:!0,runtime:Z.runtime,mcpReady:Z.mcpReady(),capabilities:Z.capabilities??[],cliVersion:Z.cliVersion}))};for(let x of X){let C=k5((R,h)=>{(async()=>{if(new URL(R.url??"/","http://127.0.0.1").pathname===H6){f(R,h);return}if(await Z.onHttpRequest?.(R,h))return;h.writeHead(404,{"content-type":"text/plain"}),h.end("IdeaWave CLI bridge")})().catch((v)=>{if(h.headersSent){h.destroy(v instanceof Error?v:void 0);return}h.writeHead(500,{"content-type":"text/plain"}),h.end("IdeaWave CLI bridge request failed")})}),y=new S5({noServer:!0,maxPayload:Y}),D=(R)=>{if(R.idleTimer)clearTimeout(R.idleTimer);R.idleTimer=setTimeout(()=>{R.close()},T5),R.idleTimer.unref?.()};y.on("connection",(R,h)=>{let v=R;v.data={id:_5(),frontendSessionId:null,frontendOrigin:new URL(F8(h.headers.origin)??P6).origin},v.idleTimer=null,D(v),v.on("ping",()=>D(v)),v.on("pong",()=>D(v)),v.on("error",()=>{if(v.idleTimer)clearTimeout(v.idleTimer);v.close()}),v.on("message",(g)=>{D(v);let $=p5(g);if(Y>0&&$.length>Y)return;let I=v1($);if(!I)return;let N=v.data.frontendSessionId;if(!N){if(I.type==="bridge_probe")r0(v,{type:"bridge_probe_ack",protocolVersion:I.protocolVersion});else if(I.type==="frontend_hello")B(v,I);return}L(N,I)}),v.on("close",()=>{if(v.idleTimer)clearTimeout(v.idleTimer);let g=v.data.frontendSessionId;if(!g)return;if(Q.get(g)!==v)return;if(Q.delete(g),z(g),V)return;K.set(g,setTimeout(()=>U(g),A5))})}),C.on("upgrade",(R,h,v)=>{if(new URL(R.url??"/","http://127.0.0.1").pathname!==q8){F6(h,404,"Not Found");return}if(!B6(F8(R.headers.origin))){F6(h,403,"Forbidden");return}y.handleUpgrade(R,h,v,($)=>{y.emit("connection",$,R)})});try{let R=await s5(C,x);return{url:`ws://127.0.0.1:${R}${q8}`,port:R,sendStatus:F,close:async()=>{V=!0;for(let h of K.values())clearTimeout(h);K.clear();for(let h of y.clients){let v=h;if(v.idleTimer)clearTimeout(v.idleTimer);v.close()}y.close(),await w6(C).catch(()=>{return})}}}catch(R){if(y.close(),await w6(C).catch(()=>{return}),R?.code==="EADDRINUSE")continue;throw R}}throw Error(`No free IdeaWave CLI bridge port found in ${X[0]}-${X.at(-1)}`)}import{Server as jQ}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as zQ,ListToolsRequestSchema as HQ}from"@modelcontextprotocol/sdk/types.js";import{randomUUID as o5}from"node:crypto";import{createServer as n5}from"node:http";import{StreamableHTTPServerTransport as t5}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as v6}from"@modelcontextprotocol/sdk/types.js";var O6=new Set(["127.0.0.1","localhost","[::1]","::1"]);function r5(Z){let X=Z.trim();if(X.length===0)return null;if(X.startsWith("[")){let V=X.indexOf("]");if(V===-1)return null;let z=X.slice(0,V+1),U=X.slice(V+1);if(U.length===0)return{host:z,port:null};if(!U.startsWith(":"))return null;let F=Number(U.slice(1));if(!Number.isInteger(F)||F<=0||F>65535)return null;return{host:z,port:F}}let Q=X.lastIndexOf(":");if(Q===-1)return{host:X,port:null};let K=X.slice(Q+1),Y=Number(K);if(!Number.isInteger(Y)||Y<=0||Y>65535)return{host:X,port:null};return{host:X.slice(0,Q),port:Y}}function C6(Z){return O6.has(Z)||O6.has(Z.toLowerCase())}function R6(Z,X){let Q=Z.headers.host;if(typeof Q!=="string")return{ok:!1,status:403,reason:"missing-host"};let K=r5(Q);if(!K)return{ok:!1,status:403,reason:"bad-host"};if(!C6(K.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(K.port!==null&&K.port!==X)return{ok:!1,status:403,reason:"host-port-mismatch"};let Y=Z.headers.origin;if(typeof Y==="string"&&Y.length>0){if(Y!=="null"){let V;try{V=new URL(Y)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!C6(V.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var y6="/mcp",e5=43274,h6=16777216,ZQ=1800000,XQ=300000,f6=200,QQ=-32700,M0=-32600,L8=-32603;function V0(Z,X,Q,K,Y){Z.statusCode=X,Z.setHeader("content-type","application/json"),Z.end(JSON.stringify({jsonrpc:"2.0",error:{code:Q,message:K,...Y?{data:Y}:{}},id:null}))}class P8 extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class x8 extends Error{constructor(){super(`body exceeds ${h6} bytes`);this.name="BodyTooLargeError"}}async function JQ(Z){if(Z.method&&Z.method!=="POST")return;let X=Z.headers["content-type"];if(typeof X==="string"&&X.trim().length>0){if(!X.toLowerCase().includes("application/json"))throw new P8}let Q=0,K=[];for await(let V of Z){let z=typeof V==="string"?Buffer.from(V):V;if(Q+=z.byteLength,Q>h6)throw new x8;K.push(z)}if(K.length===0)return;let Y=Buffer.concat(K).toString("utf8");if(Y.length===0)return;return JSON.parse(Y)}function KQ(Z){if(Array.isArray(Z))return Z.some(v6);return v6(Z)}function YQ(Z){if(typeof Z==="number")return Z;let X=process.env.IDEAWAVE_MCP_PORT;if(X&&X.trim().length>0){let Q=Number(X);if(Number.isInteger(Q)&&Q>=0&&Q<65536)return Q}return e5}async function WQ(Z,X){let Q=(Y)=>new Promise((V,z)=>{let U=(B)=>{Z.off("listening",F),z(B)},F=()=>{Z.off("error",U),V()};Z.once("error",U),Z.once("listening",F),Z.listen(Y,"127.0.0.1")});try{await Q(X)}catch(Y){if(Y.code!=="EADDRINUSE"||X===0)throw Y;console.warn(`[mcp] port ${X} in use, falling back to an OS-assigned port; external CLIs will need to re-paste the install command from Settings → External agents`),await Q(0)}let K=Z.address();if(K==null||typeof K==="string")throw Error("[mcp] failed to read bound address");return K.port}function VQ(Z,X){if(X&&typeof X==="object"&&!Array.isArray(X)){let K=X.params;if(K&&typeof K==="object"&&!Array.isArray(K)){let Y=K.clientInfo;if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let V=Y.name;if(typeof V==="string"&&V.trim().length>0)return V.trim()}}}let Q=Z.headers["user-agent"];if(typeof Q==="string"&&Q.trim().length>0)return Q.trim();return null}async function M6(Z){let X=new Map,Q=0;function K(B){let L=X.get(B);if(L)L.lastActivity=Date.now()}async function Y(B,L){X.delete(B),await L.transport.close().catch(()=>{return})}async function V(){let B=null,L=1/0;for(let[f,x]of X)if(x.lastActivity<L)L=x.lastActivity,B=f;if(B!==null){let f=X.get(B);if(f)console.warn(`[mcp] session cap of ${f6} reached; evicting ${B}`),await Y(B,f)}}let z=setInterval(()=>{let B=Date.now()-ZQ;for(let[L,f]of X)if(f.lastActivity<B)console.log(`[mcp] sweeping idle session ${L}`),Y(L,f)},XQ);z.unref?.();let U=n5((B,L)=>{(async()=>{let f;try{f=new URL(B.url??"/","http://127.0.0.1").pathname}catch{V0(L,400,M0,"bad-url");return}if(f!==y6){V0(L,404,M0,"not-found");return}let x=B.method??"POST";if(x!=="POST"&&x!=="GET"&&x!=="DELETE"){L.setHeader("Allow","GET, POST, DELETE"),V0(L,405,M0,"method-not-allowed");return}let C=R6(B,Q);if(!C.ok){V0(L,C.status,M0,"forbidden",{reason:C.reason});return}let y=B.headers["mcp-session-id"],D=typeof y==="string"?y:void 0;if(x==="GET"||x==="DELETE"){if(!D||!X.has(D)){V0(L,400,M0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let v=X.get(D).transport;K(D);try{await v.handleRequest(B,L)}catch(g){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",g),!L.headersSent)V0(L,500,L8,"internal")}return}let R;try{R=await JQ(B)}catch(v){if(v instanceof P8){V0(L,415,M0,"expected-application-json");return}if(v instanceof x8){V0(L,413,M0,"body-too-large");return}V0(L,400,QQ,"invalid-json");return}let h;if(D&&X.has(D))h=X.get(D).transport,K(D);else if(!D&&R!==void 0&&KQ(R)){let v=B.headers["x-ideawave-user-id"],g=typeof v==="string"&&v.trim().length>0?v.trim():null,$=B.headers["x-ideawave-frontend-session-id"],I=typeof $==="string"&&$.trim().length>0?$.trim():null,N=B.headers["x-ideawave-tool-surface"],P=typeof N==="string"&&N.trim()==="read"?"read":"full",G=B.headers["x-ideawave-images-supported"],l=typeof G==="string"&&G.trim()==="1",a=B.headers["x-ideawave-card-id"],T0=typeof a==="string"&&a.trim().length>0?a.trim():null,C0=B.headers["x-ideawave-board-id"],_=typeof C0==="string"&&C0.trim().length>0?C0.trim():null,i=B.headers["x-ideawave-run-folder"],u=typeof i==="string"&&i.trim().length>0?i.trim():null,Z0=VQ(B,R);if(X.size>=f6)await V();let s=null,D0=new t5({sessionIdGenerator:()=>o5(),onsessioninitialized:(A0)=>{s=A0,X.set(A0,{transport:D0,lastActivity:Date.now()})},onsessionclosed:(A0)=>{X.delete(A0)}});D0.onclose=()=>{if(D0.sessionId)X.delete(D0.sessionId)};try{await Z.buildServer({userId:g,frontendSessionId:I,boardId:_,toolSurface:P,imagesSupported:l,cardId:T0,runFolder:u,clientHint:Z0}).connect(D0)}catch(A0){if(console.error("[mcp] buildServer/connect failed",A0),s)X.delete(s);await D0.close().catch(()=>{return}),V0(L,500,L8,"server-init-failed");return}h=D0}else{V0(L,400,M0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await h.handleRequest(B,L,R)}catch(v){if(console.error("[mcp] transport.handleRequest threw",v),!L.headersSent)V0(L,500,L8,"internal")}})().catch((f)=>{console.error("[mcp] unhandled request handler error:",f)})});return Q=await WQ(U,YQ(Z.port)),{url:`http://127.0.0.1:${Q}${y6}`,port:Q,close:async()=>{clearInterval(z);for(let B of X.values())await B.transport.close().catch(()=>{return});X.clear(),await new Promise((B)=>U.close(()=>B()))}}}var UQ={name:"ideawave-board",version:"1.0.0"},j4="list_run_folder",z4="read_run_folder_file",$6=new Set(["list_boards","get_board","list_nodes","list_edges","inspect_node","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","get_card_messages","list_agent_cards","inspect_neighbors",j4,z4]),G6=new Set(["inspect_diagram"]),qQ=[{name:j4,description:"List visible files and folders under the selected runtime run folder. Hidden/config folders are omitted.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Optional relative path inside the selected run folder. Defaults to the run-folder root."}},additionalProperties:!1}},{name:z4,description:"Read a text file inside the selected runtime run folder. Hidden/config paths and outside-folder paths are denied.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative path to a text file inside the selected run folder."}},required:["path"],additionalProperties:!1}}];function b8(Z){return{content:[{type:"text",text:Z}]}}function BQ(Z){return b8(JSON.stringify(Z,null,2))}function N6(Z){return{...b8(Z),isError:!0}}function FQ(Z,X,Q="full",K=!1){return Z.getMetadata(X).filter((Y)=>{let V=S1(Y.name);if(Q==="read"&&!$6.has(V))return!1;if(!K&&G6.has(V))return!1;return!0}).map((Y)=>({name:Y.name,description:Y.description,inputSchema:Y.inputSchema}))}function wQ(Z,X,Q={}){let K=FQ(Z,X,Q.toolSurface??"full",Q.imagesSupported??!1);return Q.includeRunFolderTools?[...K,...qQ]:K}function D6(Z,X){if(!Z||typeof Z!=="object"||Array.isArray(Z))return null;let Q=Z[X];return typeof Q==="string"?Q:null}async function LQ(Z,X,Q){if(Q&&Q.trim().length>0)return Q.trim();if(!Z||!X)throw Error("Run-folder tools require an active IdeaWave board and card.");return(await y0({boardId:Z,cardId:X})).runFolder}async function PQ(Z){let X=await LQ(Z.boardId,Z.cardId,Z.runFolder);if(Z.name===j4){let Q=D6(Z.args,"path")??"",K=await L9(X,Q);return BQ(K)}if(Z.name===z4){let Q=D6(Z.args,"path");if(!Q)return N6("read_run_folder_file requires a path.");return b8(await k1(X,Q))}return N6(`Unknown local tool "${Z.name}"`)}function xQ(Z,X,Q,K,Y,V="full",z=!1){let U=new jQ(UQ,{capabilities:{tools:{}}}),F=async()=>{if(z)return!0;if(k9(K))return!0;if(Q&&K)try{return(await y0({boardId:Q,cardId:K})).adapter.supportsImages===!0}catch{return!1}return!1};return U.setRequestHandler(HQ,async()=>({tools:wQ(Z,X,{includeRunFolderTools:Boolean(Y||Q&&K),toolSurface:V,imagesSupported:await F()})})),U.setRequestHandler(zQ,async(B)=>{let{name:L,arguments:f}=B.params,x=S1(L),C=Date.now();E("mcp.tool_call_received",{frontendSessionId:X,cardId:K,toolName:x});try{if(x===j4||x===z4)return await PQ({name:x,args:f,boardId:Q,cardId:K,runFolder:Y});if(V==="read"&&!$6.has(x))throw Error(`Tool "${L}" is not available in read-only mode`);if(G6.has(x)&&!await F())throw Error(`Tool "${L}" requires a runtime that supports image input`);let y=await Z.callTool(X,x,f??{},void 0,K??void 0);if(E("mcp.tool_result_returned",{frontendSessionId:X,cardId:K,toolName:x,elapsedMs:Date.now()-C}),y&&typeof y==="object"&&Array.isArray(y.content))return y;return{content:[{type:"text",text:typeof y==="string"?y:JSON.stringify(y)}]}}catch(y){return E("mcp.tool_result_returned",{frontendSessionId:X,cardId:K,toolName:x,elapsedMs:Date.now()-C,hasError:!0}),{content:[{type:"text",text:y instanceof Error?y.message:"Tool call failed"}],isError:!0}}}),U}function g6(Z,X){return M6({buildServer:(Q)=>xQ(Z,Q.frontendSessionId,Q.boardId,Q.cardId,Q.runFolder,Q.toolSurface,Q.imagesSupported),port:X})}import H4 from"node:fs/promises";import O8 from"node:os";import U4 from"node:path";function E6(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function bQ(){let[Z,X]=await Promise.all([K0(),U9()]),Q=Z.globalDefaultConfigId?Z.runtimes.find((K)=>K.id===Z.globalDefaultConfigId)??null:null;return{runtimes:Z.runtimes,globalDefaultConfigId:Z.globalDefaultConfigId,globalDefaultEffective:Q?{runFolder:Q.runFolder??O8.homedir(),modelId:Q.defaultModelId??null,configValues:Q.defaultConfigValues??{}}:null,knownAdapters:c0().map((K)=>({id:K.id,displayName:K.displayName})),readiness:X}}async function OQ(Z){try{let X=await y0({boardId:Z.boardId,cardId:Z.cardId});return{resolved:{configId:X.entry.id,adapterId:X.entry.kind==="registered"?X.entry.adapterId:null,displayName:X.entry.displayName,runFolder:X.runFolder,modelId:X.modelId,configValues:X.configValues}}}catch(X){if(X instanceof $0)return{resolved:null};throw X}}async function CQ(Z){return j0((X)=>{let Q=X.runtimes.find((V)=>V.kind==="registered"&&V.adapterId===Z.adapterId);if(Q)return Q;let K=c0().find((V)=>V.id===Z.adapterId);if(!K)throw Error(`Unknown adapterId: ${Z.adapterId}`);let Y={id:E6(),kind:"registered",adapterId:Z.adapterId,displayName:K.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return X.runtimes.push(Y),Y})}async function RQ(Z){return j0((X)=>{let Q={id:E6(),kind:"custom",displayName:Z.displayName,command:Z.command,args:Z.args,env:Z.env,runFolder:Z.runFolder,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return X.runtimes.push(Q),Q})}async function vQ(Z){await j0((X)=>{if(X.runtimes=X.runtimes.filter((Q)=>Q.id!==Z.runtimeConfigId),X.globalDefaultConfigId===Z.runtimeConfigId)X.globalDefaultConfigId=null;for(let Q of Object.keys(X.boardOverrides))if(X.boardOverrides[Q].runtimeConfigId===Z.runtimeConfigId)delete X.boardOverrides[Q];for(let Q of Object.keys(X.cardOverrides))if(X.cardOverrides[Q].runtimeConfigId===Z.runtimeConfigId)delete X.cardOverrides[Q]})}async function yQ(Z){await j0((X)=>{let Q=X.runtimes.find((K)=>K.id===Z.runtimeConfigId);if(!Q)throw Error(`Runtime config not found: ${Z.runtimeConfigId}`);if(X.globalDefaultConfigId=Z.runtimeConfigId,Z.runFolder!==void 0)Q.runFolder=Z.runFolder;if(Z.modelId!==void 0)Q.defaultModelId=Z.modelId;if(Z.configValues!==void 0)Q.defaultConfigValues=Z.configValues})}async function fQ(Z){Z.boardId,await j0((X)=>{if(Z.runtimeConfigId===null){delete X.cardOverrides[Z.cardId];return}if(!X.runtimes.some((Y)=>Y.id===Z.runtimeConfigId))throw Error(`Runtime config not found: ${Z.runtimeConfigId}`);let K=X.cardOverrides[Z.cardId];X.cardOverrides[Z.cardId]={runtimeConfigId:Z.runtimeConfigId,runFolder:Z.runFolder!==void 0?Z.runFolder:K?.runFolder??null,modelId:Z.modelId!==void 0?Z.modelId:K?.modelId??null,configValues:Z.configValues!==void 0?Z.configValues:K?.configValues??{}}})}async function hQ(Z){let Q=(await K0()).runtimes.find((z)=>z.id===Z.runtimeConfigId);if(!Q)throw Error(`Runtime config not found: ${Z.runtimeConfigId}`);let K=B0(Q),Y=await K.resolveSpawnConfig(Q),V=Q.runFolder??O8.homedir();try{let z=await g9({spawn:{...Y,cwd:V},modelId:Z.modelId??Q.defaultModelId??null,configValues:Z.configValues??Q.defaultConfigValues??{}}),U=m1({adapterId:K.id,models:z.models,currentModelId:z.currentModelId}),F=new Date().toISOString();return await j0((B)=>{let L=B.runtimes.find((f)=>f.id===Z.runtimeConfigId);if(L)L.discoveredModels=U,L.discoveredConfigOptions=z.configOptions,L.discoveredAt=F}),{ok:!0,models:U,configOptions:z.configOptions,currentModelId:z.currentModelId}}catch(z){if(z instanceof u0)throw Error(`${z.message}${K.authHint?` ${K.authHint}`:""}`);if(z instanceof S||z instanceof q0)throw Error(z.message);throw z}}async function MQ(Z){let X=O8.homedir(),Q=Z.path?.trim()?Z.path.trim():X,K=U4.resolve(Q),Y=!0;try{if(!(await H4.stat(K)).isDirectory())K=U4.dirname(K)}catch{Y=!1,K=X}let V=[];try{V=(await H4.readdir(K,{withFileTypes:!0})).filter((F)=>F.isDirectory()&&!F.name.startsWith(".")).map((F)=>({name:F.name,path:U4.join(K,F.name)})).sort((F,B)=>F.name.localeCompare(B.name))}catch{V=[]}let z=U4.dirname(K);return{path:K,parent:z===K?null:z,home:X,exists:Y,entries:V}}var m6={list:bQ,getEffectiveForCard:OQ,registerRegistered:CQ,registerCustom:RQ,unregister:vQ,setUserDefault:yQ,setCardOverride:fQ,refreshModels:hQ,browseFolder:MQ};var NQ=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function DQ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function _6(){try{let Z=await K0();if(Z.globalDefaultConfigId){if(Z.runtimes.some((Q)=>Q.id===Z.globalDefaultConfigId))return Z.globalDefaultConfigId}for(let X of NQ){if((await q9(X.id))?.status!=="ready")continue;let K=null;if(await j0((Y)=>{if(Y.globalDefaultConfigId){if(Y.runtimes.some((U)=>U.id===Y.globalDefaultConfigId)){K=Y.globalDefaultConfigId;return}}let V=Y.runtimes.find((z)=>z.kind==="registered"&&z.adapterId===X.id);if(!V){let z={id:DQ(),kind:"registered",adapterId:X.id,displayName:X.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};Y.runtimes.push(z),V=z}Y.globalDefaultConfigId=V.id,K=V.id}),K)return console.log(`[ideawave-cli] using agent runtime: ${X.displayName}`),K}return console.warn("[ideawave-cli] no agent runtime detected on PATH (tried claude, codex, gh copilot, opencode). Install one to run agents."),null}catch(Z){return console.warn("[ideawave-cli] runtime auto-seed failed",Z),null}}var $Q=120000;function GQ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class C8{sessions=new Map;createCallId;toolCallTimeoutMs;constructor(Z={}){this.createCallId=Z.createCallId??GQ,this.toolCallTimeoutMs=Z.toolCallTimeoutMs??$Q}register(Z){let X=this.sessions.get(Z.frontendSessionId);if(X){if(X.userId!==Z.userId)this.rejectPending(X,"frontend session user changed"),X.activeRunIds.clear();this.sessions.set(Z.frontendSessionId,{frontendSessionId:Z.frontendSessionId,userId:Z.userId,tools:Z.tools,send:Z.send,pendingToolCalls:X.pendingToolCalls,activeRunIds:X.activeRunIds,activeRunCardIds:X.activeRunCardIds});return}this.sessions.set(Z.frontendSessionId,{frontendSessionId:Z.frontendSessionId,userId:Z.userId,tools:Z.tools,send:Z.send,pendingToolCalls:new Map,activeRunIds:new Set,activeRunCardIds:new Map})}disconnect(Z,X="frontend session disconnected"){let Q=this.sessions.get(Z);if(!Q)return{activeRunIds:[]};return this.sessions.delete(Z),this.rejectPending(Q,X),{activeRunIds:Array.from(Q.activeRunIds)}}sessionCount(){return this.sessions.size}has(Z){return this.sessions.has(Z)}getUserId(Z){return this.sessions.get(Z)?.userId??null}setMetadata(Z,X){let Q=this.sessions.get(Z);if(Q)Q.tools=X}getMetadata(Z){if(!Z)return[];return this.sessions.get(Z)?.tools??[]}sendToSession(Z,X){let Q=this.sessions.get(Z);if(!Q)return!1;return Q.send(X),!0}callTool(Z,X,Q,K,Y){if(!Z)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let V=this.sessions.get(Z);if(!V)return Promise.reject(Error(`Frontend session ${Z} is not connected`));let z=this.createCallId();return new Promise((U,F)=>{let B=K??(Y?this.getActiveRunIdForCard(V,Y):this.getSoleActiveRunId(V)),L=Y??(B?V.activeRunCardIds.get(B):void 0),f=Date.now(),x=setTimeout(()=>{V.pendingToolCalls.delete(z),E("tool_queue.timeout",{frontendSessionId:Z,runId:B,cardId:L,callId:z,toolName:X,elapsedMs:Date.now()-f,queueDepth:V.pendingToolCalls.size}),F(Error(`Tool "${X}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);V.pendingToolCalls.set(z,{resolve:U,reject:F,timer:x,name:X,runId:B??null,cardId:L??null,startedAt:f}),E("tool_queue.forwarded_to_browser",{frontendSessionId:Z,runId:B,cardId:L,callId:z,toolName:X,queueDepth:V.pendingToolCalls.size}),V.send({type:"tool_call",callId:z,name:X,args:Q,...B?{runId:B}:{},...L?{cardId:L}:{}})})}handleToolResult(Z,X){let Q=this.sessions.get(Z);if(!Q)return;let K=Q.pendingToolCalls.get(X.callId);if(!K)return;if(Q.pendingToolCalls.delete(X.callId),clearTimeout(K.timer),E("tool_queue.result_received",{frontendSessionId:Z,runId:K.runId,cardId:K.cardId,callId:X.callId,toolName:K.name,elapsedMs:Date.now()-K.startedAt,queueDepth:Q.pendingToolCalls.size,ok:X.ok}),X.ok){K.resolve(X.result);return}let Y=X.result;if(Y&&typeof Y==="object"&&Array.isArray(Y.content)){K.resolve({...Y,isError:!0});return}K.reject(Error(X.error??"Tool execution failed"))}markRunActive(Z,X,Q){let K=this.sessions.get(Z);if(!K)return;if(K.activeRunIds.add(X),Q)K.activeRunCardIds.set(X,Q)}markRunSettled(Z,X){let Q=this.sessions.get(Z);if(!Q)return;Q.activeRunIds.delete(X),Q.activeRunCardIds.delete(X)}ownsRun(Z,X){return this.sessions.get(Z)?.activeRunIds.has(X)??!1}rejectPending(Z,X){for(let Q of Z.pendingToolCalls.values())clearTimeout(Q.timer),E("tool_queue.rejected",{frontendSessionId:Z.frontendSessionId,runId:Q.runId,cardId:Q.cardId,toolName:Q.name,elapsedMs:Date.now()-Q.startedAt}),Q.reject(Error(X));Z.pendingToolCalls.clear()}getSoleActiveRunId(Z){return Z.activeRunIds.size===1?Z.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(Z,X){let Q=[...Z.activeRunCardIds.entries()].filter(([K,Y])=>Z.activeRunIds.has(K)&&Y===X).map(([K])=>K);return Q.length===1?Q[0]:void 0}}function S6(){return"0.0.59".trim()?"0.0.59":"dev"}var gQ=process.argv.slice(2),I6=[];for(let Z of gQ){if(Z==="--dev"){process.env[w8]="1";continue}I6.push(Z)}var N0=I6[0];if(N0==="--help"||N0==="-h"||N0==="help")console.log("ideawave — host the local bridge for a running ideawave.app session."),console.log(""),console.log("Usage:"),console.log(" ideawave Serve the browser bridge and MCP forwarder."),console.log(" ideawave --version Print the CLI version."),process.exit(0);if(N0==="--version"||N0==="-v"||N0==="version")console.log(S6()),process.exit(0);if(N0)console.error(`Unknown command: ${N0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var P1=new C8,x1=new U8,I0=null;function S0(Z,X){P1.sendToSession(Z,X)}async function EQ(Z,X){try{let Q=m6[X.method],K=await Q(X.params);S0(Z,{type:"runtime_rpc_result",requestId:X.requestId,ok:!0,result:K})}catch(Q){S0(Z,{type:"runtime_rpc_result",requestId:X.requestId,ok:!1,error:Q instanceof Error?Q.message:String(Q)})}}var b1=!1,L1=null;async function R8(){if(b1)return;if(L1)return L1;return L1=(async()=>{try{let Z=await g6(P1);D8({...Z,requestedPort:Z.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${Z.url}`);try{await i8({onStatusChange:(X)=>{if(B9(),I0?.sendStatus(),X.status==="failed")console.warn(`[ideawave-cli] ACP bridge setup failed for ${X.packageName}: ${X.error??"unknown error"}`)}})}catch(X){console.warn("[ideawave-cli] ACP bridge setup skipped:",X instanceof Error?X.message:String(X))}await _6(),b1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),I0?.sendStatus()}catch(Z){console.error("[ideawave-cli] failed to start agent host:",Z),I0?.sendStatus(void 0,Z instanceof Error?Z.message:String(Z))}finally{L1=null}})(),L1}if(process.env.APP_ENV!=="development"){let Z=await x6();if(Z)console.error(`[ideawave-cli] An IdeaWave CLI is already running at ${Z}.`),console.error("[ideawave-cli] Only one CLI per machine is supported — it already serves every browser tab. Exiting."),process.exit(0)}I0=await b6({registry:P1,runtime:null,mcpReady:()=>b1,capabilities:["browser-proxy-v1",$8],cliVersion:S6(),onToolMetadata:(Z)=>{console.log(`[ideawave-cli] session ${Z} advertised ${P1.getMetadata(Z).length} tools`),R8()},onRunTurn:(Z,X)=>{console.log(`[ideawave-cli] running agent turn for card ${X.cardId} (session ${Z})`),(async()=>{if(await R8(),!b1){S0(Z,{type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"IdeaWave CLI agent host is not ready",partialText:null}});return}await A9(X,(Q)=>S0(Z,Q))})().catch(()=>{return}).finally(()=>P1.markRunSettled(Z,X.runId))},onCancelRun:(Z,X)=>{p4(X)},onRuntimeRpc:(Z,X)=>{EQ(Z,X)},onBrowserRpc:(Z,X,Q)=>{x1.handleRpc(Z,X,Q).then((K)=>{S0(Z,{type:"browser_rpc_result",requestId:Q.requestId,ok:!0,result:K})},(K)=>{S0(Z,{type:"browser_rpc_result",requestId:Q.requestId,ok:!1,error:K instanceof Error?K.message:String(K)})})},onHttpRequest:(Z,X)=>x1.handleHttpRequest(Z,X),onWarmupRun:(Z,X,Q)=>{(async()=>{if(await R8(),!b1)return{status:"retryable",error:"agent host is not ready"};return u9({cardId:X.cardId,boardId:X.boardId,userId:Q,frontendSessionId:Z})})().then((K)=>{if(!X.warmupId)return;S0(Z,{type:"warmup_result",warmupId:X.warmupId,cardId:X.cardId,...K})})},onDisconnect:(Z,X)=>{x1.closeFrontendSession(Z),S9(Z);for(let Q of X)p4(Q);E("bridge.frontend_disconnected",{frontendSessionId:Z,activeRuns:X.length}),f8(Z).catch((Q)=>{console.warn(`[ideawave-cli] failed to evict sessions for ${Z}:`,Q instanceof Error?Q.message:String(Q))}),console.log(`[ideawave-cli] browser session ${Z} disconnected`)}});x1.setPort(I0.port);console.log(`[ideawave-cli] browser bridge listening on ${I0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var k6=!1;for(let Z of["SIGINT","SIGTERM"])process.once(Z,()=>{if(k6)return;k6=!0,I9(),(async()=>{x1.close(),await I0?.close().catch(()=>{return}),process.exit(0)})()});