@mearl/native-host 2.22.2 → 2.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -618,7 +618,7 @@ button, input, select, textarea { font: inherit; }
618
618
  `)}function formatNoMatchError(selector,browsers){let available=browsers.length?browsers.map(b=>` - ${describeBrowser(b)}`).join(`
619
619
  `):" (当前没有已连接的浏览器)";return[`未找到匹配 "${selector}" 的浏览器。`,"当前已连接的浏览器:",available,"","用 `mearl browser_list` 查看完整列表;可用 browserId 或名称匹配。"].join(`
620
620
  `)}var MAX_SOCKET_BUFFER_SIZE,SOCKET_PATH,SESSION_OPTION,defaultBrowser,persistentSpawnPromise,discoveryListPromise,discoveryListCache,DISCOVERY_STARTUP_TIMEOUT_MS,DISCOVERY_RETRY_INTERVAL_MS,DISCOVERY_MISS_CACHE_MS,EXTENSION_INSTALL_URL,init_socket=__esm({"../client/dist/socket.js"(){"use strict";init_runtimePaths();init_host();init_dist3();init_runtime();init_fileRefs();init_browserRegistry();init_actionTimeouts();init_browser_action_protocol();MAX_SOCKET_BUFFER_SIZE=64*1024*1024,SOCKET_PATH=process.platform==="win32"?"\\\\.\\pipe\\mearl-agent":path4.join(os2.tmpdir(),"mearl-agent.sock");SESSION_OPTION=Symbol("control-session");persistentSpawnPromise=null,discoveryListPromise=null,discoveryListCache=null,DISCOVERY_STARTUP_TIMEOUT_MS=3e3,DISCOVERY_RETRY_INTERVAL_MS=50,DISCOVERY_MISS_CACHE_MS=2e3;EXTENSION_INSTALL_URL="https://chromewebstore.google.com/detail/mearl/aoehhjnofngknnjefamjbplchbolghkm"}});import{existsSync as existsSync5,readFileSync as readFileSync7}from"node:fs";import{homedir as homedir3}from"node:os";import{join as join10}from"node:path";function loadLocalConnectorId(){let explicit=process.env.MEARL_CONNECTOR_ID?.trim();if(explicit)return explicit;try{let config2=JSON.parse(readFileSync7(join10(MEARL_CONFIG_DIR,"cloud-connector-identity.json"),"utf8"));return typeof config2.connectorId=="string"&&config2.connectorId.trim()?config2.connectorId:null}catch{return null}}var MEARL_CONFIG_DIR,init_unifiedConfig=__esm({"../client/dist/unifiedConfig.js"(){"use strict";MEARL_CONFIG_DIR=join10(homedir3(),".mearl")}});import{createHash as createHash5}from"node:crypto";function normalizePluginState(value){if(value===void 0)return;let declaration=JSON.parse(JSON.stringify(value));if(!declaration||declaration.version!==1||!declaration.collections||Array.isArray(declaration.collections)||Object.keys(declaration.collections).length>32||Buffer.byteLength(JSON.stringify(declaration))>128*1024)throw new Error("Invalid stateStorage declaration");for(let[name,collection]of Object.entries(declaration.collections)){if(!/^[a-z][a-z0-9-]{0,63}$/.test(name)||!collection||!["installation","host","browser-session","instance"].includes(collection.scope)||!["persistent","cache","memory"].includes(collection.storage)||!Number.isSafeInteger(collection.schemaVersion)||collection.schemaVersion<1||!collection.schema||typeof collection.schema!="object"||Array.isArray(collection.schema)||collection.schema.$async)throw new Error(`Invalid state collection: ${name}`);if(["browser-session","instance"].includes(collection.scope)&&!["cache","memory"].includes(collection.storage))throw new Error("Document state requires cache or memory storage");if(collection.storage==="memory"&&!["browser-session","instance"].includes(collection.scope))throw new Error("Memory state requires a browser session or instance scope");if(collection.maxEntries!==void 0&&(!Number.isSafeInteger(collection.maxEntries)||collection.maxEntries<1||collection.maxEntries>4096))throw new Error("State maxEntries must be between 1 and 4096");if(collection.maxBytes!==void 0&&(!Number.isSafeInteger(collection.maxBytes)||collection.maxBytes<1||collection.maxBytes>(collection.storage==="memory"?128:16)*1024*1024))throw new Error("State maxBytes exceeds its storage limit");if(collection.ttlMs!==void 0&&(!Number.isSafeInteger(collection.ttlMs)||collection.ttlMs<1||collection.ttlMs>7*864e5))throw new Error("State TTL must be between 1 ms and 7 days");if(collection.storage==="persistent"&&collection.ttlMs!==void 0)throw new Error("Persistent state does not accept TTL")}return declaration}function pluginStateSignature(collection){return createHash5("sha256").update(JSON.stringify(collection,(_key,value)=>value&&typeof value=="object"&&!Array.isArray(value)?Object.fromEntries(Object.entries(value).sort(([a],[b])=>a<b?-1:a>b?1:0)):value)).digest("hex")}var init_pluginStateDefinition=__esm({"../client/dist/plugins/sdk/pluginStateDefinition.js"(){"use strict"}});import{createHash as createHash6}from"node:crypto";function normalizePluginTaskRecovery(value){if(value===void 0)return;let declaration=JSON.parse(JSON.stringify(value));if(!declaration||declaration.version!==1||!declaration.commands||typeof declaration.commands!="object"||Array.isArray(declaration.commands)||Object.keys(declaration.commands).length>32||Buffer.byteLength(JSON.stringify(declaration))>128*1024)throw new Error("Invalid taskRecovery declaration");for(let[command,definition]of Object.entries(declaration.commands)){if(!/^[a-z][a-z0-9-]*$/.test(command)||!definition||!Number.isSafeInteger(definition.checkpointVersion)||definition.checkpointVersion<1||!definition.schema||typeof definition.schema!="object"||Array.isArray(definition.schema)||definition.schema.$async)throw new Error("Invalid task checkpoint definition");if(definition.migrateFrom!==void 0){if(!Array.isArray(definition.migrateFrom)||definition.migrateFrom.length<1||definition.migrateFrom.length>16)throw new Error("Invalid checkpoint migration sources");let versions=new Set;for(let source of definition.migrateFrom){if(!source||!Number.isSafeInteger(source.version)||source.version<1||source.version>=definition.checkpointVersion||versions.has(source.version)||!source.schema||typeof source.schema!="object"||Array.isArray(source.schema)||source.schema.$async)throw new Error("Checkpoint migrations require distinct older versions and schemas");versions.add(source.version)}}}return declaration}function pluginRecoverySignature(value){return createHash6("sha256").update(JSON.stringify(value,(_key,item)=>item&&typeof item=="object"&&!Array.isArray(item)?Object.fromEntries(Object.entries(item).sort(([a],[b])=>a<b?-1:a>b?1:0)):item)).digest("hex")}var init_pluginRecoveryDefinition=__esm({"../client/dist/plugins/sdk/pluginRecoveryDefinition.js"(){"use strict"}});function isPluginPageMatchPattern(value){return typeof value=="string"&&value.length<=2048&&pattern.test(value)}var pattern,init_plugin_pages=__esm({"../client/dist/generated/plugin-pages.js"(){"use strict";pattern=/^(https?|\*):\/\/(\*|\*\.[a-z0-9.-]+|[a-z0-9.-]+|localhost)(:\d+)?(\/[^#]*)$/i}});import{Script}from"node:vm";function normalizePluginPageRuntime(value){if(value===void 0)return;let runtime=value;if(!runtime||runtime.version!==1||!Array.isArray(runtime.matches)||!runtime.matches.length||runtime.matches.length>64||!runtime.matches.every(isPluginPageMatchPattern)||typeof runtime.code!="string"||Buffer.byteLength(runtime.code)>384*1024||Buffer.byteLength(JSON.stringify(runtime))>448*1024)throw new Error("Invalid plugin pageRuntime declaration");if(new Script(`(${runtime.code}
621
- )`,{filename:"plugin-page-runtime.js"}),runtime.events!==void 0&&(!runtime.events||typeof runtime.events!="object"||Array.isArray(runtime.events)||Object.keys(runtime.events).length>32))throw new Error("Invalid page runtime events");for(let[name,event]of Object.entries(runtime.events??{}))if(!/^[a-z][a-z0-9-]{0,63}$/.test(name)||!event||!/^[a-z][a-z0-9-]*$/.test(event.command)||!event.schema||typeof event.schema!="object"||Array.isArray(event.schema)||event.policy!==void 0&&!["serial","latest","parallel"].includes(event.policy)||event.concurrency!==void 0&&(!Number.isSafeInteger(event.concurrency)||event.concurrency<1||event.concurrency>8)||event.maxPending!==void 0&&(!Number.isSafeInteger(event.maxPending)||event.maxPending<1||event.maxPending>64)||event.schema.$async)throw new Error(`Invalid page event binding: ${name}`);if(runtime.initialize!==void 0&&!/^[a-z][a-z0-9-]*$/.test(runtime.initialize))throw new Error("Invalid page runtime initialize command");return JSON.parse(JSON.stringify(runtime))}var init_pluginPageDefinition=__esm({"../client/dist/plugins/sdk/pluginPageDefinition.js"(){"use strict";init_plugin_pages()}});import{readFileSync as readFileSync8,realpathSync as realpathSync2}from"node:fs";import{basename as basename2,dirname as dirname5,isAbsolute as isAbsolute4,relative as relative3,resolve as resolve4}from"node:path";function loadPluginAppProfiles(entry,value){if(value===void 0)return{};if(!value||typeof value!="object"||Array.isArray(value))throw new Error("appProfiles must be an object");let declaration=value;if(!Array.isArray(declaration.profiles))throw new Error("appProfiles.profiles must be an array");let root=realpathSync2(basename2(dirname5(entry))==="scripts"?dirname5(dirname5(entry)):dirname5(entry)),sources={},profiles=declaration.profiles.map(profile=>{if(typeof profile!="string")return profile;if(isAbsolute4(profile)||!profile.endsWith(".json"))throw new Error("Profile resource must be a relative JSON path");let reference=resolve4(root,profile),file2=realpathSync2(reference),inside=relative3(root,file2);if(inside.startsWith("..")||isAbsolute4(inside))throw new Error("Profile resource must stay inside the Skill directory");let version3=pluginFileVersion(file2),content=readFileSync8(file2,"utf8");if(content.length>65536)throw new Error("Profile resource exceeds 64 KiB");let parsed=JSON.parse(content);if(pluginFileVersion(reference)!==version3)throw new Error("Profile resource changed during registration");return sources[reference]=version3,parsed});return{appProfiles:validateAppProfileContribution({...declaration,profiles}),profileSources:sources}}var init_pluginAppProfiles=__esm({"../client/dist/plugins/sdk/pluginAppProfiles.js"(){"use strict";init_app_profile_definition();init_pluginSource()}});import{existsSync as existsSync6,lstatSync,renameSync as renameSync5}from"node:fs";import{join as join11}from"node:path";function skillManifestPath(directory){for(let name of["SKILL.md",DISABLED_SKILL_MANIFEST]){let file2=join11(directory,name);if(existsSync6(file2))return file2}}function getSkillEnabled(directory){let manifest=skillManifestPath(directory);return manifest?manifest===join11(directory,"SKILL.md"):void 0}function setSkillEnabled(directory,enabled){let active=join11(directory,"SKILL.md"),disabled=join11(directory,DISABLED_SKILL_MANIFEST),source=enabled?disabled:active,destination=enabled?active:disabled,sourceStatus=lstatSync(source,{throwIfNoEntry:!1}),destinationStatus=lstatSync(destination,{throwIfNoEntry:!1});if(sourceStatus&&destinationStatus)throw new Error("Skill 清单存在冲突,请检查 SKILL.md 和 SKILL.md.mearl-disabled");if(!sourceStatus){if(destinationStatus?.isFile())return;throw new Error("找不到 Skill 清单")}if(!sourceStatus.isFile())throw new Error("Skill 清单必须是普通文件");renameSync5(source,destination)}var DISABLED_SKILL_MANIFEST,init_skillManifest=__esm({"../client/dist/plugins/skillManifest.js"(){"use strict";DISABLED_SKILL_MANIFEST="SKILL.md.mearl-disabled"}});var CommanderError,InvalidArgumentError,init_error=__esm({"../../../../../Library/pnpm/store/v10/links/@/commander/15.0.0/9bd77ae8231d200f24068f3a3c0041c8f45139e569eecf1914d5eb9201dc6e22/node_modules/commander/lib/error.js"(){CommanderError=class extends Error{constructor(exitCode,code,message){super(message),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=code,this.exitCode=exitCode,this.nestedError=void 0}},InvalidArgumentError=class extends CommanderError{constructor(message){super(1,"commander.invalidArgument",message),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}}});function humanReadableArgName(arg){let nameOutput=arg.name()+(arg.variadic===!0?"...":"");return arg.required?"<"+nameOutput+">":"["+nameOutput+"]"}var Argument,init_argument=__esm({"../../../../../Library/pnpm/store/v10/links/@/commander/15.0.0/9bd77ae8231d200f24068f3a3c0041c8f45139e569eecf1914d5eb9201dc6e22/node_modules/commander/lib/argument.js"(){init_error();Argument=class{constructor(name,description){switch(this.description=description||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,name[0]){case"<":this.required=!0,this._name=name.slice(1,-1);break;case"[":this.required=!1,this._name=name.slice(1,-1);break;default:this.required=!0,this._name=name;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(value,previous){return previous===this.defaultValue||!Array.isArray(previous)?[value]:(previous.push(value),previous)}default(value,description){return this.defaultValue=value,this.defaultValueDescription=description,this}argParser(fn){return this.parseArg=fn,this}choices(values){return this.argChoices=values.slice(),this.parseArg=(arg,previous)=>{if(!this.argChoices.includes(arg))throw new InvalidArgumentError(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(arg,previous):arg},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}}});import{stripVTControlCharacters}from"node:util";var Help,init_help=__esm({"../../../../../Library/pnpm/store/v10/links/@/commander/15.0.0/9bd77ae8231d200f24068f3a3c0041c8f45139e569eecf1914d5eb9201dc6e22/node_modules/commander/lib/help.js"(){init_argument();Help=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(contextOptions){this.helpWidth=this.helpWidth??contextOptions.helpWidth??80}visibleCommands(cmd){let visibleCommands=cmd.commands.filter(cmd2=>!cmd2._hidden),helpCommand=cmd._getHelpCommand();return helpCommand&&!helpCommand._hidden&&visibleCommands.push(helpCommand),this.sortSubcommands&&visibleCommands.sort((a,b)=>a.name().localeCompare(b.name())),visibleCommands}compareOptions(a,b){let getSortKey=option=>option.short?option.short.replace(/^-/,""):option.long.replace(/^--/,"");return getSortKey(a).localeCompare(getSortKey(b))}visibleOptions(cmd){let visibleOptions=cmd.options.filter(option=>!option.hidden),helpOption=cmd._getHelpOption();if(helpOption&&!helpOption.hidden){let removeShort=helpOption.short&&cmd._findOption(helpOption.short),removeLong=helpOption.long&&cmd._findOption(helpOption.long);!removeShort&&!removeLong?visibleOptions.push(helpOption):helpOption.long&&!removeLong?visibleOptions.push(cmd.createOption(helpOption.long,helpOption.description)):helpOption.short&&!removeShort&&visibleOptions.push(cmd.createOption(helpOption.short,helpOption.description))}return this.sortOptions&&visibleOptions.sort(this.compareOptions),visibleOptions}visibleGlobalOptions(cmd){if(!this.showGlobalOptions)return[];let globalOptions=[];for(let ancestorCmd=cmd.parent;ancestorCmd;ancestorCmd=ancestorCmd.parent){let visibleOptions=ancestorCmd.options.filter(option=>!option.hidden);globalOptions.push(...visibleOptions)}return this.sortOptions&&globalOptions.sort(this.compareOptions),globalOptions}visibleArguments(cmd){return cmd._argsDescription&&cmd.registeredArguments.forEach(argument=>{argument.description=argument.description||cmd._argsDescription[argument.name()]||""}),cmd.registeredArguments.find(argument=>argument.description)?cmd.registeredArguments:[]}subcommandTerm(cmd){let args=cmd.registeredArguments.map(arg=>humanReadableArgName(arg)).join(" ");return cmd._name+(cmd._aliases[0]?"|"+cmd._aliases[0]:"")+(cmd.options.length?" [options]":"")+(args?" "+args:"")}optionTerm(option){return option.flags}argumentTerm(argument){return argument.name()}longestSubcommandTermLength(cmd,helper){return helper.visibleCommands(cmd).reduce((max,command)=>Math.max(max,this.displayWidth(helper.styleSubcommandTerm(helper.subcommandTerm(command)))),0)}longestOptionTermLength(cmd,helper){return helper.visibleOptions(cmd).reduce((max,option)=>Math.max(max,this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option)))),0)}longestGlobalOptionTermLength(cmd,helper){return helper.visibleGlobalOptions(cmd).reduce((max,option)=>Math.max(max,this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option)))),0)}longestArgumentTermLength(cmd,helper){return helper.visibleArguments(cmd).reduce((max,argument)=>Math.max(max,this.displayWidth(helper.styleArgumentTerm(helper.argumentTerm(argument)))),0)}commandUsage(cmd){let cmdName=cmd._name;cmd._aliases[0]&&(cmdName=cmdName+"|"+cmd._aliases[0]);let ancestorCmdNames="";for(let ancestorCmd=cmd.parent;ancestorCmd;ancestorCmd=ancestorCmd.parent)ancestorCmdNames=ancestorCmd.name()+" "+ancestorCmdNames;return ancestorCmdNames+cmdName+" "+cmd.usage()}commandDescription(cmd){return cmd.description()}subcommandDescription(cmd){return cmd.summary()||cmd.description()}optionDescription(option){let extraInfo=[];if(option.argChoices&&extraInfo.push(`choices: ${option.argChoices.map(choice=>JSON.stringify(choice)).join(", ")}`),option.defaultValue!==void 0&&(option.required||option.optional||option.isBoolean()&&typeof option.defaultValue=="boolean")&&extraInfo.push(`default: ${option.defaultValueDescription||JSON.stringify(option.defaultValue)}`),option.presetArg!==void 0&&option.optional&&extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`),option.envVar!==void 0&&extraInfo.push(`env: ${option.envVar}`),extraInfo.length>0){let extraDescription=`(${extraInfo.join(", ")})`;return option.description?`${option.description} ${extraDescription}`:extraDescription}return option.description}argumentDescription(argument){let extraInfo=[];if(argument.argChoices&&extraInfo.push(`choices: ${argument.argChoices.map(choice=>JSON.stringify(choice)).join(", ")}`),argument.defaultValue!==void 0&&extraInfo.push(`default: ${argument.defaultValueDescription||JSON.stringify(argument.defaultValue)}`),extraInfo.length>0){let extraDescription=`(${extraInfo.join(", ")})`;return argument.description?`${argument.description} ${extraDescription}`:extraDescription}return argument.description}formatItemList(heading,items,helper){return items.length===0?[]:[helper.styleTitle(heading),...items,""]}groupItems(unsortedItems,visibleItems,getGroup){let result=new Map;return unsortedItems.forEach(item=>{let group=getGroup(item);result.has(group)||result.set(group,[])}),visibleItems.forEach(item=>{let group=getGroup(item);result.has(group)||result.set(group,[]),result.get(group).push(item)}),result}formatHelp(cmd,helper){let termWidth=helper.padWidth(cmd,helper),helpWidth=helper.helpWidth??80;function callFormatItem(term,description){return helper.formatItem(term,termWidth,description,helper)}let output2=[`${helper.styleTitle("Usage:")} ${helper.styleUsage(helper.commandUsage(cmd))}`,""],commandDescription=helper.commandDescription(cmd);commandDescription.length>0&&(output2=output2.concat([helper.boxWrap(helper.styleCommandDescription(commandDescription),helpWidth),""]));let argumentList=helper.visibleArguments(cmd).map(argument=>callFormatItem(helper.styleArgumentTerm(helper.argumentTerm(argument)),helper.styleArgumentDescription(helper.argumentDescription(argument))));if(output2=output2.concat(this.formatItemList("Arguments:",argumentList,helper)),this.groupItems(cmd.options,helper.visibleOptions(cmd),option=>option.helpGroupHeading??"Options:").forEach((options,group)=>{let optionList=options.map(option=>callFormatItem(helper.styleOptionTerm(helper.optionTerm(option)),helper.styleOptionDescription(helper.optionDescription(option))));output2=output2.concat(this.formatItemList(group,optionList,helper))}),helper.showGlobalOptions){let globalOptionList=helper.visibleGlobalOptions(cmd).map(option=>callFormatItem(helper.styleOptionTerm(helper.optionTerm(option)),helper.styleOptionDescription(helper.optionDescription(option))));output2=output2.concat(this.formatItemList("Global Options:",globalOptionList,helper))}return this.groupItems(cmd.commands,helper.visibleCommands(cmd),sub=>sub.helpGroup()||"Commands:").forEach((commands,group)=>{let commandList=commands.map(sub=>callFormatItem(helper.styleSubcommandTerm(helper.subcommandTerm(sub)),helper.styleSubcommandDescription(helper.subcommandDescription(sub))));output2=output2.concat(this.formatItemList(group,commandList,helper))}),output2.join(`
621
+ )`,{filename:"plugin-page-runtime.js"}),runtime.events!==void 0&&(!runtime.events||typeof runtime.events!="object"||Array.isArray(runtime.events)||Object.keys(runtime.events).length>32))throw new Error("Invalid page runtime events");for(let[name,event]of Object.entries(runtime.events??{}))if(!/^[a-z][a-z0-9-]{0,63}$/.test(name)||!event||!/^[a-z][a-z0-9-]*$/.test(event.command)||!event.schema||typeof event.schema!="object"||Array.isArray(event.schema)||event.policy!==void 0&&!["serial","latest","parallel"].includes(event.policy)||event.concurrency!==void 0&&(!Number.isSafeInteger(event.concurrency)||event.concurrency<1||event.concurrency>8)||event.maxPending!==void 0&&(!Number.isSafeInteger(event.maxPending)||event.maxPending<1||event.maxPending>64)||event.schema.$async)throw new Error(`Invalid page event binding: ${name}`);if(runtime.initialize!==void 0&&!/^[a-z][a-z0-9-]*$/.test(runtime.initialize))throw new Error("Invalid page runtime initialize command");return JSON.parse(JSON.stringify(runtime))}var init_pluginPageDefinition=__esm({"../client/dist/plugins/sdk/pluginPageDefinition.js"(){"use strict";init_plugin_pages()}});import{readFileSync as readFileSync8,realpathSync as realpathSync2}from"node:fs";import{basename as basename2,dirname as dirname5,isAbsolute as isAbsolute4,relative as relative3,resolve as resolve4}from"node:path";function loadPluginAppProfiles(entry,value){if(value===void 0)return{};if(!value||typeof value!="object"||Array.isArray(value))throw new Error("appProfiles must be an object");let declaration=value;if(!Array.isArray(declaration.profiles))throw new Error("appProfiles.profiles must be an array");let root=realpathSync2(basename2(dirname5(entry))==="scripts"?dirname5(dirname5(entry)):dirname5(entry)),sources={},profiles=declaration.profiles.map(profile=>{if(typeof profile!="string")return profile;if(isAbsolute4(profile)||!profile.endsWith(".json"))throw new Error("Profile resource must be a relative JSON path");let reference=resolve4(root,profile),file2=realpathSync2(reference),inside=relative3(root,file2);if(inside.startsWith("..")||isAbsolute4(inside))throw new Error("Profile resource must stay inside the Skill directory");let version3=pluginFileVersion(file2),content=readFileSync8(file2,"utf8");if(content.length>65536)throw new Error("Profile resource exceeds 64 KiB");let parsed=JSON.parse(content);if(pluginFileVersion(reference)!==version3)throw new Error("Profile resource changed during registration");return sources[reference]=version3,parsed});return{appProfiles:validateAppProfileContribution({...declaration,profiles}),profileSources:sources}}var init_pluginAppProfiles=__esm({"../client/dist/plugins/sdk/pluginAppProfiles.js"(){"use strict";init_app_profile_definition();init_pluginSource()}});import{existsSync as existsSync6,lstatSync,renameSync as renameSync5}from"node:fs";import{join as join11}from"node:path";function skillManifestPath(directory){for(let name of["SKILL.md",DISABLED_SKILL_MANIFEST]){let file2=join11(directory,name);if(existsSync6(file2))return file2}}function getSkillEnabled(directory){let manifest=skillManifestPath(directory);return manifest?manifest===join11(directory,"SKILL.md"):void 0}function setSkillEnabled(directory,enabled){let active=join11(directory,"SKILL.md"),disabled=join11(directory,DISABLED_SKILL_MANIFEST),source=enabled?disabled:active,destination=enabled?active:disabled,sourceStatus=lstatSync(source,{throwIfNoEntry:!1}),destinationStatus=lstatSync(destination,{throwIfNoEntry:!1});if(sourceStatus&&destinationStatus)throw new Error("Skill 清单存在冲突,请检查 SKILL.md 和 SKILL.md.mearl-disabled");if(!sourceStatus){if(destinationStatus?.isFile())return;throw new Error("找不到 Skill 清单")}if(!sourceStatus.isFile())throw new Error("Skill 清单必须是普通文件");renameSync5(source,destination)}var DISABLED_SKILL_MANIFEST,init_skillManifest=__esm({"../client/dist/plugins/skillManifest.js"(){"use strict";DISABLED_SKILL_MANIFEST="SKILL.md.mearl-disabled"}});var CommanderError,InvalidArgumentError,init_error=__esm({"../../node_modules/.pnpm/commander@15.0.0/node_modules/commander/lib/error.js"(){CommanderError=class extends Error{constructor(exitCode,code,message){super(message),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=code,this.exitCode=exitCode,this.nestedError=void 0}},InvalidArgumentError=class extends CommanderError{constructor(message){super(1,"commander.invalidArgument",message),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}}});function humanReadableArgName(arg){let nameOutput=arg.name()+(arg.variadic===!0?"...":"");return arg.required?"<"+nameOutput+">":"["+nameOutput+"]"}var Argument,init_argument=__esm({"../../node_modules/.pnpm/commander@15.0.0/node_modules/commander/lib/argument.js"(){init_error();Argument=class{constructor(name,description){switch(this.description=description||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,name[0]){case"<":this.required=!0,this._name=name.slice(1,-1);break;case"[":this.required=!1,this._name=name.slice(1,-1);break;default:this.required=!0,this._name=name;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(value,previous){return previous===this.defaultValue||!Array.isArray(previous)?[value]:(previous.push(value),previous)}default(value,description){return this.defaultValue=value,this.defaultValueDescription=description,this}argParser(fn){return this.parseArg=fn,this}choices(values){return this.argChoices=values.slice(),this.parseArg=(arg,previous)=>{if(!this.argChoices.includes(arg))throw new InvalidArgumentError(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(arg,previous):arg},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}}});import{stripVTControlCharacters}from"node:util";var Help,init_help=__esm({"../../node_modules/.pnpm/commander@15.0.0/node_modules/commander/lib/help.js"(){init_argument();Help=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(contextOptions){this.helpWidth=this.helpWidth??contextOptions.helpWidth??80}visibleCommands(cmd){let visibleCommands=cmd.commands.filter(cmd2=>!cmd2._hidden),helpCommand=cmd._getHelpCommand();return helpCommand&&!helpCommand._hidden&&visibleCommands.push(helpCommand),this.sortSubcommands&&visibleCommands.sort((a,b)=>a.name().localeCompare(b.name())),visibleCommands}compareOptions(a,b){let getSortKey=option=>option.short?option.short.replace(/^-/,""):option.long.replace(/^--/,"");return getSortKey(a).localeCompare(getSortKey(b))}visibleOptions(cmd){let visibleOptions=cmd.options.filter(option=>!option.hidden),helpOption=cmd._getHelpOption();if(helpOption&&!helpOption.hidden){let removeShort=helpOption.short&&cmd._findOption(helpOption.short),removeLong=helpOption.long&&cmd._findOption(helpOption.long);!removeShort&&!removeLong?visibleOptions.push(helpOption):helpOption.long&&!removeLong?visibleOptions.push(cmd.createOption(helpOption.long,helpOption.description)):helpOption.short&&!removeShort&&visibleOptions.push(cmd.createOption(helpOption.short,helpOption.description))}return this.sortOptions&&visibleOptions.sort(this.compareOptions),visibleOptions}visibleGlobalOptions(cmd){if(!this.showGlobalOptions)return[];let globalOptions=[];for(let ancestorCmd=cmd.parent;ancestorCmd;ancestorCmd=ancestorCmd.parent){let visibleOptions=ancestorCmd.options.filter(option=>!option.hidden);globalOptions.push(...visibleOptions)}return this.sortOptions&&globalOptions.sort(this.compareOptions),globalOptions}visibleArguments(cmd){return cmd._argsDescription&&cmd.registeredArguments.forEach(argument=>{argument.description=argument.description||cmd._argsDescription[argument.name()]||""}),cmd.registeredArguments.find(argument=>argument.description)?cmd.registeredArguments:[]}subcommandTerm(cmd){let args=cmd.registeredArguments.map(arg=>humanReadableArgName(arg)).join(" ");return cmd._name+(cmd._aliases[0]?"|"+cmd._aliases[0]:"")+(cmd.options.length?" [options]":"")+(args?" "+args:"")}optionTerm(option){return option.flags}argumentTerm(argument){return argument.name()}longestSubcommandTermLength(cmd,helper){return helper.visibleCommands(cmd).reduce((max,command)=>Math.max(max,this.displayWidth(helper.styleSubcommandTerm(helper.subcommandTerm(command)))),0)}longestOptionTermLength(cmd,helper){return helper.visibleOptions(cmd).reduce((max,option)=>Math.max(max,this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option)))),0)}longestGlobalOptionTermLength(cmd,helper){return helper.visibleGlobalOptions(cmd).reduce((max,option)=>Math.max(max,this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option)))),0)}longestArgumentTermLength(cmd,helper){return helper.visibleArguments(cmd).reduce((max,argument)=>Math.max(max,this.displayWidth(helper.styleArgumentTerm(helper.argumentTerm(argument)))),0)}commandUsage(cmd){let cmdName=cmd._name;cmd._aliases[0]&&(cmdName=cmdName+"|"+cmd._aliases[0]);let ancestorCmdNames="";for(let ancestorCmd=cmd.parent;ancestorCmd;ancestorCmd=ancestorCmd.parent)ancestorCmdNames=ancestorCmd.name()+" "+ancestorCmdNames;return ancestorCmdNames+cmdName+" "+cmd.usage()}commandDescription(cmd){return cmd.description()}subcommandDescription(cmd){return cmd.summary()||cmd.description()}optionDescription(option){let extraInfo=[];if(option.argChoices&&extraInfo.push(`choices: ${option.argChoices.map(choice=>JSON.stringify(choice)).join(", ")}`),option.defaultValue!==void 0&&(option.required||option.optional||option.isBoolean()&&typeof option.defaultValue=="boolean")&&extraInfo.push(`default: ${option.defaultValueDescription||JSON.stringify(option.defaultValue)}`),option.presetArg!==void 0&&option.optional&&extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`),option.envVar!==void 0&&extraInfo.push(`env: ${option.envVar}`),extraInfo.length>0){let extraDescription=`(${extraInfo.join(", ")})`;return option.description?`${option.description} ${extraDescription}`:extraDescription}return option.description}argumentDescription(argument){let extraInfo=[];if(argument.argChoices&&extraInfo.push(`choices: ${argument.argChoices.map(choice=>JSON.stringify(choice)).join(", ")}`),argument.defaultValue!==void 0&&extraInfo.push(`default: ${argument.defaultValueDescription||JSON.stringify(argument.defaultValue)}`),extraInfo.length>0){let extraDescription=`(${extraInfo.join(", ")})`;return argument.description?`${argument.description} ${extraDescription}`:extraDescription}return argument.description}formatItemList(heading,items,helper){return items.length===0?[]:[helper.styleTitle(heading),...items,""]}groupItems(unsortedItems,visibleItems,getGroup){let result=new Map;return unsortedItems.forEach(item=>{let group=getGroup(item);result.has(group)||result.set(group,[])}),visibleItems.forEach(item=>{let group=getGroup(item);result.has(group)||result.set(group,[]),result.get(group).push(item)}),result}formatHelp(cmd,helper){let termWidth=helper.padWidth(cmd,helper),helpWidth=helper.helpWidth??80;function callFormatItem(term,description){return helper.formatItem(term,termWidth,description,helper)}let output2=[`${helper.styleTitle("Usage:")} ${helper.styleUsage(helper.commandUsage(cmd))}`,""],commandDescription=helper.commandDescription(cmd);commandDescription.length>0&&(output2=output2.concat([helper.boxWrap(helper.styleCommandDescription(commandDescription),helpWidth),""]));let argumentList=helper.visibleArguments(cmd).map(argument=>callFormatItem(helper.styleArgumentTerm(helper.argumentTerm(argument)),helper.styleArgumentDescription(helper.argumentDescription(argument))));if(output2=output2.concat(this.formatItemList("Arguments:",argumentList,helper)),this.groupItems(cmd.options,helper.visibleOptions(cmd),option=>option.helpGroupHeading??"Options:").forEach((options,group)=>{let optionList=options.map(option=>callFormatItem(helper.styleOptionTerm(helper.optionTerm(option)),helper.styleOptionDescription(helper.optionDescription(option))));output2=output2.concat(this.formatItemList(group,optionList,helper))}),helper.showGlobalOptions){let globalOptionList=helper.visibleGlobalOptions(cmd).map(option=>callFormatItem(helper.styleOptionTerm(helper.optionTerm(option)),helper.styleOptionDescription(helper.optionDescription(option))));output2=output2.concat(this.formatItemList("Global Options:",globalOptionList,helper))}return this.groupItems(cmd.commands,helper.visibleCommands(cmd),sub=>sub.helpGroup()||"Commands:").forEach((commands,group)=>{let commandList=commands.map(sub=>callFormatItem(helper.styleSubcommandTerm(helper.subcommandTerm(sub)),helper.styleSubcommandDescription(helper.subcommandDescription(sub))));output2=output2.concat(this.formatItemList(group,commandList,helper))}),output2.join(`
622
622
  `)}displayWidth(str){return stripVTControlCharacters(str).length}styleTitle(str){return str}styleUsage(str){return str.split(" ").map(word=>word==="[options]"?this.styleOptionText(word):word==="[command]"?this.styleSubcommandText(word):word[0]==="["||word[0]==="<"?this.styleArgumentText(word):this.styleCommandText(word)).join(" ")}styleCommandDescription(str){return this.styleDescriptionText(str)}styleOptionDescription(str){return this.styleDescriptionText(str)}styleSubcommandDescription(str){return this.styleDescriptionText(str)}styleArgumentDescription(str){return this.styleDescriptionText(str)}styleDescriptionText(str){return str}styleOptionTerm(str){return this.styleOptionText(str)}styleSubcommandTerm(str){return str.split(" ").map(word=>word==="[options]"?this.styleOptionText(word):word[0]==="["||word[0]==="<"?this.styleArgumentText(word):this.styleSubcommandText(word)).join(" ")}styleArgumentTerm(str){return this.styleArgumentText(str)}styleOptionText(str){return str}styleArgumentText(str){return str}styleSubcommandText(str){return str}styleCommandText(str){return str}padWidth(cmd,helper){return Math.max(helper.longestOptionTermLength(cmd,helper),helper.longestGlobalOptionTermLength(cmd,helper),helper.longestSubcommandTermLength(cmd,helper),helper.longestArgumentTermLength(cmd,helper))}preformatted(str){return/\n[^\S\r\n]/.test(str)}formatItem(term,termWidth,description,helper){let itemIndentStr=" ".repeat(2);if(!description)return itemIndentStr+term;let paddedTerm=term.padEnd(termWidth+term.length-helper.displayWidth(term)),spacerWidth=2,remainingWidth=(this.helpWidth??80)-termWidth-spacerWidth-2,formattedDescription;return remainingWidth<this.minWidthToWrap||helper.preformatted(description)?formattedDescription=description:formattedDescription=helper.boxWrap(description,remainingWidth).replace(/\n/g,`
623
623
  `+" ".repeat(termWidth+spacerWidth)),itemIndentStr+paddedTerm+" ".repeat(spacerWidth)+formattedDescription.replace(/\n/g,`
624
624
  ${itemIndentStr}`)}boxWrap(str,width){if(width<this.minWidthToWrap)return str;let rawLines=str.split(/\r\n|\n/),chunkPattern=/[\s]*[^\s]+/g,wrappedLines=[];return rawLines.forEach(line=>{let chunks=line.match(chunkPattern);if(chunks===null){wrappedLines.push("");return}let sumChunks=[chunks.shift()],sumWidth=this.displayWidth(sumChunks[0]);chunks.forEach(chunk=>{let visibleWidth=this.displayWidth(chunk);if(sumWidth+visibleWidth<=width){sumChunks.push(chunk),sumWidth+=visibleWidth;return}wrappedLines.push(sumChunks.join(""));let nextChunk=chunk.trimStart();sumChunks=[nextChunk],sumWidth=this.displayWidth(nextChunk)}),wrappedLines.push(sumChunks.join(""))}),wrappedLines.join(`
@@ -628,9 +628,9 @@ ${itemIndentStr}`)}boxWrap(str,width){if(width<this.minWidthToWrap)return str;le
628
628
  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):shortFlagExp.test(unsupportedFlag)?new Error(`${baseError}
629
629
  - too many short flags`):longFlagExp.test(unsupportedFlag)?new Error(`${baseError}
630
630
  - too many long flags`):new Error(`${baseError}
631
- - unrecognised flag format`)}if(shortFlag===void 0&&longFlag===void 0)throw new Error(`option creation failed due to no flags found in '${flags}'.`);return{shortFlag,longFlag}}var Option,DualOptions,init_option=__esm({"../../../../../Library/pnpm/store/v10/links/@/commander/15.0.0/9bd77ae8231d200f24068f3a3c0041c8f45139e569eecf1914d5eb9201dc6e22/node_modules/commander/lib/option.js"(){init_error();Option=class{constructor(flags,description){this.flags=flags,this.description=description||"",this.required=flags.includes("<"),this.optional=flags.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(flags),this.mandatory=!1;let optionFlags=splitOptionFlags(flags);this.short=optionFlags.shortFlag,this.long=optionFlags.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(value,description){return this.defaultValue=value,this.defaultValueDescription=description,this}preset(arg){return this.presetArg=arg,this}conflicts(names){return this.conflictsWith=this.conflictsWith.concat(names),this}implies(impliedOptionValues){let newImplied=impliedOptionValues;return typeof impliedOptionValues=="string"&&(newImplied={[impliedOptionValues]:!0}),this.implied=Object.assign(this.implied||{},newImplied),this}env(name){return this.envVar=name,this}argParser(fn){return this.parseArg=fn,this}makeOptionMandatory(mandatory=!0){return this.mandatory=!!mandatory,this}hideHelp(hide=!0){return this.hidden=!!hide,this}_collectValue(value,previous){return previous===this.defaultValue||!Array.isArray(previous)?[value]:(previous.push(value),previous)}choices(values){return this.argChoices=values.slice(),this.parseArg=(arg,previous)=>{if(!this.argChoices.includes(arg))throw new InvalidArgumentError(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(arg,previous):arg},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?camelcase(this.name().replace(/^no-/,"")):camelcase(this.name())}helpGroup(heading){return this.helpGroupHeading=heading,this}is(arg){return this.short===arg||this.long===arg}isBoolean(){return!this.required&&!this.optional&&!this.negate}},DualOptions=class{constructor(options){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,options.forEach(option=>{option.negate?this.negativeOptions.set(option.attributeName(),option):this.positiveOptions.set(option.attributeName(),option)}),this.negativeOptions.forEach((value,key)=>{this.positiveOptions.has(key)&&this.dualOptions.add(key)})}valueFromOption(value,option){let optionKey=option.attributeName();if(!this.dualOptions.has(optionKey))return!0;let preset=this.negativeOptions.get(optionKey).presetArg,negativeValue=preset!==void 0?preset:!1;return option.negate===(negativeValue===value)}}}});function editDistance(a,b){if(Math.abs(a.length-b.length)>3)return Math.max(a.length,b.length);let d=[];for(let i=0;i<=a.length;i++)d[i]=[i];for(let j=0;j<=b.length;j++)d[0][j]=j;for(let j=1;j<=b.length;j++)for(let i=1;i<=a.length;i++){let cost;a[i-1]===b[j-1]?cost=0:cost=1,d[i][j]=Math.min(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+cost),i>1&&j>1&&a[i-1]===b[j-2]&&a[i-2]===b[j-1]&&(d[i][j]=Math.min(d[i][j],d[i-2][j-2]+1))}return d[a.length][b.length]}function suggestSimilar(word,candidates){if(!candidates||candidates.length===0)return"";candidates=Array.from(new Set(candidates));let searchingOptions=word.startsWith("--");searchingOptions&&(word=word.slice(2),candidates=candidates.map(candidate=>candidate.slice(2)));let similar=[],bestDistance=3,minSimilarity=.4;return candidates.forEach(candidate=>{if(candidate.length<=1)return;let distance=editDistance(word,candidate),length=Math.max(word.length,candidate.length);(length-distance)/length>minSimilarity&&(distance<bestDistance?(bestDistance=distance,similar=[candidate]):distance===bestDistance&&similar.push(candidate))}),similar.sort((a,b)=>a.localeCompare(b)),searchingOptions&&(similar=similar.map(candidate=>`--${candidate}`)),similar.length>1?`
631
+ - unrecognised flag format`)}if(shortFlag===void 0&&longFlag===void 0)throw new Error(`option creation failed due to no flags found in '${flags}'.`);return{shortFlag,longFlag}}var Option,DualOptions,init_option=__esm({"../../node_modules/.pnpm/commander@15.0.0/node_modules/commander/lib/option.js"(){init_error();Option=class{constructor(flags,description){this.flags=flags,this.description=description||"",this.required=flags.includes("<"),this.optional=flags.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(flags),this.mandatory=!1;let optionFlags=splitOptionFlags(flags);this.short=optionFlags.shortFlag,this.long=optionFlags.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(value,description){return this.defaultValue=value,this.defaultValueDescription=description,this}preset(arg){return this.presetArg=arg,this}conflicts(names){return this.conflictsWith=this.conflictsWith.concat(names),this}implies(impliedOptionValues){let newImplied=impliedOptionValues;return typeof impliedOptionValues=="string"&&(newImplied={[impliedOptionValues]:!0}),this.implied=Object.assign(this.implied||{},newImplied),this}env(name){return this.envVar=name,this}argParser(fn){return this.parseArg=fn,this}makeOptionMandatory(mandatory=!0){return this.mandatory=!!mandatory,this}hideHelp(hide=!0){return this.hidden=!!hide,this}_collectValue(value,previous){return previous===this.defaultValue||!Array.isArray(previous)?[value]:(previous.push(value),previous)}choices(values){return this.argChoices=values.slice(),this.parseArg=(arg,previous)=>{if(!this.argChoices.includes(arg))throw new InvalidArgumentError(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(arg,previous):arg},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?camelcase(this.name().replace(/^no-/,"")):camelcase(this.name())}helpGroup(heading){return this.helpGroupHeading=heading,this}is(arg){return this.short===arg||this.long===arg}isBoolean(){return!this.required&&!this.optional&&!this.negate}},DualOptions=class{constructor(options){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,options.forEach(option=>{option.negate?this.negativeOptions.set(option.attributeName(),option):this.positiveOptions.set(option.attributeName(),option)}),this.negativeOptions.forEach((value,key)=>{this.positiveOptions.has(key)&&this.dualOptions.add(key)})}valueFromOption(value,option){let optionKey=option.attributeName();if(!this.dualOptions.has(optionKey))return!0;let preset=this.negativeOptions.get(optionKey).presetArg,negativeValue=preset!==void 0?preset:!1;return option.negate===(negativeValue===value)}}}});function editDistance(a,b){if(Math.abs(a.length-b.length)>3)return Math.max(a.length,b.length);let d=[];for(let i=0;i<=a.length;i++)d[i]=[i];for(let j=0;j<=b.length;j++)d[0][j]=j;for(let j=1;j<=b.length;j++)for(let i=1;i<=a.length;i++){let cost;a[i-1]===b[j-1]?cost=0:cost=1,d[i][j]=Math.min(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+cost),i>1&&j>1&&a[i-1]===b[j-2]&&a[i-2]===b[j-1]&&(d[i][j]=Math.min(d[i][j],d[i-2][j-2]+1))}return d[a.length][b.length]}function suggestSimilar(word,candidates){if(!candidates||candidates.length===0)return"";candidates=Array.from(new Set(candidates));let searchingOptions=word.startsWith("--");searchingOptions&&(word=word.slice(2),candidates=candidates.map(candidate=>candidate.slice(2)));let similar=[],bestDistance=3,minSimilarity=.4;return candidates.forEach(candidate=>{if(candidate.length<=1)return;let distance=editDistance(word,candidate),length=Math.max(word.length,candidate.length);(length-distance)/length>minSimilarity&&(distance<bestDistance?(bestDistance=distance,similar=[candidate]):distance===bestDistance&&similar.push(candidate))}),similar.sort((a,b)=>a.localeCompare(b)),searchingOptions&&(similar=similar.map(candidate=>`--${candidate}`)),similar.length>1?`
632
632
  (Did you mean one of ${similar.join(", ")}?)`:similar.length===1?`
633
- (Did you mean ${similar[0]}?)`:""}var init_suggestSimilar=__esm({"../../../../../Library/pnpm/store/v10/links/@/commander/15.0.0/9bd77ae8231d200f24068f3a3c0041c8f45139e569eecf1914d5eb9201dc6e22/node_modules/commander/lib/suggestSimilar.js"(){}});import{EventEmitter}from"node:events";import childProcess from"node:child_process";import path5 from"node:path";import fs5 from"node:fs";import process2 from"node:process";import{stripVTControlCharacters as stripVTControlCharacters2}from"node:util";function incrementNodeInspectorPort(args){return args.map(arg=>{if(!arg.startsWith("--inspect"))return arg;let debugOption,debugHost="127.0.0.1",debugPort="9229",match;return(match=arg.match(/^(--inspect(-brk)?)$/))!==null?debugOption=match[1]:(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(debugOption=match[1],/^\d+$/.test(match[3])?debugPort=match[3]:debugHost=match[3]):(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(debugOption=match[1],debugHost=match[3],debugPort=match[4]),debugOption&&debugPort!=="0"?`${debugOption}=${debugHost}:${parseInt(debugPort)+1}`:arg})}function useColor(){if(process2.env.NO_COLOR||process2.env.FORCE_COLOR==="0"||process2.env.FORCE_COLOR==="false")return!1;if(process2.env.FORCE_COLOR||process2.env.CLICOLOR_FORCE!==void 0)return!0}var Command,init_command2=__esm({"../../../../../Library/pnpm/store/v10/links/@/commander/15.0.0/9bd77ae8231d200f24068f3a3c0041c8f45139e569eecf1914d5eb9201dc6e22/node_modules/commander/lib/command.js"(){init_argument();init_error();init_help();init_option();init_suggestSimilar();Command=class _Command extends EventEmitter{constructor(name){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=name||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:str=>process2.stdout.write(str),writeErr:str=>process2.stderr.write(str),outputError:(str,write)=>write(str),getOutHelpWidth:()=>process2.stdout.isTTY?process2.stdout.columns:void 0,getErrHelpWidth:()=>process2.stderr.isTTY?process2.stderr.columns:void 0,getOutHasColors:()=>useColor()??(process2.stdout.isTTY&&process2.stdout.hasColors?.()),getErrHasColors:()=>useColor()??(process2.stderr.isTTY&&process2.stderr.hasColors?.()),stripColor:str=>stripVTControlCharacters2(str)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(sourceCommand){return this._outputConfiguration=sourceCommand._outputConfiguration,this._helpOption=sourceCommand._helpOption,this._helpCommand=sourceCommand._helpCommand,this._helpConfiguration=sourceCommand._helpConfiguration,this._exitCallback=sourceCommand._exitCallback,this._storeOptionsAsProperties=sourceCommand._storeOptionsAsProperties,this._combineFlagAndOptionalValue=sourceCommand._combineFlagAndOptionalValue,this._allowExcessArguments=sourceCommand._allowExcessArguments,this._enablePositionalOptions=sourceCommand._enablePositionalOptions,this._showHelpAfterError=sourceCommand._showHelpAfterError,this._showSuggestionAfterError=sourceCommand._showSuggestionAfterError,this}_getCommandAndAncestors(){let result=[];for(let command=this;command;command=command.parent)result.push(command);return result}command(nameAndArgs,actionOptsOrExecDesc,execOpts){let desc=actionOptsOrExecDesc,opts=execOpts;typeof desc=="object"&&desc!==null&&(opts=desc,desc=null),opts=opts||{};let[,name,args]=nameAndArgs.match(/([^ ]+) *(.*)/),cmd=this.createCommand(name);return desc&&(cmd.description(desc),cmd._executableHandler=!0),opts.isDefault&&(this._defaultCommandName=cmd._name),cmd._hidden=!!(opts.noHelp||opts.hidden),cmd._executableFile=opts.executableFile||null,args&&cmd.arguments(args),this._registerCommand(cmd),cmd.parent=this,cmd.copyInheritedSettings(this),desc?this:cmd}createCommand(name){return new _Command(name)}createHelp(){return Object.assign(new Help,this.configureHelp())}configureHelp(configuration){return configuration===void 0?this._helpConfiguration:(this._helpConfiguration=configuration,this)}configureOutput(configuration){return configuration===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...configuration},this)}showHelpAfterError(displayHelp=!0){return typeof displayHelp!="string"&&(displayHelp=!!displayHelp),this._showHelpAfterError=displayHelp,this}showSuggestionAfterError(displaySuggestion=!0){return this._showSuggestionAfterError=!!displaySuggestion,this}addCommand(cmd,opts){if(!cmd._name)throw new Error(`Command passed to .addCommand() must have a name
633
+ (Did you mean ${similar[0]}?)`:""}var init_suggestSimilar=__esm({"../../node_modules/.pnpm/commander@15.0.0/node_modules/commander/lib/suggestSimilar.js"(){}});import{EventEmitter}from"node:events";import childProcess from"node:child_process";import path5 from"node:path";import fs5 from"node:fs";import process2 from"node:process";import{stripVTControlCharacters as stripVTControlCharacters2}from"node:util";function incrementNodeInspectorPort(args){return args.map(arg=>{if(!arg.startsWith("--inspect"))return arg;let debugOption,debugHost="127.0.0.1",debugPort="9229",match;return(match=arg.match(/^(--inspect(-brk)?)$/))!==null?debugOption=match[1]:(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(debugOption=match[1],/^\d+$/.test(match[3])?debugPort=match[3]:debugHost=match[3]):(match=arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(debugOption=match[1],debugHost=match[3],debugPort=match[4]),debugOption&&debugPort!=="0"?`${debugOption}=${debugHost}:${parseInt(debugPort)+1}`:arg})}function useColor(){if(process2.env.NO_COLOR||process2.env.FORCE_COLOR==="0"||process2.env.FORCE_COLOR==="false")return!1;if(process2.env.FORCE_COLOR||process2.env.CLICOLOR_FORCE!==void 0)return!0}var Command,init_command2=__esm({"../../node_modules/.pnpm/commander@15.0.0/node_modules/commander/lib/command.js"(){init_argument();init_error();init_help();init_option();init_suggestSimilar();Command=class _Command extends EventEmitter{constructor(name){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=name||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:str=>process2.stdout.write(str),writeErr:str=>process2.stderr.write(str),outputError:(str,write)=>write(str),getOutHelpWidth:()=>process2.stdout.isTTY?process2.stdout.columns:void 0,getErrHelpWidth:()=>process2.stderr.isTTY?process2.stderr.columns:void 0,getOutHasColors:()=>useColor()??(process2.stdout.isTTY&&process2.stdout.hasColors?.()),getErrHasColors:()=>useColor()??(process2.stderr.isTTY&&process2.stderr.hasColors?.()),stripColor:str=>stripVTControlCharacters2(str)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(sourceCommand){return this._outputConfiguration=sourceCommand._outputConfiguration,this._helpOption=sourceCommand._helpOption,this._helpCommand=sourceCommand._helpCommand,this._helpConfiguration=sourceCommand._helpConfiguration,this._exitCallback=sourceCommand._exitCallback,this._storeOptionsAsProperties=sourceCommand._storeOptionsAsProperties,this._combineFlagAndOptionalValue=sourceCommand._combineFlagAndOptionalValue,this._allowExcessArguments=sourceCommand._allowExcessArguments,this._enablePositionalOptions=sourceCommand._enablePositionalOptions,this._showHelpAfterError=sourceCommand._showHelpAfterError,this._showSuggestionAfterError=sourceCommand._showSuggestionAfterError,this}_getCommandAndAncestors(){let result=[];for(let command=this;command;command=command.parent)result.push(command);return result}command(nameAndArgs,actionOptsOrExecDesc,execOpts){let desc=actionOptsOrExecDesc,opts=execOpts;typeof desc=="object"&&desc!==null&&(opts=desc,desc=null),opts=opts||{};let[,name,args]=nameAndArgs.match(/([^ ]+) *(.*)/),cmd=this.createCommand(name);return desc&&(cmd.description(desc),cmd._executableHandler=!0),opts.isDefault&&(this._defaultCommandName=cmd._name),cmd._hidden=!!(opts.noHelp||opts.hidden),cmd._executableFile=opts.executableFile||null,args&&cmd.arguments(args),this._registerCommand(cmd),cmd.parent=this,cmd.copyInheritedSettings(this),desc?this:cmd}createCommand(name){return new _Command(name)}createHelp(){return Object.assign(new Help,this.configureHelp())}configureHelp(configuration){return configuration===void 0?this._helpConfiguration:(this._helpConfiguration=configuration,this)}configureOutput(configuration){return configuration===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...configuration},this)}showHelpAfterError(displayHelp=!0){return typeof displayHelp!="string"&&(displayHelp=!!displayHelp),this._showHelpAfterError=displayHelp,this}showSuggestionAfterError(displaySuggestion=!0){return this._showSuggestionAfterError=!!displaySuggestion,this}addCommand(cmd,opts){if(!cmd._name)throw new Error(`Command passed to .addCommand() must have a name
634
634
  - specify the name in Command constructor or using .name()`);return opts=opts||{},opts.isDefault&&(this._defaultCommandName=cmd._name),(opts.noHelp||opts.hidden)&&(cmd._hidden=!0),this._registerCommand(cmd),cmd.parent=this,cmd._checkForBrokenPassThrough(),this}createArgument(name,description){return new Argument(name,description)}argument(name,description,parseArg,defaultValue){let argument=this.createArgument(name,description);return typeof parseArg=="function"?argument.default(defaultValue).argParser(parseArg):argument.default(parseArg),this.addArgument(argument),this}arguments(names){return names.trim().split(/ +/).forEach(detail=>{this.argument(detail)}),this}addArgument(argument){let previousArgument=this.registeredArguments.slice(-1)[0];if(previousArgument?.variadic)throw new Error(`only the last argument can be variadic '${previousArgument.name()}'`);if(argument.required&&argument.defaultValue!==void 0&&argument.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${argument.name()}'`);return this.registeredArguments.push(argument),this}helpCommand(enableOrNameAndArgs,description){if(typeof enableOrNameAndArgs=="boolean")return this._addImplicitHelpCommand=enableOrNameAndArgs,enableOrNameAndArgs&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let nameAndArgs=enableOrNameAndArgs??"help [command]",[,helpName,helpArgs]=nameAndArgs.match(/([^ ]+) *(.*)/),helpDescription=description??"display help for command",helpCommand=this.createCommand(helpName);return helpCommand.helpOption(!1),helpArgs&&helpCommand.arguments(helpArgs),helpDescription&&helpCommand.description(helpDescription),this._addImplicitHelpCommand=!0,this._helpCommand=helpCommand,(enableOrNameAndArgs||description)&&this._initCommandGroup(helpCommand),this}addHelpCommand(helpCommand,deprecatedDescription){return typeof helpCommand!="object"?(this.helpCommand(helpCommand,deprecatedDescription),this):(this._addImplicitHelpCommand=!0,this._helpCommand=helpCommand,this._initCommandGroup(helpCommand),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(event,listener){let allowedValues=["preSubcommand","preAction","postAction"];if(!allowedValues.includes(event))throw new Error(`Unexpected value for event passed to hook : '${event}'.
635
635
  Expecting one of '${allowedValues.join("', '")}'`);return this._lifeCycleHooks[event]?this._lifeCycleHooks[event].push(listener):this._lifeCycleHooks[event]=[listener],this}exitOverride(fn){return fn?this._exitCallback=fn:this._exitCallback=err=>{if(err.code!=="commander.executeSubCommandAsync")throw err},this}_exit(exitCode,code,message){this._exitCallback&&this._exitCallback(new CommanderError(exitCode,code,message)),process2.exit(exitCode)}action(fn){let listener=args=>{let expectedArgsCount=this.registeredArguments.length,actionArgs=args.slice(0,expectedArgsCount);return this._storeOptionsAsProperties?actionArgs[expectedArgsCount]=this:actionArgs[expectedArgsCount]=this.opts(),actionArgs.push(this),fn.apply(this,actionArgs)};return this._actionHandler=listener,this}createOption(flags,description){return new Option(flags,description)}_callParseArg(target,value,previous,invalidArgumentMessage){try{return target.parseArg(value,previous)}catch(err){if(err.code==="commander.invalidArgument"){let message=`${invalidArgumentMessage} ${err.message}`;this.error(message,{exitCode:err.exitCode,code:err.code})}throw err}}_registerOption(option){let matchingOption=option.short&&this._findOption(option.short)||option.long&&this._findOption(option.long);if(matchingOption){let matchingFlag=option.long&&this._findOption(option.long)?option.long:option.short;throw new Error(`Cannot add option '${option.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'
636
636
  - already used by option '${matchingOption.flags}'`)}this._initOptionGroup(option),this.options.push(option)}_registerCommand(command){let knownBy=cmd=>[cmd.name()].concat(cmd.aliases()),alreadyUsed=knownBy(command).find(name=>this._findCommand(name));if(alreadyUsed){let existingCmd=knownBy(this._findCommand(alreadyUsed)).join("|"),newCmd=knownBy(command).join("|");throw new Error(`cannot add command '${newCmd}' as already have command '${existingCmd}'`)}this._initCommandGroup(command),this.commands.push(command)}addOption(option){this._registerOption(option);let oname=option.name(),name=option.attributeName();option.defaultValue!==void 0&&this.setOptionValueWithSource(name,option.defaultValue,"default");let handleOptionValue=(val,invalidValueMessage,valueSource)=>{val==null&&option.presetArg!==void 0&&(val=option.presetArg);let oldValue=this.getOptionValue(name);val!==null&&option.parseArg?val=this._callParseArg(option,val,oldValue,invalidValueMessage):val!==null&&option.variadic&&(val=option._collectValue(val,oldValue)),val==null&&(option.negate?val=!1:option.isBoolean()||option.optional?val=!0:val=""),this.setOptionValueWithSource(name,val,valueSource)};return this.on("option:"+oname,val=>{let invalidValueMessage=`error: option '${option.flags}' argument '${val}' is invalid.`;handleOptionValue(val,invalidValueMessage,"cli")}),option.envVar&&this.on("optionEnv:"+oname,val=>{let invalidValueMessage=`error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;handleOptionValue(val,invalidValueMessage,"env")}),this}_optionEx(config2,flags,description,fn,defaultValue){if(typeof flags=="object"&&flags instanceof Option)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let option=this.createOption(flags,description);if(option.makeOptionMandatory(!!config2.mandatory),typeof fn=="function")option.default(defaultValue).argParser(fn);else if(fn instanceof RegExp){let regex=fn;fn=(val,def)=>{let m=regex.exec(val);return m?m[0]:def},option.default(defaultValue).argParser(fn)}else option.default(fn);return this.addOption(option)}option(flags,description,parseArg,defaultValue){return this._optionEx({},flags,description,parseArg,defaultValue)}requiredOption(flags,description,parseArg,defaultValue){return this._optionEx({mandatory:!0},flags,description,parseArg,defaultValue)}combineFlagAndOptionalValue(combine=!0){return this._combineFlagAndOptionalValue=!!combine,this}allowUnknownOption(allowUnknown=!0){return this._allowUnknownOption=!!allowUnknown,this}allowExcessArguments(allowExcess=!0){return this._allowExcessArguments=!!allowExcess,this}enablePositionalOptions(positional=!0){return this._enablePositionalOptions=!!positional,this}passThroughOptions(passThrough=!0){return this._passThroughOptions=!!passThrough,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(storeAsProperties=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!storeAsProperties,this}getOptionValue(key){return this._storeOptionsAsProperties?this[key]:this._optionValues[key]}setOptionValue(key,value){return this.setOptionValueWithSource(key,value,void 0)}setOptionValueWithSource(key,value,source){return this._storeOptionsAsProperties?this[key]=value:this._optionValues[key]=value,this._optionValueSources[key]=source,this}getOptionValueSource(key){return this._optionValueSources[key]}getOptionValueSourceWithGlobals(key){let source;return this._getCommandAndAncestors().forEach(cmd=>{cmd.getOptionValueSource(key)!==void 0&&(source=cmd.getOptionValueSource(key))}),source}_prepareUserArgs(argv,parseOptions){if(argv!==void 0&&!Array.isArray(argv))throw new Error("first parameter to parse must be array or undefined");if(parseOptions=parseOptions||{},argv===void 0&&parseOptions.from===void 0){process2.versions?.electron&&(parseOptions.from="electron");let execArgv=process2.execArgv??[];(execArgv.includes("-e")||execArgv.includes("--eval")||execArgv.includes("-p")||execArgv.includes("--print"))&&(parseOptions.from="eval")}argv===void 0&&(argv=process2.argv),this.rawArgs=argv.slice();let userArgs;switch(parseOptions.from){case void 0:case"node":this._scriptPath=argv[1],userArgs=argv.slice(2);break;case"electron":process2.defaultApp?(this._scriptPath=argv[1],userArgs=argv.slice(2)):userArgs=argv.slice(1);break;case"user":userArgs=argv.slice(0);break;case"eval":userArgs=argv.slice(1);break;default:throw new Error(`unexpected parse option { from: '${parseOptions.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",userArgs}parse(argv,parseOptions){this._prepareForParse();let userArgs=this._prepareUserArgs(argv,parseOptions);return this._parseCommand([],userArgs),this}async parseAsync(argv,parseOptions){this._prepareForParse();let userArgs=this._prepareUserArgs(argv,parseOptions);return await this._parseCommand([],userArgs),this}_prepareForParse(){this._savedState===null?(this.options.filter(option=>option.negate&&option.defaultValue===void 0&&this.getOptionValue(option.attributeName())===void 0).forEach(option=>{let positiveLongFlag=option.long.replace(/^--no-/,"--");this._findOption(positiveLongFlag)||this.setOptionValueWithSource(option.attributeName(),!0,"default")}),this.saveStateBeforeParse()):this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
@@ -643,7 +643,7 @@ Expecting one of '${allowedValues.join("', '")}'`);return this._lifeCycleHooks[e
643
643
  `),this.outputHelp({error:!0}));let config2=errorOptions||{},exitCode=config2.exitCode||1,code=config2.code||"commander.error";this._exit(exitCode,code,message)}_parseOptionsEnv(){this.options.forEach(option=>{if(option.envVar&&option.envVar in process2.env){let optionKey=option.attributeName();(this.getOptionValue(optionKey)===void 0||["default","config","env"].includes(this.getOptionValueSource(optionKey)))&&(option.required||option.optional?this.emit(`optionEnv:${option.name()}`,process2.env[option.envVar]):this.emit(`optionEnv:${option.name()}`))}})}_parseOptionsImplied(){let dualHelper=new DualOptions(this.options),hasCustomOptionValue=optionKey=>this.getOptionValue(optionKey)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(optionKey));this.options.filter(option=>option.implied!==void 0&&hasCustomOptionValue(option.attributeName())&&dualHelper.valueFromOption(this.getOptionValue(option.attributeName()),option)).forEach(option=>{Object.keys(option.implied).filter(impliedKey=>!hasCustomOptionValue(impliedKey)).forEach(impliedKey=>{this.setOptionValueWithSource(impliedKey,option.implied[impliedKey],"implied")})})}missingArgument(name){let message=`error: missing required argument '${name}'`;this.error(message,{code:"commander.missingArgument"})}optionMissingArgument(option){let message=`error: option '${option.flags}' argument missing`;this.error(message,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(option){let message=`error: required option '${option.flags}' not specified`;this.error(message,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(option,conflictingOption){let findBestOptionFromValue=option2=>{let optionKey=option2.attributeName(),optionValue=this.getOptionValue(optionKey),negativeOption=this.options.find(target=>target.negate&&optionKey===target.attributeName()),positiveOption=this.options.find(target=>!target.negate&&optionKey===target.attributeName());return negativeOption&&(negativeOption.presetArg===void 0&&optionValue===!1||negativeOption.presetArg!==void 0&&optionValue===negativeOption.presetArg)?negativeOption:positiveOption||option2},getErrorMessage=option2=>{let bestOption=findBestOptionFromValue(option2),optionKey=bestOption.attributeName();return this.getOptionValueSource(optionKey)==="env"?`environment variable '${bestOption.envVar}'`:`option '${bestOption.flags}'`},message=`error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;this.error(message,{code:"commander.conflictingOption"})}unknownOption(flag){if(this._allowUnknownOption)return;let suggestion="";if(flag.startsWith("--")&&this._showSuggestionAfterError){let candidateFlags=[],command=this;do{let moreFlags=command.createHelp().visibleOptions(command).filter(option=>option.long).map(option=>option.long);candidateFlags=candidateFlags.concat(moreFlags),command=command.parent}while(command&&!command._enablePositionalOptions);suggestion=suggestSimilar(flag,candidateFlags)}let message=`error: unknown option '${flag}'${suggestion}`;this.error(message,{code:"commander.unknownOption"})}_excessArguments(receivedArgs){if(this._allowExcessArguments)return;let expected=this.registeredArguments.length,s=expected===1?"":"s",received=receivedArgs.length,forSubcommand=this.parent?` for '${this.name()}'`:"",details=receivedArgs.join(", "),message=`error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${received}: ${details}.`;this.error(message,{code:"commander.excessArguments"})}unknownCommand(){let unknownName=this.args[0],suggestion="";if(this._showSuggestionAfterError){let candidateNames=[];this.createHelp().visibleCommands(this).forEach(command=>{candidateNames.push(command.name()),command.alias()&&candidateNames.push(command.alias())}),suggestion=suggestSimilar(unknownName,candidateNames)}let message=`error: unknown command '${unknownName}'${suggestion}`;this.error(message,{code:"commander.unknownCommand"})}version(str,flags,description){if(str===void 0)return this._version;this._version=str,flags=flags||"-V, --version",description=description||"output the version number";let versionOption=this.createOption(flags,description);return this._versionOptionName=versionOption.attributeName(),this._registerOption(versionOption),this.on("option:"+versionOption.name(),()=>{this._outputConfiguration.writeOut(`${str}
644
644
  `),this._exit(0,"commander.version",str)}),this}description(str,argsDescription){return str===void 0&&argsDescription===void 0?this._description:(this._description=str,argsDescription&&(this._argsDescription=argsDescription),this)}summary(str){return str===void 0?this._summary:(this._summary=str,this)}alias(alias){if(alias===void 0)return this._aliases[0];let command=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(command=this.commands[this.commands.length-1]),alias===command._name)throw new Error("Command alias can't be the same as its name");let matchingCommand=this.parent?._findCommand(alias);if(matchingCommand){let existingCmd=[matchingCommand.name()].concat(matchingCommand.aliases()).join("|");throw new Error(`cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`)}return command._aliases.push(alias),this}aliases(aliases){return aliases===void 0?this._aliases:(aliases.forEach(alias=>this.alias(alias)),this)}usage(str){if(str===void 0){if(this._usage)return this._usage;let args=this.registeredArguments.map(arg=>humanReadableArgName(arg));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?args:[]).join(" ")}return this._usage=str,this}name(str){return str===void 0?this._name:(this._name=str,this)}helpGroup(heading){return heading===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=heading,this)}commandsGroup(heading){return heading===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=heading,this)}optionsGroup(heading){return heading===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=heading,this)}_initOptionGroup(option){this._defaultOptionGroup&&!option.helpGroupHeading&&option.helpGroup(this._defaultOptionGroup)}_initCommandGroup(cmd){this._defaultCommandGroup&&!cmd.helpGroup()&&cmd.helpGroup(this._defaultCommandGroup)}nameFromFilename(filename){return this._name=path5.basename(filename,path5.extname(filename)),this}executableDir(path27){return path27===void 0?this._executableDir:(this._executableDir=path27,this)}helpInformation(contextOptions){let helper=this.createHelp(),context=this._getOutputContext(contextOptions);helper.prepareContext({error:context.error,helpWidth:context.helpWidth,outputHasColors:context.hasColors});let text3=helper.formatHelp(this,helper);return context.hasColors?text3:this._outputConfiguration.stripColor(text3)}_getOutputContext(contextOptions){contextOptions=contextOptions||{};let error48=!!contextOptions.error,baseWrite,hasColors,helpWidth;return error48?(baseWrite=str=>this._outputConfiguration.writeErr(str),hasColors=this._outputConfiguration.getErrHasColors(),helpWidth=this._outputConfiguration.getErrHelpWidth()):(baseWrite=str=>this._outputConfiguration.writeOut(str),hasColors=this._outputConfiguration.getOutHasColors(),helpWidth=this._outputConfiguration.getOutHelpWidth()),{error:error48,write:str=>(hasColors||(str=this._outputConfiguration.stripColor(str)),baseWrite(str)),hasColors,helpWidth}}outputHelp(contextOptions){let deprecatedCallback;typeof contextOptions=="function"&&(deprecatedCallback=contextOptions,contextOptions=void 0);let outputContext=this._getOutputContext(contextOptions),eventContext={error:outputContext.error,write:outputContext.write,command:this};this._getCommandAndAncestors().reverse().forEach(command=>command.emit("beforeAllHelp",eventContext)),this.emit("beforeHelp",eventContext);let helpInformation=this.helpInformation({error:outputContext.error});if(deprecatedCallback&&(helpInformation=deprecatedCallback(helpInformation),typeof helpInformation!="string"&&!Buffer.isBuffer(helpInformation)))throw new Error("outputHelp callback must return a string or a Buffer");outputContext.write(helpInformation),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",eventContext),this._getCommandAndAncestors().forEach(command=>command.emit("afterAllHelp",eventContext))}helpOption(flags,description){return typeof flags=="boolean"?(flags?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(flags??"-h, --help",description??"display help for command"),(flags||description)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(option){return this._helpOption=option,this._initOptionGroup(option),this}help(contextOptions){this.outputHelp(contextOptions);let exitCode=Number(process2.exitCode??0);exitCode===0&&contextOptions&&typeof contextOptions!="function"&&contextOptions.error&&(exitCode=1),this._exit(exitCode,"commander.help","(outputHelp)")}addHelpText(position,text3){let allowedValues=["beforeAll","before","after","afterAll"];if(!allowedValues.includes(position))throw new Error(`Unexpected value for position to addHelpText.
645
645
  Expecting one of '${allowedValues.join("', '")}'`);let helpEvent=`${position}Help`;return this.on(helpEvent,context=>{let helpStr;typeof text3=="function"?helpStr=text3({error:context.error,command:context.command}):helpStr=text3,helpStr&&context.write(`${helpStr}
646
- `)}),this}_outputHelpIfRequested(args){let helpOption=this._getHelpOption();helpOption&&args.find(arg=>helpOption.is(arg))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}}}});var program,init_commander=__esm({"../../../../../Library/pnpm/store/v10/links/@/commander/15.0.0/9bd77ae8231d200f24068f3a3c0041c8f45139e569eecf1914d5eb9201dc6e22/node_modules/commander/index.js"(){init_argument();init_command2();init_error();init_help();init_option();program=new Command}});function findOfficialPlugin(name){return Object.hasOwn(OFFICIAL_PLUGINS,name)?OFFICIAL_PLUGINS[name]:void 0}function listOfficialPluginNames(setup){return Object.entries(OFFICIAL_PLUGINS).filter(([,definition])=>setup===void 0||"setup"in definition&&definition.setup===setup).map(([name])=>name)}var OFFICIAL_PLUGIN_MANAGER,OFFICIAL_PLUGINS,init_officialPluginCatalog=__esm({"../client/dist/plugins/officialPluginCatalog.js"(){"use strict";OFFICIAL_PLUGIN_MANAGER="@mearl/setup:official",OFFICIAL_PLUGINS={buc:{description:"使用 BUC 身份请求内部服务",installArgs:["trip/mearl","--skill","buc-request","--yes"],skill:"buc-request"},authx:{description:"使用 AuthX 身份请求内部服务",installArgs:["trip/mearl","--skill","authx-request","--yes"],skill:"authx-request"},tdbank:{description:"查询、借用和切换 TDBank 测试账号",installArgs:["trip/mearl","--skill","tdbank-account","--yes"],setup:"alibaba",skill:"tdbank-account"}}}});import{closeSync as closeSync6,mkdirSync as mkdirSync5,openSync as openSync6,rmSync as rmSync6,statSync as statSync6,writeFileSync as writeFileSync4}from"node:fs";import{join as join12}from"node:path";import{spawn as spawn6}from"node:child_process";function delay2(milliseconds){return new Promise(resolve11=>setTimeout(resolve11,milliseconds))}function installLockPath(name){return join12(pluginDirectory(),`.official-${name}.install.lock`)}async function acquireInstallLock(name){let directory=pluginDirectory();mkdirSync5(directory,{recursive:!0,mode:448});let lockPath=installLockPath(name),deadline=Date.now()+INSTALL_TIMEOUT_MS;for(;;){let descriptor;try{return descriptor=openSync6(lockPath,"wx",384),writeFileSync4(descriptor,`${process.pid}
646
+ `)}),this}_outputHelpIfRequested(args){let helpOption=this._getHelpOption();helpOption&&args.find(arg=>helpOption.is(arg))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}}}});var program,init_commander=__esm({"../../node_modules/.pnpm/commander@15.0.0/node_modules/commander/index.js"(){init_argument();init_command2();init_error();init_help();init_option();program=new Command}});function findOfficialPlugin(name){return Object.hasOwn(OFFICIAL_PLUGINS,name)?OFFICIAL_PLUGINS[name]:void 0}function listOfficialPluginNames(setup){return Object.entries(OFFICIAL_PLUGINS).filter(([,definition])=>setup===void 0||"setup"in definition&&definition.setup===setup).map(([name])=>name)}var OFFICIAL_PLUGIN_MANAGER,OFFICIAL_PLUGINS,init_officialPluginCatalog=__esm({"../client/dist/plugins/officialPluginCatalog.js"(){"use strict";OFFICIAL_PLUGIN_MANAGER="@mearl/setup:official",OFFICIAL_PLUGINS={buc:{description:"使用 BUC 身份请求内部服务",installArgs:["trip/mearl","--skill","buc-request","--yes"],skill:"buc-request"},authx:{description:"使用 AuthX 身份请求内部服务",installArgs:["trip/mearl","--skill","authx-request","--yes"],skill:"authx-request"},tdbank:{description:"查询、借用和切换 TDBank 测试账号",installArgs:["trip/mearl","--skill","tdbank-account","--yes"],setup:"alibaba",skill:"tdbank-account"}}}});import{closeSync as closeSync6,mkdirSync as mkdirSync5,openSync as openSync6,rmSync as rmSync6,statSync as statSync6,writeFileSync as writeFileSync4}from"node:fs";import{join as join12}from"node:path";import{spawn as spawn6}from"node:child_process";function delay2(milliseconds){return new Promise(resolve11=>setTimeout(resolve11,milliseconds))}function installLockPath(name){return join12(pluginDirectory(),`.official-${name}.install.lock`)}async function acquireInstallLock(name){let directory=pluginDirectory();mkdirSync5(directory,{recursive:!0,mode:448});let lockPath=installLockPath(name),deadline=Date.now()+INSTALL_TIMEOUT_MS;for(;;){let descriptor;try{return descriptor=openSync6(lockPath,"wx",384),writeFileSync4(descriptor,`${process.pid}
647
647
  `),closeSync6(descriptor),()=>rmSync6(lockPath,{force:!0})}catch(error48){if(descriptor!==void 0&&closeSync6(descriptor),error48.code!=="EEXIST")throw error48}if(findPluginRegistration(name))return()=>{};try{if(Date.now()-statSync6(lockPath).mtimeMs>INSTALL_LOCK_STALE_MS){rmSync6(lockPath,{force:!0});continue}}catch(error48){if(error48.code==="ENOENT")continue;throw error48}if(Date.now()>=deadline)throw new Error(`等待安装官方插件 ${name} 超时`);await delay2(250)}}function appendOutput(current,chunk){return current.length>=MAX_INSTALL_OUTPUT?current:(current+chunk.toString("utf8")).slice(0,MAX_INSTALL_OUTPUT)}function installWithSetup(name){return new Promise((resolve11,reject)=>{let command=process.platform==="win32"?"npx.cmd":"npx",child=spawn6(command,["-y",`@mearl/setup@${CLIENT_VERSION}`,"plugin","ensure",name],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),stdout="",stderr="",settled=!1,finish=error48=>{settled||(settled=!0,clearTimeout(timer),error48?reject(error48):resolve11())},timer=setTimeout(()=>{child.kill("SIGTERM"),finish(new Error(`安装官方插件 ${name} 超时`))},INSTALL_TIMEOUT_MS);child.stdout.on("data",chunk=>stdout=appendOutput(stdout,chunk)),child.stderr.on("data",chunk=>stderr=appendOutput(stderr,chunk)),child.once("error",error48=>finish(error48)),child.once("exit",code=>{if(code===0){finish();return}let detail=(stderr||stdout).replace(/[\r\n]+/g," ").trim().slice(-1e3);finish(new Error(detail?`安装官方插件 ${name} 失败 (exit ${code}): ${detail}`:`安装官方插件 ${name} 失败 (exit ${code})`))})})}async function installOfficialPlugin(name,progress){if(findPluginRegistration(name))return;if(!findOfficialPlugin(name))throw new Error(`未知官方插件: ${name}`);let releaseLock=await acquireInstallLock(name);try{if(findPluginRegistration(name))return;if(progress?.(`正在安装官方插件 ${name}...`),await installWithSetup(name),!findPluginRegistration(name))throw new Error(`官方插件 ${name} 安装完成后仍未注册`);progress?.(`官方插件 ${name} 已安装。`)}finally{releaseLock()}}var INSTALL_TIMEOUT_MS,INSTALL_LOCK_STALE_MS,MAX_INSTALL_OUTPUT,activeInstallations,ensureOfficialPluginRegistered,init_officialPluginInstaller=__esm({"../client/dist/plugins/officialPluginInstaller.js"(){"use strict";init_runtimePaths();init_officialPluginCatalog();init_pluginRegistry();INSTALL_TIMEOUT_MS=18e4,INSTALL_LOCK_STALE_MS=5*6e4,MAX_INSTALL_OUTPUT=1024*1024,activeInstallations=new Map;ensureOfficialPluginRegistered=(name,progress)=>{let active=activeInstallations.get(name);if(active)return active;let installation=installOfficialPlugin(name,progress).finally(()=>{activeInstallations.delete(name)});return activeInstallations.set(name,installation),installation}}});import{spawn as spawn7}from"node:child_process";import{createInterface}from"node:readline";function pythonExecutable(){return process.env.MEARL_PYTHON?.trim()||"python3"}function isObject(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function parseDescriptor(message){if(!Array.isArray(message.commands))throw new Error("Python 插件未返回命令列表");let commands=message.commands.map(value=>{if(!isObject(value)||typeof value.signature!="string"||typeof value.description!="string"||typeof value.toolboxOnly!="boolean"||typeof value.runtimeOnly!="boolean")throw new Error("Python 插件返回了无效的命令描述");return{signature:value.signature,description:value.description,toolboxOnly:value.toolboxOnly,runtimeOnly:value.runtimeOnly,recoveryOnly:value.recoveryOnly===!0,migrationOnly:value.migrationOnly===!0}});if(message.name!==void 0&&typeof message.name!="string")throw new Error("Python 插件返回了无效的 name");if(message.description!==void 0&&typeof message.description!="string")throw new Error("Python 插件返回了无效的 description");return{commands,...typeof message.name=="string"?{name:message.name}:{},...typeof message.description=="string"?{description:message.description}:{},...message.toolbox!==void 0?{toolbox:message.toolbox}:{},...message.pageRuntime!==void 0?{pageRuntime:message.pageRuntime}:{},...message.stateStorage!==void 0?{stateStorage:message.stateStorage}:{},...message.taskRecovery!==void 0?{taskRecovery:message.taskRecovery}:{},...message.appProfiles!==void 0?{appProfiles:message.appProfiles}:{}}}function bridgedError(message){let detail=typeof message.message=="string"?message.message:"Python 插件执行失败",restored=pluginExecutionError({message:detail,...typeof message.code=="string"?{code:message.code}:{},...isObject(message.details)?{details:message.details}:{},...isObject(message.metadata)?{metadata:message.metadata}:{}});return typeof message.code=="string"&&/^PLUGIN_[A-Z0-9_]+$/.test(message.code)?Object.assign(new PluginError(message.code,detail),restored):restored}function errorResponse(error48){let serialized=serializePluginExecutionError(error48);if(error48 instanceof PluginError){let prefix=`${error48.code}: `;return{...serialized,code:error48.code,message:error48.message.startsWith(prefix)?error48.message.slice(prefix.length):error48.message}}return serialized}async function runPythonWorker(entry,initial,app,signal,expectedDescriptor){return new Promise((resolve11,reject)=>{let executable=pythonExecutable(),child=spawn7(executable,["-u","-c",PYTHON_BOOTSTRAP,entry],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),lines=createInterface({input:child.stdout}),descriptor,outcome,protocolError,stderr="",failProtocol=error48=>{protocolError||(protocolError=error48 instanceof Error?error48:new Error(String(error48)),cancel())},write=message=>{try{child.stdin.write(`${JSON.stringify(message)}
648
648
  `)}catch(error48){failProtocol(error48)}};child.stderr.setEncoding("utf8"),child.stderr.on("data",chunk=>{stderr=`${stderr}${chunk}`.slice(-STDERR_LIMIT)}),child.stdin.on("error",()=>{});let killTimer,terminalStopRequested=!1,armKill=()=>{killTimer||(killTimer=setTimeout(()=>{terminalStopRequested=!protocolError&&!signal?.aborted&&!!(outcome||initial.mode==="describe"&&descriptor),child.kill("SIGKILL")},1e3),killTimer.unref())},cancel=()=>{child.kill("SIGTERM"),armKill()};signal?.addEventListener("abort",cancel,{once:!0}),signal?.aborted&&cancel(),child.once("error",error48=>{error48.code==="ENOENT"?reject(new Error(`未找到 ${executable},Python 插件需要 Python 3.9 或更高版本(可通过 MEARL_PYTHON 指定解释器)`)):reject(error48)}),lines.on("line",line=>{if(protocolError)return;let message;try{let value=JSON.parse(line);if(!isObject(value)||typeof value.type!="string")throw new Error("消息不是对象");message=value}catch(error48){failProtocol(new Error(`Python 插件输出了无效协议消息: ${line.slice(0,200)}`,error48 instanceof Error?{cause:error48}:void 0));return}if(message.type==="ready"){try{if(descriptor)throw new Error("Python 插件重复发送 ready");if(descriptor=parseDescriptor(message),initial.mode==="run"&&expectedDescriptor&&pluginRecoverySignature(descriptor)!==pluginRecoverySignature(expectedDescriptor))throw new PluginError("PLUGIN_DECLARATION_CHANGED","Python execution declaration differs from its loaded metadata");write({type:"ready_ack"}),initial.mode==="describe"&&armKill()}catch(error48){failProtocol(error48)}return}if(message.type==="progress"){if(!app||typeof message.message!="string"){failProtocol(new Error("Python 插件发送了无效的 progress 消息"));return}try{app.progress(message.message)}catch(error48){failProtocol(error48)}return}if(message.type==="invoke"){if(!app||typeof message.id!="number"||typeof message.action!="string"||!isObject(message.payload)||!isObject(message.options)){failProtocol(new Error("Python 插件发送了无效的 invoke 消息"));return}let{action,payload,options}=message;Promise.resolve().then(()=>action==="plugin_task_checkpoint"&&app.checkpoint?app.checkpoint(payload.data,payload.expectedSequence):action==="plugin_model"&&payload.operation==="run"&&app.model?app.model(payload.request,message.stream?{onProgress:progress=>{!signal?.aborted&&!outcome&&write({type:"invoke-progress",id:message.id,progress})}}:void 0):action==="plugin_state"&&app.state?app.state(payload.collection,payload.operation,payload):action==="plugin_page"&&app.page?app.page(payload.operation,payload):app.invoke(action,payload,options)).then(result=>{write({type:"response",id:message.id,result:result===void 0?null:result})}).catch(error48=>{write({type:"response",id:message.id,error:errorResponse(error48)})});return}if(message.type==="result"){outcome||(outcome={hasResult:!0,result:message.result}),write({type:"terminal_ack"}),armKill();return}if(message.type==="error"){outcome||(outcome={error:bridgedError(message)}),write({type:"terminal_ack"}),armKill();return}failProtocol(new Error(`Python 插件发送了未知消息类型: ${message.type}`))});let finished=!1,finish=code=>{if(!finished){if(finished=!0,signal?.removeEventListener("abort",cancel),killTimer&&clearTimeout(killTimer),lines.close(),child.stdin.destroy(),child.stdout.destroy(),child.stderr.destroy(),signal?.aborted){reject(signal.reason??new Error("Plugin command cancelled"));return}if(protocolError){reject(protocolError);return}if(outcome?.error){reject(outcome.error);return}if(code!==0&&!terminalStopRequested){reject(new Error(stderr.trim()||`Python 插件进程异常退出${code===null?"":` (exit ${code})`}`));return}if(!descriptor){reject(new Error("Python 插件未返回注册信息"));return}if(initial.mode==="run"&&!outcome?.hasResult){reject(new Error("Python 插件未返回执行结果"));return}resolve11({descriptor,...outcome?.hasResult?{result:outcome.result}:{}})}};child.once("exit",finish),child.once("close",finish),write(initial)})}async function describePythonPlugin(entry,options){let{descriptor}=await runPythonWorker(entry,{mode:"describe",options});return descriptor}async function runPythonPluginCommand(entry,command,input2,app,context,recovery=!1,expectedDescriptor,runtimeOnly=!1){let{result}=await runPythonWorker(entry,{mode:"run",command,input:input2,options:app.options,identity:context.identity,recovery,runtime:runtimeOnly},app,context.signal,expectedDescriptor);return result}var STDERR_LIMIT,PYTHON_BOOTSTRAP,init_pythonPlugin=__esm({"../client/dist/plugins/runtime/pythonPlugin.js"(){"use strict";init_pluginRecoveryDefinition();init_pluginRegistry();init_pluginExecutorProtocol();STDERR_LIMIT=64*1024,PYTHON_BOOTSTRAP=String.raw`
649
649
  import asyncio
@@ -987,7 +987,7 @@ ${location2}`}let examples=selected.flatMap(({examples:examples2})=>examples2);r
987
987
  `),encoded="";for(let n=0;n<str.length;n++){let c2=str.charCodeAt(n);c2<128?encoded+=String.fromCharCode(c2):c2<2048?(encoded+=String.fromCharCode(c2>>6|192),encoded+=String.fromCharCode(c2&63|128)):(encoded+=String.fromCharCode(c2>>12|224),encoded+=String.fromCharCode(c2>>6&63|128),encoded+=String.fromCharCode(c2&63|128))}str=encoded;let len=str.length,nw=(len+8>>>6)+1<<4,words=new Array(nw).fill(0);for(let i=0;i<len;i++)words[i>>2]|=str.charCodeAt(i)<<i%4*8;words[len>>2]|=128<<len%4*8,words[nw-2]=len<<3,words[nw-1]=len>>>29;let a=1732584193,b=4023233417,c=2562383102,d=271733878;for(let k=0;k<words.length;k+=16){let aa=a,bb=b,cc=c,dd=d;a=ff(a,b,c,d,words[k],7,3614090360),d=ff(d,a,b,c,words[k+1],12,3905402710),c=ff(c,d,a,b,words[k+2],17,606105819),b=ff(b,c,d,a,words[k+3],22,3250441966),a=ff(a,b,c,d,words[k+4],7,4118548399),d=ff(d,a,b,c,words[k+5],12,1200080426),c=ff(c,d,a,b,words[k+6],17,2821735955),b=ff(b,c,d,a,words[k+7],22,4249261313),a=ff(a,b,c,d,words[k+8],7,1770035416),d=ff(d,a,b,c,words[k+9],12,2336552879),c=ff(c,d,a,b,words[k+10],17,4294925233),b=ff(b,c,d,a,words[k+11],22,2304563134),a=ff(a,b,c,d,words[k+12],7,1804603682),d=ff(d,a,b,c,words[k+13],12,4254626195),c=ff(c,d,a,b,words[k+14],17,2792965006),b=ff(b,c,d,a,words[k+15],22,1236535329),a=gg(a,b,c,d,words[k+1],5,4129170786),d=gg(d,a,b,c,words[k+6],9,3225465664),c=gg(c,d,a,b,words[k+11],14,643717713),b=gg(b,c,d,a,words[k],20,3921069994),a=gg(a,b,c,d,words[k+5],5,3593408605),d=gg(d,a,b,c,words[k+10],9,38016083),c=gg(c,d,a,b,words[k+15],14,3634488961),b=gg(b,c,d,a,words[k+4],20,3889429448),a=gg(a,b,c,d,words[k+9],5,568446438),d=gg(d,a,b,c,words[k+14],9,3275163606),c=gg(c,d,a,b,words[k+3],14,4107603335),b=gg(b,c,d,a,words[k+8],20,1163531501),a=gg(a,b,c,d,words[k+13],5,2850285829),d=gg(d,a,b,c,words[k+2],9,4243563512),c=gg(c,d,a,b,words[k+7],14,1735328473),b=gg(b,c,d,a,words[k+12],20,2368359562),a=hh(a,b,c,d,words[k+5],4,4294588738),d=hh(d,a,b,c,words[k+8],11,2272392833),c=hh(c,d,a,b,words[k+11],16,1839030562),b=hh(b,c,d,a,words[k+14],23,4259657740),a=hh(a,b,c,d,words[k+1],4,2763975236),d=hh(d,a,b,c,words[k+4],11,1272893353),c=hh(c,d,a,b,words[k+7],16,4139469664),b=hh(b,c,d,a,words[k+10],23,3200236656),a=hh(a,b,c,d,words[k+13],4,681279174),d=hh(d,a,b,c,words[k],11,3936430074),c=hh(c,d,a,b,words[k+3],16,3572445317),b=hh(b,c,d,a,words[k+6],23,76029189),a=hh(a,b,c,d,words[k+9],4,3654602809),d=hh(d,a,b,c,words[k+12],11,3873151461),c=hh(c,d,a,b,words[k+15],16,530742520),b=hh(b,c,d,a,words[k+2],23,3299628645),a=ii(a,b,c,d,words[k],6,4096336452),d=ii(d,a,b,c,words[k+7],10,1126891415),c=ii(c,d,a,b,words[k+14],15,2878612391),b=ii(b,c,d,a,words[k+5],21,4237533241),a=ii(a,b,c,d,words[k+12],6,1700485571),d=ii(d,a,b,c,words[k+3],10,2399980690),c=ii(c,d,a,b,words[k+10],15,4293915773),b=ii(b,c,d,a,words[k+1],21,2240044497),a=ii(a,b,c,d,words[k+8],6,1873313359),d=ii(d,a,b,c,words[k+15],10,4264355552),c=ii(c,d,a,b,words[k+6],15,2734768916),b=ii(b,c,d,a,words[k+13],21,1309151649),a=ii(a,b,c,d,words[k+4],6,4149444226),d=ii(d,a,b,c,words[k+11],10,3174756917),c=ii(c,d,a,b,words[k+2],15,718787259),b=ii(b,c,d,a,words[k+9],21,3951481745),a=addUnsigned(a,aa),b=addUnsigned(b,bb),c=addUnsigned(c,cc),d=addUnsigned(d,dd)}let hex3=v=>{let s="";for(let i=0;i<=3;i++){let byte=v>>>i*8&255;s+=("0"+byte.toString(16)).slice(-2)}return s};return(hex3(a)+hex3(b)+hex3(c)+hex3(d)).toLowerCase()}function extractMtopToken(cookieMap,isMopen){if(isMopen){let mTk=cookieMap.get("m_tk"),tbToken=cookieMap.get("_tb_token_");if(mTk)return mTk.split("_")[0]||"";if(tbToken)return tbToken;throw new Error("Missing m_tk or _tb_token_ cookie. Please ensure the user is logged in.")}let h5Tk=cookieMap.get("_m_h5_tk");if(h5Tk)return h5Tk.split("_")[0]||"";throw new Error("Missing _m_h5_tk cookie. Please ensure the user is logged in.")}function computeMtopSign(params){let{api,version:version3,timestamp,appKey,token,dataStr,isMopen}=params;return md5(isMopen?`${api}&${version3}&${timestamp}&${appKey}&${token}&${md5(dataStr)}`:`${token}&${timestamp}&${appKey}&${dataStr}`)}function buildCookieHeaderValue(cookieMap){return[...cookieMap.entries()].map(([k,v])=>`${k}=${v}`).join("; ")}var MTOP_HOST_MAP,init_mtopSigner=__esm({"../browser-core/dist/mtopSigner.js"(){"use strict";MTOP_HOST_MAP={prod:"h5api.m.taobao.com",pre:"h5api.wapa.taobao.com"}}});function parseSseDataValue(value){try{return JSON.parse(value)}catch{return value}}function createSseEventParser(){let buffer="",eventName="",lastEventId,dataLines=[],hasData=!1,dispatch=()=>{if(!hasData)return eventName="",dataLines=[],[];let rawData=dataLines.join(`
988
988
  `);if(eventName=eventName||"message",dataLines=[],hasData=!1,rawData==="[DONE]")return eventName="",[];let event={event:eventName,data:parseSseDataValue(rawData),...lastEventId!==void 0?{eventId:lastEventId}:{}};return eventName="",[event]},consumeLine=line=>{if(line==="")return dispatch();if(line.startsWith(":"))return[];let separator=line.indexOf(":"),field=separator===-1?line:line.slice(0,separator),value=separator===-1?"":line.slice(separator+1);return value.startsWith(" ")&&(value=value.slice(1)),field==="data"?(dataLines.push(value),hasData=!0):field==="event"?eventName=value:field==="id"&&!value.includes("\0")&&(lastEventId=value),[]},drain=final=>{let events=[];for(;buffer.length>0;){let newlineIndex=-1;for(let index=0;index<buffer.length;index++)if(buffer[index]===`
989
989
  `||buffer[index]==="\r"){newlineIndex=index;break}if(newlineIndex===-1){final&&(events.push(...consumeLine(buffer)),buffer="");break}if(buffer[newlineIndex]==="\r"&&newlineIndex===buffer.length-1&&!final)break;let line=buffer.slice(0,newlineIndex),separatorLength=buffer[newlineIndex]==="\r"&&buffer[newlineIndex+1]===`
990
- `?2:1;buffer=buffer.slice(newlineIndex+separatorLength),events.push(...consumeLine(line))}return final&&events.push(...dispatch()),events};return{push(chunk){return buffer+=chunk,drain(!1)},finish(){return drain(!0)}}}var init_sseParser=__esm({"../browser-core/dist/sseParser.js"(){"use strict"}});function selectRequestCookies(cookies,url2){return filterCookiesForUrl(cookies,url2).filter(cookie=>cookie.partitionKey===void 0&&cookie.partitionKeyOpaque!==!0).sort((left,right)=>right.path.length-left.path.length)}function serializeRequestCookies(cookies){return cookies.map(cookie=>`${cookie.name}=${cookie.value}`).join("; ")}function requestCookiesToMap(cookies){let values=new Map;for(let cookie of cookies)values.has(cookie.name)||values.set(cookie.name,cookie.value);return values}function normalizeCookieDomain(input2,action){let value=input2.trim();if(!value)throw new Error(`${action}: "domain" must be a non-empty domain`);let hostname3;try{hostname3=new URL(value.includes("://")?value:`https://${value}`).hostname}catch{throw new Error(`${action}: invalid domain "${input2}"`)}if(hostname3=hostname3.toLowerCase().replace(/^\.+/,"").replace(/\.+$/,""),!hostname3)throw new Error(`${action}: invalid domain "${input2}"`);return hostname3}function isSecureCookieUrl(url2){let hostname3=url2.hostname.replace(/\.$/,""),isLocalhost=hostname3==="localhost"||hostname3.endsWith(".localhost")||hostname3==="[::1]"||/^127\.\d+\.\d+\.\d+$/.test(hostname3);return url2.protocol==="https:"||isLocalhost}function filterCookiesForUrl(cookies,cookieUrl){let url2=new URL(cookieUrl);return cookies.filter(item=>{let domain2=item.domain.replace(/^\./,"").toLowerCase(),hostOnly=item.hostOnly??!item.domain.startsWith(".");return url2.hostname!==domain2&&(hostOnly||!url2.hostname.endsWith(`.${domain2}`))||item.secure&&!isSecureCookieUrl(url2)?!1:url2.pathname===item.path||url2.pathname.startsWith(item.path)&&(item.path.endsWith("/")||url2.pathname[item.path.length]==="/")})}function selectReadableCookie(cookies,target){let cookie=cookies.filter(item=>{if(item.partitionKey!==void 0||item.partitionKeyOpaque===!0||item.name!==target.cookieName)return!1;let domain2=item.domain.replace(/^\./,"").toLowerCase();return!(target.domain&&domain2!==target.domain||target.path&&item.path!==target.path)}).sort((left,right)=>{let pathDifference=right.path.length-left.path.length;return pathDifference!==0?pathDifference:right.domain.length-left.domain.length})[0];if(cookie?.httpOnly)throw new Error(`get_cookie: "${target.cookieName}" is HttpOnly and cannot be read`);return cookie}function validateCookieName(input2,action){if(typeof input2!="string"||!input2.trim())throw new Error(`${action}: "name" is required`);let name=input2.trim();if(name.length>256||!/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(name))throw new Error(`${action}: "name" contains unsupported cookie characters`);return name}function validateCookieValue(input2){if(typeof input2!="string")throw new Error('set_cookie: "value" must be a string');let hasUnsupportedCharacter=[...input2].some(character=>{let code=character.charCodeAt(0);return code<=32||code===127||character===";"||character===","});if(input2.length>4096||hasUnsupportedCharacter)throw new Error('set_cookie: "value" contains unsupported cookie characters');return input2}function validateCookiePath(input2,action){if(input2===void 0)return;if(typeof input2!="string"||!input2.startsWith("/"))throw new Error(`${action}: "path" must start with "/"`);let hasUnsupportedCharacter=[...input2].some(character=>{let code=character.charCodeAt(0);return code<32||code===127||character===";"});if(input2.length>1024||hasUnsupportedCharacter)throw new Error(`${action}: "path" contains unsupported cookie characters`);return input2}function parseCurrentUrl(currentUrl,action){if(!currentUrl)throw new Error(`${action}: specify url or tabId`);let url2;try{url2=new URL(currentUrl)}catch{throw new Error(`${action}: invalid current page URL "${currentUrl}"`)}if(url2.protocol!=="http:"&&url2.protocol!=="https:")throw new Error(`${action}: current page must use http or https`);return url2}function resolveCookieUrl(currentUrl,input2,action){if(input2.url!==void 0&&(typeof input2.url!="string"||!input2.url.trim()))throw new Error(`${action}: "url" must be a non-empty string`);let url2=parseCurrentUrl(input2.url??currentUrl,action);if(input2.url!==void 0&&(url2.username||url2.password))throw new Error(`${action}: "url" must not contain credentials`);return url2}function resolveExplicitDomain(url2,input2,action){if(input2!==void 0&&typeof input2!="string")throw new Error(`${action}: "domain" must be a string`);let explicitDomain=typeof input2=="string"&&input2?normalizeCookieDomain(input2,action):void 0;if(explicitDomain&&url2.hostname.toLowerCase()!==explicitDomain&&!url2.hostname.toLowerCase().endsWith(`.${explicitDomain}`))throw new Error(`${action}: domain "${explicitDomain}" is not a parent domain of target host "${url2.hostname.toLowerCase()}"`);return explicitDomain}function resolveGetCookieTarget(currentUrl,input2){let action="get_cookie",url2=resolveCookieUrl(currentUrl,input2,action),name=validateCookieName(input2?.name,action),domain2=resolveExplicitDomain(url2,input2?.domain,action),path27=validateCookiePath(input2?.path,action);return{cookieName:name,cookieUrl:`${url2.protocol}//${url2.hostname}${(path27??url2.pathname)||"/"}`,...domain2?{domain:domain2}:{},...path27?{path:path27}:{}}}function resolveSetCookieTarget(currentUrl,input2){let action="set_cookie",url2=resolveCookieUrl(currentUrl,input2,action),name=validateCookieName(input2?.name,action),value=validateCookieValue(input2?.value),path27=validateCookiePath(input2?.path,action)??"/";if(input2.reload!==void 0&&typeof input2.reload!="boolean")throw new Error('set_cookie: "reload" must be a boolean');let explicitDomain=resolveExplicitDomain(url2,input2?.domain,action),domain2=explicitDomain??url2.hostname.toLowerCase();return{cookieName:name,cookieValue:value,...explicitDomain?{cookieDomain:explicitDomain.includes(".")?`.${explicitDomain}`:explicitDomain}:{},cookieUrl:`${url2.protocol}//${url2.hostname.toLowerCase()}${path27}`,domain:domain2,path:path27,reload:input2.reload===!0}}var init_cookie=__esm({"../browser-core/dist/cookie.js"(){"use strict"}});function resolveMtopRequest(data){let{api,data:requestData={},version:version3="1.0",method="GET",appKey="12574478",env="prod",timeout=1e4,headers:customHeaders={},ttid}=data;if(!api||typeof api!="string"||api.trim()==="")throw new Error('Invalid api: api must be a non-empty string (e.g. "mtop.trade.order.create")');let baseHost=MTOP_HOST_MAP[env.toLowerCase()];if(!baseHost)throw new Error(`Invalid env: "${env}". Supported values: ${Object.keys(MTOP_HOST_MAP).join(", ")}`);let normalizedMethod=method.toUpperCase();if(normalizedMethod!=="GET"&&normalizedMethod!=="POST")throw new Error(`Invalid method: ${method}. mtop only supports GET or POST`);if(!Number.isFinite(timeout)||timeout<=0)throw new Error("Invalid timeout: timeout must be a positive number");return{api,requestData,dataStr:typeof requestData=="string"?requestData:JSON.stringify(requestData),version:version3,normalizedMethod,appKey,gatewayUrl:new URL(`https://${baseHost}/h5/${api}/${version3}/`),customHeaders,ttid,timeout,isMopen:api.startsWith("mopen.")}}function prepareSignedMtopRequest(resolved,cookies,stream=!1,timestamp=Date.now()){let cookieMap=cookies instanceof Map?cookies:requestCookiesToMap(cookies),token=extractMtopToken(cookieMap,resolved.isMopen),sign=computeMtopSign({api:resolved.api,version:resolved.version,timestamp,appKey:resolved.appKey,token,dataStr:resolved.dataStr,isMopen:resolved.isMopen}),targetUrl=new URL(resolved.gatewayUrl),queryParams={jsv:"2.7.2",appKey:resolved.appKey,t:timestamp.toString(),sign,api:resolved.api,v:resolved.version,type:"originaljson",dataType:"json"};stream&&(queryParams.xAcceptStream="true"),resolved.ttid&&(queryParams.ttid=resolved.ttid),resolved.normalizedMethod==="GET"&&(queryParams.data=resolved.dataStr);for(let[name,value]of Object.entries(queryParams))targetUrl.searchParams.set(name,value);let requestHeaders={Accept:stream?"text/event-stream":"application/json",...resolved.customHeaders},body;return resolved.normalizedMethod==="POST"&&(body=new URLSearchParams({data:resolved.dataStr}).toString(),requestHeaders["Content-Type"]="application/x-www-form-urlencoded"),{...resolved,targetUrl,requestHeaders,cookieHeader:cookies instanceof Map?buildCookieHeaderValue(cookies):serializeRequestCookies(cookies),body}}function parseMtopResponseText(text3){try{return JSON.parse(text3)}catch{let jsonpMatch=text3.match(/^[^(]*\((.*)\)\s*;?\s*$/s);if(!jsonpMatch?.[1])return text3;try{return JSON.parse(jsonpMatch[1])}catch{return text3}}}function summarizeMtopStreamError(body){if(body&&typeof body=="object"){let record4=body;if(Array.isArray(record4.ret))return record4.ret.map(String).join(", ");if(typeof record4.message=="string")return record4.message}return((typeof body=="string"?body:JSON.stringify(body))??String(body)).slice(0,500)}async function consumeMtopSseResponse(response,onReceive){let contentType2=response.headers.get("content-type")??"";if(!response.ok||!response.body||!contentType2.includes("text/event-stream")){let body=parseMtopResponseText(await response.text());throw new Error(`Unexpected MTOP stream response: ${summarizeMtopStreamError(body)}`)}let reader=response.body.getReader(),decoder=new TextDecoder,parser=createSseEventParser(),lastData=null,emit=async(text3,finished=!1)=>{let events=[...parser.push(text3),...finished?parser.finish():[]];for(let event of events)lastData=event.data,await onReceive(event)};for(;;){let{done,value}=await reader.read();if(done)return await emit(decoder.decode(),!0),lastData;await emit(decoder.decode(value,{stream:!0}))}}var init_mtopRequest=__esm({"../browser-core/dist/mtopRequest.js"(){"use strict";init_mtopSigner();init_sseParser();init_cookie()}});function parseRequestData(data){if(typeof data!="string")return data;try{return JSON.parse(data)}catch{return data}}function parseQueryString(url2){let queryString=[];try{new URL(url2).searchParams.forEach((value,name)=>queryString.push({name,value}))}catch{}return queryString}function redactSensitiveHeaders(headers){let sensitiveNames=new Set(["authorization","cookie","proxy-authorization"]);return headers.map(header=>sensitiveNames.has(header.name.toLowerCase())?{...header,value:"<redacted>"}:header)}function createMtopStreamCapture(data){let timestampMs2=data.timestampMs??Date.now(),url2=data.url??`mtop://${data.api}/`;return{startTimeMs:timestampMs2,request:{id:data.id,timestamp:new Date(timestampMs2).toISOString(),timestampMs:timestampMs2,method:data.method,url:url2,apiName:data.api,status:0,statusText:"SSE Streaming",headers:redactSensitiveHeaders(data.requestHeaders??[]),responseHeaders:[],queryString:parseQueryString(url2),postData:parseRequestData(data.requestData??null),responseBody:[],isProxy:!0,proxyRequestUrl:null,proxyData:null,isSSE:!0,isPending:!0,...data.tabId!==void 0?{tabId:data.tabId}:{},source:"mtop",resourceType:"fetch",captureSequence:data.captureSequence}}}function updateMtopStreamCaptureResponse(capture,response){capture.request.status=response.status,capture.request.statusText=response.statusText,capture.request.responseHeaders=response.responseHeaders}function appendMtopStreamCaptureChunk(capture,data,timestampMs2=Date.now()){return Array.isArray(capture.request.responseBody)?(capture.request.responseBody.push({event:"message",data,timestamp:timestampMs2,duration:capture.lastMessageTimeMs===void 0?0:timestampMs2-capture.lastMessageTimeMs}),capture.lastMessageTimeMs=timestampMs2,!0):!1}function finishMtopStreamCapture(capture,options={}){let timestampMs2=options.timestampMs??Date.now();if(capture.request.isPending=!1,capture.request.duration=Math.max(0,timestampMs2-capture.startTimeMs),options.error){capture.request.statusText=options.error,Array.isArray(capture.request.responseBody)&&capture.request.responseBody.length===0&&(capture.request.responseBody={error:options.error});return}capture.request.status===0&&(capture.request.status=200),(!capture.request.statusText||capture.request.statusText==="SSE Streaming")&&(capture.request.statusText="OK")}var init_mtopStreamCapture=__esm({"../browser-core/dist/mtopStreamCapture.js"(){"use strict"}});function isAppProfileUserInfoUrl(url2){try{let target=new URL(url2);return(target.protocol==="http:"||target.protocol==="https:")&&(target.hostname==="taobao.com"||target.hostname.endsWith(".taobao.com"))}catch{return!1}}function decodeCookieValue(raw){let value=raw;for(let index=0;index<2;index+=1)try{let decoded=decodeURIComponent(value);if(decoded===value)break;value=decoded}catch{break}return value.replace(/\\u([0-9a-f]{4})/gi,(_match,hex3)=>String.fromCharCode(Number.parseInt(hex3,16)))}function firstCookieValue(cookies,name){let value=cookies.find(cookie=>cookie.name===name&&cookie.value&&cookie.value!=="null")?.value;return value?decodeCookieValue(value):""}function resolveAppProfileUserInfo(url2,cookies){if(!isAppProfileUserInfoUrl(url2))return{};let userId=firstCookieValue(cookies,"unb"),userName=["_w_tb_nick","_nk_","snk","tracknick"].map(name=>firstCookieValue(cookies,name)).find(Boolean);return{...userId&&{userId},...userName&&{userName}}}var init_appProfileUserInfo=__esm({"../browser-core/dist/appProfileUserInfo.js"(){"use strict"}});function isTrackingUrl(url2){return APLUS_URL_PATTERN.test(url2)||RUM_URL_PATTERN.test(url2)||ARMS_URL_PATTERN.test(url2)||/retcode\.alicdn\.com|beacon\.taobao\.com|tbsec\./i.test(url2)}function formatTimestamp(ms){let d=new Date(ms),pad=n=>String(n).padStart(2,"0");return`${d.getFullYear()}/${pad(d.getMonth()+1)}/${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`}function parseParams(value){let params={};return value.split("&").forEach(pair=>{let eqIndex=pair.indexOf("=");if(eqIndex===-1)return;let rawKey=pair.slice(0,eqIndex),rawValue=pair.slice(eqIndex+1);try{params[decodeURIComponent(rawKey)]=rawValue}catch{params[rawKey]=rawValue}}),params}function decodeParamValue(value){try{return decodeURIComponent(value)}catch{return value}}function parseJsonParamValue(value){try{return JSON.parse(value)}catch{let decoded=decodeParamValue(value);if(decoded===value)return;try{return JSON.parse(decoded)}catch{return}}}function parseUrlParams(search){let encodedParams=parseParams(search.startsWith("?")?search.slice(1):search);return Object.fromEntries(Object.entries(encodedParams).map(([key,value])=>[key,decodeParamValue(value)]))}function extractSpmFromUrl(spmOrUrl){if(!/^https?:\/\//i.test(spmOrUrl))return spmOrUrl;try{return new URL(spmOrUrl).searchParams.get("spm")??spmOrUrl}catch{return spmOrUrl}}function resolveAplusSpm(eventType,raw){let expSpm=(Array.isArray(raw.expdata)?raw.expdata:[])[0]?.spm||"",gokeyParams=parseParams(raw.gokey||""),gokeySpm=decodeParamValue(gokeyParams.spm||""),rawSpmUrl=raw["spm-url"]||decodeParamValue(gokeyParams["spm-url"]||""),spmUrl=extractSpmFromUrl(rawSpmUrl),pointSpm;switch(eventType){case"CLK":pointSpm=gokeySpm||expSpm;break;case"EXP":pointSpm=expSpm;break;case"PV":pointSpm=spmUrl;break;default:pointSpm=gokeySpm||expSpm}return{mainSpm:pointSpm,highlightSpm:pointSpm}}function parseAplusRequest(url2,options={}){if(!APLUS_URL_PATTERN.test(url2))return null;let urlObj;try{urlObj=new URL(url2)}catch{return null}let params=parseUrlParams(urlObj.search),gmkey=params.gmkey??"UNKNOWN",urlPathName=urlObj.pathname.slice(1),eventType=urlPathName.split(".")[1]==="selfdefine"?"SDF":gmkey,gokeyRaw=params.gokey??"",gokeyParams=parseParams(gokeyRaw),expdata=[];if(gokeyParams.expdata){let parsedExpdata=parseJsonParamValue(gokeyParams.expdata);Array.isArray(parsedExpdata)&&(expdata=parsedExpdata.map(item=>{if(!item?.exargs||typeof item.exargs!="object")return item;let decoded={};for(let[key,value]of Object.entries(item.exargs)){if(typeof value!="string"){decoded[key]=value;continue}let parsedValue=parseJsonParamValue(value);decoded[key]=parsedValue===void 0?value:parsedValue}return{...item,exargs:decoded}}))}let rawBizArgs=gokeyParams.bizArgs,parsedBizArgs=rawBizArgs===void 0?void 0:parseJsonParamValue(rawBizArgs),bizArgs=parsedBizArgs===void 0?rawBizArgs:parsedBizArgs,pageUrl=params._p_url??(gokeyParams._p_url?decodeParamValue(gokeyParams._p_url):""),{gokey:rawGokey,...topLevelParams}=params,rawData={...topLevelParams,_path:urlPathName,_url:url2,gokey:rawGokey,...expdata.length>0?{expdata}:{},...bizArgs!==void 0?{bizArgs}:{}},spm=resolveAplusSpm(eventType,rawData).mainSpm,pathName=urlPathName.split(".").slice(1).join("."),eventName=eventType==="SDF"?pathName:spm||pathName||pageUrl,now=options.now??Date.now();return{id:`aplus-${options.sequence??++aplusCounter}-${now}`,source:"aplus",batchId:0,batchTimestampMs:now,batchTimestamp:formatTimestamp(now),event_type:eventType,name:eventName,url:url2,timestamp:now,_raw:rawData,_context:{requestUrl:url2,app:{},user:{...params.uidaplus?{uidaplus:params.uidaplus}:{},...params._gr_uid_?{_gr_uid_:params._gr_uid_}:{}},session:{},view:{...params["spm-url"]?{"spm-url":params["spm-url"]}:{},...params["spm-pre"]?{"spm-pre":params["spm-pre"]}:{},...params["spm-cnt"]?{"spm-cnt":params["spm-cnt"]}:{},...pageUrl?{page_url:pageUrl}:{}},properties:{},os:{},net:{}}}}function parseRumBody(postData){if(!postData)return null;if(typeof postData=="object")return postData;try{return JSON.parse(postData)}catch{return null}}function tryConvertI18nTracker(event,base){let normalizedType=RUM_TYPE_ALIAS[event.type]??event.type;if(event.event_type!=="action"||normalizedType!=="custom")return null;let snapshots;try{snapshots=typeof event.snapshots=="string"?JSON.parse(event.snapshots):event.snapshots}catch{return null}if(!snapshots||typeof snapshots!="object")return null;let eventType=I18N_TRACKER_TYPE_MAP[snapshots.message];if(!eventType)return null;let spm=[snapshots.c1??"",snapshots.c2??""].filter(Boolean).join("."),exargs={};typeof snapshots.c3=="string"&&snapshots.c3.split("&").forEach(pair=>{let eqIndex=pair.indexOf("=");if(eqIndex===-1)return;let key=pair.slice(0,eqIndex),rawValue=pair.slice(eqIndex+1);try{exargs[key]=JSON.parse(decodeURIComponent(rawValue))}catch{exargs[key]=rawValue}});let dataAttrs=snapshots.trackerInfo?.dataAttrs;if(dataAttrs&&typeof dataAttrs=="object"&&dataAttrs["data-biz-args"]&&!exargs.bizArgs)try{exargs.bizArgs=JSON.parse(dataAttrs["data-biz-args"])}catch{exargs.bizArgs=dataAttrs["data-biz-args"]}return{...base,event_type:eventType,name:spm,_raw:{...event,expdata:[{spm,...Object.keys(exargs).length>0?{exargs}:{}}],"spm-url":spm}}}function parseRumRequest(url2,postData,options={}){if(!RUM_URL_PATTERN.test(url2))return[];let parsed=parseRumBody(postData),rawEvents=Array.isArray(parsed?.events)?parsed.events:[];if(rawEvents.length===0)return[];let now=options.now??Date.now(),batchId=options.sequence??++rumCounter,context={requestUrl:url2,app:parsed?.app??{},user:parsed?.user??{},session:parsed?.session??{},view:parsed?.view??{},properties:parsed?.properties??{},os:parsed?.os??{},net:parsed?.net??{}};return rawEvents.flatMap((rawEvent,index)=>{if(!rawEvent||typeof rawEvent!="object"||Array.isArray(rawEvent))return[];let event=rawEvent,normalizedType=RUM_TYPE_ALIAS[event.type]??event.type,base={id:`${batchId}-${event.event_id??index}`,batchId,batchTimestampMs:now,batchTimestamp:formatTimestamp(now),type:normalizedType,url:event.url,timestamp:event.timestamp??now,success:event.success,status_code:event.status_code,method:event.method,duration:event.duration,source:"rum",_context:context},converted=tryConvertI18nTracker(event,base);return converted?[converted]:[{...base,event_type:event.event_type??"unknown",name:event.name,_raw:event}]})}function parseArmsRequest(url2,options={}){if(!ARMS_URL_PATTERN.test(url2))return null;let urlObj;try{urlObj=new URL(url2)}catch{return null}let params={};urlObj.searchParams.forEach((value,key)=>{params[key]=value});let eventType=(params.t??"unknown").toLowerCase(),page=params.page??"",now=options.now??Date.now(),sequence=options.sequence??++armsCounter,parsedTimestamp2=params.begin?Number.parseInt(params.begin,10):now,timestamp=Number.isFinite(parsedTimestamp2)?parsedTimestamp2:now;return{id:`arms-${sequence}-${now}`,source:"arms",batchId:0,batchTimestampMs:now,batchTimestamp:formatTimestamp(now),event_type:eventType,name:page||url2,url:url2,timestamp,_raw:{...params,_url:url2},_context:{requestUrl:url2,app:{...params.pid?{pid:params.pid}:{},...params.release?{release:params.release}:{},...params.environment?{environment:params.environment}:{},...params._v?{sdk_version:params._v}:{}},user:{...params.uid?{uid:params.uid}:{}},session:{...params.sid?{sid:params.sid}:{}},view:{...page?{page}:{},...params.tag?{tag:params.tag}:{}},properties:{},os:{},net:{...params.ct?{ct:params.ct}:{}}}}}function parseTrackingRequest(url2,postData,options={}){let rumEvents=parseRumRequest(url2,postData,options);if(rumEvents.length>0)return rumEvents;let aplusEvent=parseAplusRequest(url2,options);if(aplusEvent)return[aplusEvent];let armsEvent=parseArmsRequest(url2,options);return armsEvent?[armsEvent]:[]}var APLUS_URL_PATTERN,RUM_URL_PATTERN,ARMS_URL_PATTERN,aplusCounter,armsCounter,rumCounter,RUM_TYPE_ALIAS,I18N_TRACKER_TYPE_MAP,init_eventParsers=__esm({"../browser-core/dist/eventParsers.js"(){"use strict";APLUS_URL_PATTERN=/\.mmstat\.com\//,RUM_URL_PATTERN=/\.rum\.aliyuncs\.com\//,ARMS_URL_PATTERN=/arms-retcode\.aliyuncs\.com\//;aplusCounter=0,armsCounter=0,rumCounter=0;RUM_TYPE_ALIAS={cst:"custom"},I18N_TRACKER_TYPE_MAP={"i18n-tracker-exp":"EXP","i18n-tracker-clk":"CLK"}}});function createCaptureGeneration(){return crypto.randomUUID()}function encodeCaptureCursor(cursor){return`${CURSOR_PREFIX}:${cursor.tabId}:${cursor.generation}:${cursor.scope}:${cursor.sequence}`}function decodeCaptureCursor(value){let match=value.match(/^mearl-capture-v1:(\d+):([^:]+):(all|logs|requests|events):(\d+)$/);if(!match)throw new Error("Invalid capture cursor");let tabId=Number(match[1]),sequence=Number(match[4]);if(!Number.isSafeInteger(tabId)||!Number.isSafeInteger(sequence))throw new Error("Invalid capture cursor");return{tabId,generation:match[2],scope:match[3],sequence}}function captureCheckpoint(state){return encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:state.currentSequence,scope:"all"})}function nextCaptureSequence(state){return state.currentSequence+=1,state.currentSequence}function resolveAfterSequence(after,state,scope){if(!after)return 0;let cursor=decodeCaptureCursor(after);if(cursor.tabId!==state.tabId)throw new Error(`Capture cursor belongs to tab ${cursor.tabId}, not tab ${state.tabId}`);if(cursor.generation!==state.generation)throw new Error("Capture cursor expired because the tab collector was restarted");if(cursor.scope!=="all"&&cursor.scope!==scope)throw new Error(`Capture cursor is scoped to ${cursor.scope}, not ${scope}`);if(cursor.sequence>state.currentSequence)throw new Error("Capture cursor is ahead of the current collector state");return cursor.sequence}function queryCapturedEntries(buffer,state,options,matches,droppedThroughSequence=0,scope="all"){let{after,since,now=Date.now()}=options,limit=Math.max(1,Math.floor(options.limit??100)),afterSequence=resolveAfterSequence(after,state,scope),sinceTimestampMs=since===void 0?void 0:now-since*1e3,matched=buffer.filter(entry=>entry.captureSequence>afterSequence&&(sinceTimestampMs===void 0||entry.timestampMs>=sinceTimestampMs)&&matches(entry)),hasMore=matched.length>limit,entries=after?matched.slice(0,limit):matched.slice(-limit),nextSequence=after&&hasMore&&entries.length>0?entries[entries.length-1].captureSequence:state.currentSequence;return{entries,totalMatched:matched.length,nextCursor:encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:nextSequence,scope}),hasMore,gap:after!==void 0&&afterSequence<droppedThroughSequence}}var CURSOR_PREFIX,init_capture=__esm({"../browser-core/dist/capture.js"(){"use strict";CURSOR_PREFIX="mearl-capture-v1"}});function compileTextPattern(value){try{return{regex:new RegExp(value,"i"),fallback:""}}catch{return{regex:null,fallback:value.toLowerCase()}}}function matchesTextPattern(value,pattern3){return value?pattern3.regex?pattern3.regex.test(value):value.toLowerCase().includes(pattern3.fallback):!1}function compactEventUrl(value){if(value)try{let url2=new URL(value);return url2.origin==="null"?value.split(/[?#]/,1)[0]:`${url2.origin}${url2.pathname}`}catch{return value.split(/[?#]/,1)[0]}}function formatTrackingEvent(event,includeRaw=!1){let{captureSequence:_discardedCaptureSequence,...publicEvent}=event;if(includeRaw)return publicEvent;let{_raw:_discardedRaw,_context,url:url2,...summary}=publicEvent,compactUrl=compactEventUrl(url2??_context.requestUrl);return{...summary,...compactUrl?{url:compactUrl}:{}}}function matchesTrackingEvent(event,options){let{source="all",event_type,filter}=options;if(source!=="all"&&event.source!==source||event_type&&!matchesTextPattern(event.event_type,compileTextPattern(event_type)))return!1;if(filter){let pattern3=compileTextPattern(filter);if(!matchesTextPattern(event.name,pattern3)&&!matchesTextPattern(event.url,pattern3))return!1}return!0}function queryTrackingEvents(buffer,options={}){let{source="all",event_type,filter,since,limit=20,now=Date.now()}=options,events=[...buffer].reverse();if(source!=="all"&&(events=events.filter(event=>event.source===source)),since!==void 0){let sinceTimestamp=now-since*1e3;events=events.filter(event=>event.batchTimestampMs>=sinceTimestamp)}if(event_type){let pattern3=compileTextPattern(event_type);events=events.filter(event=>matchesTextPattern(event.event_type,pattern3))}if(filter){let pattern3=compileTextPattern(filter);events=events.filter(event=>matchesTextPattern(event.name,pattern3)||matchesTextPattern(event.url,pattern3))}return{events:events.slice(0,limit),totalMatched:events.length,totalInBuffer:buffer.length}}function appendCapturedTrackingBatch(buffer,events,maxSize){if(events.length===0)return[];let captureSequence=events[0].captureSequence,insertionIndex=Number.isSafeInteger(captureSequence)?buffer.findIndex(event=>Number.isSafeInteger(event.captureSequence)&&event.captureSequence>captureSequence):-1;if(buffer.splice(insertionIndex<0?buffer.length:insertionIndex,0,...events),buffer.length<=maxSize)return[];let removeCount=buffer.length-maxSize,boundarySequence=buffer[removeCount-1]?.captureSequence;for(;boundarySequence!==void 0&&buffer[removeCount]?.captureSequence===boundarySequence;)removeCount+=1;return buffer.splice(0,removeCount)}function queryCapturedTrackingEvents(buffer,state,options={},droppedThroughSequence=0){let limit=Math.max(1,Math.floor(options.limit??20));if(!options.after){let snapshot=queryTrackingEvents(buffer,options);return{...snapshot,nextCursor:encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:state.currentSequence,scope:"events"}),hasMore:snapshot.totalMatched>limit,gap:!1}}let sinceTimestampMs=options.since===void 0?void 0:(options.now??Date.now())-options.since*1e3,batchesBySequence=new Map;for(let event of buffer){if(!Number.isSafeInteger(event.captureSequence)||sinceTimestampMs!==void 0&&event.batchTimestampMs<sinceTimestampMs||!matchesTrackingEvent(event,options))continue;let captureSequence=event.captureSequence,batch=batchesBySequence.get(captureSequence);batch?batch.events.push(event):batchesBySequence.set(captureSequence,{captureSequence,timestampMs:event.batchTimestampMs,events:[event]})}let batches=[...batchesBySequence.values()].sort((left,right)=>left.captureSequence-right.captureSequence),captured=queryCapturedEntries(batches,state,{after:options.after,limit:Number.MAX_SAFE_INTEGER},()=>!0,droppedThroughSequence,"events"),selected=[],selectedCount=0;for(let batch of captured.entries){if(selected.length>0&&selectedCount+batch.events.length>limit)break;selected.push(batch),selectedCount+=batch.events.length}let hasMore=selected.length<captured.entries.length,nextSequence=hasMore?selected[selected.length-1].captureSequence:state.currentSequence;return{events:selected.flatMap(batch=>batch.events),totalMatched:captured.entries.reduce((total,batch)=>total+batch.events.length,0),totalInBuffer:buffer.length,nextCursor:encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:nextSequence,scope:"events"}),hasMore,gap:captured.gap}}var TRACKING_CAPTURE_ARMED_HINT,init_eventFilters=__esm({"../browser-core/dist/eventFilters.js"(){"use strict";init_capture();TRACKING_CAPTURE_ARMED_HINT="Event capture is active, but this tab has no captured history yet. Reload the current tab or repeat the triggering action, then call get_events again."}});function getStructure2(data,options={}){let{maxDepth=5,maxKeys=50,arraySamples=1,maxNodes=2e3}=options;for(let[name,value,limit]of[["maxDepth",maxDepth,20],["maxKeys",maxKeys,1e3],["arraySamples",arraySamples,20],["maxNodes",maxNodes,1e4]])if(!Number.isSafeInteger(value)||value<1||value>limit)throw new Error(`${name} must be an integer between 1 and ${limit}`);let ancestors=new WeakSet,nodes=0,visit=(value,depth)=>{if(++nodes>maxNodes)return"<max nodes reached>";if(depth>=maxDepth)return"<max depth reached>";if(value===null)return"null";if(typeof value!="object")return typeof value;if(ancestors.has(value))return"<circular>";ancestors.add(value);try{if(Array.isArray(value)){if(!value.length)return"array[0]";let samples=Array.from({length:Math.min(value.length,arraySamples)},(_,index)=>{let descriptor=Object.getOwnPropertyDescriptor(value,index);return descriptor&&"value"in descriptor?visit(descriptor.value,depth+1):descriptor?"<accessor>":"undefined"});return{_type:`array[${value.length}]`,...arraySamples===1?{_sample:samples[0]}:{_samples:samples}}}let keys=Object.keys(value),entries=keys.slice(0,maxKeys).map(key=>{let descriptor=Object.getOwnPropertyDescriptor(value,key);return[key,"value"in descriptor?visit(descriptor.value,depth+1):"<accessor>"]});return keys.length>maxKeys&&entries.push(["<truncated keys>",keys.length-maxKeys]),Object.fromEntries(entries)}finally{ancestors.delete(value)}};return visit(data,0)}var init_dataStructure=__esm({"../browser-core/dist/dataStructure.js"(){"use strict"}});function parsePath(path27){if(path27.length>1e3)throw new Error("Path too long: maximum 1000 characters allowed");let keys=[],current="";for(let i=0;i<path27.length;i++){let char=path27[i];if(char===".")current&&(keys.push(current),current="");else if(char==="["){current&&(keys.push(current),current="");let j=i+1;for(;j<path27.length&&path27[j]!=="]";)j++;if(j<path27.length){let index=parseInt(path27.substring(i+1,j),10);if(!isNaN(index)){if(index<0||index>1e5)throw new Error(`Array index out of safe range: ${index}`);keys.push(index)}i=j}}else current+=char}if(current&&keys.push(current),keys.length>50)throw new Error("Path too deep: maximum 50 levels allowed");return keys}function getValueByPath(obj,path27){let keys=parsePath(path27),current=obj;for(let key of keys){if(current==null)return;current=current[key]}return current}function setValueByPath(obj,path27,value){let keys=parsePath(path27),current=obj;for(let i=0;i<keys.length-1;i++){let key=keys[i],nextKey=keys[i+1];(current[key]===null||current[key]===void 0)&&(current[key]=typeof nextKey=="number"?[]:{}),current=current[key]}current[keys[keys.length-1]]=value}function truncateData(data,maxSize){let str=JSON.stringify(data);if(str.length<=maxSize)return data;let truncated=str.substring(0,maxSize);return`<truncated: ${str.length} bytes, showing first ${maxSize} chars>
990
+ `?2:1;buffer=buffer.slice(newlineIndex+separatorLength),events.push(...consumeLine(line))}return final&&events.push(...dispatch()),events};return{push(chunk){return buffer+=chunk,drain(!1)},finish(){return drain(!0)}}}var init_sseParser=__esm({"../browser-core/dist/sseParser.js"(){"use strict"}});var require_cjs=__commonJS({"../../node_modules/.pnpm/tldts@7.0.21/node_modules/tldts/dist/cjs/index.js"(exports){"use strict";function shareSameDomainSuffix(hostname3,vhost){return hostname3.endsWith(vhost)?hostname3.length===vhost.length||hostname3[hostname3.length-vhost.length-1]===".":!1}function extractDomainWithSuffix(hostname3,publicSuffix){let publicSuffixIndex=hostname3.length-publicSuffix.length-2,lastDotBeforeSuffixIndex=hostname3.lastIndexOf(".",publicSuffixIndex);return lastDotBeforeSuffixIndex===-1?hostname3:hostname3.slice(lastDotBeforeSuffixIndex+1)}function getDomain$1(suffix,hostname3,options){if(options.validHosts!==null){let validHosts=options.validHosts;for(let vhost of validHosts)if(shareSameDomainSuffix(hostname3,vhost))return vhost}let numberOfLeadingDots=0;if(hostname3.startsWith("."))for(;numberOfLeadingDots<hostname3.length&&hostname3[numberOfLeadingDots]===".";)numberOfLeadingDots+=1;return suffix.length===hostname3.length-numberOfLeadingDots?null:extractDomainWithSuffix(hostname3,suffix)}function getDomainWithoutSuffix$1(domain2,suffix){return domain2.slice(0,-suffix.length-1)}function extractHostname(url2,urlIsValidHostname){let start=0,end=url2.length,hasUpper=!1;if(!urlIsValidHostname){if(url2.startsWith("data:"))return null;for(;start<url2.length&&url2.charCodeAt(start)<=32;)start+=1;for(;end>start+1&&url2.charCodeAt(end-1)<=32;)end-=1;if(url2.charCodeAt(start)===47&&url2.charCodeAt(start+1)===47)start+=2;else{let indexOfProtocol=url2.indexOf(":/",start);if(indexOfProtocol!==-1){let protocolSize=indexOfProtocol-start,c0=url2.charCodeAt(start),c1=url2.charCodeAt(start+1),c2=url2.charCodeAt(start+2),c3=url2.charCodeAt(start+3),c4=url2.charCodeAt(start+4);if(!(protocolSize===5&&c0===104&&c1===116&&c2===116&&c3===112&&c4===115)){if(!(protocolSize===4&&c0===104&&c1===116&&c2===116&&c3===112)){if(!(protocolSize===3&&c0===119&&c1===115&&c2===115)){if(!(protocolSize===2&&c0===119&&c1===115))for(let i=start;i<indexOfProtocol;i+=1){let lowerCaseCode=url2.charCodeAt(i)|32;if(!(lowerCaseCode>=97&&lowerCaseCode<=122||lowerCaseCode>=48&&lowerCaseCode<=57||lowerCaseCode===46||lowerCaseCode===45||lowerCaseCode===43))return null}}}}for(start=indexOfProtocol+2;url2.charCodeAt(start)===47;)start+=1}}let indexOfIdentifier=-1,indexOfClosingBracket=-1,indexOfPort=-1;for(let i=start;i<end;i+=1){let code=url2.charCodeAt(i);if(code===35||code===47||code===63){end=i;break}else code===64?indexOfIdentifier=i:code===93?indexOfClosingBracket=i:code===58?indexOfPort=i:code>=65&&code<=90&&(hasUpper=!0)}if(indexOfIdentifier!==-1&&indexOfIdentifier>start&&indexOfIdentifier<end&&(start=indexOfIdentifier+1),url2.charCodeAt(start)===91)return indexOfClosingBracket!==-1?url2.slice(start+1,indexOfClosingBracket).toLowerCase():null;indexOfPort!==-1&&indexOfPort>start&&indexOfPort<end&&(end=indexOfPort)}for(;end>start+1&&url2.charCodeAt(end-1)===46;)end-=1;let hostname3=start!==0||end!==url2.length?url2.slice(start,end):url2;return hasUpper?hostname3.toLowerCase():hostname3}function isProbablyIpv4(hostname3){if(hostname3.length<7||hostname3.length>15)return!1;let numberOfDots=0;for(let i=0;i<hostname3.length;i+=1){let code=hostname3.charCodeAt(i);if(code===46)numberOfDots+=1;else if(code<48||code>57)return!1}return numberOfDots===3&&hostname3.charCodeAt(0)!==46&&hostname3.charCodeAt(hostname3.length-1)!==46}function isProbablyIpv6(hostname3){if(hostname3.length<3)return!1;let start=hostname3.startsWith("[")?1:0,end=hostname3.length;if(hostname3[end-1]==="]"&&(end-=1),end-start>39)return!1;let hasColon=!1;for(;start<end;start+=1){let code=hostname3.charCodeAt(start);if(code===58)hasColon=!0;else if(!(code>=48&&code<=57||code>=97&&code<=102||code>=65&&code<=90))return!1}return hasColon}function isIp(hostname3){return isProbablyIpv6(hostname3)||isProbablyIpv4(hostname3)}function isValidAscii(code){return code>=97&&code<=122||code>=48&&code<=57||code>127}function isValidHostname(hostname3){if(hostname3.length>255||hostname3.length===0||!isValidAscii(hostname3.charCodeAt(0))&&hostname3.charCodeAt(0)!==46&&hostname3.charCodeAt(0)!==95)return!1;let lastDotIndex=-1,lastCharCode=-1,len=hostname3.length;for(let i=0;i<len;i+=1){let code=hostname3.charCodeAt(i);if(code===46){if(i-lastDotIndex>64||lastCharCode===46||lastCharCode===45||lastCharCode===95)return!1;lastDotIndex=i}else if(!(isValidAscii(code)||code===45||code===95))return!1;lastCharCode=code}return len-lastDotIndex-1<=63&&lastCharCode!==45}function setDefaultsImpl({allowIcannDomains=!0,allowPrivateDomains=!1,detectIp=!0,extractHostname:extractHostname2=!0,mixedInputs=!0,validHosts=null,validateHostname=!0}){return{allowIcannDomains,allowPrivateDomains,detectIp,extractHostname:extractHostname2,mixedInputs,validHosts,validateHostname}}var DEFAULT_OPTIONS=setDefaultsImpl({});function setDefaults(options){return options===void 0?DEFAULT_OPTIONS:setDefaultsImpl(options)}function getSubdomain$1(hostname3,domain2){return domain2.length===hostname3.length?"":hostname3.slice(0,-domain2.length-1)}function getEmptyResult(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null}}function resetResult(result){result.domain=null,result.domainWithoutSuffix=null,result.hostname=null,result.isIcann=null,result.isIp=null,result.isPrivate=null,result.publicSuffix=null,result.subdomain=null}function parseImpl(url2,step,suffixLookup2,partialOptions,result){let options=setDefaults(partialOptions);return typeof url2!="string"||(options.extractHostname?options.mixedInputs?result.hostname=extractHostname(url2,isValidHostname(url2)):result.hostname=extractHostname(url2,!1):result.hostname=url2,options.detectIp&&result.hostname!==null&&(result.isIp=isIp(result.hostname),result.isIp))?result:options.validateHostname&&options.extractHostname&&result.hostname!==null&&!isValidHostname(result.hostname)?(result.hostname=null,result):(step===0||result.hostname===null||(suffixLookup2(result.hostname,options,result),step===2||result.publicSuffix===null)||(result.domain=getDomain$1(result.publicSuffix,result.hostname,options),step===3||result.domain===null)||(result.subdomain=getSubdomain$1(result.hostname,result.domain),step===4)||(result.domainWithoutSuffix=getDomainWithoutSuffix$1(result.domain,result.publicSuffix)),result)}function fastPathLookup(hostname3,options,out){if(!options.allowPrivateDomains&&hostname3.length>3){let last=hostname3.length-1,c3=hostname3.charCodeAt(last),c2=hostname3.charCodeAt(last-1),c1=hostname3.charCodeAt(last-2),c0=hostname3.charCodeAt(last-3);if(c3===109&&c2===111&&c1===99&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="com",!0;if(c3===103&&c2===114&&c1===111&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="org",!0;if(c3===117&&c2===100&&c1===101&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="edu",!0;if(c3===118&&c2===111&&c1===103&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="gov",!0;if(c3===116&&c2===101&&c1===110&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="net",!0;if(c3===101&&c2===100&&c1===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="de",!0}return!1}var exceptions=(function(){let _0=[1,{}],_1=[0,{city:_0}];return[0,{ck:[0,{www:_0}],jp:[0,{kawasaki:_1,kitakyushu:_1,kobe:_1,nagoya:_1,sapporo:_1,sendai:_1,yokohama:_1}]}]})(),rules=(function(){let _2=[1,{}],_3=[2,{}],_4=[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2}],_5=[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],_6=[0,{"*":_3}],_7=[2,{s:_6}],_8=[0,{relay:_3}],_9=[2,{id:_3}],_10=[1,{gov:_2}],_11=[0,{airflow:_6,"lambda-url":_3,"transfer-webapp":_3}],_12=[0,{airflow:_6,"transfer-webapp":_3}],_13=[0,{"transfer-webapp":_3}],_14=[0,{"transfer-webapp":_3,"transfer-webapp-fips":_3}],_15=[0,{notebook:_3,studio:_3}],_16=[0,{labeling:_3,notebook:_3,studio:_3}],_17=[0,{notebook:_3}],_18=[0,{labeling:_3,notebook:_3,"notebook-fips":_3,studio:_3}],_19=[0,{notebook:_3,"notebook-fips":_3,studio:_3,"studio-fips":_3}],_20=[0,{shop:_3}],_21=[0,{"*":_2}],_22=[1,{co:_3}],_23=[0,{objects:_3}],_24=[2,{nodes:_3}],_25=[0,{my:_3}],_26=[0,{s3:_3,"s3-accesspoint":_3,"s3-website":_3}],_27=[0,{s3:_3,"s3-accesspoint":_3}],_28=[0,{direct:_3}],_29=[0,{"webview-assets":_3}],_30=[0,{vfs:_3,"webview-assets":_3}],_31=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:_30}],_32=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_27,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:_30}],_33=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],_34=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3}],_35=[0,{s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-fips":_3,"s3-website":_3}],_36=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:_30}],_37=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3}],_38=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-deprecated":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],_39=[0,{auth:_3}],_40=[0,{auth:_3,"auth-fips":_3}],_41=[0,{"auth-fips":_3}],_42=[0,{apps:_3}],_43=[0,{paas:_3}],_44=[2,{eu:_3}],_45=[0,{app:_3}],_46=[0,{site:_3}],_47=[1,{com:_2,edu:_2,net:_2,org:_2}],_48=[0,{j:_3}],_49=[0,{dyn:_3}],_50=[2,{web:_3}],_51=[1,{discourse:_3}],_52=[1,{co:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2}],_53=[0,{p:_3}],_54=[0,{user:_3}],_55=[0,{cdn:_3}],_56=[2,{raw:_6}],_57=[0,{cust:_3,reservd:_3}],_58=[0,{cust:_3}],_59=[0,{s3:_3}],_60=[1,{biz:_2,com:_2,edu:_2,gov:_2,info:_2,net:_2,org:_2}],_61=[0,{ipfs:_3}],_62=[1,{framer:_3}],_63=[0,{forgot:_3}],_64=[1,{gs:_2}],_65=[0,{nes:_2}],_66=[1,{k12:_2,cc:_2,lib:_2}],_67=[1,{cc:_2}],_68=[1,{cc:_2,lib:_2}];return[0,{ac:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,drr:_3,feedback:_3,forms:_3}],ad:_2,ae:[1,{ac:_2,co:_2,gov:_2,mil:_2,net:_2,org:_2,sch:_2}],aero:[1,{airline:_2,airport:_2,"accident-investigation":_2,"accident-prevention":_2,aerobatic:_2,aeroclub:_2,aerodrome:_2,agents:_2,"air-surveillance":_2,"air-traffic-control":_2,aircraft:_2,airtraffic:_2,ambulance:_2,association:_2,author:_2,ballooning:_2,broker:_2,caa:_2,cargo:_2,catering:_2,certification:_2,championship:_2,charter:_2,civilaviation:_2,club:_2,conference:_2,consultant:_2,consulting:_2,control:_2,council:_2,crew:_2,design:_2,dgca:_2,educator:_2,emergency:_2,engine:_2,engineer:_2,entertainment:_2,equipment:_2,exchange:_2,express:_2,federation:_2,flight:_2,freight:_2,fuel:_2,gliding:_2,government:_2,groundhandling:_2,group:_2,hanggliding:_2,homebuilt:_2,insurance:_2,journal:_2,journalist:_2,leasing:_2,logistics:_2,magazine:_2,maintenance:_2,marketplace:_2,media:_2,microlight:_2,modelling:_2,navigation:_2,parachuting:_2,paragliding:_2,"passenger-association":_2,pilot:_2,press:_2,production:_2,recreation:_2,repbody:_2,res:_2,research:_2,rotorcraft:_2,safety:_2,scientist:_2,services:_2,show:_2,skydiving:_2,software:_2,student:_2,taxi:_2,trader:_2,trading:_2,trainer:_2,union:_2,workinggroup:_2,works:_2}],af:_4,ag:[1,{co:_2,com:_2,net:_2,nom:_2,org:_2,obj:_3}],ai:[1,{com:_2,net:_2,off:_2,org:_2,uwu:_3,framer:_3,kiloapps:_3}],al:_5,am:[1,{co:_2,com:_2,commune:_2,net:_2,org:_2,radio:_3}],ao:[1,{co:_2,ed:_2,edu:_2,gov:_2,gv:_2,it:_2,og:_2,org:_2,pb:_2}],aq:_2,ar:[1,{bet:_2,com:_2,coop:_2,edu:_2,gob:_2,gov:_2,int:_2,mil:_2,musica:_2,mutual:_2,net:_2,org:_2,seg:_2,senasa:_2,tur:_2}],arpa:[1,{e164:_2,home:_2,"in-addr":_2,ip6:_2,iris:_2,uri:_2,urn:_2}],as:_10,asia:[1,{cloudns:_3,daemon:_3,dix:_3}],at:[1,{4:_3,ac:[1,{sth:_2}],co:_2,gv:_2,or:_2,funkfeuer:[0,{wien:_3}],futurecms:[0,{"*":_3,ex:_6,in:_6}],futurehosting:_3,futuremailing:_3,ortsinfo:[0,{ex:_6,kunden:_6}],biz:_3,info:_3,"123webseite":_3,priv:_3,my:_3,myspreadshop:_3,"12hp":_3,"2ix":_3,"4lima":_3,"lima-city":_3}],au:[1,{asn:_2,com:[1,{cloudlets:[0,{mel:_3}],myspreadshop:_3}],edu:[1,{act:_2,catholic:_2,nsw:_2,nt:_2,qld:_2,sa:_2,tas:_2,vic:_2,wa:_2}],gov:[1,{qld:_2,sa:_2,tas:_2,vic:_2,wa:_2}],id:_2,net:_2,org:_2,conf:_2,oz:_2,act:_2,nsw:_2,nt:_2,qld:_2,sa:_2,tas:_2,vic:_2,wa:_2,hrsn:[0,{vps:_3}]}],aw:[1,{com:_2}],ax:_2,az:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,int:_2,mil:_2,name:_2,net:_2,org:_2,pp:_2,pro:_2}],ba:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,brendly:_20,rs:_3}],bb:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,net:_2,org:_2,store:_2,tv:_2}],bd:[1,{ac:_2,ai:_2,co:_2,com:_2,edu:_2,gov:_2,id:_2,info:_2,it:_2,mil:_2,net:_2,org:_2,sch:_2,tv:_2}],be:[1,{ac:_2,cloudns:_3,webhosting:_3,interhostsolutions:[0,{cloud:_3}],kuleuven:[0,{ezproxy:_3}],"123website":_3,myspreadshop:_3,transurl:_6}],bf:_10,bg:[1,{0:_2,1:_2,2:_2,3:_2,4:_2,5:_2,6:_2,7:_2,8:_2,9:_2,a:_2,b:_2,c:_2,d:_2,e:_2,f:_2,g:_2,h:_2,i:_2,j:_2,k:_2,l:_2,m:_2,n:_2,o:_2,p:_2,q:_2,r:_2,s:_2,t:_2,u:_2,v:_2,w:_2,x:_2,y:_2,z:_2,barsy:_3}],bh:_4,bi:[1,{co:_2,com:_2,edu:_2,or:_2,org:_2}],biz:[1,{activetrail:_3,"cloud-ip":_3,cloudns:_3,jozi:_3,dyndns:_3,"for-better":_3,"for-more":_3,"for-some":_3,"for-the":_3,selfip:_3,webhop:_3,orx:_3,mmafan:_3,myftp:_3,"no-ip":_3,dscloud:_3}],bj:[1,{africa:_2,agro:_2,architectes:_2,assur:_2,avocats:_2,co:_2,com:_2,eco:_2,econo:_2,edu:_2,info:_2,loisirs:_2,money:_2,net:_2,org:_2,ote:_2,restaurant:_2,resto:_2,tourism:_2,univ:_2}],bm:_4,bn:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,co:_3}],bo:[1,{com:_2,edu:_2,gob:_2,int:_2,mil:_2,net:_2,org:_2,tv:_2,web:_2,academia:_2,agro:_2,arte:_2,blog:_2,bolivia:_2,ciencia:_2,cooperativa:_2,democracia:_2,deporte:_2,ecologia:_2,economia:_2,empresa:_2,indigena:_2,industria:_2,info:_2,medicina:_2,movimiento:_2,musica:_2,natural:_2,nombre:_2,noticias:_2,patria:_2,plurinacional:_2,politica:_2,profesional:_2,pueblo:_2,revista:_2,salud:_2,tecnologia:_2,tksat:_2,transporte:_2,wiki:_2}],br:[1,{"9guacu":_2,abc:_2,adm:_2,adv:_2,agr:_2,aju:_2,am:_2,anani:_2,aparecida:_2,api:_2,app:_2,arq:_2,art:_2,ato:_2,b:_2,barueri:_2,belem:_2,bet:_2,bhz:_2,bib:_2,bio:_2,blog:_2,bmd:_2,boavista:_2,bsb:_2,campinagrande:_2,campinas:_2,caxias:_2,cim:_2,cng:_2,cnt:_2,com:[1,{simplesite:_3}],contagem:_2,coop:_2,coz:_2,cri:_2,cuiaba:_2,curitiba:_2,def:_2,des:_2,det:_2,dev:_2,ecn:_2,eco:_2,edu:_2,emp:_2,enf:_2,eng:_2,esp:_2,etc:_2,eti:_2,far:_2,feira:_2,flog:_2,floripa:_2,fm:_2,fnd:_2,fortal:_2,fot:_2,foz:_2,fst:_2,g12:_2,geo:_2,ggf:_2,goiania:_2,gov:[1,{ac:_2,al:_2,am:_2,ap:_2,ba:_2,ce:_2,df:_2,es:_2,go:_2,ma:_2,mg:_2,ms:_2,mt:_2,pa:_2,pb:_2,pe:_2,pi:_2,pr:_2,rj:_2,rn:_2,ro:_2,rr:_2,rs:_2,sc:_2,se:_2,sp:_2,to:_2}],gru:_2,ia:_2,imb:_2,ind:_2,inf:_2,jab:_2,jampa:_2,jdf:_2,joinville:_2,jor:_2,jus:_2,leg:[1,{ac:_3,al:_3,am:_3,ap:_3,ba:_3,ce:_3,df:_3,es:_3,go:_3,ma:_3,mg:_3,ms:_3,mt:_3,pa:_3,pb:_3,pe:_3,pi:_3,pr:_3,rj:_3,rn:_3,ro:_3,rr:_3,rs:_3,sc:_3,se:_3,sp:_3,to:_3}],leilao:_2,lel:_2,log:_2,londrina:_2,macapa:_2,maceio:_2,manaus:_2,maringa:_2,mat:_2,med:_2,mil:_2,morena:_2,mp:_2,mus:_2,natal:_2,net:_2,niteroi:_2,nom:_21,not:_2,ntr:_2,odo:_2,ong:_2,org:_2,osasco:_2,palmas:_2,poa:_2,ppg:_2,pro:_2,psc:_2,psi:_2,pvh:_2,qsl:_2,radio:_2,rec:_2,recife:_2,rep:_2,ribeirao:_2,rio:_2,riobranco:_2,riopreto:_2,salvador:_2,sampa:_2,santamaria:_2,santoandre:_2,saobernardo:_2,saogonca:_2,seg:_2,sjc:_2,slg:_2,slz:_2,social:_2,sorocaba:_2,srv:_2,taxi:_2,tc:_2,tec:_2,teo:_2,the:_2,tmp:_2,trd:_2,tur:_2,tv:_2,udi:_2,vet:_2,vix:_2,vlog:_2,wiki:_2,xyz:_2,zlg:_2,tche:_3}],bs:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,we:_3}],bt:_4,bv:_2,bw:[1,{ac:_2,co:_2,gov:_2,net:_2,org:_2}],by:[1,{gov:_2,mil:_2,com:_2,of:_2,mediatech:_3}],bz:[1,{co:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2,za:_3,mydns:_3,gsj:_3}],ca:[1,{ab:_2,bc:_2,mb:_2,nb:_2,nf:_2,nl:_2,ns:_2,nt:_2,nu:_2,on:_2,pe:_2,qc:_2,sk:_2,yk:_2,gc:_2,barsy:_3,awdev:_6,co:_3,"no-ip":_3,onid:_3,myspreadshop:_3,box:_3}],cat:_2,cc:[1,{cleverapps:_3,"cloud-ip":_3,cloudns:_3,ccwu:_3,ftpaccess:_3,"game-server":_3,myphotos:_3,scrapping:_3,twmail:_3,csx:_3,fantasyleague:_3,spawn:[0,{instances:_3}],ec:_3,eu:_3,gu:_3,uk:_3,us:_3}],cd:[1,{gov:_2,cc:_3}],cf:_2,cg:_2,ch:[1,{square7:_3,cloudns:_3,cloudscale:[0,{cust:_3,lpg:_23,rma:_23}],objectstorage:[0,{lpg:_3,rma:_3}],flow:[0,{ae:[0,{alp1:_3}],appengine:_3}],"linkyard-cloud":_3,gotdns:_3,dnsking:_3,"123website":_3,myspreadshop:_3,firenet:[0,{"*":_3,svc:_6}],"12hp":_3,"2ix":_3,"4lima":_3,"lima-city":_3}],ci:[1,{ac:_2,"xn--aroport-bya":_2,aéroport:_2,asso:_2,co:_2,com:_2,ed:_2,edu:_2,go:_2,gouv:_2,int:_2,net:_2,or:_2,org:_2,us:_3}],ck:_21,cl:[1,{co:_2,gob:_2,gov:_2,mil:_2,cloudns:_3}],cm:[1,{co:_2,com:_2,gov:_2,net:_2}],cn:[1,{ac:_2,com:[1,{amazonaws:[0,{"cn-north-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,rds:_6,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-deprecated":_3,"s3-object-lambda":_3,"s3-website":_3}],"cn-northwest-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,rds:_6,dualstack:_27,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3}],compute:_6,airflow:[0,{"cn-north-1":_6,"cn-northwest-1":_6}],eb:[0,{"cn-north-1":_3,"cn-northwest-1":_3}],elb:_6}],amazonwebservices:[0,{on:[0,{"cn-north-1":_12,"cn-northwest-1":_12}]}],sagemaker:[0,{"cn-north-1":_15,"cn-northwest-1":_15}]}],edu:_2,gov:_2,mil:_2,net:_2,org:_2,"xn--55qx5d":_2,公司:_2,"xn--od0alg":_2,網絡:_2,"xn--io0a7i":_2,网络:_2,ah:_2,bj:_2,cq:_2,fj:_2,gd:_2,gs:_2,gx:_2,gz:_2,ha:_2,hb:_2,he:_2,hi:_2,hk:_2,hl:_2,hn:_2,jl:_2,js:_2,jx:_2,ln:_2,mo:_2,nm:_2,nx:_2,qh:_2,sc:_2,sd:_2,sh:[1,{as:_3}],sn:_2,sx:_2,tj:_2,tw:_2,xj:_2,xz:_2,yn:_2,zj:_2,"canva-apps":_3,canvasite:_25,myqnapcloud:_3,quickconnect:_28}],co:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,nom:_2,org:_2,carrd:_3,crd:_3,otap:_6,hidns:_3,leadpages:_3,lpages:_3,mypi:_3,xmit:_6,rdpa:[0,{clusters:_6,srvrless:_6}],firewalledreplit:_9,repl:_9,supabase:[2,{realtime:_3,storage:_3}],umso:_3}],com:[1,{a2hosted:_3,cpserver:_3,adobeaemcloud:[2,{dev:_6}],africa:_3,auiusercontent:_6,aivencloud:_3,alibabacloudcs:_3,kasserver:_3,amazonaws:[0,{"af-south-1":_31,"ap-east-1":_32,"ap-northeast-1":_33,"ap-northeast-2":_33,"ap-northeast-3":_31,"ap-south-1":_33,"ap-south-2":_34,"ap-southeast-1":_33,"ap-southeast-2":_33,"ap-southeast-3":_34,"ap-southeast-4":_34,"ap-southeast-5":[0,{"execute-api":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-deprecated":_3,"s3-object-lambda":_3,"s3-website":_3}],"ca-central-1":_36,"ca-west-1":_37,"eu-central-1":_33,"eu-central-2":_34,"eu-north-1":_32,"eu-south-1":_31,"eu-south-2":_34,"eu-west-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-deprecated":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],"eu-west-2":_32,"eu-west-3":_31,"il-central-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:[0,{vfs:_3}]}],"me-central-1":_34,"me-south-1":_32,"sa-east-1":_31,"us-east-1":[2,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-deprecated":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],"us-east-2":_38,"us-gov-east-1":_37,"us-gov-west-1":_37,"us-west-1":_36,"us-west-2":_38,compute:_6,"compute-1":_6,airflow:[0,{"af-south-1":_6,"ap-east-1":_6,"ap-northeast-1":_6,"ap-northeast-2":_6,"ap-northeast-3":_6,"ap-south-1":_6,"ap-south-2":_6,"ap-southeast-1":_6,"ap-southeast-2":_6,"ap-southeast-3":_6,"ap-southeast-4":_6,"ap-southeast-5":_6,"ap-southeast-7":_6,"ca-central-1":_6,"ca-west-1":_6,"eu-central-1":_6,"eu-central-2":_6,"eu-north-1":_6,"eu-south-1":_6,"eu-south-2":_6,"eu-west-1":_6,"eu-west-2":_6,"eu-west-3":_6,"il-central-1":_6,"me-central-1":_6,"me-south-1":_6,"sa-east-1":_6,"us-east-1":_6,"us-east-2":_6,"us-west-1":_6,"us-west-2":_6}],rds:[0,{"af-south-1":_6,"ap-east-1":_6,"ap-east-2":_6,"ap-northeast-1":_6,"ap-northeast-2":_6,"ap-northeast-3":_6,"ap-south-1":_6,"ap-south-2":_6,"ap-southeast-1":_6,"ap-southeast-2":_6,"ap-southeast-3":_6,"ap-southeast-4":_6,"ap-southeast-5":_6,"ap-southeast-6":_6,"ap-southeast-7":_6,"ca-central-1":_6,"ca-west-1":_6,"eu-central-1":_6,"eu-central-2":_6,"eu-west-1":_6,"eu-west-2":_6,"eu-west-3":_6,"il-central-1":_6,"me-central-1":_6,"me-south-1":_6,"mx-central-1":_6,"sa-east-1":_6,"us-east-1":_6,"us-east-2":_6,"us-gov-east-1":_6,"us-gov-west-1":_6,"us-northeast-1":_6,"us-west-1":_6,"us-west-2":_6}],s3:_3,"s3-1":_3,"s3-ap-east-1":_3,"s3-ap-northeast-1":_3,"s3-ap-northeast-2":_3,"s3-ap-northeast-3":_3,"s3-ap-south-1":_3,"s3-ap-southeast-1":_3,"s3-ap-southeast-2":_3,"s3-ca-central-1":_3,"s3-eu-central-1":_3,"s3-eu-north-1":_3,"s3-eu-west-1":_3,"s3-eu-west-2":_3,"s3-eu-west-3":_3,"s3-external-1":_3,"s3-fips-us-gov-east-1":_3,"s3-fips-us-gov-west-1":_3,"s3-global":[0,{accesspoint:[0,{mrap:_3}]}],"s3-me-south-1":_3,"s3-sa-east-1":_3,"s3-us-east-2":_3,"s3-us-gov-east-1":_3,"s3-us-gov-west-1":_3,"s3-us-west-1":_3,"s3-us-west-2":_3,"s3-website-ap-northeast-1":_3,"s3-website-ap-southeast-1":_3,"s3-website-ap-southeast-2":_3,"s3-website-eu-west-1":_3,"s3-website-sa-east-1":_3,"s3-website-us-east-1":_3,"s3-website-us-gov-west-1":_3,"s3-website-us-west-1":_3,"s3-website-us-west-2":_3,elb:_6}],amazoncognito:[0,{"af-south-1":_39,"ap-east-1":_39,"ap-northeast-1":_39,"ap-northeast-2":_39,"ap-northeast-3":_39,"ap-south-1":_39,"ap-south-2":_39,"ap-southeast-1":_39,"ap-southeast-2":_39,"ap-southeast-3":_39,"ap-southeast-4":_39,"ap-southeast-5":_39,"ap-southeast-7":_39,"ca-central-1":_39,"ca-west-1":_39,"eu-central-1":_39,"eu-central-2":_39,"eu-north-1":_39,"eu-south-1":_39,"eu-south-2":_39,"eu-west-1":_39,"eu-west-2":_39,"eu-west-3":_39,"il-central-1":_39,"me-central-1":_39,"me-south-1":_39,"mx-central-1":_39,"sa-east-1":_39,"us-east-1":_40,"us-east-2":_40,"us-gov-east-1":_41,"us-gov-west-1":_41,"us-west-1":_40,"us-west-2":_40}],amplifyapp:_3,awsapprunner:_6,awsapps:_3,elasticbeanstalk:[2,{"af-south-1":_3,"ap-east-1":_3,"ap-northeast-1":_3,"ap-northeast-2":_3,"ap-northeast-3":_3,"ap-south-1":_3,"ap-southeast-1":_3,"ap-southeast-2":_3,"ap-southeast-3":_3,"ap-southeast-5":_3,"ap-southeast-7":_3,"ca-central-1":_3,"eu-central-1":_3,"eu-north-1":_3,"eu-south-1":_3,"eu-south-2":_3,"eu-west-1":_3,"eu-west-2":_3,"eu-west-3":_3,"il-central-1":_3,"me-central-1":_3,"me-south-1":_3,"sa-east-1":_3,"us-east-1":_3,"us-east-2":_3,"us-gov-east-1":_3,"us-gov-west-1":_3,"us-west-1":_3,"us-west-2":_3}],awsglobalaccelerator:_3,siiites:_3,appspacehosted:_3,appspaceusercontent:_3,"on-aptible":_3,myasustor:_3,"balena-devices":_3,boutir:_3,bplaced:_3,cafjs:_3,"canva-apps":_3,"canva-hosted-embed":_3,canvacode:_3,"rice-labs":_3,"cdn77-storage":_3,br:_3,cn:_3,de:_3,eu:_3,jpn:_3,mex:_3,ru:_3,sa:_3,uk:_3,us:_3,za:_3,"clever-cloud":[0,{services:_6}],abrdns:_3,dnsabr:_3,"ip-ddns":_3,jdevcloud:_3,wpdevcloud:_3,"cf-ipfs":_3,"cloudflare-ipfs":_3,trycloudflare:_3,co:_3,devinapps:_6,builtwithdark:_3,datadetect:[0,{demo:_3,instance:_3}],dattolocal:_3,dattorelay:_3,dattoweb:_3,mydatto:_3,digitaloceanspaces:_6,discordsays:_3,discordsez:_3,drayddns:_3,dreamhosters:_3,durumis:_3,blogdns:_3,cechire:_3,dnsalias:_3,dnsdojo:_3,doesntexist:_3,dontexist:_3,doomdns:_3,"dyn-o-saur":_3,dynalias:_3,"dyndns-at-home":_3,"dyndns-at-work":_3,"dyndns-blog":_3,"dyndns-free":_3,"dyndns-home":_3,"dyndns-ip":_3,"dyndns-mail":_3,"dyndns-office":_3,"dyndns-pics":_3,"dyndns-remote":_3,"dyndns-server":_3,"dyndns-web":_3,"dyndns-wiki":_3,"dyndns-work":_3,"est-a-la-maison":_3,"est-a-la-masion":_3,"est-le-patron":_3,"est-mon-blogueur":_3,"from-ak":_3,"from-al":_3,"from-ar":_3,"from-ca":_3,"from-ct":_3,"from-dc":_3,"from-de":_3,"from-fl":_3,"from-ga":_3,"from-hi":_3,"from-ia":_3,"from-id":_3,"from-il":_3,"from-in":_3,"from-ks":_3,"from-ky":_3,"from-ma":_3,"from-md":_3,"from-mi":_3,"from-mn":_3,"from-mo":_3,"from-ms":_3,"from-mt":_3,"from-nc":_3,"from-nd":_3,"from-ne":_3,"from-nh":_3,"from-nj":_3,"from-nm":_3,"from-nv":_3,"from-oh":_3,"from-ok":_3,"from-or":_3,"from-pa":_3,"from-pr":_3,"from-ri":_3,"from-sc":_3,"from-sd":_3,"from-tn":_3,"from-tx":_3,"from-ut":_3,"from-va":_3,"from-vt":_3,"from-wa":_3,"from-wi":_3,"from-wv":_3,"from-wy":_3,getmyip:_3,gotdns:_3,"hobby-site":_3,homelinux:_3,homeunix:_3,iamallama:_3,"is-a-anarchist":_3,"is-a-blogger":_3,"is-a-bookkeeper":_3,"is-a-bulls-fan":_3,"is-a-caterer":_3,"is-a-chef":_3,"is-a-conservative":_3,"is-a-cpa":_3,"is-a-cubicle-slave":_3,"is-a-democrat":_3,"is-a-designer":_3,"is-a-doctor":_3,"is-a-financialadvisor":_3,"is-a-geek":_3,"is-a-green":_3,"is-a-guru":_3,"is-a-hard-worker":_3,"is-a-hunter":_3,"is-a-landscaper":_3,"is-a-lawyer":_3,"is-a-liberal":_3,"is-a-libertarian":_3,"is-a-llama":_3,"is-a-musician":_3,"is-a-nascarfan":_3,"is-a-nurse":_3,"is-a-painter":_3,"is-a-personaltrainer":_3,"is-a-photographer":_3,"is-a-player":_3,"is-a-republican":_3,"is-a-rockstar":_3,"is-a-socialist":_3,"is-a-student":_3,"is-a-teacher":_3,"is-a-techie":_3,"is-a-therapist":_3,"is-an-accountant":_3,"is-an-actor":_3,"is-an-actress":_3,"is-an-anarchist":_3,"is-an-artist":_3,"is-an-engineer":_3,"is-an-entertainer":_3,"is-certified":_3,"is-gone":_3,"is-into-anime":_3,"is-into-cars":_3,"is-into-cartoons":_3,"is-into-games":_3,"is-leet":_3,"is-not-certified":_3,"is-slick":_3,"is-uberleet":_3,"is-with-theband":_3,"isa-geek":_3,"isa-hockeynut":_3,issmarterthanyou:_3,"likes-pie":_3,likescandy:_3,"neat-url":_3,"saves-the-whales":_3,selfip:_3,"sells-for-less":_3,"sells-for-u":_3,servebbs:_3,"simple-url":_3,"space-to-rent":_3,"teaches-yoga":_3,writesthisblog:_3,ddnsfree:_3,ddnsgeek:_3,giize:_3,gleeze:_3,kozow:_3,loseyourip:_3,ooguy:_3,theworkpc:_3,emergentagent:[0,{preview:_3}],mytuleap:_3,"tuleap-partners":_3,encoreapi:_3,evennode:[0,{"eu-1":_3,"eu-2":_3,"eu-3":_3,"eu-4":_3,"us-1":_3,"us-2":_3,"us-3":_3,"us-4":_3}],onfabrica:_3,"fastly-edge":_3,"fastly-terrarium":_3,"fastvps-server":_3,mydobiss:_3,firebaseapp:_3,fldrv:_3,framercanvas:_3,"freebox-os":_3,freeboxos:_3,freemyip:_3,aliases121:_3,gentapps:_3,gentlentapis:_3,githubusercontent:_3,"0emm":_6,appspot:[2,{r:_6}],blogspot:_3,codespot:_3,googleapis:_3,googlecode:_3,pagespeedmobilizer:_3,withgoogle:_3,withyoutube:_3,grayjayleagues:_3,hatenablog:_3,hatenadiary:_3,"hercules-app":_3,"hercules-dev":_3,herokuapp:_3,gr:_3,smushcdn:_3,wphostedmail:_3,wpmucdn:_3,pixolino:_3,"apps-1and1":_3,"live-website":_3,"webspace-host":_3,dopaas:_3,"hosted-by-previder":_43,hosteur:[0,{"rag-cloud":_3,"rag-cloud-ch":_3}],"ik-server":[0,{jcloud:_3,"jcloud-ver-jpc":_3}],jelastic:[0,{demo:_3}],massivegrid:_43,wafaicloud:[0,{jed:_3,ryd:_3}],"eu1-plenit":_3,"la1-plenit":_3,"us1-plenit":_3,webadorsite:_3,joyent:[0,{cns:_6}],"on-forge":_3,"on-vapor":_3,lpusercontent:_3,linode:[0,{members:_3,nodebalancer:_6}],linodeobjects:_6,linodeusercontent:[0,{ip:_3}],localtonet:_3,lovableproject:_3,barsycenter:_3,barsyonline:_3,lutrausercontent:_6,magicpatternsapp:_3,modelscape:_3,mwcloudnonprod:_3,polyspace:_3,mazeplay:_3,miniserver:_3,atmeta:_3,fbsbx:_42,meteorapp:_44,routingthecloud:_3,"same-app":_3,"same-preview":_3,mydbserver:_3,mochausercontent:_3,hostedpi:_3,"mythic-beasts":[0,{caracal:_3,customer:_3,fentiger:_3,lynx:_3,ocelot:_3,oncilla:_3,onza:_3,sphinx:_3,vs:_3,x:_3,yali:_3}],nospamproxy:[0,{cloud:[2,{o365:_3}]}],"4u":_3,nfshost:_3,"3utilities":_3,blogsyte:_3,ciscofreak:_3,damnserver:_3,ddnsking:_3,ditchyourip:_3,dnsiskinky:_3,dynns:_3,geekgalaxy:_3,"health-carereform":_3,homesecuritymac:_3,homesecuritypc:_3,myactivedirectory:_3,mysecuritycamera:_3,myvnc:_3,"net-freaks":_3,onthewifi:_3,point2this:_3,quicksytes:_3,securitytactics:_3,servebeer:_3,servecounterstrike:_3,serveexchange:_3,serveftp:_3,servegame:_3,servehalflife:_3,servehttp:_3,servehumour:_3,serveirc:_3,servemp3:_3,servep2p:_3,servepics:_3,servequake:_3,servesarcasm:_3,stufftoread:_3,unusualperson:_3,workisboring:_3,myiphost:_3,observableusercontent:[0,{static:_3}],simplesite:_3,oaiusercontent:_6,orsites:_3,operaunite:_3,"customer-oci":[0,{"*":_3,oci:_6,ocp:_6,ocs:_6}],oraclecloudapps:_6,oraclegovcloudapps:_6,"authgear-staging":_3,authgearapps:_3,outsystemscloud:_3,ownprovider:_3,pgfog:_3,pagexl:_3,gotpantheon:_3,paywhirl:_6,forgeblocks:_3,upsunapp:_3,"postman-echo":_3,prgmr:[0,{xen:_3}],"project-study":[0,{dev:_3}],pythonanywhere:_44,qa2:_3,"alpha-myqnapcloud":_3,"dev-myqnapcloud":_3,mycloudnas:_3,mynascloud:_3,myqnapcloud:_3,qualifioapp:_3,ladesk:_3,qualyhqpartner:_6,qualyhqportal:_6,qbuser:_3,quipelements:_6,rackmaze:_3,"readthedocs-hosted":_3,rhcloud:_3,onrender:_3,render:_45,"subsc-pay":_3,"180r":_3,dojin:_3,sakuratan:_3,sakuraweb:_3,x0:_3,code:[0,{builder:_6,"dev-builder":_6,"stg-builder":_6}],salesforce:[0,{platform:[0,{"code-builder-stg":[0,{test:[0,{"001":_6}]}]}]}],logoip:_3,scrysec:_3,"firewall-gateway":_3,myshopblocks:_3,myshopify:_3,shopitsite:_3,"1kapp":_3,appchizi:_3,applinzi:_3,sinaapp:_3,vipsinaapp:_3,streamlitapp:_3,"try-snowplow":_3,"playstation-cloud":_3,myspreadshop:_3,"w-corp-staticblitz":_3,"w-credentialless-staticblitz":_3,"w-staticblitz":_3,"stackhero-network":_3,stdlib:[0,{api:_3}],strapiapp:[2,{media:_3}],"streak-link":_3,streaklinks:_3,streakusercontent:_3,"temp-dns":_3,dsmynas:_3,familyds:_3,mytabit:_3,taveusercontent:_3,"tb-hosting":_46,reservd:_3,thingdustdata:_3,"townnews-staging":_3,typeform:[0,{pro:_3}],hk:_3,it:_3,"deus-canvas":_3,vultrobjects:_6,wafflecell:_3,hotelwithflight:_3,"reserve-online":_3,cprapid:_3,pleskns:_3,remotewd:_3,wiardweb:[0,{pages:_3}],"base44-sandbox":_3,wixsite:_3,wixstudio:_3,messwithdns:_3,"woltlab-demo":_3,wpenginepowered:[2,{js:_3}],xnbay:[2,{u2:_3,"u2-local":_3}],xtooldevice:_3,yolasite:_3}],coop:_2,cr:[1,{ac:_2,co:_2,ed:_2,fi:_2,go:_2,or:_2,sa:_2}],cu:[1,{com:_2,edu:_2,gob:_2,inf:_2,nat:_2,net:_2,org:_2}],cv:[1,{com:_2,edu:_2,id:_2,int:_2,net:_2,nome:_2,org:_2,publ:_2}],cw:_47,cx:[1,{gov:_2,cloudns:_3,ath:_3,info:_3,assessments:_3,calculators:_3,funnels:_3,paynow:_3,quizzes:_3,researched:_3,tests:_3}],cy:[1,{ac:_2,biz:_2,com:[1,{scaleforce:_48}],ekloges:_2,gov:_2,ltd:_2,mil:_2,net:_2,org:_2,press:_2,pro:_2,tm:_2}],cz:[1,{gov:_2,contentproxy9:[0,{rsc:_3}],realm:_3,e4:_3,co:_3,metacentrum:[0,{cloud:_6,custom:_3}],muni:[0,{cloud:[0,{flt:_3,usr:_3}]}]}],de:[1,{bplaced:_3,square7:_3,"bwcloud-os-instance":_6,com:_3,cosidns:_49,dnsupdater:_3,"dynamisches-dns":_3,"internet-dns":_3,"l-o-g-i-n":_3,ddnss:[2,{dyn:_3,dyndns:_3}],"dyn-ip24":_3,dyndns1:_3,"home-webserver":[2,{dyn:_3}],"myhome-server":_3,dnshome:_3,fuettertdasnetz:_3,isteingeek:_3,istmein:_3,lebtimnetz:_3,leitungsen:_3,traeumtgerade:_3,frusky:_6,goip:_3,"xn--gnstigbestellen-zvb":_3,günstigbestellen:_3,"xn--gnstigliefern-wob":_3,günstigliefern:_3,"hs-heilbronn":[0,{it:[0,{pages:_3,"pages-research":_3}]}],"dyn-berlin":_3,"in-berlin":_3,"in-brb":_3,"in-butter":_3,"in-dsl":_3,"in-vpn":_3,iservschule:_3,"mein-iserv":_3,schuldock:_3,schulplattform:_3,schulserver:_3,"test-iserv":_3,keymachine:_3,co:_3,"git-repos":_3,"lcube-server":_3,"svn-repos":_3,barsy:_3,webspaceconfig:_3,"123webseite":_3,rub:_3,"ruhr-uni-bochum":[2,{noc:[0,{io:_3}]}],logoip:_3,"firewall-gateway":_3,"my-gateway":_3,"my-router":_3,spdns:_3,my:_3,speedpartner:[0,{customer:_3}],myspreadshop:_3,"taifun-dns":_3,"12hp":_3,"2ix":_3,"4lima":_3,"lima-city":_3,"virtual-user":_3,virtualuser:_3,"community-pro":_3,diskussionsbereich:_3,xenonconnect:_6}],dj:_2,dk:[1,{biz:_3,co:_3,firm:_3,reg:_3,store:_3,"123hjemmeside":_3,myspreadshop:_3}],dm:_52,do:[1,{art:_2,com:_2,edu:_2,gob:_2,gov:_2,mil:_2,net:_2,org:_2,sld:_2,web:_2}],dz:[1,{art:_2,asso:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2,pol:_2,soc:_2,tm:_2}],ec:[1,{abg:_2,adm:_2,agron:_2,arqt:_2,art:_2,bar:_2,chef:_2,com:_2,cont:_2,cpa:_2,cue:_2,dent:_2,dgn:_2,disco:_2,doc:_2,edu:_2,eng:_2,esm:_2,fin:_2,fot:_2,gal:_2,gob:_2,gov:_2,gye:_2,ibr:_2,info:_2,k12:_2,lat:_2,loj:_2,med:_2,mil:_2,mktg:_2,mon:_2,net:_2,ntr:_2,odont:_2,org:_2,pro:_2,prof:_2,psic:_2,psiq:_2,pub:_2,rio:_2,rrpp:_2,sal:_2,tech:_2,tul:_2,tur:_2,uio:_2,vet:_2,xxx:_2,base:_3,official:_3}],edu:[1,{rit:[0,{"git-pages":_3}]}],ee:[1,{aip:_2,com:_2,edu:_2,fie:_2,gov:_2,lib:_2,med:_2,org:_2,pri:_2,riik:_2}],eg:[1,{ac:_2,com:_2,edu:_2,eun:_2,gov:_2,info:_2,me:_2,mil:_2,name:_2,net:_2,org:_2,sci:_2,sport:_2,tv:_2}],er:_21,es:[1,{com:_2,edu:_2,gob:_2,nom:_2,org:_2,"123miweb":_3,myspreadshop:_3}],et:[1,{biz:_2,com:_2,edu:_2,gov:_2,info:_2,name:_2,net:_2,org:_2}],eu:[1,{amazonwebservices:[0,{on:[0,{"eusc-de-east-1":[0,{"cognito-idp":_39}]}]}],cloudns:_3,prvw:_3,deuxfleurs:_3,dogado:[0,{jelastic:_3}],barsy:_3,spdns:_3,nxa:_6,directwp:_3,transurl:_6}],fi:[1,{aland:_2,dy:_3,"xn--hkkinen-5wa":_3,häkkinen:_3,iki:_3,cloudplatform:[0,{fi:_3}],datacenter:[0,{demo:_3,paas:_3}],kapsi:_3,"123kotisivu":_3,myspreadshop:_3}],fj:[1,{ac:_2,biz:_2,com:_2,edu:_2,gov:_2,id:_2,info:_2,mil:_2,name:_2,net:_2,org:_2,pro:_2}],fk:_21,fm:[1,{com:_2,edu:_2,net:_2,org:_2,radio:_3,user:_6}],fo:_2,fr:[1,{asso:_2,com:_2,gouv:_2,nom:_2,prd:_2,tm:_2,avoues:_2,cci:_2,greta:_2,"huissier-justice":_2,"fbx-os":_3,fbxos:_3,"freebox-os":_3,freeboxos:_3,goupile:_3,"123siteweb":_3,"on-web":_3,"chirurgiens-dentistes-en-france":_3,dedibox:_3,aeroport:_3,avocat:_3,chambagri:_3,"chirurgiens-dentistes":_3,"experts-comptables":_3,medecin:_3,notaires:_3,pharmacien:_3,port:_3,veterinaire:_3,myspreadshop:_3,ynh:_3}],ga:_2,gb:_2,gd:[1,{edu:_2,gov:_2}],ge:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,pvt:_2,school:_2}],gf:_2,gg:[1,{co:_2,net:_2,org:_2,ply:[0,{at:_6,d6:_3}],botdash:_3,kaas:_3,stackit:_3,panel:[2,{daemon:_3}]}],gh:[1,{biz:_2,com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],gi:[1,{com:_2,edu:_2,gov:_2,ltd:_2,mod:_2,org:_2}],gl:[1,{co:_2,com:_2,edu:_2,net:_2,org:_2}],gm:_2,gn:[1,{ac:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2}],gov:_2,gp:[1,{asso:_2,com:_2,edu:_2,mobi:_2,net:_2,org:_2}],gq:_2,gr:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,barsy:_3,simplesite:_3}],gs:_2,gt:[1,{com:_2,edu:_2,gob:_2,ind:_2,mil:_2,net:_2,org:_2}],gu:[1,{com:_2,edu:_2,gov:_2,guam:_2,info:_2,net:_2,org:_2,web:_2}],gw:[1,{nx:_3}],gy:_52,hk:[1,{com:_2,edu:_2,gov:_2,idv:_2,net:_2,org:_2,"xn--ciqpn":_2,个人:_2,"xn--gmqw5a":_2,個人:_2,"xn--55qx5d":_2,公司:_2,"xn--mxtq1m":_2,政府:_2,"xn--lcvr32d":_2,敎育:_2,"xn--wcvs22d":_2,教育:_2,"xn--gmq050i":_2,箇人:_2,"xn--uc0atv":_2,組織:_2,"xn--uc0ay4a":_2,組织:_2,"xn--od0alg":_2,網絡:_2,"xn--zf0avx":_2,網络:_2,"xn--mk0axi":_2,组織:_2,"xn--tn0ag":_2,组织:_2,"xn--od0aq3b":_2,网絡:_2,"xn--io0a7i":_2,网络:_2,inc:_3,ltd:_3}],hm:_2,hn:[1,{com:_2,edu:_2,gob:_2,mil:_2,net:_2,org:_2}],hr:[1,{com:_2,from:_2,iz:_2,name:_2,brendly:_20}],ht:[1,{adult:_2,art:_2,asso:_2,com:_2,coop:_2,edu:_2,firm:_2,gouv:_2,info:_2,med:_2,net:_2,org:_2,perso:_2,pol:_2,pro:_2,rel:_2,shop:_2,rt:_3}],hu:[1,{2e3:_2,agrar:_2,bolt:_2,casino:_2,city:_2,co:_2,erotica:_2,erotika:_2,film:_2,forum:_2,games:_2,hotel:_2,info:_2,ingatlan:_2,jogasz:_2,konyvelo:_2,lakas:_2,media:_2,news:_2,org:_2,priv:_2,reklam:_2,sex:_2,shop:_2,sport:_2,suli:_2,szex:_2,tm:_2,tozsde:_2,utazas:_2,video:_2}],id:[1,{ac:_2,biz:_2,co:_2,desa:_2,go:_2,kop:_2,mil:_2,my:_2,net:_2,or:_2,ponpes:_2,sch:_2,web:_2,"xn--9tfky":_2,"ᬩᬮᬶ":_2,e:_3,zone:_3}],ie:[1,{gov:_2,myspreadshop:_3}],il:[1,{ac:_2,co:[1,{ravpage:_3,mytabit:_3,tabitorder:_3}],gov:_2,idf:_2,k12:_2,muni:_2,net:_2,org:_2}],"xn--4dbrk0ce":[1,{"xn--4dbgdty6c":_2,"xn--5dbhl8d":_2,"xn--8dbq2a":_2,"xn--hebda8b":_2}],ישראל:[1,{אקדמיה:_2,ישוב:_2,צהל:_2,ממשל:_2}],im:[1,{ac:_2,co:[1,{ltd:_2,plc:_2}],com:_2,net:_2,org:_2,tt:_2,tv:_2}],in:[1,{"5g":_2,"6g":_2,ac:_2,ai:_2,am:_2,bank:_2,bihar:_2,biz:_2,business:_2,ca:_2,cn:_2,co:_2,com:_2,coop:_2,cs:_2,delhi:_2,dr:_2,edu:_2,er:_2,fin:_2,firm:_2,gen:_2,gov:_2,gujarat:_2,ind:_2,info:_2,int:_2,internet:_2,io:_2,me:_2,mil:_2,net:_2,nic:_2,org:_2,pg:_2,post:_2,pro:_2,res:_2,travel:_2,tv:_2,uk:_2,up:_2,us:_2,cloudns:_3,barsy:_3,web:_3,indevs:_3,supabase:_3}],info:[1,{cloudns:_3,"dynamic-dns":_3,"barrel-of-knowledge":_3,"barrell-of-knowledge":_3,dyndns:_3,"for-our":_3,"groks-the":_3,"groks-this":_3,"here-for-more":_3,knowsitall:_3,selfip:_3,webhop:_3,barsy:_3,mayfirst:_3,mittwald:_3,mittwaldserver:_3,typo3server:_3,dvrcam:_3,ilovecollege:_3,"no-ip":_3,forumz:_3,nsupdate:_3,dnsupdate:_3,"v-info":_3}],int:[1,{eu:_2}],io:[1,{2038:_3,co:_2,com:_2,edu:_2,gov:_2,mil:_2,net:_2,nom:_2,org:_2,"on-acorn":_6,myaddr:_3,apigee:_3,"b-data":_3,beagleboard:_3,bitbucket:_3,bluebite:_3,boxfuse:_3,brave:_7,browsersafetymark:_3,bubble:_55,bubbleapps:_3,bigv:[0,{uk0:_3}],cleverapps:_3,cloudbeesusercontent:_3,dappnode:[0,{dyndns:_3}],darklang:_3,definima:_3,dedyn:_3,icp0:_56,icp1:_56,qzz:_3,"fh-muenster":_3,gitbook:_3,github:_3,gitlab:_3,lolipop:_3,"hasura-app":_3,hostyhosting:_3,hypernode:_3,moonscale:_6,beebyte:_43,beebyteapp:[0,{sekd1:_3}],jele:_3,keenetic:_3,kiloapps:_3,webthings:_3,loginline:_3,barsy:_3,azurecontainer:_6,ngrok:[2,{ap:_3,au:_3,eu:_3,in:_3,jp:_3,sa:_3,us:_3}],nodeart:[0,{stage:_3}],pantheonsite:_3,forgerock:[0,{id:_3}],pstmn:[2,{mock:_3}],protonet:_3,qcx:[2,{sys:_6}],qoto:_3,vaporcloud:_3,myrdbx:_3,"rb-hosting":_46,"on-k3s":_6,"on-rio":_6,readthedocs:_3,resindevice:_3,resinstaging:[0,{devices:_3}],hzc:_3,sandcats:_3,scrypted:[0,{client:_3}],"mo-siemens":_3,lair:_42,stolos:_6,musician:_3,utwente:_3,edugit:_3,telebit:_3,thingdust:[0,{dev:_57,disrec:_57,prod:_58,testing:_57}],tickets:_3,webflow:_3,webflowtest:_3,editorx:_3,wixstudio:_3,basicserver:_3,virtualserver:_3}],iq:_5,ir:[1,{ac:_2,co:_2,gov:_2,id:_2,net:_2,org:_2,sch:_2,"xn--mgba3a4f16a":_2,ایران:_2,"xn--mgba3a4fra":_2,ايران:_2,arvanedge:_3,vistablog:_3}],is:_2,it:[1,{edu:_2,gov:_2,abr:_2,abruzzo:_2,"aosta-valley":_2,aostavalley:_2,bas:_2,basilicata:_2,cal:_2,calabria:_2,cam:_2,campania:_2,"emilia-romagna":_2,emiliaromagna:_2,emr:_2,"friuli-v-giulia":_2,"friuli-ve-giulia":_2,"friuli-vegiulia":_2,"friuli-venezia-giulia":_2,"friuli-veneziagiulia":_2,"friuli-vgiulia":_2,"friuliv-giulia":_2,"friulive-giulia":_2,friulivegiulia:_2,"friulivenezia-giulia":_2,friuliveneziagiulia:_2,friulivgiulia:_2,fvg:_2,laz:_2,lazio:_2,lig:_2,liguria:_2,lom:_2,lombardia:_2,lombardy:_2,lucania:_2,mar:_2,marche:_2,mol:_2,molise:_2,piedmont:_2,piemonte:_2,pmn:_2,pug:_2,puglia:_2,sar:_2,sardegna:_2,sardinia:_2,sic:_2,sicilia:_2,sicily:_2,taa:_2,tos:_2,toscana:_2,"trentin-sud-tirol":_2,"xn--trentin-sd-tirol-rzb":_2,"trentin-süd-tirol":_2,"trentin-sudtirol":_2,"xn--trentin-sdtirol-7vb":_2,"trentin-südtirol":_2,"trentin-sued-tirol":_2,"trentin-suedtirol":_2,trentino:_2,"trentino-a-adige":_2,"trentino-aadige":_2,"trentino-alto-adige":_2,"trentino-altoadige":_2,"trentino-s-tirol":_2,"trentino-stirol":_2,"trentino-sud-tirol":_2,"xn--trentino-sd-tirol-c3b":_2,"trentino-süd-tirol":_2,"trentino-sudtirol":_2,"xn--trentino-sdtirol-szb":_2,"trentino-südtirol":_2,"trentino-sued-tirol":_2,"trentino-suedtirol":_2,"trentinoa-adige":_2,trentinoaadige:_2,"trentinoalto-adige":_2,trentinoaltoadige:_2,"trentinos-tirol":_2,trentinostirol:_2,"trentinosud-tirol":_2,"xn--trentinosd-tirol-rzb":_2,"trentinosüd-tirol":_2,trentinosudtirol:_2,"xn--trentinosdtirol-7vb":_2,trentinosüdtirol:_2,"trentinosued-tirol":_2,trentinosuedtirol:_2,"trentinsud-tirol":_2,"xn--trentinsd-tirol-6vb":_2,"trentinsüd-tirol":_2,trentinsudtirol:_2,"xn--trentinsdtirol-nsb":_2,trentinsüdtirol:_2,"trentinsued-tirol":_2,trentinsuedtirol:_2,tuscany:_2,umb:_2,umbria:_2,"val-d-aosta":_2,"val-daosta":_2,"vald-aosta":_2,valdaosta:_2,"valle-aosta":_2,"valle-d-aosta":_2,"valle-daosta":_2,valleaosta:_2,"valled-aosta":_2,valledaosta:_2,"vallee-aoste":_2,"xn--valle-aoste-ebb":_2,"vallée-aoste":_2,"vallee-d-aoste":_2,"xn--valle-d-aoste-ehb":_2,"vallée-d-aoste":_2,valleeaoste:_2,"xn--valleaoste-e7a":_2,valléeaoste:_2,valleedaoste:_2,"xn--valledaoste-ebb":_2,valléedaoste:_2,vao:_2,vda:_2,ven:_2,veneto:_2,ag:_2,agrigento:_2,al:_2,alessandria:_2,"alto-adige":_2,altoadige:_2,an:_2,ancona:_2,"andria-barletta-trani":_2,"andria-trani-barletta":_2,andriabarlettatrani:_2,andriatranibarletta:_2,ao:_2,aosta:_2,aoste:_2,ap:_2,aq:_2,aquila:_2,ar:_2,arezzo:_2,"ascoli-piceno":_2,ascolipiceno:_2,asti:_2,at:_2,av:_2,avellino:_2,ba:_2,balsan:_2,"balsan-sudtirol":_2,"xn--balsan-sdtirol-nsb":_2,"balsan-südtirol":_2,"balsan-suedtirol":_2,bari:_2,"barletta-trani-andria":_2,barlettatraniandria:_2,belluno:_2,benevento:_2,bergamo:_2,bg:_2,bi:_2,biella:_2,bl:_2,bn:_2,bo:_2,bologna:_2,bolzano:_2,"bolzano-altoadige":_2,bozen:_2,"bozen-sudtirol":_2,"xn--bozen-sdtirol-2ob":_2,"bozen-südtirol":_2,"bozen-suedtirol":_2,br:_2,brescia:_2,brindisi:_2,bs:_2,bt:_2,bulsan:_2,"bulsan-sudtirol":_2,"xn--bulsan-sdtirol-nsb":_2,"bulsan-südtirol":_2,"bulsan-suedtirol":_2,bz:_2,ca:_2,cagliari:_2,caltanissetta:_2,"campidano-medio":_2,campidanomedio:_2,campobasso:_2,"carbonia-iglesias":_2,carboniaiglesias:_2,"carrara-massa":_2,carraramassa:_2,caserta:_2,catania:_2,catanzaro:_2,cb:_2,ce:_2,"cesena-forli":_2,"xn--cesena-forl-mcb":_2,"cesena-forlì":_2,cesenaforli:_2,"xn--cesenaforl-i8a":_2,cesenaforlì:_2,ch:_2,chieti:_2,ci:_2,cl:_2,cn:_2,co:_2,como:_2,cosenza:_2,cr:_2,cremona:_2,crotone:_2,cs:_2,ct:_2,cuneo:_2,cz:_2,"dell-ogliastra":_2,dellogliastra:_2,en:_2,enna:_2,fc:_2,fe:_2,fermo:_2,ferrara:_2,fg:_2,fi:_2,firenze:_2,florence:_2,fm:_2,foggia:_2,"forli-cesena":_2,"xn--forl-cesena-fcb":_2,"forlì-cesena":_2,forlicesena:_2,"xn--forlcesena-c8a":_2,forlìcesena:_2,fr:_2,frosinone:_2,ge:_2,genoa:_2,genova:_2,go:_2,gorizia:_2,gr:_2,grosseto:_2,"iglesias-carbonia":_2,iglesiascarbonia:_2,im:_2,imperia:_2,is:_2,isernia:_2,kr:_2,"la-spezia":_2,laquila:_2,laspezia:_2,latina:_2,lc:_2,le:_2,lecce:_2,lecco:_2,li:_2,livorno:_2,lo:_2,lodi:_2,lt:_2,lu:_2,lucca:_2,macerata:_2,mantova:_2,"massa-carrara":_2,massacarrara:_2,matera:_2,mb:_2,mc:_2,me:_2,"medio-campidano":_2,mediocampidano:_2,messina:_2,mi:_2,milan:_2,milano:_2,mn:_2,mo:_2,modena:_2,monza:_2,"monza-brianza":_2,"monza-e-della-brianza":_2,monzabrianza:_2,monzaebrianza:_2,monzaedellabrianza:_2,ms:_2,mt:_2,na:_2,naples:_2,napoli:_2,no:_2,novara:_2,nu:_2,nuoro:_2,og:_2,ogliastra:_2,"olbia-tempio":_2,olbiatempio:_2,or:_2,oristano:_2,ot:_2,pa:_2,padova:_2,padua:_2,palermo:_2,parma:_2,pavia:_2,pc:_2,pd:_2,pe:_2,perugia:_2,"pesaro-urbino":_2,pesarourbino:_2,pescara:_2,pg:_2,pi:_2,piacenza:_2,pisa:_2,pistoia:_2,pn:_2,po:_2,pordenone:_2,potenza:_2,pr:_2,prato:_2,pt:_2,pu:_2,pv:_2,pz:_2,ra:_2,ragusa:_2,ravenna:_2,rc:_2,re:_2,"reggio-calabria":_2,"reggio-emilia":_2,reggiocalabria:_2,reggioemilia:_2,rg:_2,ri:_2,rieti:_2,rimini:_2,rm:_2,rn:_2,ro:_2,roma:_2,rome:_2,rovigo:_2,sa:_2,salerno:_2,sassari:_2,savona:_2,si:_2,siena:_2,siracusa:_2,so:_2,sondrio:_2,sp:_2,sr:_2,ss:_2,"xn--sdtirol-n2a":_2,südtirol:_2,suedtirol:_2,sv:_2,ta:_2,taranto:_2,te:_2,"tempio-olbia":_2,tempioolbia:_2,teramo:_2,terni:_2,tn:_2,to:_2,torino:_2,tp:_2,tr:_2,"trani-andria-barletta":_2,"trani-barletta-andria":_2,traniandriabarletta:_2,tranibarlettaandria:_2,trapani:_2,trento:_2,treviso:_2,trieste:_2,ts:_2,turin:_2,tv:_2,ud:_2,udine:_2,"urbino-pesaro":_2,urbinopesaro:_2,va:_2,varese:_2,vb:_2,vc:_2,ve:_2,venezia:_2,venice:_2,verbania:_2,vercelli:_2,verona:_2,vi:_2,"vibo-valentia":_2,vibovalentia:_2,vicenza:_2,viterbo:_2,vr:_2,vs:_2,vt:_2,vv:_2,"12chars":_3,ibxos:_3,iliadboxos:_3,neen:[0,{jc:_3}],"123homepage":_3,"16-b":_3,"32-b":_3,"64-b":_3,myspreadshop:_3,syncloud:_3}],je:[1,{co:_2,net:_2,org:_2,of:_3}],jm:_21,jo:[1,{agri:_2,ai:_2,com:_2,edu:_2,eng:_2,fm:_2,gov:_2,mil:_2,net:_2,org:_2,per:_2,phd:_2,sch:_2,tv:_2}],jobs:_2,jp:[1,{ac:_2,ad:_2,co:_2,ed:_2,go:_2,gr:_2,lg:_2,ne:[1,{aseinet:_54,gehirn:_3,ivory:_3,"mail-box":_3,mints:_3,mokuren:_3,opal:_3,sakura:_3,sumomo:_3,topaz:_3}],or:_2,aichi:[1,{aisai:_2,ama:_2,anjo:_2,asuke:_2,chiryu:_2,chita:_2,fuso:_2,gamagori:_2,handa:_2,hazu:_2,hekinan:_2,higashiura:_2,ichinomiya:_2,inazawa:_2,inuyama:_2,isshiki:_2,iwakura:_2,kanie:_2,kariya:_2,kasugai:_2,kira:_2,kiyosu:_2,komaki:_2,konan:_2,kota:_2,mihama:_2,miyoshi:_2,nishio:_2,nisshin:_2,obu:_2,oguchi:_2,oharu:_2,okazaki:_2,owariasahi:_2,seto:_2,shikatsu:_2,shinshiro:_2,shitara:_2,tahara:_2,takahama:_2,tobishima:_2,toei:_2,togo:_2,tokai:_2,tokoname:_2,toyoake:_2,toyohashi:_2,toyokawa:_2,toyone:_2,toyota:_2,tsushima:_2,yatomi:_2}],akita:[1,{akita:_2,daisen:_2,fujisato:_2,gojome:_2,hachirogata:_2,happou:_2,higashinaruse:_2,honjo:_2,honjyo:_2,ikawa:_2,kamikoani:_2,kamioka:_2,katagami:_2,kazuno:_2,kitaakita:_2,kosaka:_2,kyowa:_2,misato:_2,mitane:_2,moriyoshi:_2,nikaho:_2,noshiro:_2,odate:_2,oga:_2,ogata:_2,semboku:_2,yokote:_2,yurihonjo:_2}],aomori:[1,{aomori:_2,gonohe:_2,hachinohe:_2,hashikami:_2,hiranai:_2,hirosaki:_2,itayanagi:_2,kuroishi:_2,misawa:_2,mutsu:_2,nakadomari:_2,noheji:_2,oirase:_2,owani:_2,rokunohe:_2,sannohe:_2,shichinohe:_2,shingo:_2,takko:_2,towada:_2,tsugaru:_2,tsuruta:_2}],chiba:[1,{abiko:_2,asahi:_2,chonan:_2,chosei:_2,choshi:_2,chuo:_2,funabashi:_2,futtsu:_2,hanamigawa:_2,ichihara:_2,ichikawa:_2,ichinomiya:_2,inzai:_2,isumi:_2,kamagaya:_2,kamogawa:_2,kashiwa:_2,katori:_2,katsuura:_2,kimitsu:_2,kisarazu:_2,kozaki:_2,kujukuri:_2,kyonan:_2,matsudo:_2,midori:_2,mihama:_2,minamiboso:_2,mobara:_2,mutsuzawa:_2,nagara:_2,nagareyama:_2,narashino:_2,narita:_2,noda:_2,oamishirasato:_2,omigawa:_2,onjuku:_2,otaki:_2,sakae:_2,sakura:_2,shimofusa:_2,shirako:_2,shiroi:_2,shisui:_2,sodegaura:_2,sosa:_2,tako:_2,tateyama:_2,togane:_2,tohnosho:_2,tomisato:_2,urayasu:_2,yachimata:_2,yachiyo:_2,yokaichiba:_2,yokoshibahikari:_2,yotsukaido:_2}],ehime:[1,{ainan:_2,honai:_2,ikata:_2,imabari:_2,iyo:_2,kamijima:_2,kihoku:_2,kumakogen:_2,masaki:_2,matsuno:_2,matsuyama:_2,namikata:_2,niihama:_2,ozu:_2,saijo:_2,seiyo:_2,shikokuchuo:_2,tobe:_2,toon:_2,uchiko:_2,uwajima:_2,yawatahama:_2}],fukui:[1,{echizen:_2,eiheiji:_2,fukui:_2,ikeda:_2,katsuyama:_2,mihama:_2,minamiechizen:_2,obama:_2,ohi:_2,ono:_2,sabae:_2,sakai:_2,takahama:_2,tsuruga:_2,wakasa:_2}],fukuoka:[1,{ashiya:_2,buzen:_2,chikugo:_2,chikuho:_2,chikujo:_2,chikushino:_2,chikuzen:_2,chuo:_2,dazaifu:_2,fukuchi:_2,hakata:_2,higashi:_2,hirokawa:_2,hisayama:_2,iizuka:_2,inatsuki:_2,kaho:_2,kasuga:_2,kasuya:_2,kawara:_2,keisen:_2,koga:_2,kurate:_2,kurogi:_2,kurume:_2,minami:_2,miyako:_2,miyama:_2,miyawaka:_2,mizumaki:_2,munakata:_2,nakagawa:_2,nakama:_2,nishi:_2,nogata:_2,ogori:_2,okagaki:_2,okawa:_2,oki:_2,omuta:_2,onga:_2,onojo:_2,oto:_2,saigawa:_2,sasaguri:_2,shingu:_2,shinyoshitomi:_2,shonai:_2,soeda:_2,sue:_2,tachiarai:_2,tagawa:_2,takata:_2,toho:_2,toyotsu:_2,tsuiki:_2,ukiha:_2,umi:_2,usui:_2,yamada:_2,yame:_2,yanagawa:_2,yukuhashi:_2}],fukushima:[1,{aizubange:_2,aizumisato:_2,aizuwakamatsu:_2,asakawa:_2,bandai:_2,date:_2,fukushima:_2,furudono:_2,futaba:_2,hanawa:_2,higashi:_2,hirata:_2,hirono:_2,iitate:_2,inawashiro:_2,ishikawa:_2,iwaki:_2,izumizaki:_2,kagamiishi:_2,kaneyama:_2,kawamata:_2,kitakata:_2,kitashiobara:_2,koori:_2,koriyama:_2,kunimi:_2,miharu:_2,mishima:_2,namie:_2,nango:_2,nishiaizu:_2,nishigo:_2,okuma:_2,omotego:_2,ono:_2,otama:_2,samegawa:_2,shimogo:_2,shirakawa:_2,showa:_2,soma:_2,sukagawa:_2,taishin:_2,tamakawa:_2,tanagura:_2,tenei:_2,yabuki:_2,yamato:_2,yamatsuri:_2,yanaizu:_2,yugawa:_2}],gifu:[1,{anpachi:_2,ena:_2,gifu:_2,ginan:_2,godo:_2,gujo:_2,hashima:_2,hichiso:_2,hida:_2,higashishirakawa:_2,ibigawa:_2,ikeda:_2,kakamigahara:_2,kani:_2,kasahara:_2,kasamatsu:_2,kawaue:_2,kitagata:_2,mino:_2,minokamo:_2,mitake:_2,mizunami:_2,motosu:_2,nakatsugawa:_2,ogaki:_2,sakahogi:_2,seki:_2,sekigahara:_2,shirakawa:_2,tajimi:_2,takayama:_2,tarui:_2,toki:_2,tomika:_2,wanouchi:_2,yamagata:_2,yaotsu:_2,yoro:_2}],gunma:[1,{annaka:_2,chiyoda:_2,fujioka:_2,higashiagatsuma:_2,isesaki:_2,itakura:_2,kanna:_2,kanra:_2,katashina:_2,kawaba:_2,kiryu:_2,kusatsu:_2,maebashi:_2,meiwa:_2,midori:_2,minakami:_2,naganohara:_2,nakanojo:_2,nanmoku:_2,numata:_2,oizumi:_2,ora:_2,ota:_2,shibukawa:_2,shimonita:_2,shinto:_2,showa:_2,takasaki:_2,takayama:_2,tamamura:_2,tatebayashi:_2,tomioka:_2,tsukiyono:_2,tsumagoi:_2,ueno:_2,yoshioka:_2}],hiroshima:[1,{asaminami:_2,daiwa:_2,etajima:_2,fuchu:_2,fukuyama:_2,hatsukaichi:_2,higashihiroshima:_2,hongo:_2,jinsekikogen:_2,kaita:_2,kui:_2,kumano:_2,kure:_2,mihara:_2,miyoshi:_2,naka:_2,onomichi:_2,osakikamijima:_2,otake:_2,saka:_2,sera:_2,seranishi:_2,shinichi:_2,shobara:_2,takehara:_2}],hokkaido:[1,{abashiri:_2,abira:_2,aibetsu:_2,akabira:_2,akkeshi:_2,asahikawa:_2,ashibetsu:_2,ashoro:_2,assabu:_2,atsuma:_2,bibai:_2,biei:_2,bifuka:_2,bihoro:_2,biratori:_2,chippubetsu:_2,chitose:_2,date:_2,ebetsu:_2,embetsu:_2,eniwa:_2,erimo:_2,esan:_2,esashi:_2,fukagawa:_2,fukushima:_2,furano:_2,furubira:_2,haboro:_2,hakodate:_2,hamatonbetsu:_2,hidaka:_2,higashikagura:_2,higashikawa:_2,hiroo:_2,hokuryu:_2,hokuto:_2,honbetsu:_2,horokanai:_2,horonobe:_2,ikeda:_2,imakane:_2,ishikari:_2,iwamizawa:_2,iwanai:_2,kamifurano:_2,kamikawa:_2,kamishihoro:_2,kamisunagawa:_2,kamoenai:_2,kayabe:_2,kembuchi:_2,kikonai:_2,kimobetsu:_2,kitahiroshima:_2,kitami:_2,kiyosato:_2,koshimizu:_2,kunneppu:_2,kuriyama:_2,kuromatsunai:_2,kushiro:_2,kutchan:_2,kyowa:_2,mashike:_2,matsumae:_2,mikasa:_2,minamifurano:_2,mombetsu:_2,moseushi:_2,mukawa:_2,muroran:_2,naie:_2,nakagawa:_2,nakasatsunai:_2,nakatombetsu:_2,nanae:_2,nanporo:_2,nayoro:_2,nemuro:_2,niikappu:_2,niki:_2,nishiokoppe:_2,noboribetsu:_2,numata:_2,obihiro:_2,obira:_2,oketo:_2,okoppe:_2,otaru:_2,otobe:_2,otofuke:_2,otoineppu:_2,oumu:_2,ozora:_2,pippu:_2,rankoshi:_2,rebun:_2,rikubetsu:_2,rishiri:_2,rishirifuji:_2,saroma:_2,sarufutsu:_2,shakotan:_2,shari:_2,shibecha:_2,shibetsu:_2,shikabe:_2,shikaoi:_2,shimamaki:_2,shimizu:_2,shimokawa:_2,shinshinotsu:_2,shintoku:_2,shiranuka:_2,shiraoi:_2,shiriuchi:_2,sobetsu:_2,sunagawa:_2,taiki:_2,takasu:_2,takikawa:_2,takinoue:_2,teshikaga:_2,tobetsu:_2,tohma:_2,tomakomai:_2,tomari:_2,toya:_2,toyako:_2,toyotomi:_2,toyoura:_2,tsubetsu:_2,tsukigata:_2,urakawa:_2,urausu:_2,uryu:_2,utashinai:_2,wakkanai:_2,wassamu:_2,yakumo:_2,yoichi:_2}],hyogo:[1,{aioi:_2,akashi:_2,ako:_2,amagasaki:_2,aogaki:_2,asago:_2,ashiya:_2,awaji:_2,fukusaki:_2,goshiki:_2,harima:_2,himeji:_2,ichikawa:_2,inagawa:_2,itami:_2,kakogawa:_2,kamigori:_2,kamikawa:_2,kasai:_2,kasuga:_2,kawanishi:_2,miki:_2,minamiawaji:_2,nishinomiya:_2,nishiwaki:_2,ono:_2,sanda:_2,sannan:_2,sasayama:_2,sayo:_2,shingu:_2,shinonsen:_2,shiso:_2,sumoto:_2,taishi:_2,taka:_2,takarazuka:_2,takasago:_2,takino:_2,tamba:_2,tatsuno:_2,toyooka:_2,yabu:_2,yashiro:_2,yoka:_2,yokawa:_2}],ibaraki:[1,{ami:_2,asahi:_2,bando:_2,chikusei:_2,daigo:_2,fujishiro:_2,hitachi:_2,hitachinaka:_2,hitachiomiya:_2,hitachiota:_2,ibaraki:_2,ina:_2,inashiki:_2,itako:_2,iwama:_2,joso:_2,kamisu:_2,kasama:_2,kashima:_2,kasumigaura:_2,koga:_2,miho:_2,mito:_2,moriya:_2,naka:_2,namegata:_2,oarai:_2,ogawa:_2,omitama:_2,ryugasaki:_2,sakai:_2,sakuragawa:_2,shimodate:_2,shimotsuma:_2,shirosato:_2,sowa:_2,suifu:_2,takahagi:_2,tamatsukuri:_2,tokai:_2,tomobe:_2,tone:_2,toride:_2,tsuchiura:_2,tsukuba:_2,uchihara:_2,ushiku:_2,yachiyo:_2,yamagata:_2,yawara:_2,yuki:_2}],ishikawa:[1,{anamizu:_2,hakui:_2,hakusan:_2,kaga:_2,kahoku:_2,kanazawa:_2,kawakita:_2,komatsu:_2,nakanoto:_2,nanao:_2,nomi:_2,nonoichi:_2,noto:_2,shika:_2,suzu:_2,tsubata:_2,tsurugi:_2,uchinada:_2,wajima:_2}],iwate:[1,{fudai:_2,fujisawa:_2,hanamaki:_2,hiraizumi:_2,hirono:_2,ichinohe:_2,ichinoseki:_2,iwaizumi:_2,iwate:_2,joboji:_2,kamaishi:_2,kanegasaki:_2,karumai:_2,kawai:_2,kitakami:_2,kuji:_2,kunohe:_2,kuzumaki:_2,miyako:_2,mizusawa:_2,morioka:_2,ninohe:_2,noda:_2,ofunato:_2,oshu:_2,otsuchi:_2,rikuzentakata:_2,shiwa:_2,shizukuishi:_2,sumita:_2,tanohata:_2,tono:_2,yahaba:_2,yamada:_2}],kagawa:[1,{ayagawa:_2,higashikagawa:_2,kanonji:_2,kotohira:_2,manno:_2,marugame:_2,mitoyo:_2,naoshima:_2,sanuki:_2,tadotsu:_2,takamatsu:_2,tonosho:_2,uchinomi:_2,utazu:_2,zentsuji:_2}],kagoshima:[1,{akune:_2,amami:_2,hioki:_2,isa:_2,isen:_2,izumi:_2,kagoshima:_2,kanoya:_2,kawanabe:_2,kinko:_2,kouyama:_2,makurazaki:_2,matsumoto:_2,minamitane:_2,nakatane:_2,nishinoomote:_2,satsumasendai:_2,soo:_2,tarumizu:_2,yusui:_2}],kanagawa:[1,{aikawa:_2,atsugi:_2,ayase:_2,chigasaki:_2,ebina:_2,fujisawa:_2,hadano:_2,hakone:_2,hiratsuka:_2,isehara:_2,kaisei:_2,kamakura:_2,kiyokawa:_2,matsuda:_2,minamiashigara:_2,miura:_2,nakai:_2,ninomiya:_2,odawara:_2,oi:_2,oiso:_2,sagamihara:_2,samukawa:_2,tsukui:_2,yamakita:_2,yamato:_2,yokosuka:_2,yugawara:_2,zama:_2,zushi:_2}],kochi:[1,{aki:_2,geisei:_2,hidaka:_2,higashitsuno:_2,ino:_2,kagami:_2,kami:_2,kitagawa:_2,kochi:_2,mihara:_2,motoyama:_2,muroto:_2,nahari:_2,nakamura:_2,nankoku:_2,nishitosa:_2,niyodogawa:_2,ochi:_2,okawa:_2,otoyo:_2,otsuki:_2,sakawa:_2,sukumo:_2,susaki:_2,tosa:_2,tosashimizu:_2,toyo:_2,tsuno:_2,umaji:_2,yasuda:_2,yusuhara:_2}],kumamoto:[1,{amakusa:_2,arao:_2,aso:_2,choyo:_2,gyokuto:_2,kamiamakusa:_2,kikuchi:_2,kumamoto:_2,mashiki:_2,mifune:_2,minamata:_2,minamioguni:_2,nagasu:_2,nishihara:_2,oguni:_2,ozu:_2,sumoto:_2,takamori:_2,uki:_2,uto:_2,yamaga:_2,yamato:_2,yatsushiro:_2}],kyoto:[1,{ayabe:_2,fukuchiyama:_2,higashiyama:_2,ide:_2,ine:_2,joyo:_2,kameoka:_2,kamo:_2,kita:_2,kizu:_2,kumiyama:_2,kyotamba:_2,kyotanabe:_2,kyotango:_2,maizuru:_2,minami:_2,minamiyamashiro:_2,miyazu:_2,muko:_2,nagaokakyo:_2,nakagyo:_2,nantan:_2,oyamazaki:_2,sakyo:_2,seika:_2,tanabe:_2,uji:_2,ujitawara:_2,wazuka:_2,yamashina:_2,yawata:_2}],mie:[1,{asahi:_2,inabe:_2,ise:_2,kameyama:_2,kawagoe:_2,kiho:_2,kisosaki:_2,kiwa:_2,komono:_2,kumano:_2,kuwana:_2,matsusaka:_2,meiwa:_2,mihama:_2,minamiise:_2,misugi:_2,miyama:_2,nabari:_2,shima:_2,suzuka:_2,tado:_2,taiki:_2,taki:_2,tamaki:_2,toba:_2,tsu:_2,udono:_2,ureshino:_2,watarai:_2,yokkaichi:_2}],miyagi:[1,{furukawa:_2,higashimatsushima:_2,ishinomaki:_2,iwanuma:_2,kakuda:_2,kami:_2,kawasaki:_2,marumori:_2,matsushima:_2,minamisanriku:_2,misato:_2,murata:_2,natori:_2,ogawara:_2,ohira:_2,onagawa:_2,osaki:_2,rifu:_2,semine:_2,shibata:_2,shichikashuku:_2,shikama:_2,shiogama:_2,shiroishi:_2,tagajo:_2,taiwa:_2,tome:_2,tomiya:_2,wakuya:_2,watari:_2,yamamoto:_2,zao:_2}],miyazaki:[1,{aya:_2,ebino:_2,gokase:_2,hyuga:_2,kadogawa:_2,kawaminami:_2,kijo:_2,kitagawa:_2,kitakata:_2,kitaura:_2,kobayashi:_2,kunitomi:_2,kushima:_2,mimata:_2,miyakonojo:_2,miyazaki:_2,morotsuka:_2,nichinan:_2,nishimera:_2,nobeoka:_2,saito:_2,shiiba:_2,shintomi:_2,takaharu:_2,takanabe:_2,takazaki:_2,tsuno:_2}],nagano:[1,{achi:_2,agematsu:_2,anan:_2,aoki:_2,asahi:_2,azumino:_2,chikuhoku:_2,chikuma:_2,chino:_2,fujimi:_2,hakuba:_2,hara:_2,hiraya:_2,iida:_2,iijima:_2,iiyama:_2,iizuna:_2,ikeda:_2,ikusaka:_2,ina:_2,karuizawa:_2,kawakami:_2,kiso:_2,kisofukushima:_2,kitaaiki:_2,komagane:_2,komoro:_2,matsukawa:_2,matsumoto:_2,miasa:_2,minamiaiki:_2,minamimaki:_2,minamiminowa:_2,minowa:_2,miyada:_2,miyota:_2,mochizuki:_2,nagano:_2,nagawa:_2,nagiso:_2,nakagawa:_2,nakano:_2,nozawaonsen:_2,obuse:_2,ogawa:_2,okaya:_2,omachi:_2,omi:_2,ookuwa:_2,ooshika:_2,otaki:_2,otari:_2,sakae:_2,sakaki:_2,saku:_2,sakuho:_2,shimosuwa:_2,shinanomachi:_2,shiojiri:_2,suwa:_2,suzaka:_2,takagi:_2,takamori:_2,takayama:_2,tateshina:_2,tatsuno:_2,togakushi:_2,togura:_2,tomi:_2,ueda:_2,wada:_2,yamagata:_2,yamanouchi:_2,yasaka:_2,yasuoka:_2}],nagasaki:[1,{chijiwa:_2,futsu:_2,goto:_2,hasami:_2,hirado:_2,iki:_2,isahaya:_2,kawatana:_2,kuchinotsu:_2,matsuura:_2,nagasaki:_2,obama:_2,omura:_2,oseto:_2,saikai:_2,sasebo:_2,seihi:_2,shimabara:_2,shinkamigoto:_2,togitsu:_2,tsushima:_2,unzen:_2}],nara:[1,{ando:_2,gose:_2,heguri:_2,higashiyoshino:_2,ikaruga:_2,ikoma:_2,kamikitayama:_2,kanmaki:_2,kashiba:_2,kashihara:_2,katsuragi:_2,kawai:_2,kawakami:_2,kawanishi:_2,koryo:_2,kurotaki:_2,mitsue:_2,miyake:_2,nara:_2,nosegawa:_2,oji:_2,ouda:_2,oyodo:_2,sakurai:_2,sango:_2,shimoichi:_2,shimokitayama:_2,shinjo:_2,soni:_2,takatori:_2,tawaramoto:_2,tenkawa:_2,tenri:_2,uda:_2,yamatokoriyama:_2,yamatotakada:_2,yamazoe:_2,yoshino:_2}],niigata:[1,{aga:_2,agano:_2,gosen:_2,itoigawa:_2,izumozaki:_2,joetsu:_2,kamo:_2,kariwa:_2,kashiwazaki:_2,minamiuonuma:_2,mitsuke:_2,muika:_2,murakami:_2,myoko:_2,nagaoka:_2,niigata:_2,ojiya:_2,omi:_2,sado:_2,sanjo:_2,seiro:_2,seirou:_2,sekikawa:_2,shibata:_2,tagami:_2,tainai:_2,tochio:_2,tokamachi:_2,tsubame:_2,tsunan:_2,uonuma:_2,yahiko:_2,yoita:_2,yuzawa:_2}],oita:[1,{beppu:_2,bungoono:_2,bungotakada:_2,hasama:_2,hiji:_2,himeshima:_2,hita:_2,kamitsue:_2,kokonoe:_2,kuju:_2,kunisaki:_2,kusu:_2,oita:_2,saiki:_2,taketa:_2,tsukumi:_2,usa:_2,usuki:_2,yufu:_2}],okayama:[1,{akaiwa:_2,asakuchi:_2,bizen:_2,hayashima:_2,ibara:_2,kagamino:_2,kasaoka:_2,kibichuo:_2,kumenan:_2,kurashiki:_2,maniwa:_2,misaki:_2,nagi:_2,niimi:_2,nishiawakura:_2,okayama:_2,satosho:_2,setouchi:_2,shinjo:_2,shoo:_2,soja:_2,takahashi:_2,tamano:_2,tsuyama:_2,wake:_2,yakage:_2}],okinawa:[1,{aguni:_2,ginowan:_2,ginoza:_2,gushikami:_2,haebaru:_2,higashi:_2,hirara:_2,iheya:_2,ishigaki:_2,ishikawa:_2,itoman:_2,izena:_2,kadena:_2,kin:_2,kitadaito:_2,kitanakagusuku:_2,kumejima:_2,kunigami:_2,minamidaito:_2,motobu:_2,nago:_2,naha:_2,nakagusuku:_2,nakijin:_2,nanjo:_2,nishihara:_2,ogimi:_2,okinawa:_2,onna:_2,shimoji:_2,taketomi:_2,tarama:_2,tokashiki:_2,tomigusuku:_2,tonaki:_2,urasoe:_2,uruma:_2,yaese:_2,yomitan:_2,yonabaru:_2,yonaguni:_2,zamami:_2}],osaka:[1,{abeno:_2,chihayaakasaka:_2,chuo:_2,daito:_2,fujiidera:_2,habikino:_2,hannan:_2,higashiosaka:_2,higashisumiyoshi:_2,higashiyodogawa:_2,hirakata:_2,ibaraki:_2,ikeda:_2,izumi:_2,izumiotsu:_2,izumisano:_2,kadoma:_2,kaizuka:_2,kanan:_2,kashiwara:_2,katano:_2,kawachinagano:_2,kishiwada:_2,kita:_2,kumatori:_2,matsubara:_2,minato:_2,minoh:_2,misaki:_2,moriguchi:_2,neyagawa:_2,nishi:_2,nose:_2,osakasayama:_2,sakai:_2,sayama:_2,sennan:_2,settsu:_2,shijonawate:_2,shimamoto:_2,suita:_2,tadaoka:_2,taishi:_2,tajiri:_2,takaishi:_2,takatsuki:_2,tondabayashi:_2,toyonaka:_2,toyono:_2,yao:_2}],saga:[1,{ariake:_2,arita:_2,fukudomi:_2,genkai:_2,hamatama:_2,hizen:_2,imari:_2,kamimine:_2,kanzaki:_2,karatsu:_2,kashima:_2,kitagata:_2,kitahata:_2,kiyama:_2,kouhoku:_2,kyuragi:_2,nishiarita:_2,ogi:_2,omachi:_2,ouchi:_2,saga:_2,shiroishi:_2,taku:_2,tara:_2,tosu:_2,yoshinogari:_2}],saitama:[1,{arakawa:_2,asaka:_2,chichibu:_2,fujimi:_2,fujimino:_2,fukaya:_2,hanno:_2,hanyu:_2,hasuda:_2,hatogaya:_2,hatoyama:_2,hidaka:_2,higashichichibu:_2,higashimatsuyama:_2,honjo:_2,ina:_2,iruma:_2,iwatsuki:_2,kamiizumi:_2,kamikawa:_2,kamisato:_2,kasukabe:_2,kawagoe:_2,kawaguchi:_2,kawajima:_2,kazo:_2,kitamoto:_2,koshigaya:_2,kounosu:_2,kuki:_2,kumagaya:_2,matsubushi:_2,minano:_2,misato:_2,miyashiro:_2,miyoshi:_2,moroyama:_2,nagatoro:_2,namegawa:_2,niiza:_2,ogano:_2,ogawa:_2,ogose:_2,okegawa:_2,omiya:_2,otaki:_2,ranzan:_2,ryokami:_2,saitama:_2,sakado:_2,satte:_2,sayama:_2,shiki:_2,shiraoka:_2,soka:_2,sugito:_2,toda:_2,tokigawa:_2,tokorozawa:_2,tsurugashima:_2,urawa:_2,warabi:_2,yashio:_2,yokoze:_2,yono:_2,yorii:_2,yoshida:_2,yoshikawa:_2,yoshimi:_2}],shiga:[1,{aisho:_2,gamo:_2,higashiomi:_2,hikone:_2,koka:_2,konan:_2,kosei:_2,koto:_2,kusatsu:_2,maibara:_2,moriyama:_2,nagahama:_2,nishiazai:_2,notogawa:_2,omihachiman:_2,otsu:_2,ritto:_2,ryuoh:_2,takashima:_2,takatsuki:_2,torahime:_2,toyosato:_2,yasu:_2}],shimane:[1,{akagi:_2,ama:_2,gotsu:_2,hamada:_2,higashiizumo:_2,hikawa:_2,hikimi:_2,izumo:_2,kakinoki:_2,masuda:_2,matsue:_2,misato:_2,nishinoshima:_2,ohda:_2,okinoshima:_2,okuizumo:_2,shimane:_2,tamayu:_2,tsuwano:_2,unnan:_2,yakumo:_2,yasugi:_2,yatsuka:_2}],shizuoka:[1,{arai:_2,atami:_2,fuji:_2,fujieda:_2,fujikawa:_2,fujinomiya:_2,fukuroi:_2,gotemba:_2,haibara:_2,hamamatsu:_2,higashiizu:_2,ito:_2,iwata:_2,izu:_2,izunokuni:_2,kakegawa:_2,kannami:_2,kawanehon:_2,kawazu:_2,kikugawa:_2,kosai:_2,makinohara:_2,matsuzaki:_2,minamiizu:_2,mishima:_2,morimachi:_2,nishiizu:_2,numazu:_2,omaezaki:_2,shimada:_2,shimizu:_2,shimoda:_2,shizuoka:_2,susono:_2,yaizu:_2,yoshida:_2}],tochigi:[1,{ashikaga:_2,bato:_2,haga:_2,ichikai:_2,iwafune:_2,kaminokawa:_2,kanuma:_2,karasuyama:_2,kuroiso:_2,mashiko:_2,mibu:_2,moka:_2,motegi:_2,nasu:_2,nasushiobara:_2,nikko:_2,nishikata:_2,nogi:_2,ohira:_2,ohtawara:_2,oyama:_2,sakura:_2,sano:_2,shimotsuke:_2,shioya:_2,takanezawa:_2,tochigi:_2,tsuga:_2,ujiie:_2,utsunomiya:_2,yaita:_2}],tokushima:[1,{aizumi:_2,anan:_2,ichiba:_2,itano:_2,kainan:_2,komatsushima:_2,matsushige:_2,mima:_2,minami:_2,miyoshi:_2,mugi:_2,nakagawa:_2,naruto:_2,sanagochi:_2,shishikui:_2,tokushima:_2,wajiki:_2}],tokyo:[1,{adachi:_2,akiruno:_2,akishima:_2,aogashima:_2,arakawa:_2,bunkyo:_2,chiyoda:_2,chofu:_2,chuo:_2,edogawa:_2,fuchu:_2,fussa:_2,hachijo:_2,hachioji:_2,hamura:_2,higashikurume:_2,higashimurayama:_2,higashiyamato:_2,hino:_2,hinode:_2,hinohara:_2,inagi:_2,itabashi:_2,katsushika:_2,kita:_2,kiyose:_2,kodaira:_2,koganei:_2,kokubunji:_2,komae:_2,koto:_2,kouzushima:_2,kunitachi:_2,machida:_2,meguro:_2,minato:_2,mitaka:_2,mizuho:_2,musashimurayama:_2,musashino:_2,nakano:_2,nerima:_2,ogasawara:_2,okutama:_2,ome:_2,oshima:_2,ota:_2,setagaya:_2,shibuya:_2,shinagawa:_2,shinjuku:_2,suginami:_2,sumida:_2,tachikawa:_2,taito:_2,tama:_2,toshima:_2}],tottori:[1,{chizu:_2,hino:_2,kawahara:_2,koge:_2,kotoura:_2,misasa:_2,nanbu:_2,nichinan:_2,sakaiminato:_2,tottori:_2,wakasa:_2,yazu:_2,yonago:_2}],toyama:[1,{asahi:_2,fuchu:_2,fukumitsu:_2,funahashi:_2,himi:_2,imizu:_2,inami:_2,johana:_2,kamiichi:_2,kurobe:_2,nakaniikawa:_2,namerikawa:_2,nanto:_2,nyuzen:_2,oyabe:_2,taira:_2,takaoka:_2,tateyama:_2,toga:_2,tonami:_2,toyama:_2,unazuki:_2,uozu:_2,yamada:_2}],wakayama:[1,{arida:_2,aridagawa:_2,gobo:_2,hashimoto:_2,hidaka:_2,hirogawa:_2,inami:_2,iwade:_2,kainan:_2,kamitonda:_2,katsuragi:_2,kimino:_2,kinokawa:_2,kitayama:_2,koya:_2,koza:_2,kozagawa:_2,kudoyama:_2,kushimoto:_2,mihama:_2,misato:_2,nachikatsuura:_2,shingu:_2,shirahama:_2,taiji:_2,tanabe:_2,wakayama:_2,yuasa:_2,yura:_2}],yamagata:[1,{asahi:_2,funagata:_2,higashine:_2,iide:_2,kahoku:_2,kaminoyama:_2,kaneyama:_2,kawanishi:_2,mamurogawa:_2,mikawa:_2,murayama:_2,nagai:_2,nakayama:_2,nanyo:_2,nishikawa:_2,obanazawa:_2,oe:_2,oguni:_2,ohkura:_2,oishida:_2,sagae:_2,sakata:_2,sakegawa:_2,shinjo:_2,shirataka:_2,shonai:_2,takahata:_2,tendo:_2,tozawa:_2,tsuruoka:_2,yamagata:_2,yamanobe:_2,yonezawa:_2,yuza:_2}],yamaguchi:[1,{abu:_2,hagi:_2,hikari:_2,hofu:_2,iwakuni:_2,kudamatsu:_2,mitou:_2,nagato:_2,oshima:_2,shimonoseki:_2,shunan:_2,tabuse:_2,tokuyama:_2,toyota:_2,ube:_2,yuu:_2}],yamanashi:[1,{chuo:_2,doshi:_2,fuefuki:_2,fujikawa:_2,fujikawaguchiko:_2,fujiyoshida:_2,hayakawa:_2,hokuto:_2,ichikawamisato:_2,kai:_2,kofu:_2,koshu:_2,kosuge:_2,"minami-alps":_2,minobu:_2,nakamichi:_2,nanbu:_2,narusawa:_2,nirasaki:_2,nishikatsura:_2,oshino:_2,otsuki:_2,showa:_2,tabayama:_2,tsuru:_2,uenohara:_2,yamanakako:_2,yamanashi:_2}],"xn--ehqz56n":_2,三重:_2,"xn--1lqs03n":_2,京都:_2,"xn--qqqt11m":_2,佐賀:_2,"xn--f6qx53a":_2,兵庫:_2,"xn--djrs72d6uy":_2,北海道:_2,"xn--mkru45i":_2,千葉:_2,"xn--0trq7p7nn":_2,和歌山:_2,"xn--5js045d":_2,埼玉:_2,"xn--kbrq7o":_2,大分:_2,"xn--pssu33l":_2,大阪:_2,"xn--ntsq17g":_2,奈良:_2,"xn--uisz3g":_2,宮城:_2,"xn--6btw5a":_2,宮崎:_2,"xn--1ctwo":_2,富山:_2,"xn--6orx2r":_2,山口:_2,"xn--rht61e":_2,山形:_2,"xn--rht27z":_2,山梨:_2,"xn--nit225k":_2,岐阜:_2,"xn--rht3d":_2,岡山:_2,"xn--djty4k":_2,岩手:_2,"xn--klty5x":_2,島根:_2,"xn--kltx9a":_2,広島:_2,"xn--kltp7d":_2,徳島:_2,"xn--c3s14m":_2,愛媛:_2,"xn--vgu402c":_2,愛知:_2,"xn--efvn9s":_2,新潟:_2,"xn--1lqs71d":_2,東京:_2,"xn--4pvxs":_2,栃木:_2,"xn--uuwu58a":_2,沖縄:_2,"xn--zbx025d":_2,滋賀:_2,"xn--8pvr4u":_2,熊本:_2,"xn--5rtp49c":_2,石川:_2,"xn--ntso0iqx3a":_2,神奈川:_2,"xn--elqq16h":_2,福井:_2,"xn--4it168d":_2,福岡:_2,"xn--klt787d":_2,福島:_2,"xn--rny31h":_2,秋田:_2,"xn--7t0a264c":_2,群馬:_2,"xn--uist22h":_2,茨城:_2,"xn--8ltr62k":_2,長崎:_2,"xn--2m4a15e":_2,長野:_2,"xn--32vp30h":_2,青森:_2,"xn--4it797k":_2,静岡:_2,"xn--5rtq34k":_2,香川:_2,"xn--k7yn95e":_2,高知:_2,"xn--tor131o":_2,鳥取:_2,"xn--d5qv7z876c":_2,鹿児島:_2,kawasaki:_21,kitakyushu:_21,kobe:_21,nagoya:_21,sapporo:_21,sendai:_21,yokohama:_21,buyshop:_3,fashionstore:_3,handcrafted:_3,kawaiishop:_3,supersale:_3,theshop:_3,"0am":_3,"0g0":_3,"0j0":_3,"0t0":_3,mydns:_3,pgw:_3,wjg:_3,usercontent:_3,angry:_3,babyblue:_3,babymilk:_3,backdrop:_3,bambina:_3,bitter:_3,blush:_3,boo:_3,boy:_3,boyfriend:_3,but:_3,candypop:_3,capoo:_3,catfood:_3,cheap:_3,chicappa:_3,chillout:_3,chips:_3,chowder:_3,chu:_3,ciao:_3,cocotte:_3,coolblog:_3,cranky:_3,cutegirl:_3,daa:_3,deca:_3,deci:_3,digick:_3,egoism:_3,fakefur:_3,fem:_3,flier:_3,floppy:_3,fool:_3,frenchkiss:_3,girlfriend:_3,girly:_3,gloomy:_3,gonna:_3,greater:_3,hacca:_3,heavy:_3,her:_3,hiho:_3,hippy:_3,holy:_3,hungry:_3,icurus:_3,itigo:_3,jellybean:_3,kikirara:_3,kill:_3,kilo:_3,kuron:_3,littlestar:_3,lolipopmc:_3,lolitapunk:_3,lomo:_3,lovepop:_3,lovesick:_3,main:_3,mods:_3,mond:_3,mongolian:_3,moo:_3,namaste:_3,nikita:_3,nobushi:_3,noor:_3,oops:_3,parallel:_3,parasite:_3,pecori:_3,peewee:_3,penne:_3,pepper:_3,perma:_3,pigboat:_3,pinoko:_3,punyu:_3,pupu:_3,pussycat:_3,pya:_3,raindrop:_3,readymade:_3,sadist:_3,schoolbus:_3,secret:_3,staba:_3,stripper:_3,sub:_3,sunnyday:_3,thick:_3,tonkotsu:_3,under:_3,upper:_3,velvet:_3,verse:_3,versus:_3,vivian:_3,watson:_3,weblike:_3,whitesnow:_3,zombie:_3,hateblo:_3,hatenablog:_3,hatenadiary:_3,"2-d":_3,bona:_3,crap:_3,daynight:_3,eek:_3,flop:_3,halfmoon:_3,jeez:_3,matrix:_3,mimoza:_3,netgamers:_3,nyanta:_3,o0o0:_3,rdy:_3,rgr:_3,rulez:_3,sakurastorage:[0,{isk01:_59,isk02:_59}],saloon:_3,sblo:_3,skr:_3,tank:_3,"uh-oh":_3,undo:_3,webaccel:[0,{rs:_3,user:_3}],websozai:_3,xii:_3}],ke:[1,{ac:_2,co:_2,go:_2,info:_2,me:_2,mobi:_2,ne:_2,or:_2,sc:_2}],kg:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,us:_3,xx:_3,ae:_3}],kh:_21,ki:_60,km:[1,{ass:_2,com:_2,edu:_2,gov:_2,mil:_2,nom:_2,org:_2,prd:_2,tm:_2,asso:_2,coop:_2,gouv:_2,medecin:_2,notaires:_2,pharmaciens:_2,presse:_2,veterinaire:_2}],kn:[1,{edu:_2,gov:_2,net:_2,org:_2}],kp:[1,{com:_2,edu:_2,gov:_2,org:_2,rep:_2,tra:_2}],kr:[1,{ac:_2,ai:_2,co:_2,es:_2,go:_2,hs:_2,io:_2,it:_2,kg:_2,me:_2,mil:_2,ms:_2,ne:_2,or:_2,pe:_2,re:_2,sc:_2,busan:_2,chungbuk:_2,chungnam:_2,daegu:_2,daejeon:_2,gangwon:_2,gwangju:_2,gyeongbuk:_2,gyeonggi:_2,gyeongnam:_2,incheon:_2,jeju:_2,jeonbuk:_2,jeonnam:_2,seoul:_2,ulsan:_2,c01:_3,"eliv-api":_3,"eliv-cdn":_3,"eliv-dns":_3,mmv:_3,vki:_3}],kw:[1,{com:_2,edu:_2,emb:_2,gov:_2,ind:_2,net:_2,org:_2}],ky:_47,kz:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,jcloud:_3}],la:[1,{com:_2,edu:_2,gov:_2,info:_2,int:_2,net:_2,org:_2,per:_2,bnr:_3}],lb:_4,lc:[1,{co:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2,oy:_3}],li:_2,lk:[1,{ac:_2,assn:_2,com:_2,edu:_2,gov:_2,grp:_2,hotel:_2,int:_2,ltd:_2,net:_2,ngo:_2,org:_2,sch:_2,soc:_2,web:_2}],lr:_4,ls:[1,{ac:_2,biz:_2,co:_2,edu:_2,gov:_2,info:_2,net:_2,org:_2,sc:_2}],lt:_10,lu:[1,{"123website":_3}],lv:[1,{asn:_2,com:_2,conf:_2,edu:_2,gov:_2,id:_2,mil:_2,net:_2,org:_2}],ly:[1,{com:_2,edu:_2,gov:_2,id:_2,med:_2,net:_2,org:_2,plc:_2,sch:_2}],ma:[1,{ac:_2,co:_2,gov:_2,net:_2,org:_2,press:_2}],mc:[1,{asso:_2,tm:_2}],md:[1,{ir:_3}],me:[1,{ac:_2,co:_2,edu:_2,gov:_2,its:_2,net:_2,org:_2,priv:_2,c66:_3,craft:_3,edgestack:_3,filegear:_3,"filegear-sg":_3,lohmus:_3,barsy:_3,mcdir:_3,brasilia:_3,ddns:_3,dnsfor:_3,hopto:_3,loginto:_3,noip:_3,webhop:_3,soundcast:_3,tcp4:_3,vp4:_3,diskstation:_3,dscloud:_3,i234:_3,myds:_3,synology:_3,transip:_46,nohost:_3}],mg:[1,{co:_2,com:_2,edu:_2,gov:_2,mil:_2,nom:_2,org:_2,prd:_2}],mh:_2,mil:_2,mk:[1,{com:_2,edu:_2,gov:_2,inf:_2,name:_2,net:_2,org:_2}],ml:[1,{ac:_2,art:_2,asso:_2,com:_2,edu:_2,gouv:_2,gov:_2,info:_2,inst:_2,net:_2,org:_2,pr:_2,presse:_2}],mm:_21,mn:[1,{edu:_2,gov:_2,org:_2,nyc:_3}],mo:_4,mobi:[1,{barsy:_3,dscloud:_3}],mp:[1,{ju:_3}],mq:_2,mr:_10,ms:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,minisite:_3}],mt:_47,mu:[1,{ac:_2,co:_2,com:_2,gov:_2,net:_2,or:_2,org:_2}],museum:_2,mv:[1,{aero:_2,biz:_2,com:_2,coop:_2,edu:_2,gov:_2,info:_2,int:_2,mil:_2,museum:_2,name:_2,net:_2,org:_2,pro:_2}],mw:[1,{ac:_2,biz:_2,co:_2,com:_2,coop:_2,edu:_2,gov:_2,int:_2,net:_2,org:_2}],mx:[1,{com:_2,edu:_2,gob:_2,net:_2,org:_2}],my:[1,{biz:_2,com:_2,edu:_2,gov:_2,mil:_2,name:_2,net:_2,org:_2}],mz:[1,{ac:_2,adv:_2,co:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],na:[1,{alt:_2,co:_2,com:_2,gov:_2,net:_2,org:_2}],name:[1,{her:_63,his:_63,ispmanager:_3,keenetic:_3}],nc:[1,{asso:_2,nom:_2}],ne:_2,net:[1,{adobeaemcloud:_3,"adobeio-static":_3,adobeioruntime:_3,akadns:_3,akamai:_3,"akamai-staging":_3,akamaiedge:_3,"akamaiedge-staging":_3,akamaihd:_3,"akamaihd-staging":_3,akamaiorigin:_3,"akamaiorigin-staging":_3,akamaized:_3,"akamaized-staging":_3,edgekey:_3,"edgekey-staging":_3,edgesuite:_3,"edgesuite-staging":_3,alwaysdata:_3,myamaze:_3,cloudfront:_3,appudo:_3,"atlassian-dev":[0,{prod:_55}],myfritz:_3,shopselect:_3,blackbaudcdn:_3,boomla:_3,bplaced:_3,square7:_3,cdn77:[0,{r:_3}],"cdn77-ssl":_3,gb:_3,hu:_3,jp:_3,se:_3,uk:_3,clickrising:_3,"ddns-ip":_3,"dns-cloud":_3,"dns-dynamic":_3,cloudaccess:_3,cloudflare:[2,{cdn:_3}],cloudflareanycast:_55,cloudflarecn:_55,cloudflareglobal:_55,ctfcloud:_3,"feste-ip":_3,"knx-server":_3,"static-access":_3,cryptonomic:_6,dattolocal:_3,mydatto:_3,debian:_3,definima:_3,deno:_3,icp:_6,de5:_3,"at-band-camp":_3,blogdns:_3,"broke-it":_3,buyshouses:_3,dnsalias:_3,dnsdojo:_3,"does-it":_3,dontexist:_3,dynalias:_3,dynathome:_3,endofinternet:_3,"from-az":_3,"from-co":_3,"from-la":_3,"from-ny":_3,"gets-it":_3,"ham-radio-op":_3,homeftp:_3,homeip:_3,homelinux:_3,homeunix:_3,"in-the-band":_3,"is-a-chef":_3,"is-a-geek":_3,"isa-geek":_3,"kicks-ass":_3,"office-on-the":_3,podzone:_3,"scrapper-site":_3,selfip:_3,"sells-it":_3,servebbs:_3,serveftp:_3,thruhere:_3,webhop:_3,casacam:_3,dynu:_3,dynv6:_3,twmail:_3,ru:_3,channelsdvr:[2,{u:_3}],fastly:[0,{freetls:_3,map:_3,prod:[0,{a:_3,global:_3}],ssl:[0,{a:_3,b:_3,global:_3}]}],fastlylb:[2,{map:_3}],"keyword-on":_3,"live-on":_3,"server-on":_3,"cdn-edges":_3,heteml:_3,cloudfunctions:_3,"grafana-dev":_3,iobb:_3,moonscale:_3,"in-dsl":_3,"in-vpn":_3,oninferno:_3,botdash:_3,"apps-1and1":_3,ipifony:_3,cloudjiffy:[2,{"fra1-de":_3,"west1-us":_3}],elastx:[0,{"jls-sto1":_3,"jls-sto2":_3,"jls-sto3":_3}],massivegrid:[0,{paas:[0,{"fr-1":_3,"lon-1":_3,"lon-2":_3,"ny-1":_3,"ny-2":_3,"sg-1":_3}]}],saveincloud:[0,{jelastic:_3,"nordeste-idc":_3}],scaleforce:_48,kinghost:_3,uni5:_3,krellian:_3,ggff:_3,localto:_6,barsy:_3,luyani:_3,memset:_3,"azure-api":_3,"azure-mobile":_3,azureedge:_3,azurefd:_3,azurestaticapps:[2,{1:_3,2:_3,3:_3,4:_3,5:_3,6:_3,7:_3,centralus:_3,eastasia:_3,eastus2:_3,westeurope:_3,westus2:_3}],azurewebsites:_3,cloudapp:_3,trafficmanager:_3,usgovcloudapi:[0,{servicebus:_3}],usgovcloudapp:_3,windows:[0,{core:[0,{blob:_3}],servicebus:_3}],mynetname:[0,{sn:_3}],routingthecloud:_3,bounceme:_3,ddns:_3,"eating-organic":_3,mydissent:_3,myeffect:_3,mymediapc:_3,mypsx:_3,mysecuritycamera:_3,nhlfan:_3,"no-ip":_3,pgafan:_3,privatizehealthinsurance:_3,redirectme:_3,serveblog:_3,serveminecraft:_3,sytes:_3,dnsup:_3,hicam:_3,"now-dns":_3,ownip:_3,vpndns:_3,cloudycluster:_3,ovh:[0,{hosting:_6,webpaas:_6}],rackmaze:_3,myradweb:_3,in:_3,"subsc-pay":_3,squares:_3,schokokeks:_3,"firewall-gateway":_3,seidat:_3,senseering:_3,siteleaf:_3,mafelo:_3,myspreadshop:_3,"vps-host":[2,{jelastic:[0,{atl:_3,njs:_3,ric:_3}]}],srcf:[0,{soc:_3,user:_3}],supabase:_3,dsmynas:_3,familyds:_3,ts:[2,{c:_6}],torproject:[2,{pages:_3}],tunnelmole:_3,vusercontent:_3,"reserve-online":_3,localcert:_3,"community-pro":_3,meinforum:_3,yandexcloud:[2,{storage:_3,website:_3}],za:_3,zabc:_3}],nf:[1,{arts:_2,com:_2,firm:_2,info:_2,net:_2,other:_2,per:_2,rec:_2,store:_2,web:_2}],ng:[1,{com:_2,edu:_2,gov:_2,i:_2,mil:_2,mobi:_2,name:_2,net:_2,org:_2,sch:_2,biz:[2,{co:_3,dl:_3,go:_3,lg:_3,on:_3}],col:_3,firm:_3,gen:_3,ltd:_3,ngo:_3,plc:_3}],ni:[1,{ac:_2,biz:_2,co:_2,com:_2,edu:_2,gob:_2,in:_2,info:_2,int:_2,mil:_2,net:_2,nom:_2,org:_2,web:_2}],nl:[1,{co:_3,"hosting-cluster":_3,gov:_3,khplay:_3,"123website":_3,myspreadshop:_3,transurl:_6,cistron:_3,demon:_3}],no:[1,{fhs:_2,folkebibl:_2,fylkesbibl:_2,idrett:_2,museum:_2,priv:_2,vgs:_2,dep:_2,herad:_2,kommune:_2,mil:_2,stat:_2,aa:_64,ah:_64,bu:_64,fm:_64,hl:_64,hm:_64,"jan-mayen":_64,mr:_64,nl:_64,nt:_64,of:_64,ol:_64,oslo:_64,rl:_64,sf:_64,st:_64,svalbard:_64,tm:_64,tr:_64,va:_64,vf:_64,akrehamn:_2,"xn--krehamn-dxa":_2,åkrehamn:_2,algard:_2,"xn--lgrd-poac":_2,ålgård:_2,arna:_2,bronnoysund:_2,"xn--brnnysund-m8ac":_2,brønnøysund:_2,brumunddal:_2,bryne:_2,drobak:_2,"xn--drbak-wua":_2,drøbak:_2,egersund:_2,fetsund:_2,floro:_2,"xn--flor-jra":_2,florø:_2,fredrikstad:_2,hokksund:_2,honefoss:_2,"xn--hnefoss-q1a":_2,hønefoss:_2,jessheim:_2,jorpeland:_2,"xn--jrpeland-54a":_2,jørpeland:_2,kirkenes:_2,kopervik:_2,krokstadelva:_2,langevag:_2,"xn--langevg-jxa":_2,langevåg:_2,leirvik:_2,mjondalen:_2,"xn--mjndalen-64a":_2,mjøndalen:_2,"mo-i-rana":_2,mosjoen:_2,"xn--mosjen-eya":_2,mosjøen:_2,nesoddtangen:_2,orkanger:_2,osoyro:_2,"xn--osyro-wua":_2,osøyro:_2,raholt:_2,"xn--rholt-mra":_2,råholt:_2,sandnessjoen:_2,"xn--sandnessjen-ogb":_2,sandnessjøen:_2,skedsmokorset:_2,slattum:_2,spjelkavik:_2,stathelle:_2,stavern:_2,stjordalshalsen:_2,"xn--stjrdalshalsen-sqb":_2,stjørdalshalsen:_2,tananger:_2,tranby:_2,vossevangen:_2,aarborte:_2,aejrie:_2,afjord:_2,"xn--fjord-lra":_2,åfjord:_2,agdenes:_2,akershus:_65,aknoluokta:_2,"xn--koluokta-7ya57h":_2,ákŋoluokta:_2,al:_2,"xn--l-1fa":_2,ål:_2,alaheadju:_2,"xn--laheadju-7ya":_2,álaheadju:_2,alesund:_2,"xn--lesund-hua":_2,ålesund:_2,alstahaug:_2,alta:_2,"xn--lt-liac":_2,áltá:_2,alvdal:_2,amli:_2,"xn--mli-tla":_2,åmli:_2,amot:_2,"xn--mot-tla":_2,åmot:_2,andasuolo:_2,andebu:_2,andoy:_2,"xn--andy-ira":_2,andøy:_2,ardal:_2,"xn--rdal-poa":_2,årdal:_2,aremark:_2,arendal:_2,"xn--s-1fa":_2,ås:_2,aseral:_2,"xn--seral-lra":_2,åseral:_2,asker:_2,askim:_2,askoy:_2,"xn--asky-ira":_2,askøy:_2,askvoll:_2,asnes:_2,"xn--snes-poa":_2,åsnes:_2,audnedaln:_2,aukra:_2,aure:_2,aurland:_2,"aurskog-holand":_2,"xn--aurskog-hland-jnb":_2,"aurskog-høland":_2,austevoll:_2,austrheim:_2,averoy:_2,"xn--avery-yua":_2,averøy:_2,badaddja:_2,"xn--bdddj-mrabd":_2,bådåddjå:_2,"xn--brum-voa":_2,bærum:_2,bahcavuotna:_2,"xn--bhcavuotna-s4a":_2,báhcavuotna:_2,bahccavuotna:_2,"xn--bhccavuotna-k7a":_2,báhccavuotna:_2,baidar:_2,"xn--bidr-5nac":_2,báidár:_2,bajddar:_2,"xn--bjddar-pta":_2,bájddar:_2,balat:_2,"xn--blt-elab":_2,bálát:_2,balestrand:_2,ballangen:_2,balsfjord:_2,bamble:_2,bardu:_2,barum:_2,batsfjord:_2,"xn--btsfjord-9za":_2,båtsfjord:_2,bearalvahki:_2,"xn--bearalvhki-y4a":_2,bearalváhki:_2,beardu:_2,beiarn:_2,berg:_2,bergen:_2,berlevag:_2,"xn--berlevg-jxa":_2,berlevåg:_2,bievat:_2,"xn--bievt-0qa":_2,bievát:_2,bindal:_2,birkenes:_2,bjerkreim:_2,bjugn:_2,bodo:_2,"xn--bod-2na":_2,bodø:_2,bokn:_2,bomlo:_2,"xn--bmlo-gra":_2,bømlo:_2,bremanger:_2,bronnoy:_2,"xn--brnny-wuac":_2,brønnøy:_2,budejju:_2,buskerud:_65,bygland:_2,bykle:_2,cahcesuolo:_2,"xn--hcesuolo-7ya35b":_2,čáhcesuolo:_2,davvenjarga:_2,"xn--davvenjrga-y4a":_2,davvenjárga:_2,davvesiida:_2,deatnu:_2,dielddanuorri:_2,divtasvuodna:_2,divttasvuotna:_2,donna:_2,"xn--dnna-gra":_2,dønna:_2,dovre:_2,drammen:_2,drangedal:_2,dyroy:_2,"xn--dyry-ira":_2,dyrøy:_2,eid:_2,eidfjord:_2,eidsberg:_2,eidskog:_2,eidsvoll:_2,eigersund:_2,elverum:_2,enebakk:_2,engerdal:_2,etne:_2,etnedal:_2,evenassi:_2,"xn--eveni-0qa01ga":_2,evenášši:_2,evenes:_2,"evje-og-hornnes":_2,farsund:_2,fauske:_2,fedje:_2,fet:_2,finnoy:_2,"xn--finny-yua":_2,finnøy:_2,fitjar:_2,fjaler:_2,fjell:_2,fla:_2,"xn--fl-zia":_2,flå:_2,flakstad:_2,flatanger:_2,flekkefjord:_2,flesberg:_2,flora:_2,folldal:_2,forde:_2,"xn--frde-gra":_2,førde:_2,forsand:_2,fosnes:_2,"xn--frna-woa":_2,fræna:_2,frana:_2,frei:_2,frogn:_2,froland:_2,frosta:_2,froya:_2,"xn--frya-hra":_2,frøya:_2,fuoisku:_2,fuossko:_2,fusa:_2,fyresdal:_2,gaivuotna:_2,"xn--givuotna-8ya":_2,gáivuotna:_2,galsa:_2,"xn--gls-elac":_2,gálsá:_2,gamvik:_2,gangaviika:_2,"xn--ggaviika-8ya47h":_2,gáŋgaviika:_2,gaular:_2,gausdal:_2,giehtavuoatna:_2,gildeskal:_2,"xn--gildeskl-g0a":_2,gildeskål:_2,giske:_2,gjemnes:_2,gjerdrum:_2,gjerstad:_2,gjesdal:_2,gjovik:_2,"xn--gjvik-wua":_2,gjøvik:_2,gloppen:_2,gol:_2,gran:_2,grane:_2,granvin:_2,gratangen:_2,grimstad:_2,grong:_2,grue:_2,gulen:_2,guovdageaidnu:_2,ha:_2,"xn--h-2fa":_2,hå:_2,habmer:_2,"xn--hbmer-xqa":_2,hábmer:_2,hadsel:_2,"xn--hgebostad-g3a":_2,hægebostad:_2,hagebostad:_2,halden:_2,halsa:_2,hamar:_2,hamaroy:_2,hammarfeasta:_2,"xn--hmmrfeasta-s4ac":_2,hámmárfeasta:_2,hammerfest:_2,hapmir:_2,"xn--hpmir-xqa":_2,hápmir:_2,haram:_2,hareid:_2,harstad:_2,hasvik:_2,hattfjelldal:_2,haugesund:_2,hedmark:[0,{os:_2,valer:_2,"xn--vler-qoa":_2,våler:_2}],hemne:_2,hemnes:_2,hemsedal:_2,hitra:_2,hjartdal:_2,hjelmeland:_2,hobol:_2,"xn--hobl-ira":_2,hobøl:_2,hof:_2,hol:_2,hole:_2,holmestrand:_2,holtalen:_2,"xn--holtlen-hxa":_2,holtålen:_2,hordaland:[0,{os:_2}],hornindal:_2,horten:_2,hoyanger:_2,"xn--hyanger-q1a":_2,høyanger:_2,hoylandet:_2,"xn--hylandet-54a":_2,høylandet:_2,hurdal:_2,hurum:_2,hvaler:_2,hyllestad:_2,ibestad:_2,inderoy:_2,"xn--indery-fya":_2,inderøy:_2,iveland:_2,ivgu:_2,jevnaker:_2,jolster:_2,"xn--jlster-bya":_2,jølster:_2,jondal:_2,kafjord:_2,"xn--kfjord-iua":_2,kåfjord:_2,karasjohka:_2,"xn--krjohka-hwab49j":_2,kárášjohka:_2,karasjok:_2,karlsoy:_2,karmoy:_2,"xn--karmy-yua":_2,karmøy:_2,kautokeino:_2,klabu:_2,"xn--klbu-woa":_2,klæbu:_2,klepp:_2,kongsberg:_2,kongsvinger:_2,kraanghke:_2,"xn--kranghke-b0a":_2,kråanghke:_2,kragero:_2,"xn--krager-gya":_2,kragerø:_2,kristiansand:_2,kristiansund:_2,krodsherad:_2,"xn--krdsherad-m8a":_2,krødsherad:_2,"xn--kvfjord-nxa":_2,kvæfjord:_2,"xn--kvnangen-k0a":_2,kvænangen:_2,kvafjord:_2,kvalsund:_2,kvam:_2,kvanangen:_2,kvinesdal:_2,kvinnherad:_2,kviteseid:_2,kvitsoy:_2,"xn--kvitsy-fya":_2,kvitsøy:_2,laakesvuemie:_2,"xn--lrdal-sra":_2,lærdal:_2,lahppi:_2,"xn--lhppi-xqa":_2,láhppi:_2,lardal:_2,larvik:_2,lavagis:_2,lavangen:_2,leangaviika:_2,"xn--leagaviika-52b":_2,leaŋgaviika:_2,lebesby:_2,leikanger:_2,leirfjord:_2,leka:_2,leksvik:_2,lenvik:_2,lerdal:_2,lesja:_2,levanger:_2,lier:_2,lierne:_2,lillehammer:_2,lillesand:_2,lindas:_2,"xn--linds-pra":_2,lindås:_2,lindesnes:_2,loabat:_2,"xn--loabt-0qa":_2,loabát:_2,lodingen:_2,"xn--ldingen-q1a":_2,lødingen:_2,lom:_2,loppa:_2,lorenskog:_2,"xn--lrenskog-54a":_2,lørenskog:_2,loten:_2,"xn--lten-gra":_2,løten:_2,lund:_2,lunner:_2,luroy:_2,"xn--lury-ira":_2,lurøy:_2,luster:_2,lyngdal:_2,lyngen:_2,malatvuopmi:_2,"xn--mlatvuopmi-s4a":_2,málatvuopmi:_2,malselv:_2,"xn--mlselv-iua":_2,målselv:_2,malvik:_2,mandal:_2,marker:_2,marnardal:_2,masfjorden:_2,masoy:_2,"xn--msy-ula0h":_2,måsøy:_2,"matta-varjjat":_2,"xn--mtta-vrjjat-k7af":_2,"mátta-várjjat":_2,meland:_2,meldal:_2,melhus:_2,meloy:_2,"xn--mely-ira":_2,meløy:_2,meraker:_2,"xn--merker-kua":_2,meråker:_2,midsund:_2,"midtre-gauldal":_2,moareke:_2,"xn--moreke-jua":_2,moåreke:_2,modalen:_2,modum:_2,molde:_2,"more-og-romsdal":[0,{heroy:_2,sande:_2}],"xn--mre-og-romsdal-qqb":[0,{"xn--hery-ira":_2,sande:_2}],"møre-og-romsdal":[0,{herøy:_2,sande:_2}],moskenes:_2,moss:_2,muosat:_2,"xn--muost-0qa":_2,muosát:_2,naamesjevuemie:_2,"xn--nmesjevuemie-tcba":_2,nååmesjevuemie:_2,"xn--nry-yla5g":_2,nærøy:_2,namdalseid:_2,namsos:_2,namsskogan:_2,nannestad:_2,naroy:_2,narviika:_2,narvik:_2,naustdal:_2,navuotna:_2,"xn--nvuotna-hwa":_2,návuotna:_2,"nedre-eiker":_2,nesna:_2,nesodden:_2,nesseby:_2,nesset:_2,nissedal:_2,nittedal:_2,"nord-aurdal":_2,"nord-fron":_2,"nord-odal":_2,norddal:_2,nordkapp:_2,nordland:[0,{bo:_2,"xn--b-5ga":_2,bø:_2,heroy:_2,"xn--hery-ira":_2,herøy:_2}],"nordre-land":_2,nordreisa:_2,"nore-og-uvdal":_2,notodden:_2,notteroy:_2,"xn--nttery-byae":_2,nøtterøy:_2,odda:_2,oksnes:_2,"xn--ksnes-uua":_2,øksnes:_2,omasvuotna:_2,oppdal:_2,oppegard:_2,"xn--oppegrd-ixa":_2,oppegård:_2,orkdal:_2,orland:_2,"xn--rland-uua":_2,ørland:_2,orskog:_2,"xn--rskog-uua":_2,ørskog:_2,orsta:_2,"xn--rsta-fra":_2,ørsta:_2,osen:_2,osteroy:_2,"xn--ostery-fya":_2,osterøy:_2,ostfold:[0,{valer:_2}],"xn--stfold-9xa":[0,{"xn--vler-qoa":_2}],østfold:[0,{våler:_2}],"ostre-toten":_2,"xn--stre-toten-zcb":_2,"østre-toten":_2,overhalla:_2,"ovre-eiker":_2,"xn--vre-eiker-k8a":_2,"øvre-eiker":_2,oyer:_2,"xn--yer-zna":_2,øyer:_2,oygarden:_2,"xn--ygarden-p1a":_2,øygarden:_2,"oystre-slidre":_2,"xn--ystre-slidre-ujb":_2,"øystre-slidre":_2,porsanger:_2,porsangu:_2,"xn--porsgu-sta26f":_2,porsáŋgu:_2,porsgrunn:_2,rade:_2,"xn--rde-ula":_2,råde:_2,radoy:_2,"xn--rady-ira":_2,radøy:_2,"xn--rlingen-mxa":_2,rælingen:_2,rahkkeravju:_2,"xn--rhkkervju-01af":_2,ráhkkerávju:_2,raisa:_2,"xn--risa-5na":_2,ráisa:_2,rakkestad:_2,ralingen:_2,rana:_2,randaberg:_2,rauma:_2,rendalen:_2,rennebu:_2,rennesoy:_2,"xn--rennesy-v1a":_2,rennesøy:_2,rindal:_2,ringebu:_2,ringerike:_2,ringsaker:_2,risor:_2,"xn--risr-ira":_2,risør:_2,rissa:_2,roan:_2,rodoy:_2,"xn--rdy-0nab":_2,rødøy:_2,rollag:_2,romsa:_2,romskog:_2,"xn--rmskog-bya":_2,rømskog:_2,roros:_2,"xn--rros-gra":_2,røros:_2,rost:_2,"xn--rst-0na":_2,røst:_2,royken:_2,"xn--ryken-vua":_2,røyken:_2,royrvik:_2,"xn--ryrvik-bya":_2,røyrvik:_2,ruovat:_2,rygge:_2,salangen:_2,salat:_2,"xn--slat-5na":_2,sálat:_2,"xn--slt-elab":_2,sálát:_2,saltdal:_2,samnanger:_2,sandefjord:_2,sandnes:_2,sandoy:_2,"xn--sandy-yua":_2,sandøy:_2,sarpsborg:_2,sauda:_2,sauherad:_2,sel:_2,selbu:_2,selje:_2,seljord:_2,siellak:_2,sigdal:_2,siljan:_2,sirdal:_2,skanit:_2,"xn--sknit-yqa":_2,skánit:_2,skanland:_2,"xn--sknland-fxa":_2,skånland:_2,skaun:_2,skedsmo:_2,ski:_2,skien:_2,skierva:_2,"xn--skierv-uta":_2,skiervá:_2,skiptvet:_2,skjak:_2,"xn--skjk-soa":_2,skjåk:_2,skjervoy:_2,"xn--skjervy-v1a":_2,skjervøy:_2,skodje:_2,smola:_2,"xn--smla-hra":_2,smøla:_2,snaase:_2,"xn--snase-nra":_2,snåase:_2,snasa:_2,"xn--snsa-roa":_2,snåsa:_2,snillfjord:_2,snoasa:_2,sogndal:_2,sogne:_2,"xn--sgne-gra":_2,søgne:_2,sokndal:_2,sola:_2,solund:_2,somna:_2,"xn--smna-gra":_2,sømna:_2,"sondre-land":_2,"xn--sndre-land-0cb":_2,"søndre-land":_2,songdalen:_2,"sor-aurdal":_2,"xn--sr-aurdal-l8a":_2,"sør-aurdal":_2,"sor-fron":_2,"xn--sr-fron-q1a":_2,"sør-fron":_2,"sor-odal":_2,"xn--sr-odal-q1a":_2,"sør-odal":_2,"sor-varanger":_2,"xn--sr-varanger-ggb":_2,"sør-varanger":_2,sorfold:_2,"xn--srfold-bya":_2,sørfold:_2,sorreisa:_2,"xn--srreisa-q1a":_2,sørreisa:_2,sortland:_2,sorum:_2,"xn--srum-gra":_2,sørum:_2,spydeberg:_2,stange:_2,stavanger:_2,steigen:_2,steinkjer:_2,stjordal:_2,"xn--stjrdal-s1a":_2,stjørdal:_2,stokke:_2,"stor-elvdal":_2,stord:_2,stordal:_2,storfjord:_2,strand:_2,stranda:_2,stryn:_2,sula:_2,suldal:_2,sund:_2,sunndal:_2,surnadal:_2,sveio:_2,svelvik:_2,sykkylven:_2,tana:_2,telemark:[0,{bo:_2,"xn--b-5ga":_2,bø:_2}],time:_2,tingvoll:_2,tinn:_2,tjeldsund:_2,tjome:_2,"xn--tjme-hra":_2,tjøme:_2,tokke:_2,tolga:_2,tonsberg:_2,"xn--tnsberg-q1a":_2,tønsberg:_2,torsken:_2,"xn--trna-woa":_2,træna:_2,trana:_2,tranoy:_2,"xn--trany-yua":_2,tranøy:_2,troandin:_2,trogstad:_2,"xn--trgstad-r1a":_2,trøgstad:_2,tromsa:_2,tromso:_2,"xn--troms-zua":_2,tromsø:_2,trondheim:_2,trysil:_2,tvedestrand:_2,tydal:_2,tynset:_2,tysfjord:_2,tysnes:_2,"xn--tysvr-vra":_2,tysvær:_2,tysvar:_2,ullensaker:_2,ullensvang:_2,ulvik:_2,unjarga:_2,"xn--unjrga-rta":_2,unjárga:_2,utsira:_2,vaapste:_2,vadso:_2,"xn--vads-jra":_2,vadsø:_2,"xn--vry-yla5g":_2,værøy:_2,vaga:_2,"xn--vg-yiab":_2,vågå:_2,vagan:_2,"xn--vgan-qoa":_2,vågan:_2,vagsoy:_2,"xn--vgsy-qoa0j":_2,vågsøy:_2,vaksdal:_2,valle:_2,vang:_2,vanylven:_2,vardo:_2,"xn--vard-jra":_2,vardø:_2,varggat:_2,"xn--vrggt-xqad":_2,várggát:_2,varoy:_2,vefsn:_2,vega:_2,vegarshei:_2,"xn--vegrshei-c0a":_2,vegårshei:_2,vennesla:_2,verdal:_2,verran:_2,vestby:_2,vestfold:[0,{sande:_2}],vestnes:_2,"vestre-slidre":_2,"vestre-toten":_2,vestvagoy:_2,"xn--vestvgy-ixa6o":_2,vestvågøy:_2,vevelstad:_2,vik:_2,vikna:_2,vindafjord:_2,voagat:_2,volda:_2,voss:_2,co:_3,"123hjemmeside":_3,myspreadshop:_3}],np:_21,nr:_60,nu:[1,{merseine:_3,mine:_3,shacknet:_3,enterprisecloud:_3}],nz:[1,{ac:_2,co:_2,cri:_2,geek:_2,gen:_2,govt:_2,health:_2,iwi:_2,kiwi:_2,maori:_2,"xn--mori-qsa":_2,māori:_2,mil:_2,net:_2,org:_2,parliament:_2,school:_2,cloudns:_3}],om:[1,{co:_2,com:_2,edu:_2,gov:_2,med:_2,museum:_2,net:_2,org:_2,pro:_2}],onion:_2,org:[1,{altervista:_3,pimienta:_3,poivron:_3,potager:_3,sweetpepper:_3,cdn77:[0,{c:_3,rsc:_3}],"cdn77-secure":[0,{origin:[0,{ssl:_3}]}],ae:_3,cloudns:_3,"ip-dynamic":_3,ddnss:_3,dpdns:_3,duckdns:_3,tunk:_3,blogdns:_3,blogsite:_3,boldlygoingnowhere:_3,dnsalias:_3,dnsdojo:_3,doesntexist:_3,dontexist:_3,doomdns:_3,dvrdns:_3,dynalias:_3,dyndns:[2,{go:_3,home:_3}],endofinternet:_3,endoftheinternet:_3,"from-me":_3,"game-host":_3,gotdns:_3,"hobby-site":_3,homedns:_3,homeftp:_3,homelinux:_3,homeunix:_3,"is-a-bruinsfan":_3,"is-a-candidate":_3,"is-a-celticsfan":_3,"is-a-chef":_3,"is-a-geek":_3,"is-a-knight":_3,"is-a-linux-user":_3,"is-a-patsfan":_3,"is-a-soxfan":_3,"is-found":_3,"is-lost":_3,"is-saved":_3,"is-very-bad":_3,"is-very-evil":_3,"is-very-good":_3,"is-very-nice":_3,"is-very-sweet":_3,"isa-geek":_3,"kicks-ass":_3,misconfused:_3,podzone:_3,readmyblog:_3,selfip:_3,sellsyourhome:_3,servebbs:_3,serveftp:_3,servegame:_3,"stuff-4-sale":_3,webhop:_3,accesscam:_3,camdvr:_3,freeddns:_3,mywire:_3,webredirect:_3,twmail:_3,eu:[2,{al:_3,asso:_3,at:_3,au:_3,be:_3,bg:_3,ca:_3,cd:_3,ch:_3,cn:_3,cy:_3,cz:_3,de:_3,dk:_3,edu:_3,ee:_3,es:_3,fi:_3,fr:_3,gr:_3,hr:_3,hu:_3,ie:_3,il:_3,in:_3,int:_3,is:_3,it:_3,jp:_3,kr:_3,lt:_3,lu:_3,lv:_3,me:_3,mk:_3,mt:_3,my:_3,net:_3,ng:_3,nl:_3,no:_3,nz:_3,pl:_3,pt:_3,ro:_3,ru:_3,se:_3,si:_3,sk:_3,tr:_3,uk:_3,us:_3}],fedorainfracloud:_3,fedorapeople:_3,fedoraproject:[0,{cloud:_3,os:_45,stg:[0,{os:_45}]}],freedesktop:_3,hatenadiary:_3,hepforge:_3,"in-dsl":_3,"in-vpn":_3,js:_3,barsy:_3,mayfirst:_3,routingthecloud:_3,bmoattachments:_3,"cable-modem":_3,collegefan:_3,couchpotatofries:_3,hopto:_3,mlbfan:_3,myftp:_3,mysecuritycamera:_3,nflfan:_3,"no-ip":_3,"read-books":_3,ufcfan:_3,zapto:_3,dynserv:_3,"now-dns":_3,"is-local":_3,httpbin:_3,pubtls:_3,jpn:_3,"my-firewall":_3,myfirewall:_3,spdns:_3,"small-web":_3,dsmynas:_3,familyds:_3,teckids:_59,tuxfamily:_3,hk:_3,us:_3,toolforge:_3,wmcloud:[2,{beta:_3}],wmflabs:_3,za:_3}],pa:[1,{abo:_2,ac:_2,com:_2,edu:_2,gob:_2,ing:_2,med:_2,net:_2,nom:_2,org:_2,sld:_2}],pe:[1,{com:_2,edu:_2,gob:_2,mil:_2,net:_2,nom:_2,org:_2}],pf:[1,{com:_2,edu:_2,org:_2}],pg:_21,ph:[1,{com:_2,edu:_2,gov:_2,i:_2,mil:_2,net:_2,ngo:_2,org:_2,cloudns:_3}],pk:[1,{ac:_2,biz:_2,com:_2,edu:_2,fam:_2,gkp:_2,gob:_2,gog:_2,gok:_2,gop:_2,gos:_2,gov:_2,net:_2,org:_2,web:_2}],pl:[1,{com:_2,net:_2,org:_2,agro:_2,aid:_2,atm:_2,auto:_2,biz:_2,edu:_2,gmina:_2,gsm:_2,info:_2,mail:_2,media:_2,miasta:_2,mil:_2,nieruchomosci:_2,nom:_2,pc:_2,powiat:_2,priv:_2,realestate:_2,rel:_2,sex:_2,shop:_2,sklep:_2,sos:_2,szkola:_2,targi:_2,tm:_2,tourism:_2,travel:_2,turystyka:_2,gov:[1,{ap:_2,griw:_2,ic:_2,is:_2,kmpsp:_2,konsulat:_2,kppsp:_2,kwp:_2,kwpsp:_2,mup:_2,mw:_2,oia:_2,oirm:_2,oke:_2,oow:_2,oschr:_2,oum:_2,pa:_2,pinb:_2,piw:_2,po:_2,pr:_2,psp:_2,psse:_2,pup:_2,rzgw:_2,sa:_2,sdn:_2,sko:_2,so:_2,sr:_2,starostwo:_2,ug:_2,ugim:_2,um:_2,umig:_2,upow:_2,uppo:_2,us:_2,uw:_2,uzs:_2,wif:_2,wiih:_2,winb:_2,wios:_2,witd:_2,wiw:_2,wkz:_2,wsa:_2,wskr:_2,wsse:_2,wuoz:_2,wzmiuw:_2,zp:_2,zpisdn:_2}],augustow:_2,"babia-gora":_2,bedzin:_2,beskidy:_2,bialowieza:_2,bialystok:_2,bielawa:_2,bieszczady:_2,boleslawiec:_2,bydgoszcz:_2,bytom:_2,cieszyn:_2,czeladz:_2,czest:_2,dlugoleka:_2,elblag:_2,elk:_2,glogow:_2,gniezno:_2,gorlice:_2,grajewo:_2,ilawa:_2,jaworzno:_2,"jelenia-gora":_2,jgora:_2,kalisz:_2,karpacz:_2,kartuzy:_2,kaszuby:_2,katowice:_2,"kazimierz-dolny":_2,kepno:_2,ketrzyn:_2,klodzko:_2,kobierzyce:_2,kolobrzeg:_2,konin:_2,konskowola:_2,kutno:_2,lapy:_2,lebork:_2,legnica:_2,lezajsk:_2,limanowa:_2,lomza:_2,lowicz:_2,lubin:_2,lukow:_2,malbork:_2,malopolska:_2,mazowsze:_2,mazury:_2,mielec:_2,mielno:_2,mragowo:_2,naklo:_2,nowaruda:_2,nysa:_2,olawa:_2,olecko:_2,olkusz:_2,olsztyn:_2,opoczno:_2,opole:_2,ostroda:_2,ostroleka:_2,ostrowiec:_2,ostrowwlkp:_2,pila:_2,pisz:_2,podhale:_2,podlasie:_2,polkowice:_2,pomorskie:_2,pomorze:_2,prochowice:_2,pruszkow:_2,przeworsk:_2,pulawy:_2,radom:_2,"rawa-maz":_2,rybnik:_2,rzeszow:_2,sanok:_2,sejny:_2,skoczow:_2,slask:_2,slupsk:_2,sosnowiec:_2,"stalowa-wola":_2,starachowice:_2,stargard:_2,suwalki:_2,swidnica:_2,swiebodzin:_2,swinoujscie:_2,szczecin:_2,szczytno:_2,tarnobrzeg:_2,tgory:_2,turek:_2,tychy:_2,ustka:_2,walbrzych:_2,warmia:_2,warszawa:_2,waw:_2,wegrow:_2,wielun:_2,wlocl:_2,wloclawek:_2,wodzislaw:_2,wolomin:_2,wroclaw:_2,zachpomor:_2,zagan:_2,zarow:_2,zgora:_2,zgorzelec:_2,art:_3,gliwice:_3,krakow:_3,poznan:_3,wroc:_3,zakopane:_3,beep:_3,"ecommerce-shop":_3,cfolks:_3,dfirma:_3,dkonto:_3,you2:_3,shoparena:_3,homesklep:_3,sdscloud:_3,unicloud:_3,lodz:_3,pabianice:_3,plock:_3,sieradz:_3,skierniewice:_3,zgierz:_3,krasnik:_3,leczna:_3,lubartow:_3,lublin:_3,poniatowa:_3,swidnik:_3,co:_3,torun:_3,simplesite:_3,myspreadshop:_3,gda:_3,gdansk:_3,gdynia:_3,med:_3,sopot:_3,bielsko:_3}],pm:[1,{own:_3,name:_3}],pn:[1,{co:_2,edu:_2,gov:_2,net:_2,org:_2}],post:_2,pr:[1,{biz:_2,com:_2,edu:_2,gov:_2,info:_2,isla:_2,name:_2,net:_2,org:_2,pro:_2,ac:_2,est:_2,prof:_2}],pro:[1,{aaa:_2,aca:_2,acct:_2,avocat:_2,bar:_2,cpa:_2,eng:_2,jur:_2,law:_2,med:_2,recht:_2,"12chars":_3,cloudns:_3,keenetic:_3,barsy:_3,ngrok:_3}],ps:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,plo:_2,sec:_2}],pt:[1,{com:_2,edu:_2,gov:_2,int:_2,net:_2,nome:_2,org:_2,publ:_2,"123paginaweb":_3}],pw:[1,{gov:_2,cloudns:_3,x443:_3}],py:[1,{com:_2,coop:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],qa:[1,{com:_2,edu:_2,gov:_2,mil:_2,name:_2,net:_2,org:_2,sch:_2}],re:[1,{asso:_2,com:_2,netlib:_3,can:_3}],ro:[1,{arts:_2,com:_2,firm:_2,info:_2,nom:_2,nt:_2,org:_2,rec:_2,store:_2,tm:_2,www:_2,co:_3,shop:_3,barsy:_3}],rs:[1,{ac:_2,co:_2,edu:_2,gov:_2,in:_2,org:_2,brendly:_20,barsy:_3,ox:_3}],ru:[1,{ac:_3,edu:_3,gov:_3,int:_3,mil:_3,eurodir:_3,adygeya:_3,bashkiria:_3,bir:_3,cbg:_3,com:_3,dagestan:_3,grozny:_3,kalmykia:_3,kustanai:_3,marine:_3,mordovia:_3,msk:_3,mytis:_3,nalchik:_3,nov:_3,pyatigorsk:_3,spb:_3,vladikavkaz:_3,vladimir:_3,na4u:_3,mircloud:_3,myjino:[2,{hosting:_6,landing:_6,spectrum:_6,vps:_6}],cldmail:[0,{hb:_3}],mcdir:[2,{vps:_3}],mcpre:_3,net:_3,org:_3,pp:_3,ras:_3}],rw:[1,{ac:_2,co:_2,coop:_2,gov:_2,mil:_2,net:_2,org:_2}],sa:[1,{com:_2,edu:_2,gov:_2,med:_2,net:_2,org:_2,pub:_2,sch:_2}],sb:_4,sc:_4,sd:[1,{com:_2,edu:_2,gov:_2,info:_2,med:_2,net:_2,org:_2,tv:_2}],se:[1,{a:_2,ac:_2,b:_2,bd:_2,brand:_2,c:_2,d:_2,e:_2,f:_2,fh:_2,fhsk:_2,fhv:_2,g:_2,h:_2,i:_2,k:_2,komforb:_2,kommunalforbund:_2,komvux:_2,l:_2,lanbib:_2,m:_2,n:_2,naturbruksgymn:_2,o:_2,org:_2,p:_2,parti:_2,pp:_2,press:_2,r:_2,s:_2,t:_2,tm:_2,u:_2,w:_2,x:_2,y:_2,z:_2,com:_3,iopsys:_3,"123minsida":_3,itcouldbewor:_3,myspreadshop:_3}],sg:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,enscaled:_3}],sh:[1,{com:_2,gov:_2,mil:_2,net:_2,org:_2,hashbang:_3,botda:_3,lovable:_3,platform:[0,{ent:_3,eu:_3,us:_3}],teleport:_3,now:_3}],si:[1,{f5:_3,gitapp:_3,gitpage:_3}],sj:_2,sk:[1,{org:_2}],sl:_4,sm:_2,sn:[1,{art:_2,com:_2,edu:_2,gouv:_2,org:_2,univ:_2}],so:[1,{com:_2,edu:_2,gov:_2,me:_2,net:_2,org:_2,surveys:_3}],sr:_2,ss:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,me:_2,net:_2,org:_2,sch:_2}],st:[1,{co:_2,com:_2,consulado:_2,edu:_2,embaixada:_2,mil:_2,net:_2,org:_2,principe:_2,saotome:_2,store:_2,helioho:_3,cn:_6,kirara:_3,noho:_3}],su:[1,{abkhazia:_3,adygeya:_3,aktyubinsk:_3,arkhangelsk:_3,armenia:_3,ashgabad:_3,azerbaijan:_3,balashov:_3,bashkiria:_3,bryansk:_3,bukhara:_3,chimkent:_3,dagestan:_3,"east-kazakhstan":_3,exnet:_3,georgia:_3,grozny:_3,ivanovo:_3,jambyl:_3,kalmykia:_3,kaluga:_3,karacol:_3,karaganda:_3,karelia:_3,khakassia:_3,krasnodar:_3,kurgan:_3,kustanai:_3,lenug:_3,mangyshlak:_3,mordovia:_3,msk:_3,murmansk:_3,nalchik:_3,navoi:_3,"north-kazakhstan":_3,nov:_3,obninsk:_3,penza:_3,pokrovsk:_3,sochi:_3,spb:_3,tashkent:_3,termez:_3,togliatti:_3,troitsk:_3,tselinograd:_3,tula:_3,tuva:_3,vladikavkaz:_3,vladimir:_3,vologda:_3}],sv:[1,{com:_2,edu:_2,gob:_2,org:_2,red:_2}],sx:_10,sy:_5,sz:[1,{ac:_2,co:_2,org:_2}],tc:_2,td:_2,tel:_2,tf:[1,{sch:_3}],tg:_2,th:[1,{ac:_2,co:_2,go:_2,in:_2,mi:_2,net:_2,or:_2,online:_3,shop:_3}],tj:[1,{ac:_2,biz:_2,co:_2,com:_2,edu:_2,go:_2,gov:_2,int:_2,mil:_2,name:_2,net:_2,nic:_2,org:_2,test:_2,web:_2}],tk:_2,tl:_10,tm:[1,{co:_2,com:_2,edu:_2,gov:_2,mil:_2,net:_2,nom:_2,org:_2}],tn:[1,{com:_2,ens:_2,fin:_2,gov:_2,ind:_2,info:_2,intl:_2,mincom:_2,nat:_2,net:_2,org:_2,perso:_2,tourism:_2,orangecloud:_3}],to:[1,{611:_3,com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,oya:_3,x0:_3,quickconnect:_28,vpnplus:_3,nett:_3}],tr:[1,{av:_2,bbs:_2,bel:_2,biz:_2,com:_2,dr:_2,edu:_2,gen:_2,gov:_2,info:_2,k12:_2,kep:_2,mil:_2,name:_2,net:_2,org:_2,pol:_2,tel:_2,tsk:_2,tv:_2,web:_2,nc:_10}],tt:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,mil:_2,name:_2,net:_2,org:_2,pro:_2}],tv:[1,{"better-than":_3,dyndns:_3,"on-the-web":_3,"worse-than":_3,from:_3,sakura:_3}],tw:[1,{club:_2,com:[1,{mymailer:_3}],ebiz:_2,edu:_2,game:_2,gov:_2,idv:_2,mil:_2,net:_2,org:_2,url:_3,mydns:_3}],tz:[1,{ac:_2,co:_2,go:_2,hotel:_2,info:_2,me:_2,mil:_2,mobi:_2,ne:_2,or:_2,sc:_2,tv:_2}],ua:[1,{com:_2,edu:_2,gov:_2,in:_2,net:_2,org:_2,cherkassy:_2,cherkasy:_2,chernigov:_2,chernihiv:_2,chernivtsi:_2,chernovtsy:_2,ck:_2,cn:_2,cr:_2,crimea:_2,cv:_2,dn:_2,dnepropetrovsk:_2,dnipropetrovsk:_2,donetsk:_2,dp:_2,if:_2,"ivano-frankivsk":_2,kh:_2,kharkiv:_2,kharkov:_2,kherson:_2,khmelnitskiy:_2,khmelnytskyi:_2,kiev:_2,kirovograd:_2,km:_2,kr:_2,kropyvnytskyi:_2,krym:_2,ks:_2,kv:_2,kyiv:_2,lg:_2,lt:_2,lugansk:_2,luhansk:_2,lutsk:_2,lv:_2,lviv:_2,mk:_2,mykolaiv:_2,nikolaev:_2,od:_2,odesa:_2,odessa:_2,pl:_2,poltava:_2,rivne:_2,rovno:_2,rv:_2,sb:_2,sebastopol:_2,sevastopol:_2,sm:_2,sumy:_2,te:_2,ternopil:_2,uz:_2,uzhgorod:_2,uzhhorod:_2,vinnica:_2,vinnytsia:_2,vn:_2,volyn:_2,yalta:_2,zakarpattia:_2,zaporizhzhe:_2,zaporizhzhia:_2,zhitomir:_2,zhytomyr:_2,zp:_2,zt:_2,cc:_3,inf:_3,ltd:_3,cx:_3,biz:_3,co:_3,pp:_3,v:_3}],ug:[1,{ac:_2,co:_2,com:_2,edu:_2,go:_2,gov:_2,mil:_2,ne:_2,or:_2,org:_2,sc:_2,us:_2}],uk:[1,{ac:_2,co:[1,{bytemark:[0,{dh:_3,vm:_3}],layershift:_48,barsy:_3,barsyonline:_3,retrosnub:_58,"nh-serv":_3,"no-ip":_3,adimo:_3,myspreadshop:_3}],gov:[1,{api:_3,campaign:_3,service:_3}],ltd:_2,me:_2,net:_2,nhs:_2,org:[1,{glug:_3,lug:_3,lugs:_3,affinitylottery:_3,raffleentry:_3,weeklylottery:_3}],plc:_2,police:_2,sch:_21,conn:_3,copro:_3,hosp:_3,"independent-commission":_3,"independent-inquest":_3,"independent-inquiry":_3,"independent-panel":_3,"independent-review":_3,"public-inquiry":_3,"royal-commission":_3,pymnt:_3,barsy:_3,nimsite:_3,oraclegovcloudapps:_6}],us:[1,{dni:_2,isa:_2,nsn:_2,ak:_66,al:_66,ar:_66,as:_66,az:_66,ca:_66,co:_66,ct:_66,dc:_66,de:_67,fl:_66,ga:_66,gu:_66,hi:_68,ia:_66,id:_66,il:_66,in:_66,ks:_66,ky:_66,la:_66,ma:[1,{k12:[1,{chtr:_2,paroch:_2,pvt:_2}],cc:_2,lib:_2}],md:_66,me:_66,mi:[1,{k12:_2,cc:_2,lib:_2,"ann-arbor":_2,cog:_2,dst:_2,eaton:_2,gen:_2,mus:_2,tec:_2,washtenaw:_2}],mn:_66,mo:_66,ms:[1,{k12:_2,cc:_2}],mt:_66,nc:_66,nd:_68,ne:_66,nh:_66,nj:_66,nm:_66,nv:_66,ny:_66,oh:_66,ok:_66,or:_66,pa:_66,pr:_66,ri:_68,sc:_66,sd:_68,tn:_66,tx:_66,ut:_66,va:_66,vi:_66,vt:_66,wa:_66,wi:_66,wv:_67,wy:_66,cloudns:_3,"is-by":_3,"land-4-sale":_3,"stuff-4-sale":_3,heliohost:_3,enscaled:[0,{phx:_3}],mircloud:_3,"azure-api":_3,azurewebsites:_3,ngo:_3,golffan:_3,noip:_3,pointto:_3,freeddns:_3,srv:[2,{gh:_3,gl:_3}],servername:_3}],uy:[1,{com:_2,edu:_2,gub:_2,mil:_2,net:_2,org:_2,gv:_3}],uz:[1,{co:_2,com:_2,net:_2,org:_2}],va:_2,vc:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,gv:[2,{d:_3}],"0e":_6,mydns:_3}],ve:[1,{arts:_2,bib:_2,co:_2,com:_2,e12:_2,edu:_2,emprende:_2,firm:_2,gob:_2,gov:_2,ia:_2,info:_2,int:_2,mil:_2,net:_2,nom:_2,org:_2,rar:_2,rec:_2,store:_2,tec:_2,web:_2}],vg:[1,{edu:_2}],vi:[1,{co:_2,com:_2,k12:_2,net:_2,org:_2}],vn:[1,{ac:_2,ai:_2,biz:_2,com:_2,edu:_2,gov:_2,health:_2,id:_2,info:_2,int:_2,io:_2,name:_2,net:_2,org:_2,pro:_2,angiang:_2,bacgiang:_2,backan:_2,baclieu:_2,bacninh:_2,"baria-vungtau":_2,bentre:_2,binhdinh:_2,binhduong:_2,binhphuoc:_2,binhthuan:_2,camau:_2,cantho:_2,caobang:_2,daklak:_2,daknong:_2,danang:_2,dienbien:_2,dongnai:_2,dongthap:_2,gialai:_2,hagiang:_2,haiduong:_2,haiphong:_2,hanam:_2,hanoi:_2,hatinh:_2,haugiang:_2,hoabinh:_2,hungyen:_2,khanhhoa:_2,kiengiang:_2,kontum:_2,laichau:_2,lamdong:_2,langson:_2,laocai:_2,longan:_2,namdinh:_2,nghean:_2,ninhbinh:_2,ninhthuan:_2,phutho:_2,phuyen:_2,quangbinh:_2,quangnam:_2,quangngai:_2,quangninh:_2,quangtri:_2,soctrang:_2,sonla:_2,tayninh:_2,thaibinh:_2,thainguyen:_2,thanhhoa:_2,thanhphohochiminh:_2,thuathienhue:_2,tiengiang:_2,travinh:_2,tuyenquang:_2,vinhlong:_2,vinhphuc:_2,yenbai:_2}],vu:_47,wf:[1,{biz:_3,sch:_3}],ws:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,advisor:_6,cloud66:_3,dyndns:_3,mypets:_3}],yt:[1,{org:_3}],"xn--mgbaam7a8h":_2,امارات:_2,"xn--y9a3aq":_2,հայ:_2,"xn--54b7fta0cc":_2,বাংলা:_2,"xn--90ae":_2,бг:_2,"xn--mgbcpq6gpa1a":_2,البحرين:_2,"xn--90ais":_2,бел:_2,"xn--fiqs8s":_2,中国:_2,"xn--fiqz9s":_2,中國:_2,"xn--lgbbat1ad8j":_2,الجزائر:_2,"xn--wgbh1c":_2,مصر:_2,"xn--e1a4c":_2,ею:_2,"xn--qxa6a":_2,ευ:_2,"xn--mgbah1a3hjkrd":_2,موريتانيا:_2,"xn--node":_2,გე:_2,"xn--qxam":_2,ελ:_2,"xn--j6w193g":[1,{"xn--gmqw5a":_2,"xn--55qx5d":_2,"xn--mxtq1m":_2,"xn--wcvs22d":_2,"xn--uc0atv":_2,"xn--od0alg":_2}],香港:[1,{個人:_2,公司:_2,政府:_2,教育:_2,組織:_2,網絡:_2}],"xn--2scrj9c":_2,ಭಾರತ:_2,"xn--3hcrj9c":_2,ଭାରତ:_2,"xn--45br5cyl":_2,ভাৰত:_2,"xn--h2breg3eve":_2,भारतम्:_2,"xn--h2brj9c8c":_2,भारोत:_2,"xn--mgbgu82a":_2,ڀارت:_2,"xn--rvc1e0am3e":_2,ഭാരതം:_2,"xn--h2brj9c":_2,भारत:_2,"xn--mgbbh1a":_2,بارت:_2,"xn--mgbbh1a71e":_2,بھارت:_2,"xn--fpcrj9c3d":_2,భారత్:_2,"xn--gecrj9c":_2,ભારત:_2,"xn--s9brj9c":_2,ਭਾਰਤ:_2,"xn--45brj9c":_2,ভারত:_2,"xn--xkc2dl3a5ee0h":_2,இந்தியா:_2,"xn--mgba3a4f16a":_2,ایران:_2,"xn--mgba3a4fra":_2,ايران:_2,"xn--mgbtx2b":_2,عراق:_2,"xn--mgbayh7gpa":_2,الاردن:_2,"xn--3e0b707e":_2,한국:_2,"xn--80ao21a":_2,қаз:_2,"xn--q7ce6a":_2,ລາວ:_2,"xn--fzc2c9e2c":_2,ලංකා:_2,"xn--xkc2al3hye2a":_2,இலங்கை:_2,"xn--mgbc0a9azcg":_2,المغرب:_2,"xn--d1alf":_2,мкд:_2,"xn--l1acc":_2,мон:_2,"xn--mix891f":_2,澳門:_2,"xn--mix082f":_2,澳门:_2,"xn--mgbx4cd0ab":_2,مليسيا:_2,"xn--mgb9awbf":_2,عمان:_2,"xn--mgbai9azgqp6j":_2,پاکستان:_2,"xn--mgbai9a5eva00b":_2,پاكستان:_2,"xn--ygbi2ammx":_2,فلسطين:_2,"xn--90a3ac":[1,{"xn--80au":_2,"xn--90azh":_2,"xn--d1at":_2,"xn--c1avg":_2,"xn--o1ac":_2,"xn--o1ach":_2}],срб:[1,{ак:_2,обр:_2,од:_2,орг:_2,пр:_2,упр:_2}],"xn--p1ai":_2,рф:_2,"xn--wgbl6a":_2,قطر:_2,"xn--mgberp4a5d4ar":_2,السعودية:_2,"xn--mgberp4a5d4a87g":_2,السعودیة:_2,"xn--mgbqly7c0a67fbc":_2,السعودیۃ:_2,"xn--mgbqly7cvafr":_2,السعوديه:_2,"xn--mgbpl2fh":_2,سودان:_2,"xn--yfro4i67o":_2,新加坡:_2,"xn--clchc0ea0b2g2a9gcd":_2,சிங்கப்பூர்:_2,"xn--ogbpf8fl":_2,سورية:_2,"xn--mgbtf8fl":_2,سوريا:_2,"xn--o3cw4h":[1,{"xn--o3cyx2a":_2,"xn--12co0c3b4eva":_2,"xn--m3ch0j3a":_2,"xn--h3cuzk1di":_2,"xn--12c1fe0br":_2,"xn--12cfi8ixb8l":_2}],ไทย:[1,{ทหาร:_2,ธุรกิจ:_2,เน็ต:_2,รัฐบาล:_2,ศึกษา:_2,องค์กร:_2}],"xn--pgbs0dh":_2,تونس:_2,"xn--kpry57d":_2,台灣:_2,"xn--kprw13d":_2,台湾:_2,"xn--nnx388a":_2,臺灣:_2,"xn--j1amh":_2,укр:_2,"xn--mgb2ddes":_2,اليمن:_2,xxx:_2,ye:_5,za:[0,{ac:_2,agric:_2,alt:_2,co:_2,edu:_2,gov:_2,grondar:_2,law:_2,mil:_2,net:_2,ngo:_2,nic:_2,nis:_2,nom:_2,org:_2,school:_2,tm:_2,web:_2}],zm:[1,{ac:_2,biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,mil:_2,net:_2,org:_2,sch:_2}],zw:[1,{ac:_2,co:_2,gov:_2,mil:_2,org:_2}],aaa:_2,aarp:_2,abb:_2,abbott:_2,abbvie:_2,abc:_2,able:_2,abogado:_2,abudhabi:_2,academy:[1,{official:_3}],accenture:_2,accountant:_2,accountants:_2,aco:_2,actor:_2,ads:_2,adult:_2,aeg:_2,aetna:_2,afl:_2,africa:_2,agakhan:_2,agency:_2,aig:_2,airbus:_2,airforce:_2,airtel:_2,akdn:_2,alibaba:_2,alipay:_2,allfinanz:_2,allstate:_2,ally:_2,alsace:_2,alstom:_2,amazon:_2,americanexpress:_2,americanfamily:_2,amex:_2,amfam:_2,amica:_2,amsterdam:_2,analytics:_2,android:_2,anquan:_2,anz:_2,aol:_2,apartments:_2,app:[1,{adaptable:_3,aiven:_3,beget:_6,brave:_7,clerk:_3,clerkstage:_3,cloudflare:_3,wnext:_3,csb:[2,{preview:_3}],convex:_3,corespeed:_3,deta:_3,ondigitalocean:_3,easypanel:_3,encr:[2,{frontend:_3}],evervault:_8,expo:[2,{staging:_3}],edgecompute:_3,"on-fleek":_3,flutterflow:_3,sprites:_3,e2b:_3,framer:_3,gadget:_3,github:_3,hosted:_6,run:[0,{"*":_3,mtls:_6}],web:_3,hackclub:_3,hasura:_3,onhercules:_3,botdash:_3,shiptoday:_3,leapcell:_3,loginline:_3,lovable:_3,luyani:_3,magicpatterns:_3,medusajs:_3,messerli:_3,miren:_3,mocha:_3,netlify:_3,ngrok:_3,"ngrok-free":_3,developer:_6,noop:_3,northflank:_6,upsun:_6,railway:[0,{up:_3}],replit:_9,nyat:_3,snowflake:[0,{"*":_3,privatelink:_6}],streamlit:_3,spawnbase:_3,telebit:_3,typedream:_3,vercel:_3,wal:_3,wasmer:_3,bookonline:_3,windsurf:_3,base44:_3,zeabur:_3,zerops:_6}],apple:[1,{int:[2,{cloud:[0,{"*":_3,r:[0,{"*":_3,"ap-north-1":_6,"ap-south-1":_6,"ap-south-2":_6,"eu-central-1":_6,"eu-north-1":_6,"us-central-1":_6,"us-central-2":_6,"us-east-1":_6,"us-east-2":_6,"us-west-1":_6,"us-west-2":_6,"us-west-3":_6}]}]}]}],aquarelle:_2,arab:_2,aramco:_2,archi:_2,army:_2,art:_2,arte:_2,asda:_2,associates:_2,athleta:_2,attorney:_2,auction:_2,audi:_2,audible:_2,audio:_2,auspost:_2,author:_2,auto:_2,autos:_2,aws:[1,{on:[0,{"af-south-1":_11,"ap-east-1":_11,"ap-northeast-1":_11,"ap-northeast-2":_11,"ap-northeast-3":_11,"ap-south-1":_11,"ap-south-2":_12,"ap-southeast-1":_11,"ap-southeast-2":_11,"ap-southeast-3":_11,"ap-southeast-4":_12,"ap-southeast-5":_12,"ca-central-1":_11,"ca-west-1":_12,"eu-central-1":_11,"eu-central-2":_12,"eu-north-1":_11,"eu-south-1":_11,"eu-south-2":_12,"eu-west-1":_11,"eu-west-2":_11,"eu-west-3":_11,"il-central-1":_12,"me-central-1":_12,"me-south-1":_11,"sa-east-1":_11,"us-east-1":_11,"us-east-2":_11,"us-west-1":_11,"us-west-2":_11,"ap-southeast-7":_13,"mx-central-1":_13,"us-gov-east-1":_14,"us-gov-west-1":_14}],sagemaker:[0,{"ap-northeast-1":_16,"ap-northeast-2":_16,"ap-south-1":_16,"ap-southeast-1":_16,"ap-southeast-2":_16,"ca-central-1":_18,"eu-central-1":_16,"eu-west-1":_16,"eu-west-2":_16,"us-east-1":_18,"us-east-2":_18,"us-west-2":_18,"af-south-1":_15,"ap-east-1":_15,"ap-northeast-3":_15,"ap-south-2":_17,"ap-southeast-3":_15,"ap-southeast-4":_17,"ca-west-1":[0,{notebook:_3,"notebook-fips":_3}],"eu-central-2":_15,"eu-north-1":_15,"eu-south-1":_15,"eu-south-2":_15,"eu-west-3":_15,"il-central-1":_15,"me-central-1":_15,"me-south-1":_15,"sa-east-1":_15,"us-gov-east-1":_19,"us-gov-west-1":_19,"us-west-1":[0,{notebook:_3,"notebook-fips":_3,studio:_3}],experiments:_6}],repost:[0,{private:_6}]}],axa:_2,azure:_2,baby:_2,baidu:_2,banamex:_2,band:_2,bank:_2,bar:_2,barcelona:_2,barclaycard:_2,barclays:_2,barefoot:_2,bargains:_2,baseball:_2,basketball:[1,{aus:_3,nz:_3}],bauhaus:_2,bayern:_2,bbc:_2,bbt:_2,bbva:_2,bcg:_2,bcn:_2,beats:_2,beauty:_2,beer:_2,berlin:_2,best:_2,bestbuy:_2,bet:_2,bharti:_2,bible:_2,bid:_2,bike:_2,bing:_2,bingo:_2,bio:_2,black:_2,blackfriday:_2,blockbuster:_2,blog:_2,bloomberg:_2,blue:_2,bms:_2,bmw:_2,bnpparibas:_2,boats:_2,boehringer:_2,bofa:_2,bom:_2,bond:_2,boo:_2,book:_2,booking:_2,bosch:_2,bostik:_2,boston:_2,bot:_2,boutique:_2,box:_2,bradesco:_2,bridgestone:_2,broadway:_2,broker:_2,brother:_2,brussels:_2,build:[1,{shiptoday:_3,v0:_3,windsurf:_3}],builders:[1,{cloudsite:_3}],business:_22,buy:_2,buzz:_2,bzh:_2,cab:_2,cafe:_2,cal:_2,call:_2,calvinklein:_2,cam:_2,camera:_2,camp:[1,{emf:[0,{at:_3}]}],canon:_2,capetown:_2,capital:_2,capitalone:_2,car:_2,caravan:_2,cards:_2,care:_2,career:_2,careers:_2,cars:_2,casa:[1,{nabu:[0,{ui:_3}]}],case:[1,{sav:_3}],cash:_2,casino:_2,catering:_2,catholic:_2,cba:_2,cbn:_2,cbre:_2,center:_2,ceo:_2,cern:_2,cfa:_2,cfd:_2,chanel:_2,channel:_2,charity:_2,chase:_2,chat:_2,cheap:_2,chintai:_2,christmas:_2,chrome:_2,church:_2,cipriani:_2,circle:_2,cisco:_2,citadel:_2,citi:_2,citic:_2,city:_2,claims:_2,cleaning:_2,click:_2,clinic:_2,clinique:_2,clothing:_2,cloud:[1,{antagonist:_3,convex:_3,elementor:_3,emergent:_3,encoway:[0,{eu:_3}],statics:_6,ravendb:_3,axarnet:[0,{"es-1":_3}],diadem:_3,jelastic:[0,{vip:_3}],jele:_3,"jenv-aruba":[0,{aruba:[0,{eur:[0,{it1:_3}]}],it1:_3}],keliweb:[2,{cs:_3}],oxa:[2,{tn:_3,uk:_3}],primetel:[2,{uk:_3}],reclaim:[0,{ca:_3,uk:_3,us:_3}],trendhosting:[0,{ch:_3,de:_3}],jote:_3,jotelulu:_3,kuleuven:_3,laravel:_3,linkyard:_3,magentosite:_6,matlab:_3,observablehq:_3,perspecta:_3,vapor:_3,"on-rancher":_6,scw:[0,{baremetal:[0,{"fr-par-1":_3,"fr-par-2":_3,"nl-ams-1":_3}],"fr-par":[0,{cockpit:_3,ddl:_3,dtwh:_3,fnc:[2,{functions:_3}],ifr:_3,k8s:_24,kafk:_3,mgdb:_3,rdb:_3,s3:_3,"s3-website":_3,scbl:_3,whm:_3}],instances:[0,{priv:_3,pub:_3}],k8s:_3,"nl-ams":[0,{cockpit:_3,ddl:_3,dtwh:_3,ifr:_3,k8s:_24,kafk:_3,mgdb:_3,rdb:_3,s3:_3,"s3-website":_3,scbl:_3,whm:_3}],"pl-waw":[0,{cockpit:_3,ddl:_3,dtwh:_3,ifr:_3,k8s:_24,kafk:_3,mgdb:_3,rdb:_3,s3:_3,"s3-website":_3,scbl:_3}],scalebook:_3,smartlabeling:_3}],servebolt:_3,onstackit:[0,{runs:_3}],trafficplex:_3,"unison-services":_3,urown:_3,voorloper:_3,zap:_3}],club:[1,{cloudns:_3,jele:_3,barsy:_3}],clubmed:_2,coach:_2,codes:[1,{owo:_6}],coffee:_2,college:_2,cologne:_2,commbank:_2,community:[1,{nog:_3,ravendb:_3,myforum:_3}],company:_2,compare:_2,computer:_2,comsec:_2,condos:_2,construction:_2,consulting:_2,contact:_2,contractors:_2,cooking:_2,cool:[1,{elementor:_3,de:_3}],corsica:_2,country:_2,coupon:_2,coupons:_2,courses:_2,cpa:_2,credit:_2,creditcard:_2,creditunion:_2,cricket:_2,crown:_2,crs:_2,cruise:_2,cruises:_2,cuisinella:_2,cymru:_2,cyou:_2,dad:_2,dance:_2,data:_2,date:_2,dating:_2,datsun:_2,day:_2,dclk:_2,dds:_2,deal:_2,dealer:_2,deals:_2,degree:_2,delivery:_2,dell:_2,deloitte:_2,delta:_2,democrat:_2,dental:_2,dentist:_2,desi:_2,design:[1,{graphic:_3,bss:_3}],dev:[1,{"12chars":_3,myaddr:_3,panel:_3,bearblog:_3,brave:_7,lcl:_6,lclstage:_6,stg:_6,stgstage:_6,pages:_3,r2:_3,workers:_3,deno:_3,"deno-staging":_3,deta:_3,lp:[2,{api:_3,objects:_3}],evervault:_8,fly:_3,githubpreview:_3,gateway:_6,grebedoc:_3,botdash:_3,inbrowser:_6,"is-a-good":_3,iserv:_3,leapcell:_3,runcontainers:_3,localcert:[0,{user:_6}],loginline:_3,barsy:_3,mediatech:_3,"mocha-sandbox":_3,modx:_3,ngrok:_3,"ngrok-free":_3,"is-a-fullstack":_3,"is-cool":_3,"is-not-a":_3,localplayer:_3,xmit:_3,"platter-app":_3,replit:[2,{archer:_3,bones:_3,canary:_3,global:_3,hacker:_3,id:_3,janeway:_3,kim:_3,kira:_3,kirk:_3,odo:_3,paris:_3,picard:_3,pike:_3,prerelease:_3,reed:_3,riker:_3,sisko:_3,spock:_3,staging:_3,sulu:_3,tarpit:_3,teams:_3,tucker:_3,wesley:_3,worf:_3}],crm:[0,{aa:_6,ab:_6,ac:_6,ad:_6,ae:_6,af:_6,ci:_6,d:_6,pa:_6,pb:_6,pc:_6,pd:_6,pe:_6,pf:_6,w:_6,wa:_6,wb:_6,wc:_6,wd:_6,we:_6,wf:_6}],erp:_50,vercel:_3,webhare:_6,hrsn:_3,"is-a":_3}],dhl:_2,diamonds:_2,diet:_2,digital:[1,{cloudapps:[2,{london:_3}]}],direct:[1,{libp2p:_3}],directory:_2,discount:_2,discover:_2,dish:_2,diy:_51,dnp:_2,docs:_2,doctor:_2,dog:_2,domains:_2,dot:_2,download:_2,drive:_2,dtv:_2,dubai:_2,dupont:_2,durban:_2,dvag:_2,dvr:_2,earth:_2,eat:_2,eco:_2,edeka:_2,education:_22,email:[1,{crisp:[0,{on:_3}],tawk:_53,tawkto:_53}],emerck:_2,energy:_2,engineer:_2,engineering:_2,enterprises:_2,epson:_2,equipment:_2,ericsson:_2,erni:_2,esq:_2,estate:[1,{compute:_6}],eurovision:_2,eus:[1,{party:_54}],events:[1,{koobin:_3,co:_3}],exchange:_2,expert:_2,exposed:_2,express:_2,extraspace:_2,fage:_2,fail:_2,fairwinds:_2,faith:_2,family:_2,fan:_2,fans:_2,farm:[1,{storj:_3}],farmers:_2,fashion:_2,fast:_2,fedex:_2,feedback:_2,ferrari:_2,ferrero:_2,fidelity:_2,fido:_2,film:_2,final:_2,finance:_2,financial:_22,fire:_2,firestone:_2,firmdale:_2,fish:_2,fishing:_2,fit:_2,fitness:_2,flickr:_2,flights:_2,flir:_2,florist:_2,flowers:_2,fly:_2,foo:_2,food:_2,football:_2,ford:_2,forex:_2,forsale:_2,forum:_2,foundation:_2,fox:_2,free:_2,fresenius:_2,frl:_2,frogans:_2,frontier:_2,ftr:_2,fujitsu:_2,fun:_2,fund:_2,furniture:_2,futbol:_2,fyi:_2,gal:_2,gallery:_2,gallo:_2,gallup:_2,game:_2,games:[1,{pley:_3,sheezy:_3}],gap:_2,garden:_2,gay:[1,{pages:_3}],gbiz:_2,gdn:[1,{cnpy:_3}],gea:_2,gent:_2,genting:_2,george:_2,ggee:_2,gift:_2,gifts:_2,gives:_2,giving:_2,glass:_2,gle:_2,global:[1,{appwrite:_3}],globo:_2,gmail:_2,gmbh:_2,gmo:_2,gmx:_2,godaddy:_2,gold:_2,goldpoint:_2,golf:_2,goo:_2,goodyear:_2,goog:[1,{cloud:_3,translate:_3,usercontent:_6}],google:_2,gop:_2,got:_2,grainger:_2,graphics:_2,gratis:_2,green:_2,gripe:_2,grocery:_2,group:_51,gucci:_2,guge:_2,guide:_2,guitars:_2,guru:_2,hair:_2,hamburg:_2,hangout:_2,haus:_2,hbo:_2,hdfc:_2,hdfcbank:_2,health:[1,{hra:_3}],healthcare:_2,help:_2,helsinki:_2,here:_2,hermes:_2,hiphop:_2,hisamitsu:_2,hitachi:_2,hiv:_2,hkt:_2,hockey:_2,holdings:_2,holiday:_2,homedepot:_2,homegoods:_2,homes:_2,homesense:_2,honda:_2,horse:_2,hospital:_2,host:[1,{cloudaccess:_3,freesite:_3,easypanel:_3,emergent:_3,fastvps:_3,myfast:_3,gadget:_3,tempurl:_3,wpmudev:_3,iserv:_3,jele:_3,mircloud:_3,bolt:_3,wp2:_3,half:_3}],hosting:[1,{opencraft:_3}],hot:_2,hotel:_2,hotels:_2,hotmail:_2,house:_2,how:_2,hsbc:_2,hughes:_2,hyatt:_2,hyundai:_2,ibm:_2,icbc:_2,ice:_2,icu:_2,ieee:_2,ifm:_2,ikano:_2,imamat:_2,imdb:_2,immo:_2,immobilien:_2,inc:_2,industries:_2,infiniti:_2,ing:_2,ink:_2,institute:_2,insurance:_2,insure:_2,international:_2,intuit:_2,investments:_2,ipiranga:_2,irish:_2,ismaili:_2,ist:_2,istanbul:_2,itau:_2,itv:_2,jaguar:_2,java:_2,jcb:_2,jeep:_2,jetzt:_2,jewelry:_2,jio:_2,jll:_2,jmp:_2,jnj:_2,joburg:_2,jot:_2,joy:_2,jpmorgan:_2,jprs:_2,juegos:_2,juniper:_2,kaufen:_2,kddi:_2,kerryhotels:_2,kerryproperties:_2,kfh:_2,kia:_2,kids:_2,kim:_2,kindle:_2,kitchen:_2,kiwi:_2,koeln:_2,komatsu:_2,kosher:_2,kpmg:_2,kpn:_2,krd:[1,{co:_3,edu:_3}],kred:_2,kuokgroup:_2,kyoto:_2,lacaixa:_2,lamborghini:_2,lamer:_2,land:_2,landrover:_2,lanxess:_2,lasalle:_2,lat:_2,latino:_2,latrobe:_2,law:_2,lawyer:_2,lds:_2,lease:_2,leclerc:_2,lefrak:_2,legal:_2,lego:_2,lexus:_2,lgbt:_2,lidl:_2,life:_2,lifeinsurance:_2,lifestyle:_2,lighting:_2,like:_2,lilly:_2,limited:_2,limo:_2,lincoln:_2,link:[1,{myfritz:_3,cyon:_3,joinmc:_3,dweb:_6,inbrowser:_6,keenetic:_3,nftstorage:_61,mypep:_3,storacha:_61,w3s:_61}],live:[1,{aem:_3,hlx:_3,ewp:_6}],living:_2,llc:_2,llp:_2,loan:_2,loans:_2,locker:_2,locus:_2,lol:[1,{omg:_3}],london:_2,lotte:_2,lotto:_2,love:_2,lpl:_2,lplfinancial:_2,ltd:_2,ltda:_2,lundbeck:_2,luxe:_2,luxury:_2,madrid:_2,maif:_2,maison:_2,makeup:_2,man:_2,management:_2,mango:_2,map:_2,market:_2,marketing:_2,markets:_2,marriott:_2,marshalls:_2,mattel:_2,mba:_2,mckinsey:_2,med:_2,media:_62,meet:_2,melbourne:_2,meme:_2,memorial:_2,men:_2,menu:[1,{barsy:_3,barsyonline:_3}],merck:_2,merckmsd:_2,miami:_2,microsoft:_2,mini:_2,mint:_2,mit:_2,mitsubishi:_2,mlb:_2,mls:_2,mma:_2,mobile:_2,moda:_2,moe:_2,moi:_2,mom:_2,monash:_2,money:_2,monster:_2,mormon:_2,mortgage:_2,moscow:_2,moto:_2,motorcycles:_2,mov:_2,movie:_2,msd:_2,mtn:_2,mtr:_2,music:_2,nab:_2,nagoya:_2,navy:_2,nba:_2,nec:_2,netbank:_2,netflix:_2,network:[1,{aem:_3,alces:_6,appwrite:_3,co:_3,arvo:_3,azimuth:_3,tlon:_3}],neustar:_2,new:_2,news:[1,{noticeable:_3}],next:_2,nextdirect:_2,nexus:_2,nfl:_2,ngo:_2,nhk:_2,nico:_2,nike:_2,nikon:_2,ninja:_2,nissan:_2,nissay:_2,nokia:_2,norton:_2,now:_2,nowruz:_2,nowtv:_2,nra:_2,nrw:_2,ntt:_2,nyc:_2,obi:_2,observer:_2,office:_2,okinawa:_2,olayan:_2,olayangroup:_2,ollo:_2,omega:_2,one:[1,{kin:_6,service:_3,website:_3}],ong:_2,onl:_2,online:[1,{eero:_3,"eero-stage":_3,websitebuilder:_3,leapcell:_3,barsy:_3}],ooo:_2,open:_2,oracle:_2,orange:[1,{tech:_3}],organic:_2,origins:_2,osaka:_2,otsuka:_2,ott:_2,ovh:[1,{nerdpol:_3}],page:[1,{aem:_3,hlx:_3,codeberg:_3,deuxfleurs:_3,heyflow:_3,prvcy:_3,rocky:_3,statichost:_3,pdns:_3,plesk:_3}],panasonic:_2,paris:_2,pars:_2,partners:_2,parts:_2,party:_2,pay:_2,pccw:_2,pet:_2,pfizer:_2,pharmacy:_2,phd:_2,philips:_2,phone:_2,photo:_2,photography:_2,photos:_62,physio:_2,pics:_2,pictet:_2,pictures:[1,{1337:_3}],pid:_2,pin:_2,ping:_2,pink:_2,pioneer:_2,pizza:[1,{ngrok:_3}],place:_22,play:_2,playstation:_2,plumbing:_2,plus:[1,{playit:[2,{at:_6,with:_3}]}],pnc:_2,pohl:_2,poker:_2,politie:_2,porn:_2,praxi:_2,press:_2,prime:_2,prod:_2,productions:_2,prof:_2,progressive:_2,promo:_2,properties:_2,property:_2,protection:_2,pru:_2,prudential:_2,pub:[1,{id:_6,kin:_6,barsy:_3}],pwc:_2,qpon:_2,quebec:_2,quest:_2,racing:_2,radio:_2,read:_2,realestate:_2,realtor:_2,realty:_2,recipes:_2,red:_2,redumbrella:_2,rehab:_2,reise:_2,reisen:_2,reit:_2,reliance:_2,ren:_2,rent:_2,rentals:_2,repair:_2,report:_2,republican:_2,rest:_2,restaurant:_2,review:_2,reviews:[1,{aem:_3}],rexroth:_2,rich:_2,richardli:_2,ricoh:_2,ril:_2,rio:_2,rip:[1,{clan:_3}],rocks:[1,{myddns:_3,stackit:_3,"lima-city":_3,webspace:_3}],rodeo:_2,rogers:_2,room:_2,rsvp:_2,rugby:_2,ruhr:_2,run:[1,{appwrite:_6,canva:_3,development:_3,ravendb:_3,liara:[2,{iran:_3}],lovable:_3,needle:_3,build:_6,code:_6,database:_6,migration:_6,onporter:_3,repl:_3,stackit:_3,val:_50,vercel:_3,wix:_3}],rwe:_2,ryukyu:_2,saarland:_2,safe:_2,safety:_2,sakura:_2,sale:_2,salon:_2,samsclub:_2,samsung:_2,sandvik:_2,sandvikcoromant:_2,sanofi:_2,sap:_2,sarl:_2,sas:_2,save:_2,saxo:_2,sbi:_2,sbs:_2,scb:_2,schaeffler:_2,schmidt:_2,scholarships:_2,school:_2,schule:_2,schwarz:_2,science:_2,scot:[1,{co:_3,me:_3,org:_3,gov:[2,{service:_3}]}],search:_2,seat:_2,secure:_2,security:_2,seek:_2,select:_2,sener:_2,services:[1,{loginline:_3}],seven:_2,sew:_2,sex:_2,sexy:_2,sfr:_2,shangrila:_2,sharp:_2,shell:_2,shia:_2,shiksha:_2,shoes:_2,shop:[1,{base:_3,hoplix:_3,barsy:_3,barsyonline:_3,shopware:_3}],shopping:_2,shouji:_2,show:_2,silk:_2,sina:_2,singles:_2,site:[1,{square:_3,canva:_25,cloudera:_6,convex:_3,cyon:_3,caffeine:_3,fastvps:_3,figma:_3,"figma-gov":_3,preview:_3,heyflow:_3,jele:_3,jouwweb:_3,loginline:_3,barsy:_3,co:_3,notion:_3,omniwe:_3,opensocial:_3,madethis:_3,support:_3,platformsh:_6,tst:_6,byen:_3,sol:_3,srht:_3,novecore:_3,cpanel:_3,wpsquared:_3,sourcecraft:_3}],ski:_2,skin:_2,sky:_2,skype:_2,sling:_2,smart:_2,smile:_2,sncf:_2,soccer:_2,social:_2,softbank:_2,software:_2,sohu:_2,solar:_2,solutions:_2,song:_2,sony:_2,soy:_2,spa:_2,space:[1,{myfast:_3,heiyu:_3,hf:[2,{static:_3}],"app-ionos":_3,project:_3,uber:_3,xs4all:_3}],sport:_2,spot:_2,srl:_2,stada:_2,staples:_2,star:_2,statebank:_2,statefarm:_2,stc:_2,stcgroup:_2,stockholm:_2,storage:_2,store:[1,{barsy:_3,sellfy:_3,shopware:_3,storebase:_3}],stream:_2,studio:_2,study:_2,style:_2,sucks:_2,supplies:_2,supply:_2,support:[1,{barsy:_3}],surf:_2,surgery:_2,suzuki:_2,swatch:_2,swiss:_2,sydney:_2,systems:[1,{knightpoint:_3,miren:_3}],tab:_2,taipei:_2,talk:_2,taobao:_2,target:_2,tatamotors:_2,tatar:_2,tattoo:_2,tax:_2,taxi:_2,tci:_2,tdk:_2,team:[1,{discourse:_3,jelastic:_3}],tech:[1,{cleverapps:_3}],technology:_22,temasek:_2,tennis:_2,teva:_2,thd:_2,theater:_2,theatre:_2,tiaa:_2,tickets:_2,tienda:_2,tips:_2,tires:_2,tirol:_2,tjmaxx:_2,tjx:_2,tkmaxx:_2,tmall:_2,today:[1,{prequalifyme:_3}],tokyo:_2,tools:[1,{addr:_49,myaddr:_3}],top:[1,{ntdll:_3,wadl:_6}],toray:_2,toshiba:_2,total:_2,tours:_2,town:_2,toyota:_2,toys:_2,trade:_2,trading:_2,training:_2,travel:_2,travelers:_2,travelersinsurance:_2,trust:_2,trv:_2,tube:_2,tui:_2,tunes:_2,tushu:_2,tvs:_2,ubank:_2,ubs:_2,unicom:_2,university:_2,uno:_2,uol:_2,ups:_2,vacations:_2,vana:_2,vanguard:_2,vegas:_2,ventures:_2,verisign:_2,versicherung:_2,vet:_2,viajes:_2,video:_2,vig:_2,viking:_2,villas:_2,vin:_2,vip:[1,{hidns:_3}],virgin:_2,visa:_2,vision:_2,viva:_2,vivo:_2,vlaanderen:_2,vodka:_2,volvo:_2,vote:_2,voting:_2,voto:_2,voyage:_2,wales:_2,walmart:_2,walter:_2,wang:_2,wanggou:_2,watch:_2,watches:_2,weather:_2,weatherchannel:_2,webcam:_2,weber:_2,website:_62,wed:_2,wedding:_2,weibo:_2,weir:_2,whoswho:_2,wien:_2,wiki:_62,williamhill:_2,win:_2,windows:_2,wine:_2,winners:_2,wme:_2,wolterskluwer:_2,woodside:_2,work:[1,{"imagine-proxy":_3}],works:_2,world:_2,wow:_2,wtc:_2,wtf:_2,xbox:_2,xerox:_2,xihuan:_2,xin:_2,"xn--11b4c3d":_2,कॉम:_2,"xn--1ck2e1b":_2,セール:_2,"xn--1qqw23a":_2,佛山:_2,"xn--30rr7y":_2,慈善:_2,"xn--3bst00m":_2,集团:_2,"xn--3ds443g":_2,在线:_2,"xn--3pxu8k":_2,点看:_2,"xn--42c2d9a":_2,คอม:_2,"xn--45q11c":_2,八卦:_2,"xn--4gbrim":_2,موقع:_2,"xn--55qw42g":_2,公益:_2,"xn--55qx5d":_2,公司:_2,"xn--5su34j936bgsg":_2,香格里拉:_2,"xn--5tzm5g":_2,网站:_2,"xn--6frz82g":_2,移动:_2,"xn--6qq986b3xl":_2,我爱你:_2,"xn--80adxhks":_2,москва:_2,"xn--80aqecdr1a":_2,католик:_2,"xn--80asehdb":_2,онлайн:_2,"xn--80aswg":_2,сайт:_2,"xn--8y0a063a":_2,联通:_2,"xn--9dbq2a":_2,קום:_2,"xn--9et52u":_2,时尚:_2,"xn--9krt00a":_2,微博:_2,"xn--b4w605ferd":_2,淡马锡:_2,"xn--bck1b9a5dre4c":_2,ファッション:_2,"xn--c1avg":_2,орг:_2,"xn--c2br7g":_2,नेट:_2,"xn--cck2b3b":_2,ストア:_2,"xn--cckwcxetd":_2,アマゾン:_2,"xn--cg4bki":_2,삼성:_2,"xn--czr694b":_2,商标:_2,"xn--czrs0t":_2,商店:_2,"xn--czru2d":_2,商城:_2,"xn--d1acj3b":_2,дети:_2,"xn--eckvdtc9d":_2,ポイント:_2,"xn--efvy88h":_2,新闻:_2,"xn--fct429k":_2,家電:_2,"xn--fhbei":_2,كوم:_2,"xn--fiq228c5hs":_2,中文网:_2,"xn--fiq64b":_2,中信:_2,"xn--fjq720a":_2,娱乐:_2,"xn--flw351e":_2,谷歌:_2,"xn--fzys8d69uvgm":_2,電訊盈科:_2,"xn--g2xx48c":_2,购物:_2,"xn--gckr3f0f":_2,クラウド:_2,"xn--gk3at1e":_2,通販:_2,"xn--hxt814e":_2,网店:_2,"xn--i1b6b1a6a2e":_2,संगठन:_2,"xn--imr513n":_2,餐厅:_2,"xn--io0a7i":_2,网络:_2,"xn--j1aef":_2,ком:_2,"xn--jlq480n2rg":_2,亚马逊:_2,"xn--jvr189m":_2,食品:_2,"xn--kcrx77d1x4a":_2,飞利浦:_2,"xn--kput3i":_2,手机:_2,"xn--mgba3a3ejt":_2,ارامكو:_2,"xn--mgba7c0bbn0a":_2,العليان:_2,"xn--mgbab2bd":_2,بازار:_2,"xn--mgbca7dzdo":_2,ابوظبي:_2,"xn--mgbi4ecexp":_2,كاثوليك:_2,"xn--mgbt3dhd":_2,همراه:_2,"xn--mk1bu44c":_2,닷컴:_2,"xn--mxtq1m":_2,政府:_2,"xn--ngbc5azd":_2,شبكة:_2,"xn--ngbe9e0a":_2,بيتك:_2,"xn--ngbrx":_2,عرب:_2,"xn--nqv7f":_2,机构:_2,"xn--nqv7fs00ema":_2,组织机构:_2,"xn--nyqy26a":_2,健康:_2,"xn--otu796d":_2,招聘:_2,"xn--p1acf":[1,{"xn--90amc":_3,"xn--j1aef":_3,"xn--j1ael8b":_3,"xn--h1ahn":_3,"xn--j1adp":_3,"xn--c1avg":_3,"xn--80aaa0cvac":_3,"xn--h1aliz":_3,"xn--90a1af":_3,"xn--41a":_3}],рус:[1,{биз:_3,ком:_3,крым:_3,мир:_3,мск:_3,орг:_3,самара:_3,сочи:_3,спб:_3,я:_3}],"xn--pssy2u":_2,大拿:_2,"xn--q9jyb4c":_2,みんな:_2,"xn--qcka1pmc":_2,グーグル:_2,"xn--rhqv96g":_2,世界:_2,"xn--rovu88b":_2,書籍:_2,"xn--ses554g":_2,网址:_2,"xn--t60b56a":_2,닷넷:_2,"xn--tckwe":_2,コム:_2,"xn--tiq49xqyj":_2,天主教:_2,"xn--unup4y":_2,游戏:_2,"xn--vermgensberater-ctb":_2,vermögensberater:_2,"xn--vermgensberatung-pwb":_2,vermögensberatung:_2,"xn--vhquv":_2,企业:_2,"xn--vuq861b":_2,信息:_2,"xn--w4r85el8fhu5dnra":_2,嘉里大酒店:_2,"xn--w4rs40l":_2,嘉里:_2,"xn--xhq521b":_2,广东:_2,"xn--zfr164b":_2,政务:_2,xyz:[1,{caffeine:_3,botdash:_3,telebit:_6}],yachts:_2,yahoo:_2,yamaxun:_2,yandex:_2,yodobashi:_2,yoga:_2,yokohama:_2,you:_2,youtube:_2,yun:_2,zappos:_2,zara:_2,zero:_2,zip:_2,zone:[1,{triton:_6,stackit:_3,lima:_3}],zuerich:_2}]})();function lookupInTrie(parts,trie,index,allowedMask){let result=null,node=trie;for(;node!==void 0&&((node[0]&allowedMask)!==0&&(result={index:index+1,isIcann:(node[0]&1)!==0,isPrivate:(node[0]&2)!==0}),index!==-1);){let succ=node[1];node=Object.prototype.hasOwnProperty.call(succ,parts[index])?succ[parts[index]]:succ["*"],index-=1}return result}function suffixLookup(hostname3,options,out){var _a2;if(fastPathLookup(hostname3,options,out))return;let hostnameParts=hostname3.split("."),allowedMask=(options.allowPrivateDomains?2:0)|(options.allowIcannDomains?1:0),exceptionMatch=lookupInTrie(hostnameParts,exceptions,hostnameParts.length-1,allowedMask);if(exceptionMatch!==null){out.isIcann=exceptionMatch.isIcann,out.isPrivate=exceptionMatch.isPrivate,out.publicSuffix=hostnameParts.slice(exceptionMatch.index+1).join(".");return}let rulesMatch=lookupInTrie(hostnameParts,rules,hostnameParts.length-1,allowedMask);if(rulesMatch!==null){out.isIcann=rulesMatch.isIcann,out.isPrivate=rulesMatch.isPrivate,out.publicSuffix=hostnameParts.slice(rulesMatch.index).join(".");return}out.isIcann=!1,out.isPrivate=!1,out.publicSuffix=(_a2=hostnameParts[hostnameParts.length-1])!==null&&_a2!==void 0?_a2:null}var RESULT=getEmptyResult();function parse4(url2,options={}){return parseImpl(url2,5,suffixLookup,options,getEmptyResult())}function getHostname(url2,options={}){return resetResult(RESULT),parseImpl(url2,0,suffixLookup,options,RESULT).hostname}function getPublicSuffix2(url2,options={}){return resetResult(RESULT),parseImpl(url2,2,suffixLookup,options,RESULT).publicSuffix}function getDomain3(url2,options={}){return resetResult(RESULT),parseImpl(url2,3,suffixLookup,options,RESULT).domain}function getSubdomain(url2,options={}){return resetResult(RESULT),parseImpl(url2,4,suffixLookup,options,RESULT).subdomain}function getDomainWithoutSuffix(url2,options={}){return resetResult(RESULT),parseImpl(url2,5,suffixLookup,options,RESULT).domainWithoutSuffix}exports.getDomain=getDomain3;exports.getDomainWithoutSuffix=getDomainWithoutSuffix;exports.getHostname=getHostname;exports.getPublicSuffix=getPublicSuffix2;exports.getSubdomain=getSubdomain;exports.parse=parse4}});function getRequestCookiePartition(url2){let target=new URL(url2),domain2=(0,import_tldts.getDomain)(target.hostname,{allowPrivateDomains:!0})??target.hostname;return{topLevelSite:`${target.protocol}//${domain2}`,hasCrossSiteAncestor:!1}}function selectRequestCookies(cookies,url2){let partition=getRequestCookiePartition(url2);return filterCookiesForUrl(cookies,url2).filter(cookie=>{if(cookie.partitionKeyOpaque===!0)return!1;if(cookie.partitionKey===void 0)return!0;if(!cookie.partitionKey||typeof cookie.partitionKey!="object")return!1;let key=cookie.partitionKey;return key.topLevelSite===partition.topLevelSite&&(key.hasCrossSiteAncestor===void 0||key.hasCrossSiteAncestor===!1)}).sort((left,right)=>right.path.length-left.path.length)}function serializeRequestCookies(cookies){return cookies.map(cookie=>`${cookie.name}=${cookie.value}`).join("; ")}function requestCookiesToMap(cookies){let values=new Map;for(let cookie of cookies)values.has(cookie.name)||values.set(cookie.name,cookie.value);return values}function normalizeCookieDomain(input2,action){let value=input2.trim();if(!value)throw new Error(`${action}: "domain" must be a non-empty domain`);let hostname3;try{hostname3=new URL(value.includes("://")?value:`https://${value}`).hostname}catch{throw new Error(`${action}: invalid domain "${input2}"`)}if(hostname3=hostname3.toLowerCase().replace(/^\.+/,"").replace(/\.+$/,""),!hostname3)throw new Error(`${action}: invalid domain "${input2}"`);return hostname3}function isSecureCookieUrl(url2){let hostname3=url2.hostname.replace(/\.$/,""),isLocalhost=hostname3==="localhost"||hostname3.endsWith(".localhost")||hostname3==="[::1]"||/^127\.\d+\.\d+\.\d+$/.test(hostname3);return url2.protocol==="https:"||isLocalhost}function filterCookiesForUrl(cookies,cookieUrl){let url2=new URL(cookieUrl);return cookies.filter(item=>{let domain2=item.domain.replace(/^\./,"").toLowerCase(),hostOnly=item.hostOnly??!item.domain.startsWith(".");return url2.hostname!==domain2&&(hostOnly||!url2.hostname.endsWith(`.${domain2}`))||item.secure&&!isSecureCookieUrl(url2)?!1:url2.pathname===item.path||url2.pathname.startsWith(item.path)&&(item.path.endsWith("/")||url2.pathname[item.path.length]==="/")})}function selectReadableCookie(cookies,target){let cookie=cookies.filter(item=>{if(item.partitionKey!==void 0||item.partitionKeyOpaque===!0||item.name!==target.cookieName)return!1;let domain2=item.domain.replace(/^\./,"").toLowerCase();return!(target.domain&&domain2!==target.domain||target.path&&item.path!==target.path)}).sort((left,right)=>{let pathDifference=right.path.length-left.path.length;return pathDifference!==0?pathDifference:right.domain.length-left.domain.length})[0];if(cookie?.httpOnly)throw new Error(`get_cookie: "${target.cookieName}" is HttpOnly and cannot be read`);return cookie}function validateCookieName(input2,action){if(typeof input2!="string"||!input2.trim())throw new Error(`${action}: "name" is required`);let name=input2.trim();if(name.length>256||!/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(name))throw new Error(`${action}: "name" contains unsupported cookie characters`);return name}function validateCookieValue(input2){if(typeof input2!="string")throw new Error('set_cookie: "value" must be a string');let hasUnsupportedCharacter=[...input2].some(character=>{let code=character.charCodeAt(0);return code<=32||code===127||character===";"||character===","});if(input2.length>4096||hasUnsupportedCharacter)throw new Error('set_cookie: "value" contains unsupported cookie characters');return input2}function validateCookiePath(input2,action){if(input2===void 0)return;if(typeof input2!="string"||!input2.startsWith("/"))throw new Error(`${action}: "path" must start with "/"`);let hasUnsupportedCharacter=[...input2].some(character=>{let code=character.charCodeAt(0);return code<32||code===127||character===";"});if(input2.length>1024||hasUnsupportedCharacter)throw new Error(`${action}: "path" contains unsupported cookie characters`);return input2}function parseCurrentUrl(currentUrl,action){if(!currentUrl)throw new Error(`${action}: specify url or tabId`);let url2;try{url2=new URL(currentUrl)}catch{throw new Error(`${action}: invalid current page URL "${currentUrl}"`)}if(url2.protocol!=="http:"&&url2.protocol!=="https:")throw new Error(`${action}: current page must use http or https`);return url2}function resolveCookieUrl(currentUrl,input2,action){if(input2.url!==void 0&&(typeof input2.url!="string"||!input2.url.trim()))throw new Error(`${action}: "url" must be a non-empty string`);let url2=parseCurrentUrl(input2.url??currentUrl,action);if(input2.url!==void 0&&(url2.username||url2.password))throw new Error(`${action}: "url" must not contain credentials`);return url2}function resolveExplicitDomain(url2,input2,action){if(input2!==void 0&&typeof input2!="string")throw new Error(`${action}: "domain" must be a string`);let explicitDomain=typeof input2=="string"&&input2?normalizeCookieDomain(input2,action):void 0;if(explicitDomain&&url2.hostname.toLowerCase()!==explicitDomain&&!url2.hostname.toLowerCase().endsWith(`.${explicitDomain}`))throw new Error(`${action}: domain "${explicitDomain}" is not a parent domain of target host "${url2.hostname.toLowerCase()}"`);return explicitDomain}function resolveGetCookieTarget(currentUrl,input2){let action="get_cookie",url2=resolveCookieUrl(currentUrl,input2,action),name=validateCookieName(input2?.name,action),domain2=resolveExplicitDomain(url2,input2?.domain,action),path27=validateCookiePath(input2?.path,action);return{cookieName:name,cookieUrl:`${url2.protocol}//${url2.hostname}${(path27??url2.pathname)||"/"}`,...domain2?{domain:domain2}:{},...path27?{path:path27}:{}}}function resolveSetCookieTarget(currentUrl,input2){let action="set_cookie",url2=resolveCookieUrl(currentUrl,input2,action),name=validateCookieName(input2?.name,action),value=validateCookieValue(input2?.value),path27=validateCookiePath(input2?.path,action)??"/";if(input2.reload!==void 0&&typeof input2.reload!="boolean")throw new Error('set_cookie: "reload" must be a boolean');let explicitDomain=resolveExplicitDomain(url2,input2?.domain,action),domain2=explicitDomain??url2.hostname.toLowerCase();return{cookieName:name,cookieValue:value,...explicitDomain?{cookieDomain:explicitDomain.includes(".")?`.${explicitDomain}`:explicitDomain}:{},cookieUrl:`${url2.protocol}//${url2.hostname.toLowerCase()}${path27}`,domain:domain2,path:path27,reload:input2.reload===!0}}var import_tldts,init_cookie=__esm({"../browser-core/dist/cookie.js"(){"use strict";import_tldts=__toESM(require_cjs(),1)}});function resolveMtopRequest(data){let{api,data:requestData={},version:version3="1.0",method="GET",appKey="12574478",env="prod",timeout=1e4,headers:customHeaders={},ttid}=data;if(!api||typeof api!="string"||api.trim()==="")throw new Error('Invalid api: api must be a non-empty string (e.g. "mtop.trade.order.create")');let baseHost=MTOP_HOST_MAP[env.toLowerCase()];if(!baseHost)throw new Error(`Invalid env: "${env}". Supported values: ${Object.keys(MTOP_HOST_MAP).join(", ")}`);let normalizedMethod=method.toUpperCase();if(normalizedMethod!=="GET"&&normalizedMethod!=="POST")throw new Error(`Invalid method: ${method}. mtop only supports GET or POST`);if(!Number.isFinite(timeout)||timeout<=0)throw new Error("Invalid timeout: timeout must be a positive number");return{api,requestData,dataStr:typeof requestData=="string"?requestData:JSON.stringify(requestData),version:version3,normalizedMethod,appKey,gatewayUrl:new URL(`https://${baseHost}/h5/${api}/${version3}/`),customHeaders,ttid,timeout,isMopen:api.startsWith("mopen.")}}function prepareSignedMtopRequest(resolved,cookies,stream=!1,timestamp=Date.now()){let cookieMap=cookies instanceof Map?cookies:requestCookiesToMap(cookies),token=extractMtopToken(cookieMap,resolved.isMopen),sign=computeMtopSign({api:resolved.api,version:resolved.version,timestamp,appKey:resolved.appKey,token,dataStr:resolved.dataStr,isMopen:resolved.isMopen}),targetUrl=new URL(resolved.gatewayUrl),queryParams={jsv:"2.7.2",appKey:resolved.appKey,t:timestamp.toString(),sign,api:resolved.api,v:resolved.version,type:"originaljson",dataType:"json"};stream&&(queryParams.xAcceptStream="true"),resolved.ttid&&(queryParams.ttid=resolved.ttid),resolved.normalizedMethod==="GET"&&(queryParams.data=resolved.dataStr);for(let[name,value]of Object.entries(queryParams))targetUrl.searchParams.set(name,value);let requestHeaders={Accept:stream?"text/event-stream":"application/json",...resolved.customHeaders},body;return resolved.normalizedMethod==="POST"&&(body=new URLSearchParams({data:resolved.dataStr}).toString(),requestHeaders["Content-Type"]="application/x-www-form-urlencoded"),{...resolved,targetUrl,requestHeaders,cookieHeader:cookies instanceof Map?buildCookieHeaderValue(cookies):serializeRequestCookies(cookies),body}}function parseMtopResponseText(text3){try{return JSON.parse(text3)}catch{let jsonpMatch=text3.match(/^[^(]*\((.*)\)\s*;?\s*$/s);if(!jsonpMatch?.[1])return text3;try{return JSON.parse(jsonpMatch[1])}catch{return text3}}}function summarizeMtopStreamError(body){if(body&&typeof body=="object"){let record4=body;if(Array.isArray(record4.ret))return record4.ret.map(String).join(", ");if(typeof record4.message=="string")return record4.message}return((typeof body=="string"?body:JSON.stringify(body))??String(body)).slice(0,500)}async function consumeMtopSseResponse(response,onReceive){let contentType2=response.headers.get("content-type")??"";if(!response.ok||!response.body||!contentType2.includes("text/event-stream")){let body=parseMtopResponseText(await response.text());throw new Error(`Unexpected MTOP stream response: ${summarizeMtopStreamError(body)}`)}let reader=response.body.getReader(),decoder=new TextDecoder,parser=createSseEventParser(),lastData=null,emit=async(text3,finished=!1)=>{let events=[...parser.push(text3),...finished?parser.finish():[]];for(let event of events)lastData=event.data,await onReceive(event)};for(;;){let{done,value}=await reader.read();if(done)return await emit(decoder.decode(),!0),lastData;await emit(decoder.decode(value,{stream:!0}))}}var init_mtopRequest=__esm({"../browser-core/dist/mtopRequest.js"(){"use strict";init_mtopSigner();init_sseParser();init_cookie()}});function parseRequestData(data){if(typeof data!="string")return data;try{return JSON.parse(data)}catch{return data}}function parseQueryString(url2){let queryString=[];try{new URL(url2).searchParams.forEach((value,name)=>queryString.push({name,value}))}catch{}return queryString}function redactSensitiveHeaders(headers){let sensitiveNames=new Set(["authorization","cookie","proxy-authorization"]);return headers.map(header=>sensitiveNames.has(header.name.toLowerCase())?{...header,value:"<redacted>"}:header)}function createMtopStreamCapture(data){let timestampMs2=data.timestampMs??Date.now(),url2=data.url??`mtop://${data.api}/`;return{startTimeMs:timestampMs2,request:{id:data.id,timestamp:new Date(timestampMs2).toISOString(),timestampMs:timestampMs2,method:data.method,url:url2,apiName:data.api,status:0,statusText:"SSE Streaming",headers:redactSensitiveHeaders(data.requestHeaders??[]),responseHeaders:[],queryString:parseQueryString(url2),postData:parseRequestData(data.requestData??null),responseBody:[],isProxy:!0,proxyRequestUrl:null,proxyData:null,isSSE:!0,isPending:!0,...data.tabId!==void 0?{tabId:data.tabId}:{},source:"mtop",resourceType:"fetch",captureSequence:data.captureSequence}}}function updateMtopStreamCaptureResponse(capture,response){capture.request.status=response.status,capture.request.statusText=response.statusText,capture.request.responseHeaders=response.responseHeaders}function appendMtopStreamCaptureChunk(capture,data,timestampMs2=Date.now()){return Array.isArray(capture.request.responseBody)?(capture.request.responseBody.push({event:"message",data,timestamp:timestampMs2,duration:capture.lastMessageTimeMs===void 0?0:timestampMs2-capture.lastMessageTimeMs}),capture.lastMessageTimeMs=timestampMs2,!0):!1}function finishMtopStreamCapture(capture,options={}){let timestampMs2=options.timestampMs??Date.now();if(capture.request.isPending=!1,capture.request.duration=Math.max(0,timestampMs2-capture.startTimeMs),options.error){capture.request.statusText=options.error,Array.isArray(capture.request.responseBody)&&capture.request.responseBody.length===0&&(capture.request.responseBody={error:options.error});return}capture.request.status===0&&(capture.request.status=200),(!capture.request.statusText||capture.request.statusText==="SSE Streaming")&&(capture.request.statusText="OK")}var init_mtopStreamCapture=__esm({"../browser-core/dist/mtopStreamCapture.js"(){"use strict"}});function isAppProfileUserInfoUrl(url2){try{let target=new URL(url2);return(target.protocol==="http:"||target.protocol==="https:")&&(target.hostname==="taobao.com"||target.hostname.endsWith(".taobao.com"))}catch{return!1}}function decodeCookieValue(raw){let value=raw;for(let index=0;index<2;index+=1)try{let decoded=decodeURIComponent(value);if(decoded===value)break;value=decoded}catch{break}return value.replace(/\\u([0-9a-f]{4})/gi,(_match,hex3)=>String.fromCharCode(Number.parseInt(hex3,16)))}function firstCookieValue(cookies,name){let value=cookies.find(cookie=>cookie.name===name&&cookie.value&&cookie.value!=="null")?.value;return value?decodeCookieValue(value):""}function resolveAppProfileUserInfo(url2,cookies){if(!isAppProfileUserInfoUrl(url2))return{};let userId=firstCookieValue(cookies,"unb"),userName=["_w_tb_nick","_nk_","snk","tracknick"].map(name=>firstCookieValue(cookies,name)).find(Boolean);return{...userId&&{userId},...userName&&{userName}}}var init_appProfileUserInfo=__esm({"../browser-core/dist/appProfileUserInfo.js"(){"use strict"}});function isTrackingUrl(url2){return APLUS_URL_PATTERN.test(url2)||RUM_URL_PATTERN.test(url2)||ARMS_URL_PATTERN.test(url2)||/retcode\.alicdn\.com|beacon\.taobao\.com|tbsec\./i.test(url2)}function formatTimestamp(ms){let d=new Date(ms),pad=n=>String(n).padStart(2,"0");return`${d.getFullYear()}/${pad(d.getMonth()+1)}/${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`}function parseParams(value){let params={};return value.split("&").forEach(pair=>{let eqIndex=pair.indexOf("=");if(eqIndex===-1)return;let rawKey=pair.slice(0,eqIndex),rawValue=pair.slice(eqIndex+1);try{params[decodeURIComponent(rawKey)]=rawValue}catch{params[rawKey]=rawValue}}),params}function decodeParamValue(value){try{return decodeURIComponent(value)}catch{return value}}function parseJsonParamValue(value){try{return JSON.parse(value)}catch{let decoded=decodeParamValue(value);if(decoded===value)return;try{return JSON.parse(decoded)}catch{return}}}function parseUrlParams(search){let encodedParams=parseParams(search.startsWith("?")?search.slice(1):search);return Object.fromEntries(Object.entries(encodedParams).map(([key,value])=>[key,decodeParamValue(value)]))}function extractSpmFromUrl(spmOrUrl){if(!/^https?:\/\//i.test(spmOrUrl))return spmOrUrl;try{return new URL(spmOrUrl).searchParams.get("spm")??spmOrUrl}catch{return spmOrUrl}}function resolveAplusSpm(eventType,raw){let expSpm=(Array.isArray(raw.expdata)?raw.expdata:[])[0]?.spm||"",gokeyParams=parseParams(raw.gokey||""),gokeySpm=decodeParamValue(gokeyParams.spm||""),rawSpmUrl=raw["spm-url"]||decodeParamValue(gokeyParams["spm-url"]||""),spmUrl=extractSpmFromUrl(rawSpmUrl),pointSpm;switch(eventType){case"CLK":pointSpm=gokeySpm||expSpm;break;case"EXP":pointSpm=expSpm;break;case"PV":pointSpm=spmUrl;break;default:pointSpm=gokeySpm||expSpm}return{mainSpm:pointSpm,highlightSpm:pointSpm}}function parseAplusRequest(url2,options={}){if(!APLUS_URL_PATTERN.test(url2))return null;let urlObj;try{urlObj=new URL(url2)}catch{return null}let params=parseUrlParams(urlObj.search),gmkey=params.gmkey??"UNKNOWN",urlPathName=urlObj.pathname.slice(1),eventType=urlPathName.split(".")[1]==="selfdefine"?"SDF":gmkey,gokeyRaw=params.gokey??"",gokeyParams=parseParams(gokeyRaw),expdata=[];if(gokeyParams.expdata){let parsedExpdata=parseJsonParamValue(gokeyParams.expdata);Array.isArray(parsedExpdata)&&(expdata=parsedExpdata.map(item=>{if(!item?.exargs||typeof item.exargs!="object")return item;let decoded={};for(let[key,value]of Object.entries(item.exargs)){if(typeof value!="string"){decoded[key]=value;continue}let parsedValue=parseJsonParamValue(value);decoded[key]=parsedValue===void 0?value:parsedValue}return{...item,exargs:decoded}}))}let rawBizArgs=gokeyParams.bizArgs,parsedBizArgs=rawBizArgs===void 0?void 0:parseJsonParamValue(rawBizArgs),bizArgs=parsedBizArgs===void 0?rawBizArgs:parsedBizArgs,pageUrl=params._p_url??(gokeyParams._p_url?decodeParamValue(gokeyParams._p_url):""),{gokey:rawGokey,...topLevelParams}=params,rawData={...topLevelParams,_path:urlPathName,_url:url2,gokey:rawGokey,...expdata.length>0?{expdata}:{},...bizArgs!==void 0?{bizArgs}:{}},spm=resolveAplusSpm(eventType,rawData).mainSpm,pathName=urlPathName.split(".").slice(1).join("."),eventName=eventType==="SDF"?pathName:spm||pathName||pageUrl,now=options.now??Date.now();return{id:`aplus-${options.sequence??++aplusCounter}-${now}`,source:"aplus",batchId:0,batchTimestampMs:now,batchTimestamp:formatTimestamp(now),event_type:eventType,name:eventName,url:url2,timestamp:now,_raw:rawData,_context:{requestUrl:url2,app:{},user:{...params.uidaplus?{uidaplus:params.uidaplus}:{},...params._gr_uid_?{_gr_uid_:params._gr_uid_}:{}},session:{},view:{...params["spm-url"]?{"spm-url":params["spm-url"]}:{},...params["spm-pre"]?{"spm-pre":params["spm-pre"]}:{},...params["spm-cnt"]?{"spm-cnt":params["spm-cnt"]}:{},...pageUrl?{page_url:pageUrl}:{}},properties:{},os:{},net:{}}}}function parseRumBody(postData){if(!postData)return null;if(typeof postData=="object")return postData;try{return JSON.parse(postData)}catch{return null}}function tryConvertI18nTracker(event,base){let normalizedType=RUM_TYPE_ALIAS[event.type]??event.type;if(event.event_type!=="action"||normalizedType!=="custom")return null;let snapshots;try{snapshots=typeof event.snapshots=="string"?JSON.parse(event.snapshots):event.snapshots}catch{return null}if(!snapshots||typeof snapshots!="object")return null;let eventType=I18N_TRACKER_TYPE_MAP[snapshots.message];if(!eventType)return null;let spm=[snapshots.c1??"",snapshots.c2??""].filter(Boolean).join("."),exargs={};typeof snapshots.c3=="string"&&snapshots.c3.split("&").forEach(pair=>{let eqIndex=pair.indexOf("=");if(eqIndex===-1)return;let key=pair.slice(0,eqIndex),rawValue=pair.slice(eqIndex+1);try{exargs[key]=JSON.parse(decodeURIComponent(rawValue))}catch{exargs[key]=rawValue}});let dataAttrs=snapshots.trackerInfo?.dataAttrs;if(dataAttrs&&typeof dataAttrs=="object"&&dataAttrs["data-biz-args"]&&!exargs.bizArgs)try{exargs.bizArgs=JSON.parse(dataAttrs["data-biz-args"])}catch{exargs.bizArgs=dataAttrs["data-biz-args"]}return{...base,event_type:eventType,name:spm,_raw:{...event,expdata:[{spm,...Object.keys(exargs).length>0?{exargs}:{}}],"spm-url":spm}}}function parseRumRequest(url2,postData,options={}){if(!RUM_URL_PATTERN.test(url2))return[];let parsed=parseRumBody(postData),rawEvents=Array.isArray(parsed?.events)?parsed.events:[];if(rawEvents.length===0)return[];let now=options.now??Date.now(),batchId=options.sequence??++rumCounter,context={requestUrl:url2,app:parsed?.app??{},user:parsed?.user??{},session:parsed?.session??{},view:parsed?.view??{},properties:parsed?.properties??{},os:parsed?.os??{},net:parsed?.net??{}};return rawEvents.flatMap((rawEvent,index)=>{if(!rawEvent||typeof rawEvent!="object"||Array.isArray(rawEvent))return[];let event=rawEvent,normalizedType=RUM_TYPE_ALIAS[event.type]??event.type,base={id:`${batchId}-${event.event_id??index}`,batchId,batchTimestampMs:now,batchTimestamp:formatTimestamp(now),type:normalizedType,url:event.url,timestamp:event.timestamp??now,success:event.success,status_code:event.status_code,method:event.method,duration:event.duration,source:"rum",_context:context},converted=tryConvertI18nTracker(event,base);return converted?[converted]:[{...base,event_type:event.event_type??"unknown",name:event.name,_raw:event}]})}function parseArmsRequest(url2,options={}){if(!ARMS_URL_PATTERN.test(url2))return null;let urlObj;try{urlObj=new URL(url2)}catch{return null}let params={};urlObj.searchParams.forEach((value,key)=>{params[key]=value});let eventType=(params.t??"unknown").toLowerCase(),page=params.page??"",now=options.now??Date.now(),sequence=options.sequence??++armsCounter,parsedTimestamp2=params.begin?Number.parseInt(params.begin,10):now,timestamp=Number.isFinite(parsedTimestamp2)?parsedTimestamp2:now;return{id:`arms-${sequence}-${now}`,source:"arms",batchId:0,batchTimestampMs:now,batchTimestamp:formatTimestamp(now),event_type:eventType,name:page||url2,url:url2,timestamp,_raw:{...params,_url:url2},_context:{requestUrl:url2,app:{...params.pid?{pid:params.pid}:{},...params.release?{release:params.release}:{},...params.environment?{environment:params.environment}:{},...params._v?{sdk_version:params._v}:{}},user:{...params.uid?{uid:params.uid}:{}},session:{...params.sid?{sid:params.sid}:{}},view:{...page?{page}:{},...params.tag?{tag:params.tag}:{}},properties:{},os:{},net:{...params.ct?{ct:params.ct}:{}}}}}function parseTrackingRequest(url2,postData,options={}){let rumEvents=parseRumRequest(url2,postData,options);if(rumEvents.length>0)return rumEvents;let aplusEvent=parseAplusRequest(url2,options);if(aplusEvent)return[aplusEvent];let armsEvent=parseArmsRequest(url2,options);return armsEvent?[armsEvent]:[]}var APLUS_URL_PATTERN,RUM_URL_PATTERN,ARMS_URL_PATTERN,aplusCounter,armsCounter,rumCounter,RUM_TYPE_ALIAS,I18N_TRACKER_TYPE_MAP,init_eventParsers=__esm({"../browser-core/dist/eventParsers.js"(){"use strict";APLUS_URL_PATTERN=/\.mmstat\.com\//,RUM_URL_PATTERN=/\.rum\.aliyuncs\.com\//,ARMS_URL_PATTERN=/arms-retcode\.aliyuncs\.com\//;aplusCounter=0,armsCounter=0,rumCounter=0;RUM_TYPE_ALIAS={cst:"custom"},I18N_TRACKER_TYPE_MAP={"i18n-tracker-exp":"EXP","i18n-tracker-clk":"CLK"}}});function createCaptureGeneration(){return crypto.randomUUID()}function encodeCaptureCursor(cursor){return`${CURSOR_PREFIX}:${cursor.tabId}:${cursor.generation}:${cursor.scope}:${cursor.sequence}`}function decodeCaptureCursor(value){let match=value.match(/^mearl-capture-v1:(\d+):([^:]+):(all|logs|requests|events):(\d+)$/);if(!match)throw new Error("Invalid capture cursor");let tabId=Number(match[1]),sequence=Number(match[4]);if(!Number.isSafeInteger(tabId)||!Number.isSafeInteger(sequence))throw new Error("Invalid capture cursor");return{tabId,generation:match[2],scope:match[3],sequence}}function captureCheckpoint(state){return encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:state.currentSequence,scope:"all"})}function nextCaptureSequence(state){return state.currentSequence+=1,state.currentSequence}function resolveAfterSequence(after,state,scope){if(!after)return 0;let cursor=decodeCaptureCursor(after);if(cursor.tabId!==state.tabId)throw new Error(`Capture cursor belongs to tab ${cursor.tabId}, not tab ${state.tabId}`);if(cursor.generation!==state.generation)throw new Error("Capture cursor expired because the tab collector was restarted");if(cursor.scope!=="all"&&cursor.scope!==scope)throw new Error(`Capture cursor is scoped to ${cursor.scope}, not ${scope}`);if(cursor.sequence>state.currentSequence)throw new Error("Capture cursor is ahead of the current collector state");return cursor.sequence}function queryCapturedEntries(buffer,state,options,matches,droppedThroughSequence=0,scope="all"){let{after,since,now=Date.now()}=options,limit=Math.max(1,Math.floor(options.limit??100)),afterSequence=resolveAfterSequence(after,state,scope),sinceTimestampMs=since===void 0?void 0:now-since*1e3,matched=buffer.filter(entry=>entry.captureSequence>afterSequence&&(sinceTimestampMs===void 0||entry.timestampMs>=sinceTimestampMs)&&matches(entry)),hasMore=matched.length>limit,entries=after?matched.slice(0,limit):matched.slice(-limit),nextSequence=after&&hasMore&&entries.length>0?entries[entries.length-1].captureSequence:state.currentSequence;return{entries,totalMatched:matched.length,nextCursor:encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:nextSequence,scope}),hasMore,gap:after!==void 0&&afterSequence<droppedThroughSequence}}var CURSOR_PREFIX,init_capture=__esm({"../browser-core/dist/capture.js"(){"use strict";CURSOR_PREFIX="mearl-capture-v1"}});function compileTextPattern(value){try{return{regex:new RegExp(value,"i"),fallback:""}}catch{return{regex:null,fallback:value.toLowerCase()}}}function matchesTextPattern(value,pattern3){return value?pattern3.regex?pattern3.regex.test(value):value.toLowerCase().includes(pattern3.fallback):!1}function compactEventUrl(value){if(value)try{let url2=new URL(value);return url2.origin==="null"?value.split(/[?#]/,1)[0]:`${url2.origin}${url2.pathname}`}catch{return value.split(/[?#]/,1)[0]}}function formatTrackingEvent(event,includeRaw=!1){let{captureSequence:_discardedCaptureSequence,...publicEvent}=event;if(includeRaw)return publicEvent;let{_raw:_discardedRaw,_context,url:url2,...summary}=publicEvent,compactUrl=compactEventUrl(url2??_context.requestUrl);return{...summary,...compactUrl?{url:compactUrl}:{}}}function matchesTrackingEvent(event,options){let{source="all",event_type,filter}=options;if(source!=="all"&&event.source!==source||event_type&&!matchesTextPattern(event.event_type,compileTextPattern(event_type)))return!1;if(filter){let pattern3=compileTextPattern(filter);if(!matchesTextPattern(event.name,pattern3)&&!matchesTextPattern(event.url,pattern3))return!1}return!0}function queryTrackingEvents(buffer,options={}){let{source="all",event_type,filter,since,limit=20,now=Date.now()}=options,events=[...buffer].reverse();if(source!=="all"&&(events=events.filter(event=>event.source===source)),since!==void 0){let sinceTimestamp=now-since*1e3;events=events.filter(event=>event.batchTimestampMs>=sinceTimestamp)}if(event_type){let pattern3=compileTextPattern(event_type);events=events.filter(event=>matchesTextPattern(event.event_type,pattern3))}if(filter){let pattern3=compileTextPattern(filter);events=events.filter(event=>matchesTextPattern(event.name,pattern3)||matchesTextPattern(event.url,pattern3))}return{events:events.slice(0,limit),totalMatched:events.length,totalInBuffer:buffer.length}}function appendCapturedTrackingBatch(buffer,events,maxSize){if(events.length===0)return[];let captureSequence=events[0].captureSequence,insertionIndex=Number.isSafeInteger(captureSequence)?buffer.findIndex(event=>Number.isSafeInteger(event.captureSequence)&&event.captureSequence>captureSequence):-1;if(buffer.splice(insertionIndex<0?buffer.length:insertionIndex,0,...events),buffer.length<=maxSize)return[];let removeCount=buffer.length-maxSize,boundarySequence=buffer[removeCount-1]?.captureSequence;for(;boundarySequence!==void 0&&buffer[removeCount]?.captureSequence===boundarySequence;)removeCount+=1;return buffer.splice(0,removeCount)}function queryCapturedTrackingEvents(buffer,state,options={},droppedThroughSequence=0){let limit=Math.max(1,Math.floor(options.limit??20));if(!options.after){let snapshot=queryTrackingEvents(buffer,options);return{...snapshot,nextCursor:encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:state.currentSequence,scope:"events"}),hasMore:snapshot.totalMatched>limit,gap:!1}}let sinceTimestampMs=options.since===void 0?void 0:(options.now??Date.now())-options.since*1e3,batchesBySequence=new Map;for(let event of buffer){if(!Number.isSafeInteger(event.captureSequence)||sinceTimestampMs!==void 0&&event.batchTimestampMs<sinceTimestampMs||!matchesTrackingEvent(event,options))continue;let captureSequence=event.captureSequence,batch=batchesBySequence.get(captureSequence);batch?batch.events.push(event):batchesBySequence.set(captureSequence,{captureSequence,timestampMs:event.batchTimestampMs,events:[event]})}let batches=[...batchesBySequence.values()].sort((left,right)=>left.captureSequence-right.captureSequence),captured=queryCapturedEntries(batches,state,{after:options.after,limit:Number.MAX_SAFE_INTEGER},()=>!0,droppedThroughSequence,"events"),selected=[],selectedCount=0;for(let batch of captured.entries){if(selected.length>0&&selectedCount+batch.events.length>limit)break;selected.push(batch),selectedCount+=batch.events.length}let hasMore=selected.length<captured.entries.length,nextSequence=hasMore?selected[selected.length-1].captureSequence:state.currentSequence;return{events:selected.flatMap(batch=>batch.events),totalMatched:captured.entries.reduce((total,batch)=>total+batch.events.length,0),totalInBuffer:buffer.length,nextCursor:encodeCaptureCursor({tabId:state.tabId,generation:state.generation,sequence:nextSequence,scope:"events"}),hasMore,gap:captured.gap}}var TRACKING_CAPTURE_ARMED_HINT,init_eventFilters=__esm({"../browser-core/dist/eventFilters.js"(){"use strict";init_capture();TRACKING_CAPTURE_ARMED_HINT="Event capture is active, but this tab has no captured history yet. Reload the current tab or repeat the triggering action, then call get_events again."}});function getStructure2(data,options={}){let{maxDepth=5,maxKeys=50,arraySamples=1,maxNodes=2e3}=options;for(let[name,value,limit]of[["maxDepth",maxDepth,20],["maxKeys",maxKeys,1e3],["arraySamples",arraySamples,20],["maxNodes",maxNodes,1e4]])if(!Number.isSafeInteger(value)||value<1||value>limit)throw new Error(`${name} must be an integer between 1 and ${limit}`);let ancestors=new WeakSet,nodes=0,visit=(value,depth)=>{if(++nodes>maxNodes)return"<max nodes reached>";if(depth>=maxDepth)return"<max depth reached>";if(value===null)return"null";if(typeof value!="object")return typeof value;if(ancestors.has(value))return"<circular>";ancestors.add(value);try{if(Array.isArray(value)){if(!value.length)return"array[0]";let samples=Array.from({length:Math.min(value.length,arraySamples)},(_,index)=>{let descriptor=Object.getOwnPropertyDescriptor(value,index);return descriptor&&"value"in descriptor?visit(descriptor.value,depth+1):descriptor?"<accessor>":"undefined"});return{_type:`array[${value.length}]`,...arraySamples===1?{_sample:samples[0]}:{_samples:samples}}}let keys=Object.keys(value),entries=keys.slice(0,maxKeys).map(key=>{let descriptor=Object.getOwnPropertyDescriptor(value,key);return[key,"value"in descriptor?visit(descriptor.value,depth+1):"<accessor>"]});return keys.length>maxKeys&&entries.push(["<truncated keys>",keys.length-maxKeys]),Object.fromEntries(entries)}finally{ancestors.delete(value)}};return visit(data,0)}var init_dataStructure=__esm({"../browser-core/dist/dataStructure.js"(){"use strict"}});function parsePath(path27){if(path27.length>1e3)throw new Error("Path too long: maximum 1000 characters allowed");let keys=[],current="";for(let i=0;i<path27.length;i++){let char=path27[i];if(char===".")current&&(keys.push(current),current="");else if(char==="["){current&&(keys.push(current),current="");let j=i+1;for(;j<path27.length&&path27[j]!=="]";)j++;if(j<path27.length){let index=parseInt(path27.substring(i+1,j),10);if(!isNaN(index)){if(index<0||index>1e5)throw new Error(`Array index out of safe range: ${index}`);keys.push(index)}i=j}}else current+=char}if(current&&keys.push(current),keys.length>50)throw new Error("Path too deep: maximum 50 levels allowed");return keys}function getValueByPath(obj,path27){let keys=parsePath(path27),current=obj;for(let key of keys){if(current==null)return;current=current[key]}return current}function setValueByPath(obj,path27,value){let keys=parsePath(path27),current=obj;for(let i=0;i<keys.length-1;i++){let key=keys[i],nextKey=keys[i+1];(current[key]===null||current[key]===void 0)&&(current[key]=typeof nextKey=="number"?[]:{}),current=current[key]}current[keys[keys.length-1]]=value}function truncateData(data,maxSize){let str=JSON.stringify(data);if(str.length<=maxSize)return data;let truncated=str.substring(0,maxSize);return`<truncated: ${str.length} bytes, showing first ${maxSize} chars>
991
991
  ${truncated}...`}function extractFields(data,fields3){if(fields3.length>100)throw new Error("Too many fields: maximum 100 fields allowed");let result={};for(let fieldPath of fields3)try{result[fieldPath]=getValueByPath(data,fieldPath)}catch(error48){result[fieldPath]=`<error: ${error48 instanceof Error?error48.message:"field not found"}>`}return result}function serializeRequest(request,options={}){let{fields:fields3,includeBody=!fields3?.length,includeHeaders=!1,maxBodySize=5e4,keysOnly=!1}=options,result={id:request.id,timestamp:request.timestamp,timestampMs:request.timestampMs,method:request.method,url:request.url,apiName:request.apiName,status:request.status,statusText:request.statusText,queryString:request.queryString,duration:request.duration,captureSequence:request.captureSequence,isPending:request.isPending,isSSE:request.isSSE,source:request.source,resourceType:request.resourceType};return includeHeaders&&(result.headers=request.headers,result.responseHeaders=request.responseHeaders),keysOnly?(result.postDataStructure=request.postData?getStructure2(request.postData):null,result.responseBodyStructure=request.responseBody?getStructure2(request.responseBody):null,result):(includeBody&&(result.postData=request.postData==null?request.postData:truncateData(request.postData,maxBodySize),result.responseBody=request.responseBody==null?request.responseBody:truncateData(request.responseBody,maxBodySize)),fields3&&fields3.length>0&&(result.extractedFields=extractFields(request.responseBody,fields3)),result)}var init_requestSerializer=__esm({"../browser-core/dist/requestSerializer.js"(){"use strict";init_dataStructure()}});function byteLength(value){return textEncoder.encode(value).byteLength}function serializeForStorage(value){if(typeof value=="string")return value;try{return JSON.stringify(value)}catch{return String(value)}}function truncateUtf8(value,maxBytes){if(byteLength(value)<=maxBytes)return value;let low=0,high=Math.min(value.length,maxBytes);for(;low<high;){let middle=Math.ceil((low+high)/2);byteLength(value.slice(0,middle))<=maxBytes?low=middle:high=middle-1}return value.slice(0,low)}function limitBufferedField(value,maxBytes){if(value==null)return value;let serialized=serializeForStorage(value),originalBytes=byteLength(serialized);if(originalBytes<=maxBytes)return value;let marker=`<truncated: ${originalBytes} bytes, buffered preview>
992
992
  `;if(byteLength(marker)+3>maxBytes)return truncateUtf8(`${marker}...`,maxBytes);let previewBudget=Math.max(0,maxBytes-byteLength(marker)-3);return`${marker}${truncateUtf8(serialized,previewBudget)}...`}function estimateRequestBufferBytes(request){try{return byteLength(JSON.stringify(request))}catch{return byteLength(String(request))}}function createRequestBufferAccounting(){return{sizes:[],totalBytes:0}}function synchronizeAccounting(requests,accounting){accounting.sizes.length!==requests.length&&(accounting.sizes=requests.map(estimateRequestBufferBytes),accounting.totalBytes=accounting.sizes.reduce((total,size)=>total+size,0))}function applyFieldLimits(request,maxFieldBytes){request.postData=limitBufferedField(request.postData,maxFieldBytes),request.responseBody=limitBufferedField(request.responseBody,maxFieldBytes)}function trimRequestBuffer(requests,accounting,maxEntries,maxBytes){let removed=[];for(;requests.length>1&&(requests.length>maxEntries||accounting.totalBytes>maxBytes);){let request=requests.shift();request&&removed.push(request),accounting.totalBytes-=accounting.sizes.shift()??0}return removed}function appendRequestToBuffer(requests,accounting,request,limits={}){let{maxEntries=500,maxBytes=33554432,maxFieldBytes=8388608}=limits;synchronizeAccounting(requests,accounting),applyFieldLimits(request,maxFieldBytes);let size=estimateRequestBufferBytes(request);return requests.push(request),accounting.sizes.push(size),accounting.totalBytes+=size,trimRequestBuffer(requests,accounting,maxEntries,maxBytes)}function refreshRequestInBuffer(requests,accounting,request,limits={}){let{maxEntries=500,maxBytes=33554432,maxFieldBytes=8388608}=limits,index=requests.indexOf(request);if(index===-1)return[];synchronizeAccounting(requests,accounting),applyFieldLimits(request,maxFieldBytes);let previousSize=accounting.sizes[index]??0,nextSize=estimateRequestBufferBytes(request);return accounting.sizes[index]=nextSize,accounting.totalBytes+=nextSize-previousSize,trimRequestBuffer(requests,accounting,maxEntries,maxBytes)}var textEncoder,init_boundedRequestBuffer=__esm({"../browser-core/dist/boundedRequestBuffer.js"(){"use strict";textEncoder=new TextEncoder}});var DomainPermissionError,ALLOWED_ORIGINS,ALLOWED_ORIGINS_LIST,init_proxyPermissions=__esm({"../browser-core/dist/proxyPermissions.js"(){"use strict";DomainPermissionError=class extends Error{action;domain;code="DOMAIN_PERMISSION_REQUIRED";requestDispatched=!1;constructor(action,domain2,message=`${action}: Access to "${domain2}" is not authorized. Call request_domain_permission with domain="${domain2}" to request user authorization, then retry.`){super(message),this.action=action,this.domain=domain2,this.name="DomainPermissionError"}},ALLOWED_ORIGINS=["*://localhost/*","*://127.0.0.1/*","*://*.alibaba.com/*","*://*.alibaba-inc.com/*","*://*.taobao.com/*","*://*.antfin.com/*","*://*.tmall.com/*","*://*.fliggy.com/*","*://*.alitrip.com/*","*://*.aliexpress.com/*","*://*.atatech.org/*","*://*.dingtalk.com/*","*://*.ele.me/*","*://*.effirst.com/*","*://*.example.com/*","*://*.figma.com/*"],ALLOWED_ORIGINS_LIST=[...ALLOWED_ORIGINS]}});function typeIntoElement(el,inputValue,shouldClear){if(!el)return{typed:!1,tag:"",error:"Element is null"};if(!el.isConnected)return{typed:!1,tag:"",error:"Element is detached from the document"};let tagName=el.tagName?el.tagName.toLowerCase():"",isInput=el instanceof HTMLInputElement,isTextArea=el instanceof HTMLTextAreaElement,isFormField=isInput||isTextArea,htmlEl=el,isEditable=!isFormField&&(htmlEl.isContentEditable||el.getAttribute("contenteditable")==="true");if(!isFormField&&!isEditable)return{typed:!1,tag:tagName,error:"Element <"+tagName+"> is neither an input/textarea nor contenteditable"};if(isFormField){let f=el;if(f.disabled)return{typed:!1,tag:tagName,error:"Element is disabled"};if(f.readOnly)return{typed:!1,tag:tagName,error:"Element is readOnly"}}if(htmlEl.scrollIntoView({block:"center",behavior:"instant"}),htmlEl.focus(),isFormField){let f=el,proto=isTextArea?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,nativeSetter=Object.getOwnPropertyDescriptor(proto,"value")?.set,setVal=v=>{nativeSetter?nativeSetter.call(f,v):f.value=v};return shouldClear&&f.value!==""&&(setVal(""),f.dispatchEvent(new Event("input",{bubbles:!0}))),setVal(inputValue),f.dispatchEvent(new InputEvent("beforeinput",{bubbles:!0,cancelable:!0,data:inputValue,inputType:"insertText"})),f.dispatchEvent(new InputEvent("input",{bubbles:!0,data:inputValue,inputType:"insertText"})),f.dispatchEvent(new Event("change",{bubbles:!0})),{typed:!0,tag:tagName}}let selection=window.getSelection();if(shouldClear){if(selection){let range=document.createRange();range.selectNodeContents(htmlEl),selection.removeAllRanges(),selection.addRange(range)}let cleared;try{cleared=document.execCommand("delete")}catch{cleared=!1}cleared||(htmlEl.textContent="")}else if(selection){let range=document.createRange();range.selectNodeContents(htmlEl),range.collapse(!1),selection.removeAllRanges(),selection.addRange(range)}htmlEl.dispatchEvent(new InputEvent("beforeinput",{bubbles:!0,cancelable:!0,data:inputValue,inputType:"insertText"}));let inserted;try{inserted=document.execCommand("insertText",!1,inputValue)}catch{inserted=!1}return inserted||(htmlEl.textContent=(htmlEl.textContent??"")+inputValue),htmlEl.dispatchEvent(new InputEvent("input",{bubbles:!0,data:inputValue,inputType:"insertText"})),{typed:!0,tag:tagName}}var init_domTyping=__esm({"../browser-core/dist/domTyping.js"(){"use strict"}});function validatePageElementSelector(selector,toolName){if(!selector||typeof selector!="string")throw new Error(`${toolName}: "selector" must be a non-empty string. Pass a native CSS selector (e.g. "[aria-label='提交']") or a snapshot ref like "@e3". Note: the field name is "selector", not "ref".`);if(/^e\d+$/.test(selector))throw new Error(`${toolName}: selector "${selector}" looks like a snapshot ref but is missing the "@" prefix. Use "@${selector}" instead. If you don't have refs yet, call page_snapshot first.`);for(let pseudo of UNSUPPORTED_NATIVE_SELECTOR_PSEUDOS)if(selector.includes(pseudo))throw new Error(`${toolName}: selector contains unsupported pseudo "${pseudo}". Only native CSS selectors are supported (no Playwright/jQuery extensions). For text-based matching, run page_snapshot and use the returned "@eN" ref. For attribute matching, prefer "[aria-label='...']", "[title='...']", "[data-testid='...']" etc.`)}var UNSUPPORTED_NATIVE_SELECTOR_PSEUDOS,INVALID_NATIVE_SELECTOR_HINT,init_domSelectors=__esm({"../browser-core/dist/domSelectors.js"(){"use strict";UNSUPPORTED_NATIVE_SELECTOR_PSEUDOS=[":has-text",":text(",":text-is(",":text-matches(",":visible",":hidden",":nth-match(",":light(",":above(",":below(",":near(",":left-of(",":right-of(",":contains("],INVALID_NATIVE_SELECTOR_HINT='Only native CSS is supported (no Playwright extensions like :has-text/:visible). Use page_snapshot to get an "@eN" ref for complex matching.'}});function resolvePageScrollInput(data){let{direction,distance,selector,containerPolicy="self"}=data;if(typeof direction!="string"||!["up","down","top","bottom"].includes(direction))throw new Error("Invalid direction: must be one of up, down, top, bottom");if(distance!==void 0&&(typeof distance!="number"||!Number.isFinite(distance)))throw new Error('"distance" must be a finite number');if(selector!==void 0&&validatePageElementSelector(selector,"page_scroll"),containerPolicy!=="self"&&containerPolicy!=="nearest")throw new Error('"containerPolicy" must be one of self, nearest');return{direction,distance:Math.abs(distance??600),containerPolicy,...selector!==void 0?{selector}:{}}}function scrollElementInPage(direction,distance,targetLabel,containerPolicy="self"){let element=this?.nodeType===3?this.parentElement:this,targetDocument=element?.nodeType===9?element:null;if(targetDocument&&(element=targetDocument.scrollingElement),!element||element.isConnected===!1)return{error:"Cannot resolve scroll container: "+targetLabel};let startingElement=element,ancestorDistance=0;function scrollMetrics(candidate){let scrollTop=Number(candidate?.scrollTop),scrollHeight=Number(candidate?.scrollHeight),clientHeight=Number(candidate?.clientHeight);if(!Number.isFinite(scrollTop)||!Number.isFinite(scrollHeight)||!Number.isFinite(clientHeight))return null;let ownerDocument=candidate.ownerDocument,isRootScroller=!!ownerDocument&&candidate===ownerDocument.scrollingElement,maxScrollTop=Math.max(0,scrollHeight-clientHeight),overflowAllowsScroll=!0;try{let overflowY=ownerDocument?.defaultView?.getComputedStyle(candidate).overflowY;!isRootScroller&&(overflowY==="visible"||overflowY==="clip")&&(overflowAllowsScroll=!1)}catch{}return{scrollTop,scrollHeight,clientHeight,maxScrollTop,isRootScroller,usable:isRootScroller||maxScrollTop>0&&overflowAllowsScroll}}function documentFallback(documentRef){let windowRef=documentRef.defaultView,visited=new Set,viewportWidth=Number(windowRef?.innerWidth)||Number(element?.clientWidth)||0,viewportHeight=Number(windowRef?.innerHeight)||Number(element?.clientHeight)||0,points=[[viewportWidth/2,viewportHeight/2],[viewportWidth/2,viewportHeight*.75],[viewportWidth/2,viewportHeight*.25]];function containerDepth(candidate){if(candidate===documentRef.body||candidate===documentRef.documentElement)return 0;let depth=0,cursor=candidate;for(;cursor&&cursor!==documentRef.body&&cursor!==documentRef.documentElement;)depth+=1,cursor=cursor.parentElement;return depth}function canMove(metrics2){return direction==="up"||direction==="top"?metrics2.scrollTop>0:metrics2.scrollTop<metrics2.maxScrollTop}let sampledPageContainer;for(let[x,y]of points){let candidate=null;try{candidate=documentRef.elementFromPoint?.(x,y)??null}catch{}for(;candidate&&candidate.nodeType===1;){if(!visited.has(candidate)){visited.add(candidate);let candidateMetrics=scrollMetrics(candidate);if(candidateMetrics?.usable&&candidateMetrics.maxScrollTop>0&&canMove(candidateMetrics)){let resolved={element:candidate,metrics:candidateMetrics,distance:containerDepth(candidate)};if(candidate===documentRef.body||candidate===documentRef.documentElement)sampledPageContainer??=resolved;else return resolved}}candidate=candidate.parentElement}}if(sampledPageContainer)return sampledPageContainer;let best,candidates=Array.from(documentRef.querySelectorAll?.("*")??[]).slice(0,1e4);for(let candidate of candidates){let candidateMetrics=scrollMetrics(candidate);if(!candidateMetrics?.usable||candidateMetrics.maxScrollTop<=0||!canMove(candidateMetrics))continue;let rect,style;try{rect=candidate.getBoundingClientRect(),style=windowRef?.getComputedStyle(candidate)}catch{continue}if(!rect||rect.width<=0||rect.height<=0||style?.display==="none"||style?.visibility==="hidden"||style?.visibility==="collapse")continue;let visibleWidth=Math.max(0,Math.min(rect.right,viewportWidth)-Math.max(rect.left,0)),visibleHeight=Math.max(0,Math.min(rect.bottom,viewportHeight)-Math.max(rect.top,0)),area=visibleWidth*visibleHeight;if(area<=0)continue;let depth=containerDepth(candidate);(!best||depth<best.distance||depth===best.distance&&area>best.area)&&(best={element:candidate,metrics:candidateMetrics,distance:depth,area})}return best?{element:best.element,metrics:best.metrics,distance:best.distance}:null}function selectorFor(candidate){let documentRef=candidate?.ownerDocument;if(!documentRef||candidate.nodeType!==1)return"";if(candidate===documentRef.documentElement)return"html";if(candidate===documentRef.body)return"body";let escapeCss=value=>documentRef.defaultView?.CSS?.escape?documentRef.defaultView.CSS.escape(value):value.replace(/[^a-zA-Z0-9_-]/g,character=>"\\"+character);if(candidate.id){let idSelector="#"+escapeCss(String(candidate.id));try{if(documentRef.querySelectorAll(idSelector).length===1)return idSelector}catch{}}let path27=[],cursor=candidate;for(;cursor&&cursor.nodeType===1&&path27.length<8;){let tag=String(cursor.tagName||"").toLowerCase();if(!tag)break;let parent=cursor.parentElement;if(!parent){path27.unshift(tag);break}let siblings=Array.from(parent.children).filter(sibling=>sibling.tagName===cursor.tagName),index=siblings.indexOf(cursor)+1;if(path27.unshift(siblings.length>1?tag+":nth-of-type("+index+")":tag),cursor=parent,cursor===documentRef.documentElement){path27.unshift("html");break}}return path27.join(" > ")}let metrics=scrollMetrics(element);if(!metrics)return{error:"Element is not scrollable: "+targetLabel};if(targetDocument){let fallback=documentFallback(targetDocument);fallback&&(element=fallback.element,metrics=fallback.metrics,ancestorDistance=fallback.distance)}if(!metrics.usable&&containerPolicy==="nearest"){let candidate=element.parentElement;for(;candidate;){ancestorDistance+=1;let candidateMetrics=scrollMetrics(candidate);if(candidateMetrics?.usable){element=candidate,metrics=candidateMetrics;break}candidate=candidate.parentElement}}if(!metrics.usable&&!metrics.isRootScroller)return{error:"Element is not scrollable: "+targetLabel+(containerPolicy==="nearest"?" (no scrollable ancestor found)":"")};let targetTop;switch(direction){case"top":targetTop=0;break;case"bottom":targetTop=metrics.maxScrollTop;break;case"up":targetTop=Math.max(0,metrics.scrollTop-Math.abs(distance));break;default:targetTop=Math.min(metrics.maxScrollTop,metrics.scrollTop+Math.abs(distance));break}if(typeof element.scrollTo=="function")try{element.scrollTo({top:targetTop,left:Number(element.scrollLeft)||0,behavior:"instant"})}catch{element.scrollTop=targetTop}else element.scrollTop=targetTop;let actualScrollTop=Number(element.scrollTop);return!metrics.isRootScroller&&targetTop!==metrics.scrollTop&&actualScrollTop===metrics.scrollTop?{error:"Element is not scrollable: "+targetLabel}:{scrollY:Math.round(actualScrollTop),scrollHeight:metrics.scrollHeight,clientHeight:metrics.clientHeight,maxScrollY:Math.round(metrics.maxScrollTop),scrollYBefore:Math.round(metrics.scrollTop),scrollYAfter:Math.round(actualScrollTop),moved:actualScrollTop!==metrics.scrollTop,atTop:actualScrollTop<=0,atBottom:actualScrollTop>=metrics.maxScrollTop,target:targetLabel,resolvedContainer:targetDocument&&element===targetDocument.body&&element!==startingElement?"document-body":targetDocument&&element!==startingElement?"document-descendant":element===startingElement?"self":"nearest-scrollable-ancestor",ancestorDistance,...targetDocument&&element!==startingElement?{containerSelector:selectorFor(element)}:{}}}function buildPageScrollExpression(input2){return`(() => {
993
993
  const dir = ${JSON.stringify(input2.direction)};
@@ -1064,12 +1064,12 @@ ${SOURCE_BADGES[source]}
1064
1064
  `,remote:`
1065
1065
  <circle cx="104" cy="104" r="21" fill="#FF7A00" stroke="#FFFFFF" stroke-width="6"/>
1066
1066
  `}}});function getJsonpCallback(url2){try{let searchParams=new URL(url2).searchParams,callback=searchParams.get("callback")??searchParams.get("jsonp");return callback&&JSONP_CALLBACK_RE.test(callback)?callback:null}catch{return null}}function serializeMockResponse(requestUrl,responseData){let callback=getJsonpCallback(requestUrl);if(!callback)return{body:typeof responseData=="string"?responseData:JSON.stringify(responseData)??"null",isJsonp:!1};let json4=JSON.stringify(responseData)??"null";if(typeof responseData=="string")try{JSON.parse(responseData),json4=responseData}catch{}return{body:`${callback}(${json4});`,isJsonp:!0}}function prepareMockResponseHeaders(headers,isJsonp){let stripped=(headers??[]).filter(header=>!["content-encoding","content-length"].includes(header.name.toLowerCase()));if(!isJsonp)return stripped;let index=stripped.findIndex(header=>header.name.toLowerCase()==="content-type");if(index===-1)return[...stripped,{name:"content-type",value:JSONP_CONTENT_TYPE}];let result=[...stripped];return result[index]={...result[index],value:JSONP_CONTENT_TYPE},result}var JSONP_CALLBACK_RE,JSONP_CONTENT_TYPE,init_mockResponse=__esm({"../browser-core/dist/mockResponse.js"(){"use strict";JSONP_CALLBACK_RE=/^[A-Za-z_$][A-Za-z0-9_$]*(?:\.[A-Za-z_$][A-Za-z0-9_$]*)*$/,JSONP_CONTENT_TYPE="application/javascript; charset=utf-8"}});var init_pluginState2=__esm({"../browser-core/dist/pluginState.js"(){"use strict"}});var init_pluginModels2=__esm({"../browser-core/dist/pluginModels.js"(){"use strict"}});var init_pluginRecovery=__esm({"../browser-core/dist/pluginRecovery.js"(){"use strict"}});var init_pluginDiagnostics=__esm({"../browser-core/dist/pluginDiagnostics.js"(){"use strict"}});function installRootWebViewDocumentTransport(){let browser=window,prefix="/.mearl-document/";if(browser.name==="__mearl_root__"&&location.pathname.startsWith(prefix))try{let original=new URL(decodeURIComponent(location.hash.slice(1)));original.origin===location.origin&&/^https?:$/.test(original.protocol)&&history.replaceState(history.state,"",original.href)}catch{}browser.__mearlRootDocumentUrl__=url2=>{let token=performance.getEntriesByType("navigation")[0]?.serverTiming?.find(entry=>entry.name==="mearl-document")?.description;if(!token||!/^[a-zA-Z0-9-]+$/.test(token))return url2;let original=new URL(url2);return`${original.origin}${prefix}${token}#${encodeURIComponent(original.href)}`}}var init_rootWebViewDocument=__esm({"../browser-core/dist/rootWebViewDocument.js"(){"use strict"}});function isBrowserManagementAction(value){return typeof value=="string"&&Object.hasOwn(BROWSER_MANAGEMENT_ACTIONS,value)}function isCloudConnectorAction(value){return typeof value=="string"&&Object.hasOwn(CLOUD_CONNECTOR_ACTIONS,value)}function isExtensionUiServiceAction(value){return isAgentServiceAction(value)||isToolboxServiceAction(value)||isBrowserManagementAction(value)||isCloudConnectorAction(value)}function isHostToExtensionAction(value){return typeof value=="string"&&Object.hasOwn(HOST_TO_EXTENSION_ACTIONS,value)}function isPrivateExtensionServiceAction(value){return isToolboxServiceAction(value)||isAgentServiceAction(value)&&value!=="agent_chat_run"||typeof value=="string"&&["browser_sessions","browser_instances","browser_providers"].includes(value)||typeof value=="string"&&Object.hasOwn(EXTENSION_BACKGROUND_ACTIONS,value)}function extensionRpcErrorCode(error48){let code=error48&&typeof error48=="object"&&"code"in error48?error48.code:void 0;return code==="PROTOCOL_MISMATCH"||code==="UNSUPPORTED_ACTION"||code==="EXTENSION_UI_REQUIRED"?code:void 0}var EXTENSION_RPC_VERSION,BROWSER_MANAGEMENT_ACTIONS,CLOUD_CONNECTOR_ACTIONS,HOST_TO_EXTENSION_ACTIONS,EXTENSION_BACKGROUND_ACTIONS,ExtensionRpcError,init_extensionServiceProtocol=__esm({"../browser-core/dist/extensionServiceProtocol.js"(){"use strict";init_agentServiceProtocol();init_toolbox();EXTENSION_RPC_VERSION=1,BROWSER_MANAGEMENT_ACTIONS={browser_sessions:!0,browser_instances:!0,browser_providers:!0,browser_list:!0,browser_launch:!0,browser_close:!0,get_browser_access_url:!0};CLOUD_CONNECTOR_ACTIONS={start_cloud_connector:!0,stop_cloud_connector:!0,list_cloud_connectors:!0};HOST_TO_EXTENSION_ACTIONS={__export_cookies:!0,__capture_download:!0,__control_cleanup:!0,__control_deactivate:!0,__send_request_files:!0};EXTENSION_BACKGROUND_ACTIONS={app_profile_catalog:!0,plugin_page_call:!0,plugin_page_event:!0};ExtensionRpcError=class extends Error{code;constructor(code,message){super(message),this.code=code,this.name="ExtensionRpcError"}}}});var init_dist4=__esm({"../browser-core/dist/index.js"(){"use strict";init_appProfileDefinition();init_types2();init_tdbankLogin();init_mtopSigner();init_mtopRequest();init_mtopStreamCapture();init_appProfileUserInfo();init_eventParsers();init_eventFilters();init_requestSerializer();init_dataStructure();init_boundedRequestBuffer();init_proxyPermissions();init_domTyping();init_domSelectors();init_domScrolling();init_domInspection();init_domSnapshot();init_deviceEmulation();init_debuggerTarget();init_rootWebViewNavigation();init_axTextMatch();init_domClicking();init_pageDragging();init_pagePressing();init_axSnapshot();init_pageObserver();init_navigationTracker();init_pageAct();init_backendNodeRefs();init_pageEffectRefs();init_pageWait();init_pageNavigation();init_tabMatching();init_agentChat();init_agentSkills();init_agentServiceProtocol();init_toolbox();init_toolboxIcon();init_pluginExecution2();init_pluginTasks2();init_pluginPages2();init_pluginPageRuntime();init_pluginPageHost();init_browserActionProtocol();init_runActions();init_sendRequestFiles();init_sendRequestHeaders();init_cookie();init_controlledFavicon();init_capture();init_sseParser();init_mockResponse();init_pluginState2();init_pluginModels2();init_pluginRecovery();init_pluginDiagnostics();init_rootWebViewDocument();init_extensionServiceProtocol()}});import{randomBytes}from"node:crypto";var BROWSER_QUEUE,ControlSessionRegistry,init_control_session=__esm({"src/control-session.ts"(){"use strict";init_dist4();BROWSER_QUEUE=-1,ControlSessionRegistry=class{constructor(browserId){this.browserId=browserId}sessions=new Map;owners=new Map;queues=new Map;pending=new Map;browserReleasing=!1;resuming=new Set;createSessionId(){for(;;){let id=`s_${randomBytes(6).toString("base64url")}`;if(!this.sessions.has(id))return id}}create(transport){if(this.browserReleasing)throw new Error("BROWSER_CONTROL_RELEASING");let record4={sessionId:this.createSessionId(),browserId:this.browserId(),transport,status:"active",tabs:[],generation:1};return this.sessions.set(record4.sessionId,record4),this.info(record4.sessionId)}info(id){let record4=this.require(id);return{...record4,tabs:record4.tabs.map(tab=>({...tab}))}}state(id){let{tabs:_tabs,...state}=this.require(id);return state}find(id){return this.sessions.get(id)?.browserId===this.browserId()?this.info(id):void 0}list(){return[...this.sessions.values()].filter(record4=>record4.status!=="released").map(record4=>this.info(record4.sessionId))}require(id){let record4=this.sessions.get(id);if(!record4||record4.browserId!==this.browserId())throw new Error("CONTROL_SESSION_NOT_FOUND");return record4}assertActive(id,generation){let record4=this.require(id);if(record4.status!=="active"||generation!==void 0&&generation!==record4.generation)throw new Error(`CONTROL_SESSION_PAUSED: ${record4.status}; inspect the page after the user returns control`);return record4}claim(id,tabId,source){let record4=this.require(id),owner=this.owners.get(tabId);if(owner&&owner!==id)throw new Error("TAB_CONTROLLED_BY_SESSION");record4.tabs.some(tab=>tab.tabId===tabId)||record4.tabs.push({tabId,source}),this.owners.set(tabId,id)}blockedTabs(id){return[...this.owners].filter(([,owner])=>owner!==id).map(([tab])=>tab)}assertBrowserRelease(){if(this.list().length)throw new Error("ACTIVE_CONTROL_SESSIONS: release the owning session first")}async releaseBrowser(operation){if(this.assertBrowserRelease(),this.browserReleasing)throw new Error("BROWSER_CONTROL_RELEASING");this.browserReleasing=!0;try{return await Promise.allSettled([...this.pending.values()].flatMap(operations=>[...operations])),await operation()}finally{this.browserReleasing=!1}}async run(id,action,data,operation,transport="extension"){if(this.browserReleasing)throw new Error("BROWSER_CONTROL_RELEASING");let generation=id?this.assertActive(id).generation:void 0,tabs=new Set;typeof data.tabId=="number"&&tabs.add(data.tabId);for(let tab of data.tabIds??[])typeof tab=="number"&&tabs.add(tab);typeof data.openerTabId=="number"&&tabs.add(data.openerTabId);let steps=action==="run_actions"?data.actions:[{action,data}];if(action==="run_actions"){validateActionBatch(data);for(let step of data.actions??[]){typeof step.data?.tabId=="number"&&tabs.add(step.data.tabId);for(let tab of step.data?.tabIds??[])typeof tab=="number"&&tabs.add(tab);typeof step.data?.openerTabId=="number"&&tabs.add(step.data.openerTabId)}}let opensPage=steps.some(step=>step.action==="tab_open"),changesSharedSettings=steps.some(step=>["set_rule","set_cookie"].includes(step.action)||step.action==="set_app_profile"&&transport!=="cdp"&&step.data?.mtopEnv!==void 0),assertSharedResources=()=>{if(action==="run_actions"&&!id&&this.list().length&&steps.some(step=>["tab_open","browser_close"].includes(step.action)))throw new Error("ACTIVE_CONTROL_SESSIONS: open pages outside run_actions while sessions are active");if(changesSharedSettings&&this.list().some(record4=>record4.sessionId!==id))throw new Error("BROWSER_RESOURCE_CONFLICT: use an isolated browser to change shared settings");if(data.closeExisting&&!id&&this.list().length)throw new Error("ACTIVE_CONTROL_SESSIONS")};assertSharedResources();for(let tab of tabs){if(tab<0)continue;let owner=this.owners.get(tab);if(owner&&owner!==id)throw new Error("TAB_CONTROLLED_BY_SESSION")}let unlock,tail=new Promise(resolve11=>{unlock=resolve11}),runtimeTransport=action==="page_runtime",predecessors=runtimeTransport?[]:[...tabs].map(tab=>this.queues.get(tab)).filter(Boolean);if(!runtimeTransport&&this.queues.has(BROWSER_QUEUE)&&predecessors.push(this.queues.get(BROWSER_QUEUE)),(changesSharedSettings||action==="page_download"||opensPage)&&(predecessors.push(...this.queues.values()),tabs.add(BROWSER_QUEUE)),!runtimeTransport)for(let tab of tabs)this.queues.set(tab,tail);let promise2=(async()=>{try{await Promise.all(predecessors),id&&this.assertActive(id,generation),assertSharedResources();for(let tab of tabs){let owner=this.owners.get(tab);if(owner&&owner!==id)throw new Error("TAB_CONTROLLED_BY_SESSION");id&&tab>=0&&this.claim(id,tab,"attached")}return await operation()}finally{unlock();for(let tab of tabs)this.queues.get(tab)===tail&&this.queues.delete(tab)}})(),pending=this.pending.get(id)??new Set;pending.add(promise2),this.pending.set(id,pending);try{return await promise2}finally{pending.delete(promise2),pending.size||this.pending.delete(id)}}async waitForIdle(id){await Promise.allSettled([...this.pending.get(id)??[]])}assertStep(id,generation){this.assertActive(id,generation)}recordResult(id,action,result,data){action==="tab_open"&&typeof result?.tabId=="number"&&this.claim(id,result.tabId,result.opened===!0?"created":"attached");for(let tab of result?.observation?.openedTabs??[])typeof tab.tabId=="number"&&this.claim(id,tab.tabId,"created");let target=this.require(id).tabs.find(tab=>tab.tabId===(result?.tabId??data?.tabId));if(target&&typeof result?.title=="string"&&(target.title=result.title),target&&typeof result?.url=="string"&&(target.url=result.url),action==="tab_close"&&typeof data?.tabId=="number"&&(this.owners.delete(data.tabId),this.require(id).tabs=this.require(id).tabs.filter(tab=>tab.tabId!==data.tabId)),action==="tab_close")for(let tab of this.require(id).tabs)(result?.closedTabIds??[]).includes(tab.tabId)&&this.owners.delete(tab.tabId)}handoff(id,reason){let record4=this.assertActive(id);return record4.status="user",record4.generation+=1,record4.reason=reason,this.info(id)}async resume(id,cleanup=async()=>{}){let record4=this.require(id);if(record4.status!=="user")throw new Error("Session is not waiting for the user");if(this.resuming.has(id))throw new Error("CONTROL_SESSION_RESUMING");this.resuming.add(id);try{return await this.waitForIdle(id),await cleanup(),record4.status="active",record4.reason=void 0,record4.generation+=1,this.info(id)}finally{this.resuming.delete(id)}}async release(id,params,cleanup){let record4=this.require(id);if(this.resuming.has(id))throw new Error("CONTROL_SESSION_RESUMING");if(record4.status==="released")return this.info(id);if(record4.status==="releasing")throw new Error("CONTROL_SESSION_RELEASING");let previous=record4.status;record4.status="releasing",record4.generation+=1,await Promise.allSettled([...this.pending.get(id)??[]]);let tabs=record4.tabs.map(tab=>tab.tabId),keep=new Set(params.keepTabIds??[]),close=params.closeCreatedTabs?record4.tabs.filter(tab=>tab.source==="created"&&!keep.has(tab.tabId)).map(tab=>tab.tabId):[];try{await cleanup(tabs,close);for(let tab of tabs)this.owners.get(tab)===id&&this.owners.delete(tab);record4.status="released";let released=[...this.sessions.values()].filter(session=>session.status==="released"&&session.sessionId!==id);for(let old of released.slice(0,Math.max(0,released.length-99)))this.sessions.delete(old.sessionId)}catch(error48){throw record4.status=previous,error48}return this.info(id)}}}});import{rmSync as rmSync11}from"node:fs";import{randomUUID as randomUUID12}from"node:crypto";import{mkdir as mkdir2,open as open2,rm as rm2,stat as stat2,writeFile}from"node:fs/promises";import path6 from"node:path";import os3 from"node:os";var MAX_BYTES,ARTIFACT_CHUNK_BYTES,BrowserArtifactStore,init_browser_artifacts=__esm({"src/browser-artifacts.ts"(){"use strict";MAX_BYTES=256*1024*1024,ARTIFACT_CHUNK_BYTES=256*1024,BrowserArtifactStore=class{constructor(root=path6.join(os3.tmpdir(),`mearl-artifacts-${process.pid}-${randomUUID12()}`)){this.root=root}files=new Map;directory;sweeper;async create(filename,sessionId){if(typeof filename!="string"||!filename||[".",".."].includes(filename)||/[\\/]/.test(filename)||filename.length>255)throw new Error("Invalid artifact filename");this.sweeper||(this.sweeper=setInterval(()=>{for(let[id,file3]of this.files)!file3.sessionId&&!file3.writing&&Date.now()-file3.accessedAt>3600*1e3&&this.remove(id).catch(()=>{})},6e4),this.sweeper.unref()),await mkdir2(this.root,{recursive:!0,mode:448}),this.directory=this.root;let artifactId=randomUUID12(),directory=path6.join(this.root,artifactId);await mkdir2(directory,{mode:448});let file2={artifactId,filename,bytes:0,location:"browser",path:path6.join(directory,filename),sessionId,ready:!1,accessedAt:Date.now()};return await writeFile(file2.path,"",{mode:384}),this.files.set(artifactId,file2),this.info(file2)}async importFile(filename,sourcePath,sessionId){let source=await open2(sourcePath,"r"),id;try{let metadata=await source.stat();if(!metadata.isFile()||metadata.size>MAX_BYTES)throw new Error("Download is unavailable or exceeds 256 MiB");id=(await this.create(filename,sessionId)).artifactId;let file2=this.require(id,sessionId),target=await open2(file2.path,"w"),copied=0;try{for await(let chunk of source.createReadStream({autoClose:!1})){if(copied+=chunk.length,copied>MAX_BYTES)throw new Error("Download exceeds 256 MiB");let written=0;for(;written<chunk.length;){let result=await target.write(chunk,written,chunk.length-written);if(!result.bytesWritten)throw new Error("Download import made no progress");written+=result.bytesWritten}}}finally{await target.close()}if(copied!==metadata.size)throw new Error("Download changed during import");return file2.bytes=(await stat2(file2.path)).size,file2.ready=!0,this.info(file2)}catch(error48){throw id&&await this.remove(id,sessionId),error48}finally{await source.close()}}require(id,sessionId){let file2=this.files.get(id);if(!file2||file2.sessionId!==void 0&&file2.sessionId!==sessionId)throw new Error("ARTIFACT_NOT_FOUND");return file2.accessedAt=Date.now(),file2}info(file2){return{artifactId:file2.artifactId,filename:file2.filename,bytes:file2.bytes,location:"browser"}}async write(id,offset,base643,sessionId){let file2=this.require(id,sessionId);if(file2.ready||file2.writing||offset!==file2.bytes)throw new Error("Invalid artifact write offset or completed transfer");if(typeof base643!="string"||base643.length>Math.ceil(ARTIFACT_CHUNK_BYTES/3)*4||base643.length%4!==0||!/^[A-Za-z0-9+/]*={0,2}$/.test(base643))throw new Error("Invalid artifact chunk");let chunk=Buffer.from(base643,"base64");if(chunk.toString("base64")!==base643)throw new Error("Invalid artifact chunk");if(file2.bytes+chunk.length>MAX_BYTES)throw new Error("Artifact exceeds 256 MiB");file2.writing=!0;try{let handle=await open2(file2.path,"r+");try{let written=0;for(;written<chunk.length;){let result=await handle.write(chunk,written,chunk.length-written,offset+written);if(!result.bytesWritten)throw new Error("Artifact write made no progress");written+=result.bytesWritten}}finally{await handle.close()}return file2.bytes+=chunk.length,this.info(file2)}finally{file2.writing=!1}}complete(id,bytes,sessionId){let file2=this.require(id,sessionId);if(file2.writing||bytes!==file2.bytes)throw new Error("Artifact size mismatch");return file2.ready=!0,this.info(file2)}resolve(id,sessionId){let file2=this.require(id,sessionId);if(!file2.ready)throw new Error("Artifact is not ready");return file2.path}async read(id,offset,sessionId){let file2=this.require(id,sessionId);if(!file2.ready||!Number.isSafeInteger(offset)||offset<0||offset>file2.bytes)throw new Error("Invalid artifact read");let handle=await open2(file2.path,"r");try{let buffer=Buffer.alloc(Math.min(ARTIFACT_CHUNK_BYTES,file2.bytes-offset)),result=await handle.read(buffer,0,buffer.length,offset);return{base64:buffer.subarray(0,result.bytesRead).toString("base64"),bytes:result.bytesRead,totalBytes:file2.bytes}}finally{await handle.close()}}async remove(id,sessionId){let file2=this.require(id,sessionId);await rm2(path6.dirname(file2.path),{recursive:!0,force:!0}),this.files.delete(id)}async release(sessionId,keep=[]){let retain=new Set(keep);for(let[id,file2]of this.files)file2.sessionId===sessionId&&(retain.has(id)?(file2.sessionId=void 0,file2.accessedAt=Date.now()):await this.remove(id,sessionId))}disposeSync(){this.sweeper&&clearInterval(this.sweeper),this.directory&&rmSync11(this.directory,{recursive:!0,force:!0}),this.files.clear()}async dispose(){this.sweeper&&clearInterval(this.sweeper),this.directory&&await rm2(this.directory,{recursive:!0,force:!0}),this.files.clear()}}}});var ControlSessionManager,init_control_session_manager=__esm({"src/control-session-manager.ts"(){"use strict";init_dist4();init_control_session();init_browser_artifacts();ControlSessionManager=class{constructor(dependencies){this.dependencies=dependencies;this.registry=new ControlSessionRegistry(dependencies.browserId)}registry;artifacts=new BrowserArtifactStore;activityQueues=new Map;async withActivity(id,operation){let pending=(this.activityQueues.get(id)??Promise.resolve()).catch(()=>{}).then(operation);this.activityQueues.set(id,pending);try{return await pending}finally{this.activityQueues.get(id)===pending&&this.activityQueues.delete(id)}}async closeTabs(tabs,transport,sessionId){for(let tabId of tabs)try{let result=await this.dependencies.invoke("tab_close",{tabId},transport);this.registry.recordResult(sessionId,"tab_close",result,{tabId})}catch(error48){let current=await this.dependencies.invoke("tab_list",{},transport);if(!Array.isArray(current.tabs)||current.tabs.some(tab=>(tab.tabId??tab.id)===tabId))throw error48;this.registry.recordResult(sessionId,"tab_close",{},{tabId})}}async userControl(id,operation,reason){if(operation==="release")return await this.invoke("browser_release",{},id),this.registry.info(id);operation==="resume"&&await this.activityQueues.get(id)?.catch(()=>{});let current=this.registry.info(id),info=operation==="resume"?await this.registry.resume(id,()=>this.dependencies.cleanup(current.tabs.map(tab=>tab.tabId),current.transport,!0)):current.status==="user"?current:this.registry.handoff(id,reason);return this.dependencies.notify(),operation==="handoff"?(await this.withActivity(id,async()=>{await this.dependencies.deactivate?.(this.registry.info(id).tabs.map(tab=>tab.tabId),current.transport)}),this.registry.info(id)):info}async invoke(action,data,sessionId,requestedTransport,origin="local"){if(data&&(Object.keys(data).some(key=>key.startsWith("__mearl"))||(data.actions??[]).some(step=>Object.keys(step.data??{}).some(key=>key.startsWith("__mearl")))))throw new Error("Internal session fields are reserved");validateRequiredActionTabId2(action,data);let created=sessionId==="new";if(sessionId==="new"){if(!["tab_open","page_snapshot","page_screenshot"].includes(action))throw new Error("A new session requires tab_open, page_snapshot or page_screenshot");sessionId=this.registry.create(requestedTransport??this.dependencies.transport()).sessionId}let info=sessionId?this.registry.info(sessionId):void 0,transport=info?.transport??requestedTransport??this.dependencies.transport();if(requestedTransport&&transport!==requestedTransport)throw new Error("A session cannot change transport");if(action==="browser_control"){if(!sessionId||!["handoff","resume"].includes(data.operation))throw new Error("browser_control requires --session and handoff/resume");if(data.operation==="resume")return{session:await this.userControl(sessionId,"resume")};if(data.tabId!==void 0&&!info.tabs.some(tab=>tab.tabId===data.tabId))throw new Error("TAB_NOT_IN_CONTROL_SESSION");return{session:await this.userControl(sessionId,"handoff",data.reason)}}if(action==="browser_release"&&sessionId){let params=data;return await this.registry.release(sessionId,params,async(tabs,close)=>{await this.dependencies.cleanup(tabs,transport,params.preserveEnvironment!==!1),await this.closeTabs(close,transport,sessionId),await this.artifacts.release(sessionId,params.keepArtifactIds)}),this.dependencies.notify(),{released:!0,hadActiveControl:!0,transports:[transport],affectedTabIds:info.tabs.map(tab=>tab.tabId),session:this.registry.state(sessionId)}}if((action==="browser_release"||action==="browser_close")&&this.registry.assertBrowserRelease(),(action==="browser_release"||action==="browser_close")&&!sessionId)return this.registry.releaseBrowser(()=>this.dependencies.invoke(action,data,transport));let performStep=async(name,payload,batch=!1)=>{if(name==="tab_open"&&(sessionId&&payload.closeExisting&&(await this.closeTabs(this.registry.info(sessionId).tabs.filter(tab=>tab.source==="created").map(tab=>tab.tabId),transport,sessionId),payload={...payload,closeExisting:!1}),payload={...payload,__mearlBlockedTabIds:this.registry.blockedTabs(sessionId)}),name==="page_upload"&&payload.files){if(payload.filePaths)throw new Error("Use files or filePaths, not both");payload={...payload,filePaths:payload.files.map(file2=>this.artifacts.resolve(file2.artifactId,sessionId))},delete payload.files}if(batch){if(transport==="provider"){let result4=await this.dependencies.invoke(name,{...payload,__mearlControlSource:origin},transport);return sessionId&&this.registry.recordResult(sessionId,name,result4,payload),result4?.action?.success===!1?{...result4.action,success:!1}:result4?.success===!1?{...result4,success:!1}:{success:!0,data:result4}}let result3=await this.dependencies.invoke("run_actions",{tabId:payload.tabId,actions:[{action:name,data:payload}],__mearlControlSource:origin},transport),outcome=result3.results?.[0]??{success:!1,error:result3.error??"Batch step returned no result",stage:result3.stage,attempt:result3.attempt};return sessionId&&outcome.success&&this.registry.recordResult(sessionId,name,outcome.data,payload),outcome}let result2=await this.dependencies.invoke(name,{...payload,__mearlControlSource:origin},transport);return sessionId&&this.registry.recordResult(sessionId,name,result2,payload),result2},invokeStep=(name,payload,batch=!1)=>sessionId&&name==="tab_open"?this.withActivity(sessionId,async()=>(this.registry.assertStep(sessionId,info.generation),performStep(name,payload,batch))):performStep(name,payload,batch),result;try{result=await this.registry.run(sessionId,action,data,async()=>{if(transport==="extension"&&this.dependencies.transport()!=="extension")throw new Error("CONTROL_SESSION_TRANSPORT_UNAVAILABLE: extension is disconnected");if(action.startsWith("__artifact_")){let store=this.artifacts;switch(action){case"__artifact_init":return{artifact:await store.create(data.filename,sessionId),browserId:this.dependencies.browserId()};case"__artifact_write":return store.write(data.artifactId,data.offset,data.base64,sessionId);case"__artifact_complete":return store.complete(data.artifactId,data.bytes,sessionId);case"__artifact_read":return store.read(data.artifactId,data.offset,sessionId);case"__artifact_remove":return await store.remove(data.artifactId,sessionId),{removed:!0};default:throw new Error("Unknown artifact operation")}}if(action==="page_download"){let downloaded=await this.dependencies.download(data,transport,origin);try{return sessionId&&this.registry.recordResult(sessionId,"page_click",downloaded.action,data),{download:{...await this.artifacts.importFile(downloaded.filename,downloaded.filePath,sessionId),browserId:this.dependencies.browserId()},action:downloaded.action}}finally{if(downloaded.owned){let{rm:rm4,rmdir:rmdir2}=await import("node:fs/promises");await rm4(downloaded.filePath,{force:!0}),downloaded.directory&&await rmdir2(downloaded.directory).catch(()=>{})}}}return action==="run_actions"&&sessionId?runActionBatch(data,(name,payload)=>invokeStep(name,payload,!0),{beforeStep:()=>this.registry.assertStep(sessionId,info.generation)}):invokeStep(action,data)},transport)}catch(error48){throw created&&sessionId&&await this.registry.release(sessionId,{},async tabs=>{await this.dependencies.cleanup(tabs,transport,!0),await this.artifacts.release(sessionId)}),this.dependencies.notify(),error48}if(sessionId&&action==="tab_list"&&Array.isArray(result.tabs)){let blocked=new Set(this.registry.blockedTabs(sessionId));result={...result,tabs:result.tabs.filter(tab=>!blocked.has(tab.tabId??tab.id))},result.count=result.tabs.length}return sessionId?(this.dependencies.notify(),{...result,session:this.registry.state(sessionId)}):result}}}});import{StringDecoder as StringDecoder3}from"node:string_decoder";var Utf8LineBuffer,init_socketLines=__esm({"src/socketLines.ts"(){"use strict";Utf8LineBuffer=class{constructor(maxBufferBytes){this.maxBufferBytes=maxBufferBytes}buffer="";decoder=new StringDecoder3("utf8");push(chunk){if(this.buffer+=this.decoder.write(chunk),Buffer.byteLength(this.buffer,"utf8")>this.maxBufferBytes)return this.buffer="",{lines:[],overflow:!0};let lines=[],newlineIndex;for(;(newlineIndex=this.buffer.indexOf(`
1067
- `))!==-1;)lines.push(this.buffer.slice(0,newlineIndex)),this.buffer=this.buffer.slice(newlineIndex+1);return{lines,overflow:!1}}}}});var require_cjs=__commonJS({"../../node_modules/.pnpm/tldts@7.0.21/node_modules/tldts/dist/cjs/index.js"(exports){"use strict";function shareSameDomainSuffix(hostname3,vhost){return hostname3.endsWith(vhost)?hostname3.length===vhost.length||hostname3[hostname3.length-vhost.length-1]===".":!1}function extractDomainWithSuffix(hostname3,publicSuffix){let publicSuffixIndex=hostname3.length-publicSuffix.length-2,lastDotBeforeSuffixIndex=hostname3.lastIndexOf(".",publicSuffixIndex);return lastDotBeforeSuffixIndex===-1?hostname3:hostname3.slice(lastDotBeforeSuffixIndex+1)}function getDomain$1(suffix,hostname3,options){if(options.validHosts!==null){let validHosts=options.validHosts;for(let vhost of validHosts)if(shareSameDomainSuffix(hostname3,vhost))return vhost}let numberOfLeadingDots=0;if(hostname3.startsWith("."))for(;numberOfLeadingDots<hostname3.length&&hostname3[numberOfLeadingDots]===".";)numberOfLeadingDots+=1;return suffix.length===hostname3.length-numberOfLeadingDots?null:extractDomainWithSuffix(hostname3,suffix)}function getDomainWithoutSuffix$1(domain2,suffix){return domain2.slice(0,-suffix.length-1)}function extractHostname(url2,urlIsValidHostname){let start=0,end=url2.length,hasUpper=!1;if(!urlIsValidHostname){if(url2.startsWith("data:"))return null;for(;start<url2.length&&url2.charCodeAt(start)<=32;)start+=1;for(;end>start+1&&url2.charCodeAt(end-1)<=32;)end-=1;if(url2.charCodeAt(start)===47&&url2.charCodeAt(start+1)===47)start+=2;else{let indexOfProtocol=url2.indexOf(":/",start);if(indexOfProtocol!==-1){let protocolSize=indexOfProtocol-start,c0=url2.charCodeAt(start),c1=url2.charCodeAt(start+1),c2=url2.charCodeAt(start+2),c3=url2.charCodeAt(start+3),c4=url2.charCodeAt(start+4);if(!(protocolSize===5&&c0===104&&c1===116&&c2===116&&c3===112&&c4===115)){if(!(protocolSize===4&&c0===104&&c1===116&&c2===116&&c3===112)){if(!(protocolSize===3&&c0===119&&c1===115&&c2===115)){if(!(protocolSize===2&&c0===119&&c1===115))for(let i=start;i<indexOfProtocol;i+=1){let lowerCaseCode=url2.charCodeAt(i)|32;if(!(lowerCaseCode>=97&&lowerCaseCode<=122||lowerCaseCode>=48&&lowerCaseCode<=57||lowerCaseCode===46||lowerCaseCode===45||lowerCaseCode===43))return null}}}}for(start=indexOfProtocol+2;url2.charCodeAt(start)===47;)start+=1}}let indexOfIdentifier=-1,indexOfClosingBracket=-1,indexOfPort=-1;for(let i=start;i<end;i+=1){let code=url2.charCodeAt(i);if(code===35||code===47||code===63){end=i;break}else code===64?indexOfIdentifier=i:code===93?indexOfClosingBracket=i:code===58?indexOfPort=i:code>=65&&code<=90&&(hasUpper=!0)}if(indexOfIdentifier!==-1&&indexOfIdentifier>start&&indexOfIdentifier<end&&(start=indexOfIdentifier+1),url2.charCodeAt(start)===91)return indexOfClosingBracket!==-1?url2.slice(start+1,indexOfClosingBracket).toLowerCase():null;indexOfPort!==-1&&indexOfPort>start&&indexOfPort<end&&(end=indexOfPort)}for(;end>start+1&&url2.charCodeAt(end-1)===46;)end-=1;let hostname3=start!==0||end!==url2.length?url2.slice(start,end):url2;return hasUpper?hostname3.toLowerCase():hostname3}function isProbablyIpv4(hostname3){if(hostname3.length<7||hostname3.length>15)return!1;let numberOfDots=0;for(let i=0;i<hostname3.length;i+=1){let code=hostname3.charCodeAt(i);if(code===46)numberOfDots+=1;else if(code<48||code>57)return!1}return numberOfDots===3&&hostname3.charCodeAt(0)!==46&&hostname3.charCodeAt(hostname3.length-1)!==46}function isProbablyIpv6(hostname3){if(hostname3.length<3)return!1;let start=hostname3.startsWith("[")?1:0,end=hostname3.length;if(hostname3[end-1]==="]"&&(end-=1),end-start>39)return!1;let hasColon=!1;for(;start<end;start+=1){let code=hostname3.charCodeAt(start);if(code===58)hasColon=!0;else if(!(code>=48&&code<=57||code>=97&&code<=102||code>=65&&code<=90))return!1}return hasColon}function isIp(hostname3){return isProbablyIpv6(hostname3)||isProbablyIpv4(hostname3)}function isValidAscii(code){return code>=97&&code<=122||code>=48&&code<=57||code>127}function isValidHostname(hostname3){if(hostname3.length>255||hostname3.length===0||!isValidAscii(hostname3.charCodeAt(0))&&hostname3.charCodeAt(0)!==46&&hostname3.charCodeAt(0)!==95)return!1;let lastDotIndex=-1,lastCharCode=-1,len=hostname3.length;for(let i=0;i<len;i+=1){let code=hostname3.charCodeAt(i);if(code===46){if(i-lastDotIndex>64||lastCharCode===46||lastCharCode===45||lastCharCode===95)return!1;lastDotIndex=i}else if(!(isValidAscii(code)||code===45||code===95))return!1;lastCharCode=code}return len-lastDotIndex-1<=63&&lastCharCode!==45}function setDefaultsImpl({allowIcannDomains=!0,allowPrivateDomains=!1,detectIp=!0,extractHostname:extractHostname2=!0,mixedInputs=!0,validHosts=null,validateHostname=!0}){return{allowIcannDomains,allowPrivateDomains,detectIp,extractHostname:extractHostname2,mixedInputs,validHosts,validateHostname}}var DEFAULT_OPTIONS=setDefaultsImpl({});function setDefaults(options){return options===void 0?DEFAULT_OPTIONS:setDefaultsImpl(options)}function getSubdomain$1(hostname3,domain2){return domain2.length===hostname3.length?"":hostname3.slice(0,-domain2.length-1)}function getEmptyResult(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,publicSuffix:null,subdomain:null}}function resetResult(result){result.domain=null,result.domainWithoutSuffix=null,result.hostname=null,result.isIcann=null,result.isIp=null,result.isPrivate=null,result.publicSuffix=null,result.subdomain=null}function parseImpl(url2,step,suffixLookup2,partialOptions,result){let options=setDefaults(partialOptions);return typeof url2!="string"||(options.extractHostname?options.mixedInputs?result.hostname=extractHostname(url2,isValidHostname(url2)):result.hostname=extractHostname(url2,!1):result.hostname=url2,options.detectIp&&result.hostname!==null&&(result.isIp=isIp(result.hostname),result.isIp))?result:options.validateHostname&&options.extractHostname&&result.hostname!==null&&!isValidHostname(result.hostname)?(result.hostname=null,result):(step===0||result.hostname===null||(suffixLookup2(result.hostname,options,result),step===2||result.publicSuffix===null)||(result.domain=getDomain$1(result.publicSuffix,result.hostname,options),step===3||result.domain===null)||(result.subdomain=getSubdomain$1(result.hostname,result.domain),step===4)||(result.domainWithoutSuffix=getDomainWithoutSuffix$1(result.domain,result.publicSuffix)),result)}function fastPathLookup(hostname3,options,out){if(!options.allowPrivateDomains&&hostname3.length>3){let last=hostname3.length-1,c3=hostname3.charCodeAt(last),c2=hostname3.charCodeAt(last-1),c1=hostname3.charCodeAt(last-2),c0=hostname3.charCodeAt(last-3);if(c3===109&&c2===111&&c1===99&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="com",!0;if(c3===103&&c2===114&&c1===111&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="org",!0;if(c3===117&&c2===100&&c1===101&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="edu",!0;if(c3===118&&c2===111&&c1===103&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="gov",!0;if(c3===116&&c2===101&&c1===110&&c0===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="net",!0;if(c3===101&&c2===100&&c1===46)return out.isIcann=!0,out.isPrivate=!1,out.publicSuffix="de",!0}return!1}var exceptions=(function(){let _0=[1,{}],_1=[0,{city:_0}];return[0,{ck:[0,{www:_0}],jp:[0,{kawasaki:_1,kitakyushu:_1,kobe:_1,nagoya:_1,sapporo:_1,sendai:_1,yokohama:_1}]}]})(),rules=(function(){let _2=[1,{}],_3=[2,{}],_4=[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2}],_5=[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],_6=[0,{"*":_3}],_7=[2,{s:_6}],_8=[0,{relay:_3}],_9=[2,{id:_3}],_10=[1,{gov:_2}],_11=[0,{airflow:_6,"lambda-url":_3,"transfer-webapp":_3}],_12=[0,{airflow:_6,"transfer-webapp":_3}],_13=[0,{"transfer-webapp":_3}],_14=[0,{"transfer-webapp":_3,"transfer-webapp-fips":_3}],_15=[0,{notebook:_3,studio:_3}],_16=[0,{labeling:_3,notebook:_3,studio:_3}],_17=[0,{notebook:_3}],_18=[0,{labeling:_3,notebook:_3,"notebook-fips":_3,studio:_3}],_19=[0,{notebook:_3,"notebook-fips":_3,studio:_3,"studio-fips":_3}],_20=[0,{shop:_3}],_21=[0,{"*":_2}],_22=[1,{co:_3}],_23=[0,{objects:_3}],_24=[2,{nodes:_3}],_25=[0,{my:_3}],_26=[0,{s3:_3,"s3-accesspoint":_3,"s3-website":_3}],_27=[0,{s3:_3,"s3-accesspoint":_3}],_28=[0,{direct:_3}],_29=[0,{"webview-assets":_3}],_30=[0,{vfs:_3,"webview-assets":_3}],_31=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:_30}],_32=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_27,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:_30}],_33=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],_34=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3}],_35=[0,{s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-fips":_3,"s3-website":_3}],_36=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:_30}],_37=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3}],_38=[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-deprecated":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],_39=[0,{auth:_3}],_40=[0,{auth:_3,"auth-fips":_3}],_41=[0,{"auth-fips":_3}],_42=[0,{apps:_3}],_43=[0,{paas:_3}],_44=[2,{eu:_3}],_45=[0,{app:_3}],_46=[0,{site:_3}],_47=[1,{com:_2,edu:_2,net:_2,org:_2}],_48=[0,{j:_3}],_49=[0,{dyn:_3}],_50=[2,{web:_3}],_51=[1,{discourse:_3}],_52=[1,{co:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2}],_53=[0,{p:_3}],_54=[0,{user:_3}],_55=[0,{cdn:_3}],_56=[2,{raw:_6}],_57=[0,{cust:_3,reservd:_3}],_58=[0,{cust:_3}],_59=[0,{s3:_3}],_60=[1,{biz:_2,com:_2,edu:_2,gov:_2,info:_2,net:_2,org:_2}],_61=[0,{ipfs:_3}],_62=[1,{framer:_3}],_63=[0,{forgot:_3}],_64=[1,{gs:_2}],_65=[0,{nes:_2}],_66=[1,{k12:_2,cc:_2,lib:_2}],_67=[1,{cc:_2}],_68=[1,{cc:_2,lib:_2}];return[0,{ac:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,drr:_3,feedback:_3,forms:_3}],ad:_2,ae:[1,{ac:_2,co:_2,gov:_2,mil:_2,net:_2,org:_2,sch:_2}],aero:[1,{airline:_2,airport:_2,"accident-investigation":_2,"accident-prevention":_2,aerobatic:_2,aeroclub:_2,aerodrome:_2,agents:_2,"air-surveillance":_2,"air-traffic-control":_2,aircraft:_2,airtraffic:_2,ambulance:_2,association:_2,author:_2,ballooning:_2,broker:_2,caa:_2,cargo:_2,catering:_2,certification:_2,championship:_2,charter:_2,civilaviation:_2,club:_2,conference:_2,consultant:_2,consulting:_2,control:_2,council:_2,crew:_2,design:_2,dgca:_2,educator:_2,emergency:_2,engine:_2,engineer:_2,entertainment:_2,equipment:_2,exchange:_2,express:_2,federation:_2,flight:_2,freight:_2,fuel:_2,gliding:_2,government:_2,groundhandling:_2,group:_2,hanggliding:_2,homebuilt:_2,insurance:_2,journal:_2,journalist:_2,leasing:_2,logistics:_2,magazine:_2,maintenance:_2,marketplace:_2,media:_2,microlight:_2,modelling:_2,navigation:_2,parachuting:_2,paragliding:_2,"passenger-association":_2,pilot:_2,press:_2,production:_2,recreation:_2,repbody:_2,res:_2,research:_2,rotorcraft:_2,safety:_2,scientist:_2,services:_2,show:_2,skydiving:_2,software:_2,student:_2,taxi:_2,trader:_2,trading:_2,trainer:_2,union:_2,workinggroup:_2,works:_2}],af:_4,ag:[1,{co:_2,com:_2,net:_2,nom:_2,org:_2,obj:_3}],ai:[1,{com:_2,net:_2,off:_2,org:_2,uwu:_3,framer:_3,kiloapps:_3}],al:_5,am:[1,{co:_2,com:_2,commune:_2,net:_2,org:_2,radio:_3}],ao:[1,{co:_2,ed:_2,edu:_2,gov:_2,gv:_2,it:_2,og:_2,org:_2,pb:_2}],aq:_2,ar:[1,{bet:_2,com:_2,coop:_2,edu:_2,gob:_2,gov:_2,int:_2,mil:_2,musica:_2,mutual:_2,net:_2,org:_2,seg:_2,senasa:_2,tur:_2}],arpa:[1,{e164:_2,home:_2,"in-addr":_2,ip6:_2,iris:_2,uri:_2,urn:_2}],as:_10,asia:[1,{cloudns:_3,daemon:_3,dix:_3}],at:[1,{4:_3,ac:[1,{sth:_2}],co:_2,gv:_2,or:_2,funkfeuer:[0,{wien:_3}],futurecms:[0,{"*":_3,ex:_6,in:_6}],futurehosting:_3,futuremailing:_3,ortsinfo:[0,{ex:_6,kunden:_6}],biz:_3,info:_3,"123webseite":_3,priv:_3,my:_3,myspreadshop:_3,"12hp":_3,"2ix":_3,"4lima":_3,"lima-city":_3}],au:[1,{asn:_2,com:[1,{cloudlets:[0,{mel:_3}],myspreadshop:_3}],edu:[1,{act:_2,catholic:_2,nsw:_2,nt:_2,qld:_2,sa:_2,tas:_2,vic:_2,wa:_2}],gov:[1,{qld:_2,sa:_2,tas:_2,vic:_2,wa:_2}],id:_2,net:_2,org:_2,conf:_2,oz:_2,act:_2,nsw:_2,nt:_2,qld:_2,sa:_2,tas:_2,vic:_2,wa:_2,hrsn:[0,{vps:_3}]}],aw:[1,{com:_2}],ax:_2,az:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,int:_2,mil:_2,name:_2,net:_2,org:_2,pp:_2,pro:_2}],ba:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,brendly:_20,rs:_3}],bb:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,net:_2,org:_2,store:_2,tv:_2}],bd:[1,{ac:_2,ai:_2,co:_2,com:_2,edu:_2,gov:_2,id:_2,info:_2,it:_2,mil:_2,net:_2,org:_2,sch:_2,tv:_2}],be:[1,{ac:_2,cloudns:_3,webhosting:_3,interhostsolutions:[0,{cloud:_3}],kuleuven:[0,{ezproxy:_3}],"123website":_3,myspreadshop:_3,transurl:_6}],bf:_10,bg:[1,{0:_2,1:_2,2:_2,3:_2,4:_2,5:_2,6:_2,7:_2,8:_2,9:_2,a:_2,b:_2,c:_2,d:_2,e:_2,f:_2,g:_2,h:_2,i:_2,j:_2,k:_2,l:_2,m:_2,n:_2,o:_2,p:_2,q:_2,r:_2,s:_2,t:_2,u:_2,v:_2,w:_2,x:_2,y:_2,z:_2,barsy:_3}],bh:_4,bi:[1,{co:_2,com:_2,edu:_2,or:_2,org:_2}],biz:[1,{activetrail:_3,"cloud-ip":_3,cloudns:_3,jozi:_3,dyndns:_3,"for-better":_3,"for-more":_3,"for-some":_3,"for-the":_3,selfip:_3,webhop:_3,orx:_3,mmafan:_3,myftp:_3,"no-ip":_3,dscloud:_3}],bj:[1,{africa:_2,agro:_2,architectes:_2,assur:_2,avocats:_2,co:_2,com:_2,eco:_2,econo:_2,edu:_2,info:_2,loisirs:_2,money:_2,net:_2,org:_2,ote:_2,restaurant:_2,resto:_2,tourism:_2,univ:_2}],bm:_4,bn:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,co:_3}],bo:[1,{com:_2,edu:_2,gob:_2,int:_2,mil:_2,net:_2,org:_2,tv:_2,web:_2,academia:_2,agro:_2,arte:_2,blog:_2,bolivia:_2,ciencia:_2,cooperativa:_2,democracia:_2,deporte:_2,ecologia:_2,economia:_2,empresa:_2,indigena:_2,industria:_2,info:_2,medicina:_2,movimiento:_2,musica:_2,natural:_2,nombre:_2,noticias:_2,patria:_2,plurinacional:_2,politica:_2,profesional:_2,pueblo:_2,revista:_2,salud:_2,tecnologia:_2,tksat:_2,transporte:_2,wiki:_2}],br:[1,{"9guacu":_2,abc:_2,adm:_2,adv:_2,agr:_2,aju:_2,am:_2,anani:_2,aparecida:_2,api:_2,app:_2,arq:_2,art:_2,ato:_2,b:_2,barueri:_2,belem:_2,bet:_2,bhz:_2,bib:_2,bio:_2,blog:_2,bmd:_2,boavista:_2,bsb:_2,campinagrande:_2,campinas:_2,caxias:_2,cim:_2,cng:_2,cnt:_2,com:[1,{simplesite:_3}],contagem:_2,coop:_2,coz:_2,cri:_2,cuiaba:_2,curitiba:_2,def:_2,des:_2,det:_2,dev:_2,ecn:_2,eco:_2,edu:_2,emp:_2,enf:_2,eng:_2,esp:_2,etc:_2,eti:_2,far:_2,feira:_2,flog:_2,floripa:_2,fm:_2,fnd:_2,fortal:_2,fot:_2,foz:_2,fst:_2,g12:_2,geo:_2,ggf:_2,goiania:_2,gov:[1,{ac:_2,al:_2,am:_2,ap:_2,ba:_2,ce:_2,df:_2,es:_2,go:_2,ma:_2,mg:_2,ms:_2,mt:_2,pa:_2,pb:_2,pe:_2,pi:_2,pr:_2,rj:_2,rn:_2,ro:_2,rr:_2,rs:_2,sc:_2,se:_2,sp:_2,to:_2}],gru:_2,ia:_2,imb:_2,ind:_2,inf:_2,jab:_2,jampa:_2,jdf:_2,joinville:_2,jor:_2,jus:_2,leg:[1,{ac:_3,al:_3,am:_3,ap:_3,ba:_3,ce:_3,df:_3,es:_3,go:_3,ma:_3,mg:_3,ms:_3,mt:_3,pa:_3,pb:_3,pe:_3,pi:_3,pr:_3,rj:_3,rn:_3,ro:_3,rr:_3,rs:_3,sc:_3,se:_3,sp:_3,to:_3}],leilao:_2,lel:_2,log:_2,londrina:_2,macapa:_2,maceio:_2,manaus:_2,maringa:_2,mat:_2,med:_2,mil:_2,morena:_2,mp:_2,mus:_2,natal:_2,net:_2,niteroi:_2,nom:_21,not:_2,ntr:_2,odo:_2,ong:_2,org:_2,osasco:_2,palmas:_2,poa:_2,ppg:_2,pro:_2,psc:_2,psi:_2,pvh:_2,qsl:_2,radio:_2,rec:_2,recife:_2,rep:_2,ribeirao:_2,rio:_2,riobranco:_2,riopreto:_2,salvador:_2,sampa:_2,santamaria:_2,santoandre:_2,saobernardo:_2,saogonca:_2,seg:_2,sjc:_2,slg:_2,slz:_2,social:_2,sorocaba:_2,srv:_2,taxi:_2,tc:_2,tec:_2,teo:_2,the:_2,tmp:_2,trd:_2,tur:_2,tv:_2,udi:_2,vet:_2,vix:_2,vlog:_2,wiki:_2,xyz:_2,zlg:_2,tche:_3}],bs:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,we:_3}],bt:_4,bv:_2,bw:[1,{ac:_2,co:_2,gov:_2,net:_2,org:_2}],by:[1,{gov:_2,mil:_2,com:_2,of:_2,mediatech:_3}],bz:[1,{co:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2,za:_3,mydns:_3,gsj:_3}],ca:[1,{ab:_2,bc:_2,mb:_2,nb:_2,nf:_2,nl:_2,ns:_2,nt:_2,nu:_2,on:_2,pe:_2,qc:_2,sk:_2,yk:_2,gc:_2,barsy:_3,awdev:_6,co:_3,"no-ip":_3,onid:_3,myspreadshop:_3,box:_3}],cat:_2,cc:[1,{cleverapps:_3,"cloud-ip":_3,cloudns:_3,ccwu:_3,ftpaccess:_3,"game-server":_3,myphotos:_3,scrapping:_3,twmail:_3,csx:_3,fantasyleague:_3,spawn:[0,{instances:_3}],ec:_3,eu:_3,gu:_3,uk:_3,us:_3}],cd:[1,{gov:_2,cc:_3}],cf:_2,cg:_2,ch:[1,{square7:_3,cloudns:_3,cloudscale:[0,{cust:_3,lpg:_23,rma:_23}],objectstorage:[0,{lpg:_3,rma:_3}],flow:[0,{ae:[0,{alp1:_3}],appengine:_3}],"linkyard-cloud":_3,gotdns:_3,dnsking:_3,"123website":_3,myspreadshop:_3,firenet:[0,{"*":_3,svc:_6}],"12hp":_3,"2ix":_3,"4lima":_3,"lima-city":_3}],ci:[1,{ac:_2,"xn--aroport-bya":_2,aéroport:_2,asso:_2,co:_2,com:_2,ed:_2,edu:_2,go:_2,gouv:_2,int:_2,net:_2,or:_2,org:_2,us:_3}],ck:_21,cl:[1,{co:_2,gob:_2,gov:_2,mil:_2,cloudns:_3}],cm:[1,{co:_2,com:_2,gov:_2,net:_2}],cn:[1,{ac:_2,com:[1,{amazonaws:[0,{"cn-north-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,rds:_6,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-deprecated":_3,"s3-object-lambda":_3,"s3-website":_3}],"cn-northwest-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,rds:_6,dualstack:_27,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3}],compute:_6,airflow:[0,{"cn-north-1":_6,"cn-northwest-1":_6}],eb:[0,{"cn-north-1":_3,"cn-northwest-1":_3}],elb:_6}],amazonwebservices:[0,{on:[0,{"cn-north-1":_12,"cn-northwest-1":_12}]}],sagemaker:[0,{"cn-north-1":_15,"cn-northwest-1":_15}]}],edu:_2,gov:_2,mil:_2,net:_2,org:_2,"xn--55qx5d":_2,公司:_2,"xn--od0alg":_2,網絡:_2,"xn--io0a7i":_2,网络:_2,ah:_2,bj:_2,cq:_2,fj:_2,gd:_2,gs:_2,gx:_2,gz:_2,ha:_2,hb:_2,he:_2,hi:_2,hk:_2,hl:_2,hn:_2,jl:_2,js:_2,jx:_2,ln:_2,mo:_2,nm:_2,nx:_2,qh:_2,sc:_2,sd:_2,sh:[1,{as:_3}],sn:_2,sx:_2,tj:_2,tw:_2,xj:_2,xz:_2,yn:_2,zj:_2,"canva-apps":_3,canvasite:_25,myqnapcloud:_3,quickconnect:_28}],co:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,nom:_2,org:_2,carrd:_3,crd:_3,otap:_6,hidns:_3,leadpages:_3,lpages:_3,mypi:_3,xmit:_6,rdpa:[0,{clusters:_6,srvrless:_6}],firewalledreplit:_9,repl:_9,supabase:[2,{realtime:_3,storage:_3}],umso:_3}],com:[1,{a2hosted:_3,cpserver:_3,adobeaemcloud:[2,{dev:_6}],africa:_3,auiusercontent:_6,aivencloud:_3,alibabacloudcs:_3,kasserver:_3,amazonaws:[0,{"af-south-1":_31,"ap-east-1":_32,"ap-northeast-1":_33,"ap-northeast-2":_33,"ap-northeast-3":_31,"ap-south-1":_33,"ap-south-2":_34,"ap-southeast-1":_33,"ap-southeast-2":_33,"ap-southeast-3":_34,"ap-southeast-4":_34,"ap-southeast-5":[0,{"execute-api":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-deprecated":_3,"s3-object-lambda":_3,"s3-website":_3}],"ca-central-1":_36,"ca-west-1":_37,"eu-central-1":_33,"eu-central-2":_34,"eu-north-1":_32,"eu-south-1":_31,"eu-south-2":_34,"eu-west-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-deprecated":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],"eu-west-2":_32,"eu-west-3":_31,"il-central-1":[0,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_26,s3:_3,"s3-accesspoint":_3,"s3-object-lambda":_3,"s3-website":_3,"aws-cloud9":_29,cloud9:[0,{vfs:_3}]}],"me-central-1":_34,"me-south-1":_32,"sa-east-1":_31,"us-east-1":[2,{"execute-api":_3,"emrappui-prod":_3,"emrnotebooks-prod":_3,"emrstudio-prod":_3,dualstack:_35,s3:_3,"s3-accesspoint":_3,"s3-accesspoint-fips":_3,"s3-deprecated":_3,"s3-fips":_3,"s3-object-lambda":_3,"s3-website":_3,"analytics-gateway":_3,"aws-cloud9":_29,cloud9:_30}],"us-east-2":_38,"us-gov-east-1":_37,"us-gov-west-1":_37,"us-west-1":_36,"us-west-2":_38,compute:_6,"compute-1":_6,airflow:[0,{"af-south-1":_6,"ap-east-1":_6,"ap-northeast-1":_6,"ap-northeast-2":_6,"ap-northeast-3":_6,"ap-south-1":_6,"ap-south-2":_6,"ap-southeast-1":_6,"ap-southeast-2":_6,"ap-southeast-3":_6,"ap-southeast-4":_6,"ap-southeast-5":_6,"ap-southeast-7":_6,"ca-central-1":_6,"ca-west-1":_6,"eu-central-1":_6,"eu-central-2":_6,"eu-north-1":_6,"eu-south-1":_6,"eu-south-2":_6,"eu-west-1":_6,"eu-west-2":_6,"eu-west-3":_6,"il-central-1":_6,"me-central-1":_6,"me-south-1":_6,"sa-east-1":_6,"us-east-1":_6,"us-east-2":_6,"us-west-1":_6,"us-west-2":_6}],rds:[0,{"af-south-1":_6,"ap-east-1":_6,"ap-east-2":_6,"ap-northeast-1":_6,"ap-northeast-2":_6,"ap-northeast-3":_6,"ap-south-1":_6,"ap-south-2":_6,"ap-southeast-1":_6,"ap-southeast-2":_6,"ap-southeast-3":_6,"ap-southeast-4":_6,"ap-southeast-5":_6,"ap-southeast-6":_6,"ap-southeast-7":_6,"ca-central-1":_6,"ca-west-1":_6,"eu-central-1":_6,"eu-central-2":_6,"eu-west-1":_6,"eu-west-2":_6,"eu-west-3":_6,"il-central-1":_6,"me-central-1":_6,"me-south-1":_6,"mx-central-1":_6,"sa-east-1":_6,"us-east-1":_6,"us-east-2":_6,"us-gov-east-1":_6,"us-gov-west-1":_6,"us-northeast-1":_6,"us-west-1":_6,"us-west-2":_6}],s3:_3,"s3-1":_3,"s3-ap-east-1":_3,"s3-ap-northeast-1":_3,"s3-ap-northeast-2":_3,"s3-ap-northeast-3":_3,"s3-ap-south-1":_3,"s3-ap-southeast-1":_3,"s3-ap-southeast-2":_3,"s3-ca-central-1":_3,"s3-eu-central-1":_3,"s3-eu-north-1":_3,"s3-eu-west-1":_3,"s3-eu-west-2":_3,"s3-eu-west-3":_3,"s3-external-1":_3,"s3-fips-us-gov-east-1":_3,"s3-fips-us-gov-west-1":_3,"s3-global":[0,{accesspoint:[0,{mrap:_3}]}],"s3-me-south-1":_3,"s3-sa-east-1":_3,"s3-us-east-2":_3,"s3-us-gov-east-1":_3,"s3-us-gov-west-1":_3,"s3-us-west-1":_3,"s3-us-west-2":_3,"s3-website-ap-northeast-1":_3,"s3-website-ap-southeast-1":_3,"s3-website-ap-southeast-2":_3,"s3-website-eu-west-1":_3,"s3-website-sa-east-1":_3,"s3-website-us-east-1":_3,"s3-website-us-gov-west-1":_3,"s3-website-us-west-1":_3,"s3-website-us-west-2":_3,elb:_6}],amazoncognito:[0,{"af-south-1":_39,"ap-east-1":_39,"ap-northeast-1":_39,"ap-northeast-2":_39,"ap-northeast-3":_39,"ap-south-1":_39,"ap-south-2":_39,"ap-southeast-1":_39,"ap-southeast-2":_39,"ap-southeast-3":_39,"ap-southeast-4":_39,"ap-southeast-5":_39,"ap-southeast-7":_39,"ca-central-1":_39,"ca-west-1":_39,"eu-central-1":_39,"eu-central-2":_39,"eu-north-1":_39,"eu-south-1":_39,"eu-south-2":_39,"eu-west-1":_39,"eu-west-2":_39,"eu-west-3":_39,"il-central-1":_39,"me-central-1":_39,"me-south-1":_39,"mx-central-1":_39,"sa-east-1":_39,"us-east-1":_40,"us-east-2":_40,"us-gov-east-1":_41,"us-gov-west-1":_41,"us-west-1":_40,"us-west-2":_40}],amplifyapp:_3,awsapprunner:_6,awsapps:_3,elasticbeanstalk:[2,{"af-south-1":_3,"ap-east-1":_3,"ap-northeast-1":_3,"ap-northeast-2":_3,"ap-northeast-3":_3,"ap-south-1":_3,"ap-southeast-1":_3,"ap-southeast-2":_3,"ap-southeast-3":_3,"ap-southeast-5":_3,"ap-southeast-7":_3,"ca-central-1":_3,"eu-central-1":_3,"eu-north-1":_3,"eu-south-1":_3,"eu-south-2":_3,"eu-west-1":_3,"eu-west-2":_3,"eu-west-3":_3,"il-central-1":_3,"me-central-1":_3,"me-south-1":_3,"sa-east-1":_3,"us-east-1":_3,"us-east-2":_3,"us-gov-east-1":_3,"us-gov-west-1":_3,"us-west-1":_3,"us-west-2":_3}],awsglobalaccelerator:_3,siiites:_3,appspacehosted:_3,appspaceusercontent:_3,"on-aptible":_3,myasustor:_3,"balena-devices":_3,boutir:_3,bplaced:_3,cafjs:_3,"canva-apps":_3,"canva-hosted-embed":_3,canvacode:_3,"rice-labs":_3,"cdn77-storage":_3,br:_3,cn:_3,de:_3,eu:_3,jpn:_3,mex:_3,ru:_3,sa:_3,uk:_3,us:_3,za:_3,"clever-cloud":[0,{services:_6}],abrdns:_3,dnsabr:_3,"ip-ddns":_3,jdevcloud:_3,wpdevcloud:_3,"cf-ipfs":_3,"cloudflare-ipfs":_3,trycloudflare:_3,co:_3,devinapps:_6,builtwithdark:_3,datadetect:[0,{demo:_3,instance:_3}],dattolocal:_3,dattorelay:_3,dattoweb:_3,mydatto:_3,digitaloceanspaces:_6,discordsays:_3,discordsez:_3,drayddns:_3,dreamhosters:_3,durumis:_3,blogdns:_3,cechire:_3,dnsalias:_3,dnsdojo:_3,doesntexist:_3,dontexist:_3,doomdns:_3,"dyn-o-saur":_3,dynalias:_3,"dyndns-at-home":_3,"dyndns-at-work":_3,"dyndns-blog":_3,"dyndns-free":_3,"dyndns-home":_3,"dyndns-ip":_3,"dyndns-mail":_3,"dyndns-office":_3,"dyndns-pics":_3,"dyndns-remote":_3,"dyndns-server":_3,"dyndns-web":_3,"dyndns-wiki":_3,"dyndns-work":_3,"est-a-la-maison":_3,"est-a-la-masion":_3,"est-le-patron":_3,"est-mon-blogueur":_3,"from-ak":_3,"from-al":_3,"from-ar":_3,"from-ca":_3,"from-ct":_3,"from-dc":_3,"from-de":_3,"from-fl":_3,"from-ga":_3,"from-hi":_3,"from-ia":_3,"from-id":_3,"from-il":_3,"from-in":_3,"from-ks":_3,"from-ky":_3,"from-ma":_3,"from-md":_3,"from-mi":_3,"from-mn":_3,"from-mo":_3,"from-ms":_3,"from-mt":_3,"from-nc":_3,"from-nd":_3,"from-ne":_3,"from-nh":_3,"from-nj":_3,"from-nm":_3,"from-nv":_3,"from-oh":_3,"from-ok":_3,"from-or":_3,"from-pa":_3,"from-pr":_3,"from-ri":_3,"from-sc":_3,"from-sd":_3,"from-tn":_3,"from-tx":_3,"from-ut":_3,"from-va":_3,"from-vt":_3,"from-wa":_3,"from-wi":_3,"from-wv":_3,"from-wy":_3,getmyip:_3,gotdns:_3,"hobby-site":_3,homelinux:_3,homeunix:_3,iamallama:_3,"is-a-anarchist":_3,"is-a-blogger":_3,"is-a-bookkeeper":_3,"is-a-bulls-fan":_3,"is-a-caterer":_3,"is-a-chef":_3,"is-a-conservative":_3,"is-a-cpa":_3,"is-a-cubicle-slave":_3,"is-a-democrat":_3,"is-a-designer":_3,"is-a-doctor":_3,"is-a-financialadvisor":_3,"is-a-geek":_3,"is-a-green":_3,"is-a-guru":_3,"is-a-hard-worker":_3,"is-a-hunter":_3,"is-a-landscaper":_3,"is-a-lawyer":_3,"is-a-liberal":_3,"is-a-libertarian":_3,"is-a-llama":_3,"is-a-musician":_3,"is-a-nascarfan":_3,"is-a-nurse":_3,"is-a-painter":_3,"is-a-personaltrainer":_3,"is-a-photographer":_3,"is-a-player":_3,"is-a-republican":_3,"is-a-rockstar":_3,"is-a-socialist":_3,"is-a-student":_3,"is-a-teacher":_3,"is-a-techie":_3,"is-a-therapist":_3,"is-an-accountant":_3,"is-an-actor":_3,"is-an-actress":_3,"is-an-anarchist":_3,"is-an-artist":_3,"is-an-engineer":_3,"is-an-entertainer":_3,"is-certified":_3,"is-gone":_3,"is-into-anime":_3,"is-into-cars":_3,"is-into-cartoons":_3,"is-into-games":_3,"is-leet":_3,"is-not-certified":_3,"is-slick":_3,"is-uberleet":_3,"is-with-theband":_3,"isa-geek":_3,"isa-hockeynut":_3,issmarterthanyou:_3,"likes-pie":_3,likescandy:_3,"neat-url":_3,"saves-the-whales":_3,selfip:_3,"sells-for-less":_3,"sells-for-u":_3,servebbs:_3,"simple-url":_3,"space-to-rent":_3,"teaches-yoga":_3,writesthisblog:_3,ddnsfree:_3,ddnsgeek:_3,giize:_3,gleeze:_3,kozow:_3,loseyourip:_3,ooguy:_3,theworkpc:_3,emergentagent:[0,{preview:_3}],mytuleap:_3,"tuleap-partners":_3,encoreapi:_3,evennode:[0,{"eu-1":_3,"eu-2":_3,"eu-3":_3,"eu-4":_3,"us-1":_3,"us-2":_3,"us-3":_3,"us-4":_3}],onfabrica:_3,"fastly-edge":_3,"fastly-terrarium":_3,"fastvps-server":_3,mydobiss:_3,firebaseapp:_3,fldrv:_3,framercanvas:_3,"freebox-os":_3,freeboxos:_3,freemyip:_3,aliases121:_3,gentapps:_3,gentlentapis:_3,githubusercontent:_3,"0emm":_6,appspot:[2,{r:_6}],blogspot:_3,codespot:_3,googleapis:_3,googlecode:_3,pagespeedmobilizer:_3,withgoogle:_3,withyoutube:_3,grayjayleagues:_3,hatenablog:_3,hatenadiary:_3,"hercules-app":_3,"hercules-dev":_3,herokuapp:_3,gr:_3,smushcdn:_3,wphostedmail:_3,wpmucdn:_3,pixolino:_3,"apps-1and1":_3,"live-website":_3,"webspace-host":_3,dopaas:_3,"hosted-by-previder":_43,hosteur:[0,{"rag-cloud":_3,"rag-cloud-ch":_3}],"ik-server":[0,{jcloud:_3,"jcloud-ver-jpc":_3}],jelastic:[0,{demo:_3}],massivegrid:_43,wafaicloud:[0,{jed:_3,ryd:_3}],"eu1-plenit":_3,"la1-plenit":_3,"us1-plenit":_3,webadorsite:_3,joyent:[0,{cns:_6}],"on-forge":_3,"on-vapor":_3,lpusercontent:_3,linode:[0,{members:_3,nodebalancer:_6}],linodeobjects:_6,linodeusercontent:[0,{ip:_3}],localtonet:_3,lovableproject:_3,barsycenter:_3,barsyonline:_3,lutrausercontent:_6,magicpatternsapp:_3,modelscape:_3,mwcloudnonprod:_3,polyspace:_3,mazeplay:_3,miniserver:_3,atmeta:_3,fbsbx:_42,meteorapp:_44,routingthecloud:_3,"same-app":_3,"same-preview":_3,mydbserver:_3,mochausercontent:_3,hostedpi:_3,"mythic-beasts":[0,{caracal:_3,customer:_3,fentiger:_3,lynx:_3,ocelot:_3,oncilla:_3,onza:_3,sphinx:_3,vs:_3,x:_3,yali:_3}],nospamproxy:[0,{cloud:[2,{o365:_3}]}],"4u":_3,nfshost:_3,"3utilities":_3,blogsyte:_3,ciscofreak:_3,damnserver:_3,ddnsking:_3,ditchyourip:_3,dnsiskinky:_3,dynns:_3,geekgalaxy:_3,"health-carereform":_3,homesecuritymac:_3,homesecuritypc:_3,myactivedirectory:_3,mysecuritycamera:_3,myvnc:_3,"net-freaks":_3,onthewifi:_3,point2this:_3,quicksytes:_3,securitytactics:_3,servebeer:_3,servecounterstrike:_3,serveexchange:_3,serveftp:_3,servegame:_3,servehalflife:_3,servehttp:_3,servehumour:_3,serveirc:_3,servemp3:_3,servep2p:_3,servepics:_3,servequake:_3,servesarcasm:_3,stufftoread:_3,unusualperson:_3,workisboring:_3,myiphost:_3,observableusercontent:[0,{static:_3}],simplesite:_3,oaiusercontent:_6,orsites:_3,operaunite:_3,"customer-oci":[0,{"*":_3,oci:_6,ocp:_6,ocs:_6}],oraclecloudapps:_6,oraclegovcloudapps:_6,"authgear-staging":_3,authgearapps:_3,outsystemscloud:_3,ownprovider:_3,pgfog:_3,pagexl:_3,gotpantheon:_3,paywhirl:_6,forgeblocks:_3,upsunapp:_3,"postman-echo":_3,prgmr:[0,{xen:_3}],"project-study":[0,{dev:_3}],pythonanywhere:_44,qa2:_3,"alpha-myqnapcloud":_3,"dev-myqnapcloud":_3,mycloudnas:_3,mynascloud:_3,myqnapcloud:_3,qualifioapp:_3,ladesk:_3,qualyhqpartner:_6,qualyhqportal:_6,qbuser:_3,quipelements:_6,rackmaze:_3,"readthedocs-hosted":_3,rhcloud:_3,onrender:_3,render:_45,"subsc-pay":_3,"180r":_3,dojin:_3,sakuratan:_3,sakuraweb:_3,x0:_3,code:[0,{builder:_6,"dev-builder":_6,"stg-builder":_6}],salesforce:[0,{platform:[0,{"code-builder-stg":[0,{test:[0,{"001":_6}]}]}]}],logoip:_3,scrysec:_3,"firewall-gateway":_3,myshopblocks:_3,myshopify:_3,shopitsite:_3,"1kapp":_3,appchizi:_3,applinzi:_3,sinaapp:_3,vipsinaapp:_3,streamlitapp:_3,"try-snowplow":_3,"playstation-cloud":_3,myspreadshop:_3,"w-corp-staticblitz":_3,"w-credentialless-staticblitz":_3,"w-staticblitz":_3,"stackhero-network":_3,stdlib:[0,{api:_3}],strapiapp:[2,{media:_3}],"streak-link":_3,streaklinks:_3,streakusercontent:_3,"temp-dns":_3,dsmynas:_3,familyds:_3,mytabit:_3,taveusercontent:_3,"tb-hosting":_46,reservd:_3,thingdustdata:_3,"townnews-staging":_3,typeform:[0,{pro:_3}],hk:_3,it:_3,"deus-canvas":_3,vultrobjects:_6,wafflecell:_3,hotelwithflight:_3,"reserve-online":_3,cprapid:_3,pleskns:_3,remotewd:_3,wiardweb:[0,{pages:_3}],"base44-sandbox":_3,wixsite:_3,wixstudio:_3,messwithdns:_3,"woltlab-demo":_3,wpenginepowered:[2,{js:_3}],xnbay:[2,{u2:_3,"u2-local":_3}],xtooldevice:_3,yolasite:_3}],coop:_2,cr:[1,{ac:_2,co:_2,ed:_2,fi:_2,go:_2,or:_2,sa:_2}],cu:[1,{com:_2,edu:_2,gob:_2,inf:_2,nat:_2,net:_2,org:_2}],cv:[1,{com:_2,edu:_2,id:_2,int:_2,net:_2,nome:_2,org:_2,publ:_2}],cw:_47,cx:[1,{gov:_2,cloudns:_3,ath:_3,info:_3,assessments:_3,calculators:_3,funnels:_3,paynow:_3,quizzes:_3,researched:_3,tests:_3}],cy:[1,{ac:_2,biz:_2,com:[1,{scaleforce:_48}],ekloges:_2,gov:_2,ltd:_2,mil:_2,net:_2,org:_2,press:_2,pro:_2,tm:_2}],cz:[1,{gov:_2,contentproxy9:[0,{rsc:_3}],realm:_3,e4:_3,co:_3,metacentrum:[0,{cloud:_6,custom:_3}],muni:[0,{cloud:[0,{flt:_3,usr:_3}]}]}],de:[1,{bplaced:_3,square7:_3,"bwcloud-os-instance":_6,com:_3,cosidns:_49,dnsupdater:_3,"dynamisches-dns":_3,"internet-dns":_3,"l-o-g-i-n":_3,ddnss:[2,{dyn:_3,dyndns:_3}],"dyn-ip24":_3,dyndns1:_3,"home-webserver":[2,{dyn:_3}],"myhome-server":_3,dnshome:_3,fuettertdasnetz:_3,isteingeek:_3,istmein:_3,lebtimnetz:_3,leitungsen:_3,traeumtgerade:_3,frusky:_6,goip:_3,"xn--gnstigbestellen-zvb":_3,günstigbestellen:_3,"xn--gnstigliefern-wob":_3,günstigliefern:_3,"hs-heilbronn":[0,{it:[0,{pages:_3,"pages-research":_3}]}],"dyn-berlin":_3,"in-berlin":_3,"in-brb":_3,"in-butter":_3,"in-dsl":_3,"in-vpn":_3,iservschule:_3,"mein-iserv":_3,schuldock:_3,schulplattform:_3,schulserver:_3,"test-iserv":_3,keymachine:_3,co:_3,"git-repos":_3,"lcube-server":_3,"svn-repos":_3,barsy:_3,webspaceconfig:_3,"123webseite":_3,rub:_3,"ruhr-uni-bochum":[2,{noc:[0,{io:_3}]}],logoip:_3,"firewall-gateway":_3,"my-gateway":_3,"my-router":_3,spdns:_3,my:_3,speedpartner:[0,{customer:_3}],myspreadshop:_3,"taifun-dns":_3,"12hp":_3,"2ix":_3,"4lima":_3,"lima-city":_3,"virtual-user":_3,virtualuser:_3,"community-pro":_3,diskussionsbereich:_3,xenonconnect:_6}],dj:_2,dk:[1,{biz:_3,co:_3,firm:_3,reg:_3,store:_3,"123hjemmeside":_3,myspreadshop:_3}],dm:_52,do:[1,{art:_2,com:_2,edu:_2,gob:_2,gov:_2,mil:_2,net:_2,org:_2,sld:_2,web:_2}],dz:[1,{art:_2,asso:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2,pol:_2,soc:_2,tm:_2}],ec:[1,{abg:_2,adm:_2,agron:_2,arqt:_2,art:_2,bar:_2,chef:_2,com:_2,cont:_2,cpa:_2,cue:_2,dent:_2,dgn:_2,disco:_2,doc:_2,edu:_2,eng:_2,esm:_2,fin:_2,fot:_2,gal:_2,gob:_2,gov:_2,gye:_2,ibr:_2,info:_2,k12:_2,lat:_2,loj:_2,med:_2,mil:_2,mktg:_2,mon:_2,net:_2,ntr:_2,odont:_2,org:_2,pro:_2,prof:_2,psic:_2,psiq:_2,pub:_2,rio:_2,rrpp:_2,sal:_2,tech:_2,tul:_2,tur:_2,uio:_2,vet:_2,xxx:_2,base:_3,official:_3}],edu:[1,{rit:[0,{"git-pages":_3}]}],ee:[1,{aip:_2,com:_2,edu:_2,fie:_2,gov:_2,lib:_2,med:_2,org:_2,pri:_2,riik:_2}],eg:[1,{ac:_2,com:_2,edu:_2,eun:_2,gov:_2,info:_2,me:_2,mil:_2,name:_2,net:_2,org:_2,sci:_2,sport:_2,tv:_2}],er:_21,es:[1,{com:_2,edu:_2,gob:_2,nom:_2,org:_2,"123miweb":_3,myspreadshop:_3}],et:[1,{biz:_2,com:_2,edu:_2,gov:_2,info:_2,name:_2,net:_2,org:_2}],eu:[1,{amazonwebservices:[0,{on:[0,{"eusc-de-east-1":[0,{"cognito-idp":_39}]}]}],cloudns:_3,prvw:_3,deuxfleurs:_3,dogado:[0,{jelastic:_3}],barsy:_3,spdns:_3,nxa:_6,directwp:_3,transurl:_6}],fi:[1,{aland:_2,dy:_3,"xn--hkkinen-5wa":_3,häkkinen:_3,iki:_3,cloudplatform:[0,{fi:_3}],datacenter:[0,{demo:_3,paas:_3}],kapsi:_3,"123kotisivu":_3,myspreadshop:_3}],fj:[1,{ac:_2,biz:_2,com:_2,edu:_2,gov:_2,id:_2,info:_2,mil:_2,name:_2,net:_2,org:_2,pro:_2}],fk:_21,fm:[1,{com:_2,edu:_2,net:_2,org:_2,radio:_3,user:_6}],fo:_2,fr:[1,{asso:_2,com:_2,gouv:_2,nom:_2,prd:_2,tm:_2,avoues:_2,cci:_2,greta:_2,"huissier-justice":_2,"fbx-os":_3,fbxos:_3,"freebox-os":_3,freeboxos:_3,goupile:_3,"123siteweb":_3,"on-web":_3,"chirurgiens-dentistes-en-france":_3,dedibox:_3,aeroport:_3,avocat:_3,chambagri:_3,"chirurgiens-dentistes":_3,"experts-comptables":_3,medecin:_3,notaires:_3,pharmacien:_3,port:_3,veterinaire:_3,myspreadshop:_3,ynh:_3}],ga:_2,gb:_2,gd:[1,{edu:_2,gov:_2}],ge:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,pvt:_2,school:_2}],gf:_2,gg:[1,{co:_2,net:_2,org:_2,ply:[0,{at:_6,d6:_3}],botdash:_3,kaas:_3,stackit:_3,panel:[2,{daemon:_3}]}],gh:[1,{biz:_2,com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],gi:[1,{com:_2,edu:_2,gov:_2,ltd:_2,mod:_2,org:_2}],gl:[1,{co:_2,com:_2,edu:_2,net:_2,org:_2}],gm:_2,gn:[1,{ac:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2}],gov:_2,gp:[1,{asso:_2,com:_2,edu:_2,mobi:_2,net:_2,org:_2}],gq:_2,gr:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,barsy:_3,simplesite:_3}],gs:_2,gt:[1,{com:_2,edu:_2,gob:_2,ind:_2,mil:_2,net:_2,org:_2}],gu:[1,{com:_2,edu:_2,gov:_2,guam:_2,info:_2,net:_2,org:_2,web:_2}],gw:[1,{nx:_3}],gy:_52,hk:[1,{com:_2,edu:_2,gov:_2,idv:_2,net:_2,org:_2,"xn--ciqpn":_2,个人:_2,"xn--gmqw5a":_2,個人:_2,"xn--55qx5d":_2,公司:_2,"xn--mxtq1m":_2,政府:_2,"xn--lcvr32d":_2,敎育:_2,"xn--wcvs22d":_2,教育:_2,"xn--gmq050i":_2,箇人:_2,"xn--uc0atv":_2,組織:_2,"xn--uc0ay4a":_2,組织:_2,"xn--od0alg":_2,網絡:_2,"xn--zf0avx":_2,網络:_2,"xn--mk0axi":_2,组織:_2,"xn--tn0ag":_2,组织:_2,"xn--od0aq3b":_2,网絡:_2,"xn--io0a7i":_2,网络:_2,inc:_3,ltd:_3}],hm:_2,hn:[1,{com:_2,edu:_2,gob:_2,mil:_2,net:_2,org:_2}],hr:[1,{com:_2,from:_2,iz:_2,name:_2,brendly:_20}],ht:[1,{adult:_2,art:_2,asso:_2,com:_2,coop:_2,edu:_2,firm:_2,gouv:_2,info:_2,med:_2,net:_2,org:_2,perso:_2,pol:_2,pro:_2,rel:_2,shop:_2,rt:_3}],hu:[1,{2e3:_2,agrar:_2,bolt:_2,casino:_2,city:_2,co:_2,erotica:_2,erotika:_2,film:_2,forum:_2,games:_2,hotel:_2,info:_2,ingatlan:_2,jogasz:_2,konyvelo:_2,lakas:_2,media:_2,news:_2,org:_2,priv:_2,reklam:_2,sex:_2,shop:_2,sport:_2,suli:_2,szex:_2,tm:_2,tozsde:_2,utazas:_2,video:_2}],id:[1,{ac:_2,biz:_2,co:_2,desa:_2,go:_2,kop:_2,mil:_2,my:_2,net:_2,or:_2,ponpes:_2,sch:_2,web:_2,"xn--9tfky":_2,"ᬩᬮᬶ":_2,e:_3,zone:_3}],ie:[1,{gov:_2,myspreadshop:_3}],il:[1,{ac:_2,co:[1,{ravpage:_3,mytabit:_3,tabitorder:_3}],gov:_2,idf:_2,k12:_2,muni:_2,net:_2,org:_2}],"xn--4dbrk0ce":[1,{"xn--4dbgdty6c":_2,"xn--5dbhl8d":_2,"xn--8dbq2a":_2,"xn--hebda8b":_2}],ישראל:[1,{אקדמיה:_2,ישוב:_2,צהל:_2,ממשל:_2}],im:[1,{ac:_2,co:[1,{ltd:_2,plc:_2}],com:_2,net:_2,org:_2,tt:_2,tv:_2}],in:[1,{"5g":_2,"6g":_2,ac:_2,ai:_2,am:_2,bank:_2,bihar:_2,biz:_2,business:_2,ca:_2,cn:_2,co:_2,com:_2,coop:_2,cs:_2,delhi:_2,dr:_2,edu:_2,er:_2,fin:_2,firm:_2,gen:_2,gov:_2,gujarat:_2,ind:_2,info:_2,int:_2,internet:_2,io:_2,me:_2,mil:_2,net:_2,nic:_2,org:_2,pg:_2,post:_2,pro:_2,res:_2,travel:_2,tv:_2,uk:_2,up:_2,us:_2,cloudns:_3,barsy:_3,web:_3,indevs:_3,supabase:_3}],info:[1,{cloudns:_3,"dynamic-dns":_3,"barrel-of-knowledge":_3,"barrell-of-knowledge":_3,dyndns:_3,"for-our":_3,"groks-the":_3,"groks-this":_3,"here-for-more":_3,knowsitall:_3,selfip:_3,webhop:_3,barsy:_3,mayfirst:_3,mittwald:_3,mittwaldserver:_3,typo3server:_3,dvrcam:_3,ilovecollege:_3,"no-ip":_3,forumz:_3,nsupdate:_3,dnsupdate:_3,"v-info":_3}],int:[1,{eu:_2}],io:[1,{2038:_3,co:_2,com:_2,edu:_2,gov:_2,mil:_2,net:_2,nom:_2,org:_2,"on-acorn":_6,myaddr:_3,apigee:_3,"b-data":_3,beagleboard:_3,bitbucket:_3,bluebite:_3,boxfuse:_3,brave:_7,browsersafetymark:_3,bubble:_55,bubbleapps:_3,bigv:[0,{uk0:_3}],cleverapps:_3,cloudbeesusercontent:_3,dappnode:[0,{dyndns:_3}],darklang:_3,definima:_3,dedyn:_3,icp0:_56,icp1:_56,qzz:_3,"fh-muenster":_3,gitbook:_3,github:_3,gitlab:_3,lolipop:_3,"hasura-app":_3,hostyhosting:_3,hypernode:_3,moonscale:_6,beebyte:_43,beebyteapp:[0,{sekd1:_3}],jele:_3,keenetic:_3,kiloapps:_3,webthings:_3,loginline:_3,barsy:_3,azurecontainer:_6,ngrok:[2,{ap:_3,au:_3,eu:_3,in:_3,jp:_3,sa:_3,us:_3}],nodeart:[0,{stage:_3}],pantheonsite:_3,forgerock:[0,{id:_3}],pstmn:[2,{mock:_3}],protonet:_3,qcx:[2,{sys:_6}],qoto:_3,vaporcloud:_3,myrdbx:_3,"rb-hosting":_46,"on-k3s":_6,"on-rio":_6,readthedocs:_3,resindevice:_3,resinstaging:[0,{devices:_3}],hzc:_3,sandcats:_3,scrypted:[0,{client:_3}],"mo-siemens":_3,lair:_42,stolos:_6,musician:_3,utwente:_3,edugit:_3,telebit:_3,thingdust:[0,{dev:_57,disrec:_57,prod:_58,testing:_57}],tickets:_3,webflow:_3,webflowtest:_3,editorx:_3,wixstudio:_3,basicserver:_3,virtualserver:_3}],iq:_5,ir:[1,{ac:_2,co:_2,gov:_2,id:_2,net:_2,org:_2,sch:_2,"xn--mgba3a4f16a":_2,ایران:_2,"xn--mgba3a4fra":_2,ايران:_2,arvanedge:_3,vistablog:_3}],is:_2,it:[1,{edu:_2,gov:_2,abr:_2,abruzzo:_2,"aosta-valley":_2,aostavalley:_2,bas:_2,basilicata:_2,cal:_2,calabria:_2,cam:_2,campania:_2,"emilia-romagna":_2,emiliaromagna:_2,emr:_2,"friuli-v-giulia":_2,"friuli-ve-giulia":_2,"friuli-vegiulia":_2,"friuli-venezia-giulia":_2,"friuli-veneziagiulia":_2,"friuli-vgiulia":_2,"friuliv-giulia":_2,"friulive-giulia":_2,friulivegiulia:_2,"friulivenezia-giulia":_2,friuliveneziagiulia:_2,friulivgiulia:_2,fvg:_2,laz:_2,lazio:_2,lig:_2,liguria:_2,lom:_2,lombardia:_2,lombardy:_2,lucania:_2,mar:_2,marche:_2,mol:_2,molise:_2,piedmont:_2,piemonte:_2,pmn:_2,pug:_2,puglia:_2,sar:_2,sardegna:_2,sardinia:_2,sic:_2,sicilia:_2,sicily:_2,taa:_2,tos:_2,toscana:_2,"trentin-sud-tirol":_2,"xn--trentin-sd-tirol-rzb":_2,"trentin-süd-tirol":_2,"trentin-sudtirol":_2,"xn--trentin-sdtirol-7vb":_2,"trentin-südtirol":_2,"trentin-sued-tirol":_2,"trentin-suedtirol":_2,trentino:_2,"trentino-a-adige":_2,"trentino-aadige":_2,"trentino-alto-adige":_2,"trentino-altoadige":_2,"trentino-s-tirol":_2,"trentino-stirol":_2,"trentino-sud-tirol":_2,"xn--trentino-sd-tirol-c3b":_2,"trentino-süd-tirol":_2,"trentino-sudtirol":_2,"xn--trentino-sdtirol-szb":_2,"trentino-südtirol":_2,"trentino-sued-tirol":_2,"trentino-suedtirol":_2,"trentinoa-adige":_2,trentinoaadige:_2,"trentinoalto-adige":_2,trentinoaltoadige:_2,"trentinos-tirol":_2,trentinostirol:_2,"trentinosud-tirol":_2,"xn--trentinosd-tirol-rzb":_2,"trentinosüd-tirol":_2,trentinosudtirol:_2,"xn--trentinosdtirol-7vb":_2,trentinosüdtirol:_2,"trentinosued-tirol":_2,trentinosuedtirol:_2,"trentinsud-tirol":_2,"xn--trentinsd-tirol-6vb":_2,"trentinsüd-tirol":_2,trentinsudtirol:_2,"xn--trentinsdtirol-nsb":_2,trentinsüdtirol:_2,"trentinsued-tirol":_2,trentinsuedtirol:_2,tuscany:_2,umb:_2,umbria:_2,"val-d-aosta":_2,"val-daosta":_2,"vald-aosta":_2,valdaosta:_2,"valle-aosta":_2,"valle-d-aosta":_2,"valle-daosta":_2,valleaosta:_2,"valled-aosta":_2,valledaosta:_2,"vallee-aoste":_2,"xn--valle-aoste-ebb":_2,"vallée-aoste":_2,"vallee-d-aoste":_2,"xn--valle-d-aoste-ehb":_2,"vallée-d-aoste":_2,valleeaoste:_2,"xn--valleaoste-e7a":_2,valléeaoste:_2,valleedaoste:_2,"xn--valledaoste-ebb":_2,valléedaoste:_2,vao:_2,vda:_2,ven:_2,veneto:_2,ag:_2,agrigento:_2,al:_2,alessandria:_2,"alto-adige":_2,altoadige:_2,an:_2,ancona:_2,"andria-barletta-trani":_2,"andria-trani-barletta":_2,andriabarlettatrani:_2,andriatranibarletta:_2,ao:_2,aosta:_2,aoste:_2,ap:_2,aq:_2,aquila:_2,ar:_2,arezzo:_2,"ascoli-piceno":_2,ascolipiceno:_2,asti:_2,at:_2,av:_2,avellino:_2,ba:_2,balsan:_2,"balsan-sudtirol":_2,"xn--balsan-sdtirol-nsb":_2,"balsan-südtirol":_2,"balsan-suedtirol":_2,bari:_2,"barletta-trani-andria":_2,barlettatraniandria:_2,belluno:_2,benevento:_2,bergamo:_2,bg:_2,bi:_2,biella:_2,bl:_2,bn:_2,bo:_2,bologna:_2,bolzano:_2,"bolzano-altoadige":_2,bozen:_2,"bozen-sudtirol":_2,"xn--bozen-sdtirol-2ob":_2,"bozen-südtirol":_2,"bozen-suedtirol":_2,br:_2,brescia:_2,brindisi:_2,bs:_2,bt:_2,bulsan:_2,"bulsan-sudtirol":_2,"xn--bulsan-sdtirol-nsb":_2,"bulsan-südtirol":_2,"bulsan-suedtirol":_2,bz:_2,ca:_2,cagliari:_2,caltanissetta:_2,"campidano-medio":_2,campidanomedio:_2,campobasso:_2,"carbonia-iglesias":_2,carboniaiglesias:_2,"carrara-massa":_2,carraramassa:_2,caserta:_2,catania:_2,catanzaro:_2,cb:_2,ce:_2,"cesena-forli":_2,"xn--cesena-forl-mcb":_2,"cesena-forlì":_2,cesenaforli:_2,"xn--cesenaforl-i8a":_2,cesenaforlì:_2,ch:_2,chieti:_2,ci:_2,cl:_2,cn:_2,co:_2,como:_2,cosenza:_2,cr:_2,cremona:_2,crotone:_2,cs:_2,ct:_2,cuneo:_2,cz:_2,"dell-ogliastra":_2,dellogliastra:_2,en:_2,enna:_2,fc:_2,fe:_2,fermo:_2,ferrara:_2,fg:_2,fi:_2,firenze:_2,florence:_2,fm:_2,foggia:_2,"forli-cesena":_2,"xn--forl-cesena-fcb":_2,"forlì-cesena":_2,forlicesena:_2,"xn--forlcesena-c8a":_2,forlìcesena:_2,fr:_2,frosinone:_2,ge:_2,genoa:_2,genova:_2,go:_2,gorizia:_2,gr:_2,grosseto:_2,"iglesias-carbonia":_2,iglesiascarbonia:_2,im:_2,imperia:_2,is:_2,isernia:_2,kr:_2,"la-spezia":_2,laquila:_2,laspezia:_2,latina:_2,lc:_2,le:_2,lecce:_2,lecco:_2,li:_2,livorno:_2,lo:_2,lodi:_2,lt:_2,lu:_2,lucca:_2,macerata:_2,mantova:_2,"massa-carrara":_2,massacarrara:_2,matera:_2,mb:_2,mc:_2,me:_2,"medio-campidano":_2,mediocampidano:_2,messina:_2,mi:_2,milan:_2,milano:_2,mn:_2,mo:_2,modena:_2,monza:_2,"monza-brianza":_2,"monza-e-della-brianza":_2,monzabrianza:_2,monzaebrianza:_2,monzaedellabrianza:_2,ms:_2,mt:_2,na:_2,naples:_2,napoli:_2,no:_2,novara:_2,nu:_2,nuoro:_2,og:_2,ogliastra:_2,"olbia-tempio":_2,olbiatempio:_2,or:_2,oristano:_2,ot:_2,pa:_2,padova:_2,padua:_2,palermo:_2,parma:_2,pavia:_2,pc:_2,pd:_2,pe:_2,perugia:_2,"pesaro-urbino":_2,pesarourbino:_2,pescara:_2,pg:_2,pi:_2,piacenza:_2,pisa:_2,pistoia:_2,pn:_2,po:_2,pordenone:_2,potenza:_2,pr:_2,prato:_2,pt:_2,pu:_2,pv:_2,pz:_2,ra:_2,ragusa:_2,ravenna:_2,rc:_2,re:_2,"reggio-calabria":_2,"reggio-emilia":_2,reggiocalabria:_2,reggioemilia:_2,rg:_2,ri:_2,rieti:_2,rimini:_2,rm:_2,rn:_2,ro:_2,roma:_2,rome:_2,rovigo:_2,sa:_2,salerno:_2,sassari:_2,savona:_2,si:_2,siena:_2,siracusa:_2,so:_2,sondrio:_2,sp:_2,sr:_2,ss:_2,"xn--sdtirol-n2a":_2,südtirol:_2,suedtirol:_2,sv:_2,ta:_2,taranto:_2,te:_2,"tempio-olbia":_2,tempioolbia:_2,teramo:_2,terni:_2,tn:_2,to:_2,torino:_2,tp:_2,tr:_2,"trani-andria-barletta":_2,"trani-barletta-andria":_2,traniandriabarletta:_2,tranibarlettaandria:_2,trapani:_2,trento:_2,treviso:_2,trieste:_2,ts:_2,turin:_2,tv:_2,ud:_2,udine:_2,"urbino-pesaro":_2,urbinopesaro:_2,va:_2,varese:_2,vb:_2,vc:_2,ve:_2,venezia:_2,venice:_2,verbania:_2,vercelli:_2,verona:_2,vi:_2,"vibo-valentia":_2,vibovalentia:_2,vicenza:_2,viterbo:_2,vr:_2,vs:_2,vt:_2,vv:_2,"12chars":_3,ibxos:_3,iliadboxos:_3,neen:[0,{jc:_3}],"123homepage":_3,"16-b":_3,"32-b":_3,"64-b":_3,myspreadshop:_3,syncloud:_3}],je:[1,{co:_2,net:_2,org:_2,of:_3}],jm:_21,jo:[1,{agri:_2,ai:_2,com:_2,edu:_2,eng:_2,fm:_2,gov:_2,mil:_2,net:_2,org:_2,per:_2,phd:_2,sch:_2,tv:_2}],jobs:_2,jp:[1,{ac:_2,ad:_2,co:_2,ed:_2,go:_2,gr:_2,lg:_2,ne:[1,{aseinet:_54,gehirn:_3,ivory:_3,"mail-box":_3,mints:_3,mokuren:_3,opal:_3,sakura:_3,sumomo:_3,topaz:_3}],or:_2,aichi:[1,{aisai:_2,ama:_2,anjo:_2,asuke:_2,chiryu:_2,chita:_2,fuso:_2,gamagori:_2,handa:_2,hazu:_2,hekinan:_2,higashiura:_2,ichinomiya:_2,inazawa:_2,inuyama:_2,isshiki:_2,iwakura:_2,kanie:_2,kariya:_2,kasugai:_2,kira:_2,kiyosu:_2,komaki:_2,konan:_2,kota:_2,mihama:_2,miyoshi:_2,nishio:_2,nisshin:_2,obu:_2,oguchi:_2,oharu:_2,okazaki:_2,owariasahi:_2,seto:_2,shikatsu:_2,shinshiro:_2,shitara:_2,tahara:_2,takahama:_2,tobishima:_2,toei:_2,togo:_2,tokai:_2,tokoname:_2,toyoake:_2,toyohashi:_2,toyokawa:_2,toyone:_2,toyota:_2,tsushima:_2,yatomi:_2}],akita:[1,{akita:_2,daisen:_2,fujisato:_2,gojome:_2,hachirogata:_2,happou:_2,higashinaruse:_2,honjo:_2,honjyo:_2,ikawa:_2,kamikoani:_2,kamioka:_2,katagami:_2,kazuno:_2,kitaakita:_2,kosaka:_2,kyowa:_2,misato:_2,mitane:_2,moriyoshi:_2,nikaho:_2,noshiro:_2,odate:_2,oga:_2,ogata:_2,semboku:_2,yokote:_2,yurihonjo:_2}],aomori:[1,{aomori:_2,gonohe:_2,hachinohe:_2,hashikami:_2,hiranai:_2,hirosaki:_2,itayanagi:_2,kuroishi:_2,misawa:_2,mutsu:_2,nakadomari:_2,noheji:_2,oirase:_2,owani:_2,rokunohe:_2,sannohe:_2,shichinohe:_2,shingo:_2,takko:_2,towada:_2,tsugaru:_2,tsuruta:_2}],chiba:[1,{abiko:_2,asahi:_2,chonan:_2,chosei:_2,choshi:_2,chuo:_2,funabashi:_2,futtsu:_2,hanamigawa:_2,ichihara:_2,ichikawa:_2,ichinomiya:_2,inzai:_2,isumi:_2,kamagaya:_2,kamogawa:_2,kashiwa:_2,katori:_2,katsuura:_2,kimitsu:_2,kisarazu:_2,kozaki:_2,kujukuri:_2,kyonan:_2,matsudo:_2,midori:_2,mihama:_2,minamiboso:_2,mobara:_2,mutsuzawa:_2,nagara:_2,nagareyama:_2,narashino:_2,narita:_2,noda:_2,oamishirasato:_2,omigawa:_2,onjuku:_2,otaki:_2,sakae:_2,sakura:_2,shimofusa:_2,shirako:_2,shiroi:_2,shisui:_2,sodegaura:_2,sosa:_2,tako:_2,tateyama:_2,togane:_2,tohnosho:_2,tomisato:_2,urayasu:_2,yachimata:_2,yachiyo:_2,yokaichiba:_2,yokoshibahikari:_2,yotsukaido:_2}],ehime:[1,{ainan:_2,honai:_2,ikata:_2,imabari:_2,iyo:_2,kamijima:_2,kihoku:_2,kumakogen:_2,masaki:_2,matsuno:_2,matsuyama:_2,namikata:_2,niihama:_2,ozu:_2,saijo:_2,seiyo:_2,shikokuchuo:_2,tobe:_2,toon:_2,uchiko:_2,uwajima:_2,yawatahama:_2}],fukui:[1,{echizen:_2,eiheiji:_2,fukui:_2,ikeda:_2,katsuyama:_2,mihama:_2,minamiechizen:_2,obama:_2,ohi:_2,ono:_2,sabae:_2,sakai:_2,takahama:_2,tsuruga:_2,wakasa:_2}],fukuoka:[1,{ashiya:_2,buzen:_2,chikugo:_2,chikuho:_2,chikujo:_2,chikushino:_2,chikuzen:_2,chuo:_2,dazaifu:_2,fukuchi:_2,hakata:_2,higashi:_2,hirokawa:_2,hisayama:_2,iizuka:_2,inatsuki:_2,kaho:_2,kasuga:_2,kasuya:_2,kawara:_2,keisen:_2,koga:_2,kurate:_2,kurogi:_2,kurume:_2,minami:_2,miyako:_2,miyama:_2,miyawaka:_2,mizumaki:_2,munakata:_2,nakagawa:_2,nakama:_2,nishi:_2,nogata:_2,ogori:_2,okagaki:_2,okawa:_2,oki:_2,omuta:_2,onga:_2,onojo:_2,oto:_2,saigawa:_2,sasaguri:_2,shingu:_2,shinyoshitomi:_2,shonai:_2,soeda:_2,sue:_2,tachiarai:_2,tagawa:_2,takata:_2,toho:_2,toyotsu:_2,tsuiki:_2,ukiha:_2,umi:_2,usui:_2,yamada:_2,yame:_2,yanagawa:_2,yukuhashi:_2}],fukushima:[1,{aizubange:_2,aizumisato:_2,aizuwakamatsu:_2,asakawa:_2,bandai:_2,date:_2,fukushima:_2,furudono:_2,futaba:_2,hanawa:_2,higashi:_2,hirata:_2,hirono:_2,iitate:_2,inawashiro:_2,ishikawa:_2,iwaki:_2,izumizaki:_2,kagamiishi:_2,kaneyama:_2,kawamata:_2,kitakata:_2,kitashiobara:_2,koori:_2,koriyama:_2,kunimi:_2,miharu:_2,mishima:_2,namie:_2,nango:_2,nishiaizu:_2,nishigo:_2,okuma:_2,omotego:_2,ono:_2,otama:_2,samegawa:_2,shimogo:_2,shirakawa:_2,showa:_2,soma:_2,sukagawa:_2,taishin:_2,tamakawa:_2,tanagura:_2,tenei:_2,yabuki:_2,yamato:_2,yamatsuri:_2,yanaizu:_2,yugawa:_2}],gifu:[1,{anpachi:_2,ena:_2,gifu:_2,ginan:_2,godo:_2,gujo:_2,hashima:_2,hichiso:_2,hida:_2,higashishirakawa:_2,ibigawa:_2,ikeda:_2,kakamigahara:_2,kani:_2,kasahara:_2,kasamatsu:_2,kawaue:_2,kitagata:_2,mino:_2,minokamo:_2,mitake:_2,mizunami:_2,motosu:_2,nakatsugawa:_2,ogaki:_2,sakahogi:_2,seki:_2,sekigahara:_2,shirakawa:_2,tajimi:_2,takayama:_2,tarui:_2,toki:_2,tomika:_2,wanouchi:_2,yamagata:_2,yaotsu:_2,yoro:_2}],gunma:[1,{annaka:_2,chiyoda:_2,fujioka:_2,higashiagatsuma:_2,isesaki:_2,itakura:_2,kanna:_2,kanra:_2,katashina:_2,kawaba:_2,kiryu:_2,kusatsu:_2,maebashi:_2,meiwa:_2,midori:_2,minakami:_2,naganohara:_2,nakanojo:_2,nanmoku:_2,numata:_2,oizumi:_2,ora:_2,ota:_2,shibukawa:_2,shimonita:_2,shinto:_2,showa:_2,takasaki:_2,takayama:_2,tamamura:_2,tatebayashi:_2,tomioka:_2,tsukiyono:_2,tsumagoi:_2,ueno:_2,yoshioka:_2}],hiroshima:[1,{asaminami:_2,daiwa:_2,etajima:_2,fuchu:_2,fukuyama:_2,hatsukaichi:_2,higashihiroshima:_2,hongo:_2,jinsekikogen:_2,kaita:_2,kui:_2,kumano:_2,kure:_2,mihara:_2,miyoshi:_2,naka:_2,onomichi:_2,osakikamijima:_2,otake:_2,saka:_2,sera:_2,seranishi:_2,shinichi:_2,shobara:_2,takehara:_2}],hokkaido:[1,{abashiri:_2,abira:_2,aibetsu:_2,akabira:_2,akkeshi:_2,asahikawa:_2,ashibetsu:_2,ashoro:_2,assabu:_2,atsuma:_2,bibai:_2,biei:_2,bifuka:_2,bihoro:_2,biratori:_2,chippubetsu:_2,chitose:_2,date:_2,ebetsu:_2,embetsu:_2,eniwa:_2,erimo:_2,esan:_2,esashi:_2,fukagawa:_2,fukushima:_2,furano:_2,furubira:_2,haboro:_2,hakodate:_2,hamatonbetsu:_2,hidaka:_2,higashikagura:_2,higashikawa:_2,hiroo:_2,hokuryu:_2,hokuto:_2,honbetsu:_2,horokanai:_2,horonobe:_2,ikeda:_2,imakane:_2,ishikari:_2,iwamizawa:_2,iwanai:_2,kamifurano:_2,kamikawa:_2,kamishihoro:_2,kamisunagawa:_2,kamoenai:_2,kayabe:_2,kembuchi:_2,kikonai:_2,kimobetsu:_2,kitahiroshima:_2,kitami:_2,kiyosato:_2,koshimizu:_2,kunneppu:_2,kuriyama:_2,kuromatsunai:_2,kushiro:_2,kutchan:_2,kyowa:_2,mashike:_2,matsumae:_2,mikasa:_2,minamifurano:_2,mombetsu:_2,moseushi:_2,mukawa:_2,muroran:_2,naie:_2,nakagawa:_2,nakasatsunai:_2,nakatombetsu:_2,nanae:_2,nanporo:_2,nayoro:_2,nemuro:_2,niikappu:_2,niki:_2,nishiokoppe:_2,noboribetsu:_2,numata:_2,obihiro:_2,obira:_2,oketo:_2,okoppe:_2,otaru:_2,otobe:_2,otofuke:_2,otoineppu:_2,oumu:_2,ozora:_2,pippu:_2,rankoshi:_2,rebun:_2,rikubetsu:_2,rishiri:_2,rishirifuji:_2,saroma:_2,sarufutsu:_2,shakotan:_2,shari:_2,shibecha:_2,shibetsu:_2,shikabe:_2,shikaoi:_2,shimamaki:_2,shimizu:_2,shimokawa:_2,shinshinotsu:_2,shintoku:_2,shiranuka:_2,shiraoi:_2,shiriuchi:_2,sobetsu:_2,sunagawa:_2,taiki:_2,takasu:_2,takikawa:_2,takinoue:_2,teshikaga:_2,tobetsu:_2,tohma:_2,tomakomai:_2,tomari:_2,toya:_2,toyako:_2,toyotomi:_2,toyoura:_2,tsubetsu:_2,tsukigata:_2,urakawa:_2,urausu:_2,uryu:_2,utashinai:_2,wakkanai:_2,wassamu:_2,yakumo:_2,yoichi:_2}],hyogo:[1,{aioi:_2,akashi:_2,ako:_2,amagasaki:_2,aogaki:_2,asago:_2,ashiya:_2,awaji:_2,fukusaki:_2,goshiki:_2,harima:_2,himeji:_2,ichikawa:_2,inagawa:_2,itami:_2,kakogawa:_2,kamigori:_2,kamikawa:_2,kasai:_2,kasuga:_2,kawanishi:_2,miki:_2,minamiawaji:_2,nishinomiya:_2,nishiwaki:_2,ono:_2,sanda:_2,sannan:_2,sasayama:_2,sayo:_2,shingu:_2,shinonsen:_2,shiso:_2,sumoto:_2,taishi:_2,taka:_2,takarazuka:_2,takasago:_2,takino:_2,tamba:_2,tatsuno:_2,toyooka:_2,yabu:_2,yashiro:_2,yoka:_2,yokawa:_2}],ibaraki:[1,{ami:_2,asahi:_2,bando:_2,chikusei:_2,daigo:_2,fujishiro:_2,hitachi:_2,hitachinaka:_2,hitachiomiya:_2,hitachiota:_2,ibaraki:_2,ina:_2,inashiki:_2,itako:_2,iwama:_2,joso:_2,kamisu:_2,kasama:_2,kashima:_2,kasumigaura:_2,koga:_2,miho:_2,mito:_2,moriya:_2,naka:_2,namegata:_2,oarai:_2,ogawa:_2,omitama:_2,ryugasaki:_2,sakai:_2,sakuragawa:_2,shimodate:_2,shimotsuma:_2,shirosato:_2,sowa:_2,suifu:_2,takahagi:_2,tamatsukuri:_2,tokai:_2,tomobe:_2,tone:_2,toride:_2,tsuchiura:_2,tsukuba:_2,uchihara:_2,ushiku:_2,yachiyo:_2,yamagata:_2,yawara:_2,yuki:_2}],ishikawa:[1,{anamizu:_2,hakui:_2,hakusan:_2,kaga:_2,kahoku:_2,kanazawa:_2,kawakita:_2,komatsu:_2,nakanoto:_2,nanao:_2,nomi:_2,nonoichi:_2,noto:_2,shika:_2,suzu:_2,tsubata:_2,tsurugi:_2,uchinada:_2,wajima:_2}],iwate:[1,{fudai:_2,fujisawa:_2,hanamaki:_2,hiraizumi:_2,hirono:_2,ichinohe:_2,ichinoseki:_2,iwaizumi:_2,iwate:_2,joboji:_2,kamaishi:_2,kanegasaki:_2,karumai:_2,kawai:_2,kitakami:_2,kuji:_2,kunohe:_2,kuzumaki:_2,miyako:_2,mizusawa:_2,morioka:_2,ninohe:_2,noda:_2,ofunato:_2,oshu:_2,otsuchi:_2,rikuzentakata:_2,shiwa:_2,shizukuishi:_2,sumita:_2,tanohata:_2,tono:_2,yahaba:_2,yamada:_2}],kagawa:[1,{ayagawa:_2,higashikagawa:_2,kanonji:_2,kotohira:_2,manno:_2,marugame:_2,mitoyo:_2,naoshima:_2,sanuki:_2,tadotsu:_2,takamatsu:_2,tonosho:_2,uchinomi:_2,utazu:_2,zentsuji:_2}],kagoshima:[1,{akune:_2,amami:_2,hioki:_2,isa:_2,isen:_2,izumi:_2,kagoshima:_2,kanoya:_2,kawanabe:_2,kinko:_2,kouyama:_2,makurazaki:_2,matsumoto:_2,minamitane:_2,nakatane:_2,nishinoomote:_2,satsumasendai:_2,soo:_2,tarumizu:_2,yusui:_2}],kanagawa:[1,{aikawa:_2,atsugi:_2,ayase:_2,chigasaki:_2,ebina:_2,fujisawa:_2,hadano:_2,hakone:_2,hiratsuka:_2,isehara:_2,kaisei:_2,kamakura:_2,kiyokawa:_2,matsuda:_2,minamiashigara:_2,miura:_2,nakai:_2,ninomiya:_2,odawara:_2,oi:_2,oiso:_2,sagamihara:_2,samukawa:_2,tsukui:_2,yamakita:_2,yamato:_2,yokosuka:_2,yugawara:_2,zama:_2,zushi:_2}],kochi:[1,{aki:_2,geisei:_2,hidaka:_2,higashitsuno:_2,ino:_2,kagami:_2,kami:_2,kitagawa:_2,kochi:_2,mihara:_2,motoyama:_2,muroto:_2,nahari:_2,nakamura:_2,nankoku:_2,nishitosa:_2,niyodogawa:_2,ochi:_2,okawa:_2,otoyo:_2,otsuki:_2,sakawa:_2,sukumo:_2,susaki:_2,tosa:_2,tosashimizu:_2,toyo:_2,tsuno:_2,umaji:_2,yasuda:_2,yusuhara:_2}],kumamoto:[1,{amakusa:_2,arao:_2,aso:_2,choyo:_2,gyokuto:_2,kamiamakusa:_2,kikuchi:_2,kumamoto:_2,mashiki:_2,mifune:_2,minamata:_2,minamioguni:_2,nagasu:_2,nishihara:_2,oguni:_2,ozu:_2,sumoto:_2,takamori:_2,uki:_2,uto:_2,yamaga:_2,yamato:_2,yatsushiro:_2}],kyoto:[1,{ayabe:_2,fukuchiyama:_2,higashiyama:_2,ide:_2,ine:_2,joyo:_2,kameoka:_2,kamo:_2,kita:_2,kizu:_2,kumiyama:_2,kyotamba:_2,kyotanabe:_2,kyotango:_2,maizuru:_2,minami:_2,minamiyamashiro:_2,miyazu:_2,muko:_2,nagaokakyo:_2,nakagyo:_2,nantan:_2,oyamazaki:_2,sakyo:_2,seika:_2,tanabe:_2,uji:_2,ujitawara:_2,wazuka:_2,yamashina:_2,yawata:_2}],mie:[1,{asahi:_2,inabe:_2,ise:_2,kameyama:_2,kawagoe:_2,kiho:_2,kisosaki:_2,kiwa:_2,komono:_2,kumano:_2,kuwana:_2,matsusaka:_2,meiwa:_2,mihama:_2,minamiise:_2,misugi:_2,miyama:_2,nabari:_2,shima:_2,suzuka:_2,tado:_2,taiki:_2,taki:_2,tamaki:_2,toba:_2,tsu:_2,udono:_2,ureshino:_2,watarai:_2,yokkaichi:_2}],miyagi:[1,{furukawa:_2,higashimatsushima:_2,ishinomaki:_2,iwanuma:_2,kakuda:_2,kami:_2,kawasaki:_2,marumori:_2,matsushima:_2,minamisanriku:_2,misato:_2,murata:_2,natori:_2,ogawara:_2,ohira:_2,onagawa:_2,osaki:_2,rifu:_2,semine:_2,shibata:_2,shichikashuku:_2,shikama:_2,shiogama:_2,shiroishi:_2,tagajo:_2,taiwa:_2,tome:_2,tomiya:_2,wakuya:_2,watari:_2,yamamoto:_2,zao:_2}],miyazaki:[1,{aya:_2,ebino:_2,gokase:_2,hyuga:_2,kadogawa:_2,kawaminami:_2,kijo:_2,kitagawa:_2,kitakata:_2,kitaura:_2,kobayashi:_2,kunitomi:_2,kushima:_2,mimata:_2,miyakonojo:_2,miyazaki:_2,morotsuka:_2,nichinan:_2,nishimera:_2,nobeoka:_2,saito:_2,shiiba:_2,shintomi:_2,takaharu:_2,takanabe:_2,takazaki:_2,tsuno:_2}],nagano:[1,{achi:_2,agematsu:_2,anan:_2,aoki:_2,asahi:_2,azumino:_2,chikuhoku:_2,chikuma:_2,chino:_2,fujimi:_2,hakuba:_2,hara:_2,hiraya:_2,iida:_2,iijima:_2,iiyama:_2,iizuna:_2,ikeda:_2,ikusaka:_2,ina:_2,karuizawa:_2,kawakami:_2,kiso:_2,kisofukushima:_2,kitaaiki:_2,komagane:_2,komoro:_2,matsukawa:_2,matsumoto:_2,miasa:_2,minamiaiki:_2,minamimaki:_2,minamiminowa:_2,minowa:_2,miyada:_2,miyota:_2,mochizuki:_2,nagano:_2,nagawa:_2,nagiso:_2,nakagawa:_2,nakano:_2,nozawaonsen:_2,obuse:_2,ogawa:_2,okaya:_2,omachi:_2,omi:_2,ookuwa:_2,ooshika:_2,otaki:_2,otari:_2,sakae:_2,sakaki:_2,saku:_2,sakuho:_2,shimosuwa:_2,shinanomachi:_2,shiojiri:_2,suwa:_2,suzaka:_2,takagi:_2,takamori:_2,takayama:_2,tateshina:_2,tatsuno:_2,togakushi:_2,togura:_2,tomi:_2,ueda:_2,wada:_2,yamagata:_2,yamanouchi:_2,yasaka:_2,yasuoka:_2}],nagasaki:[1,{chijiwa:_2,futsu:_2,goto:_2,hasami:_2,hirado:_2,iki:_2,isahaya:_2,kawatana:_2,kuchinotsu:_2,matsuura:_2,nagasaki:_2,obama:_2,omura:_2,oseto:_2,saikai:_2,sasebo:_2,seihi:_2,shimabara:_2,shinkamigoto:_2,togitsu:_2,tsushima:_2,unzen:_2}],nara:[1,{ando:_2,gose:_2,heguri:_2,higashiyoshino:_2,ikaruga:_2,ikoma:_2,kamikitayama:_2,kanmaki:_2,kashiba:_2,kashihara:_2,katsuragi:_2,kawai:_2,kawakami:_2,kawanishi:_2,koryo:_2,kurotaki:_2,mitsue:_2,miyake:_2,nara:_2,nosegawa:_2,oji:_2,ouda:_2,oyodo:_2,sakurai:_2,sango:_2,shimoichi:_2,shimokitayama:_2,shinjo:_2,soni:_2,takatori:_2,tawaramoto:_2,tenkawa:_2,tenri:_2,uda:_2,yamatokoriyama:_2,yamatotakada:_2,yamazoe:_2,yoshino:_2}],niigata:[1,{aga:_2,agano:_2,gosen:_2,itoigawa:_2,izumozaki:_2,joetsu:_2,kamo:_2,kariwa:_2,kashiwazaki:_2,minamiuonuma:_2,mitsuke:_2,muika:_2,murakami:_2,myoko:_2,nagaoka:_2,niigata:_2,ojiya:_2,omi:_2,sado:_2,sanjo:_2,seiro:_2,seirou:_2,sekikawa:_2,shibata:_2,tagami:_2,tainai:_2,tochio:_2,tokamachi:_2,tsubame:_2,tsunan:_2,uonuma:_2,yahiko:_2,yoita:_2,yuzawa:_2}],oita:[1,{beppu:_2,bungoono:_2,bungotakada:_2,hasama:_2,hiji:_2,himeshima:_2,hita:_2,kamitsue:_2,kokonoe:_2,kuju:_2,kunisaki:_2,kusu:_2,oita:_2,saiki:_2,taketa:_2,tsukumi:_2,usa:_2,usuki:_2,yufu:_2}],okayama:[1,{akaiwa:_2,asakuchi:_2,bizen:_2,hayashima:_2,ibara:_2,kagamino:_2,kasaoka:_2,kibichuo:_2,kumenan:_2,kurashiki:_2,maniwa:_2,misaki:_2,nagi:_2,niimi:_2,nishiawakura:_2,okayama:_2,satosho:_2,setouchi:_2,shinjo:_2,shoo:_2,soja:_2,takahashi:_2,tamano:_2,tsuyama:_2,wake:_2,yakage:_2}],okinawa:[1,{aguni:_2,ginowan:_2,ginoza:_2,gushikami:_2,haebaru:_2,higashi:_2,hirara:_2,iheya:_2,ishigaki:_2,ishikawa:_2,itoman:_2,izena:_2,kadena:_2,kin:_2,kitadaito:_2,kitanakagusuku:_2,kumejima:_2,kunigami:_2,minamidaito:_2,motobu:_2,nago:_2,naha:_2,nakagusuku:_2,nakijin:_2,nanjo:_2,nishihara:_2,ogimi:_2,okinawa:_2,onna:_2,shimoji:_2,taketomi:_2,tarama:_2,tokashiki:_2,tomigusuku:_2,tonaki:_2,urasoe:_2,uruma:_2,yaese:_2,yomitan:_2,yonabaru:_2,yonaguni:_2,zamami:_2}],osaka:[1,{abeno:_2,chihayaakasaka:_2,chuo:_2,daito:_2,fujiidera:_2,habikino:_2,hannan:_2,higashiosaka:_2,higashisumiyoshi:_2,higashiyodogawa:_2,hirakata:_2,ibaraki:_2,ikeda:_2,izumi:_2,izumiotsu:_2,izumisano:_2,kadoma:_2,kaizuka:_2,kanan:_2,kashiwara:_2,katano:_2,kawachinagano:_2,kishiwada:_2,kita:_2,kumatori:_2,matsubara:_2,minato:_2,minoh:_2,misaki:_2,moriguchi:_2,neyagawa:_2,nishi:_2,nose:_2,osakasayama:_2,sakai:_2,sayama:_2,sennan:_2,settsu:_2,shijonawate:_2,shimamoto:_2,suita:_2,tadaoka:_2,taishi:_2,tajiri:_2,takaishi:_2,takatsuki:_2,tondabayashi:_2,toyonaka:_2,toyono:_2,yao:_2}],saga:[1,{ariake:_2,arita:_2,fukudomi:_2,genkai:_2,hamatama:_2,hizen:_2,imari:_2,kamimine:_2,kanzaki:_2,karatsu:_2,kashima:_2,kitagata:_2,kitahata:_2,kiyama:_2,kouhoku:_2,kyuragi:_2,nishiarita:_2,ogi:_2,omachi:_2,ouchi:_2,saga:_2,shiroishi:_2,taku:_2,tara:_2,tosu:_2,yoshinogari:_2}],saitama:[1,{arakawa:_2,asaka:_2,chichibu:_2,fujimi:_2,fujimino:_2,fukaya:_2,hanno:_2,hanyu:_2,hasuda:_2,hatogaya:_2,hatoyama:_2,hidaka:_2,higashichichibu:_2,higashimatsuyama:_2,honjo:_2,ina:_2,iruma:_2,iwatsuki:_2,kamiizumi:_2,kamikawa:_2,kamisato:_2,kasukabe:_2,kawagoe:_2,kawaguchi:_2,kawajima:_2,kazo:_2,kitamoto:_2,koshigaya:_2,kounosu:_2,kuki:_2,kumagaya:_2,matsubushi:_2,minano:_2,misato:_2,miyashiro:_2,miyoshi:_2,moroyama:_2,nagatoro:_2,namegawa:_2,niiza:_2,ogano:_2,ogawa:_2,ogose:_2,okegawa:_2,omiya:_2,otaki:_2,ranzan:_2,ryokami:_2,saitama:_2,sakado:_2,satte:_2,sayama:_2,shiki:_2,shiraoka:_2,soka:_2,sugito:_2,toda:_2,tokigawa:_2,tokorozawa:_2,tsurugashima:_2,urawa:_2,warabi:_2,yashio:_2,yokoze:_2,yono:_2,yorii:_2,yoshida:_2,yoshikawa:_2,yoshimi:_2}],shiga:[1,{aisho:_2,gamo:_2,higashiomi:_2,hikone:_2,koka:_2,konan:_2,kosei:_2,koto:_2,kusatsu:_2,maibara:_2,moriyama:_2,nagahama:_2,nishiazai:_2,notogawa:_2,omihachiman:_2,otsu:_2,ritto:_2,ryuoh:_2,takashima:_2,takatsuki:_2,torahime:_2,toyosato:_2,yasu:_2}],shimane:[1,{akagi:_2,ama:_2,gotsu:_2,hamada:_2,higashiizumo:_2,hikawa:_2,hikimi:_2,izumo:_2,kakinoki:_2,masuda:_2,matsue:_2,misato:_2,nishinoshima:_2,ohda:_2,okinoshima:_2,okuizumo:_2,shimane:_2,tamayu:_2,tsuwano:_2,unnan:_2,yakumo:_2,yasugi:_2,yatsuka:_2}],shizuoka:[1,{arai:_2,atami:_2,fuji:_2,fujieda:_2,fujikawa:_2,fujinomiya:_2,fukuroi:_2,gotemba:_2,haibara:_2,hamamatsu:_2,higashiizu:_2,ito:_2,iwata:_2,izu:_2,izunokuni:_2,kakegawa:_2,kannami:_2,kawanehon:_2,kawazu:_2,kikugawa:_2,kosai:_2,makinohara:_2,matsuzaki:_2,minamiizu:_2,mishima:_2,morimachi:_2,nishiizu:_2,numazu:_2,omaezaki:_2,shimada:_2,shimizu:_2,shimoda:_2,shizuoka:_2,susono:_2,yaizu:_2,yoshida:_2}],tochigi:[1,{ashikaga:_2,bato:_2,haga:_2,ichikai:_2,iwafune:_2,kaminokawa:_2,kanuma:_2,karasuyama:_2,kuroiso:_2,mashiko:_2,mibu:_2,moka:_2,motegi:_2,nasu:_2,nasushiobara:_2,nikko:_2,nishikata:_2,nogi:_2,ohira:_2,ohtawara:_2,oyama:_2,sakura:_2,sano:_2,shimotsuke:_2,shioya:_2,takanezawa:_2,tochigi:_2,tsuga:_2,ujiie:_2,utsunomiya:_2,yaita:_2}],tokushima:[1,{aizumi:_2,anan:_2,ichiba:_2,itano:_2,kainan:_2,komatsushima:_2,matsushige:_2,mima:_2,minami:_2,miyoshi:_2,mugi:_2,nakagawa:_2,naruto:_2,sanagochi:_2,shishikui:_2,tokushima:_2,wajiki:_2}],tokyo:[1,{adachi:_2,akiruno:_2,akishima:_2,aogashima:_2,arakawa:_2,bunkyo:_2,chiyoda:_2,chofu:_2,chuo:_2,edogawa:_2,fuchu:_2,fussa:_2,hachijo:_2,hachioji:_2,hamura:_2,higashikurume:_2,higashimurayama:_2,higashiyamato:_2,hino:_2,hinode:_2,hinohara:_2,inagi:_2,itabashi:_2,katsushika:_2,kita:_2,kiyose:_2,kodaira:_2,koganei:_2,kokubunji:_2,komae:_2,koto:_2,kouzushima:_2,kunitachi:_2,machida:_2,meguro:_2,minato:_2,mitaka:_2,mizuho:_2,musashimurayama:_2,musashino:_2,nakano:_2,nerima:_2,ogasawara:_2,okutama:_2,ome:_2,oshima:_2,ota:_2,setagaya:_2,shibuya:_2,shinagawa:_2,shinjuku:_2,suginami:_2,sumida:_2,tachikawa:_2,taito:_2,tama:_2,toshima:_2}],tottori:[1,{chizu:_2,hino:_2,kawahara:_2,koge:_2,kotoura:_2,misasa:_2,nanbu:_2,nichinan:_2,sakaiminato:_2,tottori:_2,wakasa:_2,yazu:_2,yonago:_2}],toyama:[1,{asahi:_2,fuchu:_2,fukumitsu:_2,funahashi:_2,himi:_2,imizu:_2,inami:_2,johana:_2,kamiichi:_2,kurobe:_2,nakaniikawa:_2,namerikawa:_2,nanto:_2,nyuzen:_2,oyabe:_2,taira:_2,takaoka:_2,tateyama:_2,toga:_2,tonami:_2,toyama:_2,unazuki:_2,uozu:_2,yamada:_2}],wakayama:[1,{arida:_2,aridagawa:_2,gobo:_2,hashimoto:_2,hidaka:_2,hirogawa:_2,inami:_2,iwade:_2,kainan:_2,kamitonda:_2,katsuragi:_2,kimino:_2,kinokawa:_2,kitayama:_2,koya:_2,koza:_2,kozagawa:_2,kudoyama:_2,kushimoto:_2,mihama:_2,misato:_2,nachikatsuura:_2,shingu:_2,shirahama:_2,taiji:_2,tanabe:_2,wakayama:_2,yuasa:_2,yura:_2}],yamagata:[1,{asahi:_2,funagata:_2,higashine:_2,iide:_2,kahoku:_2,kaminoyama:_2,kaneyama:_2,kawanishi:_2,mamurogawa:_2,mikawa:_2,murayama:_2,nagai:_2,nakayama:_2,nanyo:_2,nishikawa:_2,obanazawa:_2,oe:_2,oguni:_2,ohkura:_2,oishida:_2,sagae:_2,sakata:_2,sakegawa:_2,shinjo:_2,shirataka:_2,shonai:_2,takahata:_2,tendo:_2,tozawa:_2,tsuruoka:_2,yamagata:_2,yamanobe:_2,yonezawa:_2,yuza:_2}],yamaguchi:[1,{abu:_2,hagi:_2,hikari:_2,hofu:_2,iwakuni:_2,kudamatsu:_2,mitou:_2,nagato:_2,oshima:_2,shimonoseki:_2,shunan:_2,tabuse:_2,tokuyama:_2,toyota:_2,ube:_2,yuu:_2}],yamanashi:[1,{chuo:_2,doshi:_2,fuefuki:_2,fujikawa:_2,fujikawaguchiko:_2,fujiyoshida:_2,hayakawa:_2,hokuto:_2,ichikawamisato:_2,kai:_2,kofu:_2,koshu:_2,kosuge:_2,"minami-alps":_2,minobu:_2,nakamichi:_2,nanbu:_2,narusawa:_2,nirasaki:_2,nishikatsura:_2,oshino:_2,otsuki:_2,showa:_2,tabayama:_2,tsuru:_2,uenohara:_2,yamanakako:_2,yamanashi:_2}],"xn--ehqz56n":_2,三重:_2,"xn--1lqs03n":_2,京都:_2,"xn--qqqt11m":_2,佐賀:_2,"xn--f6qx53a":_2,兵庫:_2,"xn--djrs72d6uy":_2,北海道:_2,"xn--mkru45i":_2,千葉:_2,"xn--0trq7p7nn":_2,和歌山:_2,"xn--5js045d":_2,埼玉:_2,"xn--kbrq7o":_2,大分:_2,"xn--pssu33l":_2,大阪:_2,"xn--ntsq17g":_2,奈良:_2,"xn--uisz3g":_2,宮城:_2,"xn--6btw5a":_2,宮崎:_2,"xn--1ctwo":_2,富山:_2,"xn--6orx2r":_2,山口:_2,"xn--rht61e":_2,山形:_2,"xn--rht27z":_2,山梨:_2,"xn--nit225k":_2,岐阜:_2,"xn--rht3d":_2,岡山:_2,"xn--djty4k":_2,岩手:_2,"xn--klty5x":_2,島根:_2,"xn--kltx9a":_2,広島:_2,"xn--kltp7d":_2,徳島:_2,"xn--c3s14m":_2,愛媛:_2,"xn--vgu402c":_2,愛知:_2,"xn--efvn9s":_2,新潟:_2,"xn--1lqs71d":_2,東京:_2,"xn--4pvxs":_2,栃木:_2,"xn--uuwu58a":_2,沖縄:_2,"xn--zbx025d":_2,滋賀:_2,"xn--8pvr4u":_2,熊本:_2,"xn--5rtp49c":_2,石川:_2,"xn--ntso0iqx3a":_2,神奈川:_2,"xn--elqq16h":_2,福井:_2,"xn--4it168d":_2,福岡:_2,"xn--klt787d":_2,福島:_2,"xn--rny31h":_2,秋田:_2,"xn--7t0a264c":_2,群馬:_2,"xn--uist22h":_2,茨城:_2,"xn--8ltr62k":_2,長崎:_2,"xn--2m4a15e":_2,長野:_2,"xn--32vp30h":_2,青森:_2,"xn--4it797k":_2,静岡:_2,"xn--5rtq34k":_2,香川:_2,"xn--k7yn95e":_2,高知:_2,"xn--tor131o":_2,鳥取:_2,"xn--d5qv7z876c":_2,鹿児島:_2,kawasaki:_21,kitakyushu:_21,kobe:_21,nagoya:_21,sapporo:_21,sendai:_21,yokohama:_21,buyshop:_3,fashionstore:_3,handcrafted:_3,kawaiishop:_3,supersale:_3,theshop:_3,"0am":_3,"0g0":_3,"0j0":_3,"0t0":_3,mydns:_3,pgw:_3,wjg:_3,usercontent:_3,angry:_3,babyblue:_3,babymilk:_3,backdrop:_3,bambina:_3,bitter:_3,blush:_3,boo:_3,boy:_3,boyfriend:_3,but:_3,candypop:_3,capoo:_3,catfood:_3,cheap:_3,chicappa:_3,chillout:_3,chips:_3,chowder:_3,chu:_3,ciao:_3,cocotte:_3,coolblog:_3,cranky:_3,cutegirl:_3,daa:_3,deca:_3,deci:_3,digick:_3,egoism:_3,fakefur:_3,fem:_3,flier:_3,floppy:_3,fool:_3,frenchkiss:_3,girlfriend:_3,girly:_3,gloomy:_3,gonna:_3,greater:_3,hacca:_3,heavy:_3,her:_3,hiho:_3,hippy:_3,holy:_3,hungry:_3,icurus:_3,itigo:_3,jellybean:_3,kikirara:_3,kill:_3,kilo:_3,kuron:_3,littlestar:_3,lolipopmc:_3,lolitapunk:_3,lomo:_3,lovepop:_3,lovesick:_3,main:_3,mods:_3,mond:_3,mongolian:_3,moo:_3,namaste:_3,nikita:_3,nobushi:_3,noor:_3,oops:_3,parallel:_3,parasite:_3,pecori:_3,peewee:_3,penne:_3,pepper:_3,perma:_3,pigboat:_3,pinoko:_3,punyu:_3,pupu:_3,pussycat:_3,pya:_3,raindrop:_3,readymade:_3,sadist:_3,schoolbus:_3,secret:_3,staba:_3,stripper:_3,sub:_3,sunnyday:_3,thick:_3,tonkotsu:_3,under:_3,upper:_3,velvet:_3,verse:_3,versus:_3,vivian:_3,watson:_3,weblike:_3,whitesnow:_3,zombie:_3,hateblo:_3,hatenablog:_3,hatenadiary:_3,"2-d":_3,bona:_3,crap:_3,daynight:_3,eek:_3,flop:_3,halfmoon:_3,jeez:_3,matrix:_3,mimoza:_3,netgamers:_3,nyanta:_3,o0o0:_3,rdy:_3,rgr:_3,rulez:_3,sakurastorage:[0,{isk01:_59,isk02:_59}],saloon:_3,sblo:_3,skr:_3,tank:_3,"uh-oh":_3,undo:_3,webaccel:[0,{rs:_3,user:_3}],websozai:_3,xii:_3}],ke:[1,{ac:_2,co:_2,go:_2,info:_2,me:_2,mobi:_2,ne:_2,or:_2,sc:_2}],kg:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,us:_3,xx:_3,ae:_3}],kh:_21,ki:_60,km:[1,{ass:_2,com:_2,edu:_2,gov:_2,mil:_2,nom:_2,org:_2,prd:_2,tm:_2,asso:_2,coop:_2,gouv:_2,medecin:_2,notaires:_2,pharmaciens:_2,presse:_2,veterinaire:_2}],kn:[1,{edu:_2,gov:_2,net:_2,org:_2}],kp:[1,{com:_2,edu:_2,gov:_2,org:_2,rep:_2,tra:_2}],kr:[1,{ac:_2,ai:_2,co:_2,es:_2,go:_2,hs:_2,io:_2,it:_2,kg:_2,me:_2,mil:_2,ms:_2,ne:_2,or:_2,pe:_2,re:_2,sc:_2,busan:_2,chungbuk:_2,chungnam:_2,daegu:_2,daejeon:_2,gangwon:_2,gwangju:_2,gyeongbuk:_2,gyeonggi:_2,gyeongnam:_2,incheon:_2,jeju:_2,jeonbuk:_2,jeonnam:_2,seoul:_2,ulsan:_2,c01:_3,"eliv-api":_3,"eliv-cdn":_3,"eliv-dns":_3,mmv:_3,vki:_3}],kw:[1,{com:_2,edu:_2,emb:_2,gov:_2,ind:_2,net:_2,org:_2}],ky:_47,kz:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,jcloud:_3}],la:[1,{com:_2,edu:_2,gov:_2,info:_2,int:_2,net:_2,org:_2,per:_2,bnr:_3}],lb:_4,lc:[1,{co:_2,com:_2,edu:_2,gov:_2,net:_2,org:_2,oy:_3}],li:_2,lk:[1,{ac:_2,assn:_2,com:_2,edu:_2,gov:_2,grp:_2,hotel:_2,int:_2,ltd:_2,net:_2,ngo:_2,org:_2,sch:_2,soc:_2,web:_2}],lr:_4,ls:[1,{ac:_2,biz:_2,co:_2,edu:_2,gov:_2,info:_2,net:_2,org:_2,sc:_2}],lt:_10,lu:[1,{"123website":_3}],lv:[1,{asn:_2,com:_2,conf:_2,edu:_2,gov:_2,id:_2,mil:_2,net:_2,org:_2}],ly:[1,{com:_2,edu:_2,gov:_2,id:_2,med:_2,net:_2,org:_2,plc:_2,sch:_2}],ma:[1,{ac:_2,co:_2,gov:_2,net:_2,org:_2,press:_2}],mc:[1,{asso:_2,tm:_2}],md:[1,{ir:_3}],me:[1,{ac:_2,co:_2,edu:_2,gov:_2,its:_2,net:_2,org:_2,priv:_2,c66:_3,craft:_3,edgestack:_3,filegear:_3,"filegear-sg":_3,lohmus:_3,barsy:_3,mcdir:_3,brasilia:_3,ddns:_3,dnsfor:_3,hopto:_3,loginto:_3,noip:_3,webhop:_3,soundcast:_3,tcp4:_3,vp4:_3,diskstation:_3,dscloud:_3,i234:_3,myds:_3,synology:_3,transip:_46,nohost:_3}],mg:[1,{co:_2,com:_2,edu:_2,gov:_2,mil:_2,nom:_2,org:_2,prd:_2}],mh:_2,mil:_2,mk:[1,{com:_2,edu:_2,gov:_2,inf:_2,name:_2,net:_2,org:_2}],ml:[1,{ac:_2,art:_2,asso:_2,com:_2,edu:_2,gouv:_2,gov:_2,info:_2,inst:_2,net:_2,org:_2,pr:_2,presse:_2}],mm:_21,mn:[1,{edu:_2,gov:_2,org:_2,nyc:_3}],mo:_4,mobi:[1,{barsy:_3,dscloud:_3}],mp:[1,{ju:_3}],mq:_2,mr:_10,ms:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,minisite:_3}],mt:_47,mu:[1,{ac:_2,co:_2,com:_2,gov:_2,net:_2,or:_2,org:_2}],museum:_2,mv:[1,{aero:_2,biz:_2,com:_2,coop:_2,edu:_2,gov:_2,info:_2,int:_2,mil:_2,museum:_2,name:_2,net:_2,org:_2,pro:_2}],mw:[1,{ac:_2,biz:_2,co:_2,com:_2,coop:_2,edu:_2,gov:_2,int:_2,net:_2,org:_2}],mx:[1,{com:_2,edu:_2,gob:_2,net:_2,org:_2}],my:[1,{biz:_2,com:_2,edu:_2,gov:_2,mil:_2,name:_2,net:_2,org:_2}],mz:[1,{ac:_2,adv:_2,co:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],na:[1,{alt:_2,co:_2,com:_2,gov:_2,net:_2,org:_2}],name:[1,{her:_63,his:_63,ispmanager:_3,keenetic:_3}],nc:[1,{asso:_2,nom:_2}],ne:_2,net:[1,{adobeaemcloud:_3,"adobeio-static":_3,adobeioruntime:_3,akadns:_3,akamai:_3,"akamai-staging":_3,akamaiedge:_3,"akamaiedge-staging":_3,akamaihd:_3,"akamaihd-staging":_3,akamaiorigin:_3,"akamaiorigin-staging":_3,akamaized:_3,"akamaized-staging":_3,edgekey:_3,"edgekey-staging":_3,edgesuite:_3,"edgesuite-staging":_3,alwaysdata:_3,myamaze:_3,cloudfront:_3,appudo:_3,"atlassian-dev":[0,{prod:_55}],myfritz:_3,shopselect:_3,blackbaudcdn:_3,boomla:_3,bplaced:_3,square7:_3,cdn77:[0,{r:_3}],"cdn77-ssl":_3,gb:_3,hu:_3,jp:_3,se:_3,uk:_3,clickrising:_3,"ddns-ip":_3,"dns-cloud":_3,"dns-dynamic":_3,cloudaccess:_3,cloudflare:[2,{cdn:_3}],cloudflareanycast:_55,cloudflarecn:_55,cloudflareglobal:_55,ctfcloud:_3,"feste-ip":_3,"knx-server":_3,"static-access":_3,cryptonomic:_6,dattolocal:_3,mydatto:_3,debian:_3,definima:_3,deno:_3,icp:_6,de5:_3,"at-band-camp":_3,blogdns:_3,"broke-it":_3,buyshouses:_3,dnsalias:_3,dnsdojo:_3,"does-it":_3,dontexist:_3,dynalias:_3,dynathome:_3,endofinternet:_3,"from-az":_3,"from-co":_3,"from-la":_3,"from-ny":_3,"gets-it":_3,"ham-radio-op":_3,homeftp:_3,homeip:_3,homelinux:_3,homeunix:_3,"in-the-band":_3,"is-a-chef":_3,"is-a-geek":_3,"isa-geek":_3,"kicks-ass":_3,"office-on-the":_3,podzone:_3,"scrapper-site":_3,selfip:_3,"sells-it":_3,servebbs:_3,serveftp:_3,thruhere:_3,webhop:_3,casacam:_3,dynu:_3,dynv6:_3,twmail:_3,ru:_3,channelsdvr:[2,{u:_3}],fastly:[0,{freetls:_3,map:_3,prod:[0,{a:_3,global:_3}],ssl:[0,{a:_3,b:_3,global:_3}]}],fastlylb:[2,{map:_3}],"keyword-on":_3,"live-on":_3,"server-on":_3,"cdn-edges":_3,heteml:_3,cloudfunctions:_3,"grafana-dev":_3,iobb:_3,moonscale:_3,"in-dsl":_3,"in-vpn":_3,oninferno:_3,botdash:_3,"apps-1and1":_3,ipifony:_3,cloudjiffy:[2,{"fra1-de":_3,"west1-us":_3}],elastx:[0,{"jls-sto1":_3,"jls-sto2":_3,"jls-sto3":_3}],massivegrid:[0,{paas:[0,{"fr-1":_3,"lon-1":_3,"lon-2":_3,"ny-1":_3,"ny-2":_3,"sg-1":_3}]}],saveincloud:[0,{jelastic:_3,"nordeste-idc":_3}],scaleforce:_48,kinghost:_3,uni5:_3,krellian:_3,ggff:_3,localto:_6,barsy:_3,luyani:_3,memset:_3,"azure-api":_3,"azure-mobile":_3,azureedge:_3,azurefd:_3,azurestaticapps:[2,{1:_3,2:_3,3:_3,4:_3,5:_3,6:_3,7:_3,centralus:_3,eastasia:_3,eastus2:_3,westeurope:_3,westus2:_3}],azurewebsites:_3,cloudapp:_3,trafficmanager:_3,usgovcloudapi:[0,{servicebus:_3}],usgovcloudapp:_3,windows:[0,{core:[0,{blob:_3}],servicebus:_3}],mynetname:[0,{sn:_3}],routingthecloud:_3,bounceme:_3,ddns:_3,"eating-organic":_3,mydissent:_3,myeffect:_3,mymediapc:_3,mypsx:_3,mysecuritycamera:_3,nhlfan:_3,"no-ip":_3,pgafan:_3,privatizehealthinsurance:_3,redirectme:_3,serveblog:_3,serveminecraft:_3,sytes:_3,dnsup:_3,hicam:_3,"now-dns":_3,ownip:_3,vpndns:_3,cloudycluster:_3,ovh:[0,{hosting:_6,webpaas:_6}],rackmaze:_3,myradweb:_3,in:_3,"subsc-pay":_3,squares:_3,schokokeks:_3,"firewall-gateway":_3,seidat:_3,senseering:_3,siteleaf:_3,mafelo:_3,myspreadshop:_3,"vps-host":[2,{jelastic:[0,{atl:_3,njs:_3,ric:_3}]}],srcf:[0,{soc:_3,user:_3}],supabase:_3,dsmynas:_3,familyds:_3,ts:[2,{c:_6}],torproject:[2,{pages:_3}],tunnelmole:_3,vusercontent:_3,"reserve-online":_3,localcert:_3,"community-pro":_3,meinforum:_3,yandexcloud:[2,{storage:_3,website:_3}],za:_3,zabc:_3}],nf:[1,{arts:_2,com:_2,firm:_2,info:_2,net:_2,other:_2,per:_2,rec:_2,store:_2,web:_2}],ng:[1,{com:_2,edu:_2,gov:_2,i:_2,mil:_2,mobi:_2,name:_2,net:_2,org:_2,sch:_2,biz:[2,{co:_3,dl:_3,go:_3,lg:_3,on:_3}],col:_3,firm:_3,gen:_3,ltd:_3,ngo:_3,plc:_3}],ni:[1,{ac:_2,biz:_2,co:_2,com:_2,edu:_2,gob:_2,in:_2,info:_2,int:_2,mil:_2,net:_2,nom:_2,org:_2,web:_2}],nl:[1,{co:_3,"hosting-cluster":_3,gov:_3,khplay:_3,"123website":_3,myspreadshop:_3,transurl:_6,cistron:_3,demon:_3}],no:[1,{fhs:_2,folkebibl:_2,fylkesbibl:_2,idrett:_2,museum:_2,priv:_2,vgs:_2,dep:_2,herad:_2,kommune:_2,mil:_2,stat:_2,aa:_64,ah:_64,bu:_64,fm:_64,hl:_64,hm:_64,"jan-mayen":_64,mr:_64,nl:_64,nt:_64,of:_64,ol:_64,oslo:_64,rl:_64,sf:_64,st:_64,svalbard:_64,tm:_64,tr:_64,va:_64,vf:_64,akrehamn:_2,"xn--krehamn-dxa":_2,åkrehamn:_2,algard:_2,"xn--lgrd-poac":_2,ålgård:_2,arna:_2,bronnoysund:_2,"xn--brnnysund-m8ac":_2,brønnøysund:_2,brumunddal:_2,bryne:_2,drobak:_2,"xn--drbak-wua":_2,drøbak:_2,egersund:_2,fetsund:_2,floro:_2,"xn--flor-jra":_2,florø:_2,fredrikstad:_2,hokksund:_2,honefoss:_2,"xn--hnefoss-q1a":_2,hønefoss:_2,jessheim:_2,jorpeland:_2,"xn--jrpeland-54a":_2,jørpeland:_2,kirkenes:_2,kopervik:_2,krokstadelva:_2,langevag:_2,"xn--langevg-jxa":_2,langevåg:_2,leirvik:_2,mjondalen:_2,"xn--mjndalen-64a":_2,mjøndalen:_2,"mo-i-rana":_2,mosjoen:_2,"xn--mosjen-eya":_2,mosjøen:_2,nesoddtangen:_2,orkanger:_2,osoyro:_2,"xn--osyro-wua":_2,osøyro:_2,raholt:_2,"xn--rholt-mra":_2,råholt:_2,sandnessjoen:_2,"xn--sandnessjen-ogb":_2,sandnessjøen:_2,skedsmokorset:_2,slattum:_2,spjelkavik:_2,stathelle:_2,stavern:_2,stjordalshalsen:_2,"xn--stjrdalshalsen-sqb":_2,stjørdalshalsen:_2,tananger:_2,tranby:_2,vossevangen:_2,aarborte:_2,aejrie:_2,afjord:_2,"xn--fjord-lra":_2,åfjord:_2,agdenes:_2,akershus:_65,aknoluokta:_2,"xn--koluokta-7ya57h":_2,ákŋoluokta:_2,al:_2,"xn--l-1fa":_2,ål:_2,alaheadju:_2,"xn--laheadju-7ya":_2,álaheadju:_2,alesund:_2,"xn--lesund-hua":_2,ålesund:_2,alstahaug:_2,alta:_2,"xn--lt-liac":_2,áltá:_2,alvdal:_2,amli:_2,"xn--mli-tla":_2,åmli:_2,amot:_2,"xn--mot-tla":_2,åmot:_2,andasuolo:_2,andebu:_2,andoy:_2,"xn--andy-ira":_2,andøy:_2,ardal:_2,"xn--rdal-poa":_2,årdal:_2,aremark:_2,arendal:_2,"xn--s-1fa":_2,ås:_2,aseral:_2,"xn--seral-lra":_2,åseral:_2,asker:_2,askim:_2,askoy:_2,"xn--asky-ira":_2,askøy:_2,askvoll:_2,asnes:_2,"xn--snes-poa":_2,åsnes:_2,audnedaln:_2,aukra:_2,aure:_2,aurland:_2,"aurskog-holand":_2,"xn--aurskog-hland-jnb":_2,"aurskog-høland":_2,austevoll:_2,austrheim:_2,averoy:_2,"xn--avery-yua":_2,averøy:_2,badaddja:_2,"xn--bdddj-mrabd":_2,bådåddjå:_2,"xn--brum-voa":_2,bærum:_2,bahcavuotna:_2,"xn--bhcavuotna-s4a":_2,báhcavuotna:_2,bahccavuotna:_2,"xn--bhccavuotna-k7a":_2,báhccavuotna:_2,baidar:_2,"xn--bidr-5nac":_2,báidár:_2,bajddar:_2,"xn--bjddar-pta":_2,bájddar:_2,balat:_2,"xn--blt-elab":_2,bálát:_2,balestrand:_2,ballangen:_2,balsfjord:_2,bamble:_2,bardu:_2,barum:_2,batsfjord:_2,"xn--btsfjord-9za":_2,båtsfjord:_2,bearalvahki:_2,"xn--bearalvhki-y4a":_2,bearalváhki:_2,beardu:_2,beiarn:_2,berg:_2,bergen:_2,berlevag:_2,"xn--berlevg-jxa":_2,berlevåg:_2,bievat:_2,"xn--bievt-0qa":_2,bievát:_2,bindal:_2,birkenes:_2,bjerkreim:_2,bjugn:_2,bodo:_2,"xn--bod-2na":_2,bodø:_2,bokn:_2,bomlo:_2,"xn--bmlo-gra":_2,bømlo:_2,bremanger:_2,bronnoy:_2,"xn--brnny-wuac":_2,brønnøy:_2,budejju:_2,buskerud:_65,bygland:_2,bykle:_2,cahcesuolo:_2,"xn--hcesuolo-7ya35b":_2,čáhcesuolo:_2,davvenjarga:_2,"xn--davvenjrga-y4a":_2,davvenjárga:_2,davvesiida:_2,deatnu:_2,dielddanuorri:_2,divtasvuodna:_2,divttasvuotna:_2,donna:_2,"xn--dnna-gra":_2,dønna:_2,dovre:_2,drammen:_2,drangedal:_2,dyroy:_2,"xn--dyry-ira":_2,dyrøy:_2,eid:_2,eidfjord:_2,eidsberg:_2,eidskog:_2,eidsvoll:_2,eigersund:_2,elverum:_2,enebakk:_2,engerdal:_2,etne:_2,etnedal:_2,evenassi:_2,"xn--eveni-0qa01ga":_2,evenášši:_2,evenes:_2,"evje-og-hornnes":_2,farsund:_2,fauske:_2,fedje:_2,fet:_2,finnoy:_2,"xn--finny-yua":_2,finnøy:_2,fitjar:_2,fjaler:_2,fjell:_2,fla:_2,"xn--fl-zia":_2,flå:_2,flakstad:_2,flatanger:_2,flekkefjord:_2,flesberg:_2,flora:_2,folldal:_2,forde:_2,"xn--frde-gra":_2,førde:_2,forsand:_2,fosnes:_2,"xn--frna-woa":_2,fræna:_2,frana:_2,frei:_2,frogn:_2,froland:_2,frosta:_2,froya:_2,"xn--frya-hra":_2,frøya:_2,fuoisku:_2,fuossko:_2,fusa:_2,fyresdal:_2,gaivuotna:_2,"xn--givuotna-8ya":_2,gáivuotna:_2,galsa:_2,"xn--gls-elac":_2,gálsá:_2,gamvik:_2,gangaviika:_2,"xn--ggaviika-8ya47h":_2,gáŋgaviika:_2,gaular:_2,gausdal:_2,giehtavuoatna:_2,gildeskal:_2,"xn--gildeskl-g0a":_2,gildeskål:_2,giske:_2,gjemnes:_2,gjerdrum:_2,gjerstad:_2,gjesdal:_2,gjovik:_2,"xn--gjvik-wua":_2,gjøvik:_2,gloppen:_2,gol:_2,gran:_2,grane:_2,granvin:_2,gratangen:_2,grimstad:_2,grong:_2,grue:_2,gulen:_2,guovdageaidnu:_2,ha:_2,"xn--h-2fa":_2,hå:_2,habmer:_2,"xn--hbmer-xqa":_2,hábmer:_2,hadsel:_2,"xn--hgebostad-g3a":_2,hægebostad:_2,hagebostad:_2,halden:_2,halsa:_2,hamar:_2,hamaroy:_2,hammarfeasta:_2,"xn--hmmrfeasta-s4ac":_2,hámmárfeasta:_2,hammerfest:_2,hapmir:_2,"xn--hpmir-xqa":_2,hápmir:_2,haram:_2,hareid:_2,harstad:_2,hasvik:_2,hattfjelldal:_2,haugesund:_2,hedmark:[0,{os:_2,valer:_2,"xn--vler-qoa":_2,våler:_2}],hemne:_2,hemnes:_2,hemsedal:_2,hitra:_2,hjartdal:_2,hjelmeland:_2,hobol:_2,"xn--hobl-ira":_2,hobøl:_2,hof:_2,hol:_2,hole:_2,holmestrand:_2,holtalen:_2,"xn--holtlen-hxa":_2,holtålen:_2,hordaland:[0,{os:_2}],hornindal:_2,horten:_2,hoyanger:_2,"xn--hyanger-q1a":_2,høyanger:_2,hoylandet:_2,"xn--hylandet-54a":_2,høylandet:_2,hurdal:_2,hurum:_2,hvaler:_2,hyllestad:_2,ibestad:_2,inderoy:_2,"xn--indery-fya":_2,inderøy:_2,iveland:_2,ivgu:_2,jevnaker:_2,jolster:_2,"xn--jlster-bya":_2,jølster:_2,jondal:_2,kafjord:_2,"xn--kfjord-iua":_2,kåfjord:_2,karasjohka:_2,"xn--krjohka-hwab49j":_2,kárášjohka:_2,karasjok:_2,karlsoy:_2,karmoy:_2,"xn--karmy-yua":_2,karmøy:_2,kautokeino:_2,klabu:_2,"xn--klbu-woa":_2,klæbu:_2,klepp:_2,kongsberg:_2,kongsvinger:_2,kraanghke:_2,"xn--kranghke-b0a":_2,kråanghke:_2,kragero:_2,"xn--krager-gya":_2,kragerø:_2,kristiansand:_2,kristiansund:_2,krodsherad:_2,"xn--krdsherad-m8a":_2,krødsherad:_2,"xn--kvfjord-nxa":_2,kvæfjord:_2,"xn--kvnangen-k0a":_2,kvænangen:_2,kvafjord:_2,kvalsund:_2,kvam:_2,kvanangen:_2,kvinesdal:_2,kvinnherad:_2,kviteseid:_2,kvitsoy:_2,"xn--kvitsy-fya":_2,kvitsøy:_2,laakesvuemie:_2,"xn--lrdal-sra":_2,lærdal:_2,lahppi:_2,"xn--lhppi-xqa":_2,láhppi:_2,lardal:_2,larvik:_2,lavagis:_2,lavangen:_2,leangaviika:_2,"xn--leagaviika-52b":_2,leaŋgaviika:_2,lebesby:_2,leikanger:_2,leirfjord:_2,leka:_2,leksvik:_2,lenvik:_2,lerdal:_2,lesja:_2,levanger:_2,lier:_2,lierne:_2,lillehammer:_2,lillesand:_2,lindas:_2,"xn--linds-pra":_2,lindås:_2,lindesnes:_2,loabat:_2,"xn--loabt-0qa":_2,loabát:_2,lodingen:_2,"xn--ldingen-q1a":_2,lødingen:_2,lom:_2,loppa:_2,lorenskog:_2,"xn--lrenskog-54a":_2,lørenskog:_2,loten:_2,"xn--lten-gra":_2,løten:_2,lund:_2,lunner:_2,luroy:_2,"xn--lury-ira":_2,lurøy:_2,luster:_2,lyngdal:_2,lyngen:_2,malatvuopmi:_2,"xn--mlatvuopmi-s4a":_2,málatvuopmi:_2,malselv:_2,"xn--mlselv-iua":_2,målselv:_2,malvik:_2,mandal:_2,marker:_2,marnardal:_2,masfjorden:_2,masoy:_2,"xn--msy-ula0h":_2,måsøy:_2,"matta-varjjat":_2,"xn--mtta-vrjjat-k7af":_2,"mátta-várjjat":_2,meland:_2,meldal:_2,melhus:_2,meloy:_2,"xn--mely-ira":_2,meløy:_2,meraker:_2,"xn--merker-kua":_2,meråker:_2,midsund:_2,"midtre-gauldal":_2,moareke:_2,"xn--moreke-jua":_2,moåreke:_2,modalen:_2,modum:_2,molde:_2,"more-og-romsdal":[0,{heroy:_2,sande:_2}],"xn--mre-og-romsdal-qqb":[0,{"xn--hery-ira":_2,sande:_2}],"møre-og-romsdal":[0,{herøy:_2,sande:_2}],moskenes:_2,moss:_2,muosat:_2,"xn--muost-0qa":_2,muosát:_2,naamesjevuemie:_2,"xn--nmesjevuemie-tcba":_2,nååmesjevuemie:_2,"xn--nry-yla5g":_2,nærøy:_2,namdalseid:_2,namsos:_2,namsskogan:_2,nannestad:_2,naroy:_2,narviika:_2,narvik:_2,naustdal:_2,navuotna:_2,"xn--nvuotna-hwa":_2,návuotna:_2,"nedre-eiker":_2,nesna:_2,nesodden:_2,nesseby:_2,nesset:_2,nissedal:_2,nittedal:_2,"nord-aurdal":_2,"nord-fron":_2,"nord-odal":_2,norddal:_2,nordkapp:_2,nordland:[0,{bo:_2,"xn--b-5ga":_2,bø:_2,heroy:_2,"xn--hery-ira":_2,herøy:_2}],"nordre-land":_2,nordreisa:_2,"nore-og-uvdal":_2,notodden:_2,notteroy:_2,"xn--nttery-byae":_2,nøtterøy:_2,odda:_2,oksnes:_2,"xn--ksnes-uua":_2,øksnes:_2,omasvuotna:_2,oppdal:_2,oppegard:_2,"xn--oppegrd-ixa":_2,oppegård:_2,orkdal:_2,orland:_2,"xn--rland-uua":_2,ørland:_2,orskog:_2,"xn--rskog-uua":_2,ørskog:_2,orsta:_2,"xn--rsta-fra":_2,ørsta:_2,osen:_2,osteroy:_2,"xn--ostery-fya":_2,osterøy:_2,ostfold:[0,{valer:_2}],"xn--stfold-9xa":[0,{"xn--vler-qoa":_2}],østfold:[0,{våler:_2}],"ostre-toten":_2,"xn--stre-toten-zcb":_2,"østre-toten":_2,overhalla:_2,"ovre-eiker":_2,"xn--vre-eiker-k8a":_2,"øvre-eiker":_2,oyer:_2,"xn--yer-zna":_2,øyer:_2,oygarden:_2,"xn--ygarden-p1a":_2,øygarden:_2,"oystre-slidre":_2,"xn--ystre-slidre-ujb":_2,"øystre-slidre":_2,porsanger:_2,porsangu:_2,"xn--porsgu-sta26f":_2,porsáŋgu:_2,porsgrunn:_2,rade:_2,"xn--rde-ula":_2,råde:_2,radoy:_2,"xn--rady-ira":_2,radøy:_2,"xn--rlingen-mxa":_2,rælingen:_2,rahkkeravju:_2,"xn--rhkkervju-01af":_2,ráhkkerávju:_2,raisa:_2,"xn--risa-5na":_2,ráisa:_2,rakkestad:_2,ralingen:_2,rana:_2,randaberg:_2,rauma:_2,rendalen:_2,rennebu:_2,rennesoy:_2,"xn--rennesy-v1a":_2,rennesøy:_2,rindal:_2,ringebu:_2,ringerike:_2,ringsaker:_2,risor:_2,"xn--risr-ira":_2,risør:_2,rissa:_2,roan:_2,rodoy:_2,"xn--rdy-0nab":_2,rødøy:_2,rollag:_2,romsa:_2,romskog:_2,"xn--rmskog-bya":_2,rømskog:_2,roros:_2,"xn--rros-gra":_2,røros:_2,rost:_2,"xn--rst-0na":_2,røst:_2,royken:_2,"xn--ryken-vua":_2,røyken:_2,royrvik:_2,"xn--ryrvik-bya":_2,røyrvik:_2,ruovat:_2,rygge:_2,salangen:_2,salat:_2,"xn--slat-5na":_2,sálat:_2,"xn--slt-elab":_2,sálát:_2,saltdal:_2,samnanger:_2,sandefjord:_2,sandnes:_2,sandoy:_2,"xn--sandy-yua":_2,sandøy:_2,sarpsborg:_2,sauda:_2,sauherad:_2,sel:_2,selbu:_2,selje:_2,seljord:_2,siellak:_2,sigdal:_2,siljan:_2,sirdal:_2,skanit:_2,"xn--sknit-yqa":_2,skánit:_2,skanland:_2,"xn--sknland-fxa":_2,skånland:_2,skaun:_2,skedsmo:_2,ski:_2,skien:_2,skierva:_2,"xn--skierv-uta":_2,skiervá:_2,skiptvet:_2,skjak:_2,"xn--skjk-soa":_2,skjåk:_2,skjervoy:_2,"xn--skjervy-v1a":_2,skjervøy:_2,skodje:_2,smola:_2,"xn--smla-hra":_2,smøla:_2,snaase:_2,"xn--snase-nra":_2,snåase:_2,snasa:_2,"xn--snsa-roa":_2,snåsa:_2,snillfjord:_2,snoasa:_2,sogndal:_2,sogne:_2,"xn--sgne-gra":_2,søgne:_2,sokndal:_2,sola:_2,solund:_2,somna:_2,"xn--smna-gra":_2,sømna:_2,"sondre-land":_2,"xn--sndre-land-0cb":_2,"søndre-land":_2,songdalen:_2,"sor-aurdal":_2,"xn--sr-aurdal-l8a":_2,"sør-aurdal":_2,"sor-fron":_2,"xn--sr-fron-q1a":_2,"sør-fron":_2,"sor-odal":_2,"xn--sr-odal-q1a":_2,"sør-odal":_2,"sor-varanger":_2,"xn--sr-varanger-ggb":_2,"sør-varanger":_2,sorfold:_2,"xn--srfold-bya":_2,sørfold:_2,sorreisa:_2,"xn--srreisa-q1a":_2,sørreisa:_2,sortland:_2,sorum:_2,"xn--srum-gra":_2,sørum:_2,spydeberg:_2,stange:_2,stavanger:_2,steigen:_2,steinkjer:_2,stjordal:_2,"xn--stjrdal-s1a":_2,stjørdal:_2,stokke:_2,"stor-elvdal":_2,stord:_2,stordal:_2,storfjord:_2,strand:_2,stranda:_2,stryn:_2,sula:_2,suldal:_2,sund:_2,sunndal:_2,surnadal:_2,sveio:_2,svelvik:_2,sykkylven:_2,tana:_2,telemark:[0,{bo:_2,"xn--b-5ga":_2,bø:_2}],time:_2,tingvoll:_2,tinn:_2,tjeldsund:_2,tjome:_2,"xn--tjme-hra":_2,tjøme:_2,tokke:_2,tolga:_2,tonsberg:_2,"xn--tnsberg-q1a":_2,tønsberg:_2,torsken:_2,"xn--trna-woa":_2,træna:_2,trana:_2,tranoy:_2,"xn--trany-yua":_2,tranøy:_2,troandin:_2,trogstad:_2,"xn--trgstad-r1a":_2,trøgstad:_2,tromsa:_2,tromso:_2,"xn--troms-zua":_2,tromsø:_2,trondheim:_2,trysil:_2,tvedestrand:_2,tydal:_2,tynset:_2,tysfjord:_2,tysnes:_2,"xn--tysvr-vra":_2,tysvær:_2,tysvar:_2,ullensaker:_2,ullensvang:_2,ulvik:_2,unjarga:_2,"xn--unjrga-rta":_2,unjárga:_2,utsira:_2,vaapste:_2,vadso:_2,"xn--vads-jra":_2,vadsø:_2,"xn--vry-yla5g":_2,værøy:_2,vaga:_2,"xn--vg-yiab":_2,vågå:_2,vagan:_2,"xn--vgan-qoa":_2,vågan:_2,vagsoy:_2,"xn--vgsy-qoa0j":_2,vågsøy:_2,vaksdal:_2,valle:_2,vang:_2,vanylven:_2,vardo:_2,"xn--vard-jra":_2,vardø:_2,varggat:_2,"xn--vrggt-xqad":_2,várggát:_2,varoy:_2,vefsn:_2,vega:_2,vegarshei:_2,"xn--vegrshei-c0a":_2,vegårshei:_2,vennesla:_2,verdal:_2,verran:_2,vestby:_2,vestfold:[0,{sande:_2}],vestnes:_2,"vestre-slidre":_2,"vestre-toten":_2,vestvagoy:_2,"xn--vestvgy-ixa6o":_2,vestvågøy:_2,vevelstad:_2,vik:_2,vikna:_2,vindafjord:_2,voagat:_2,volda:_2,voss:_2,co:_3,"123hjemmeside":_3,myspreadshop:_3}],np:_21,nr:_60,nu:[1,{merseine:_3,mine:_3,shacknet:_3,enterprisecloud:_3}],nz:[1,{ac:_2,co:_2,cri:_2,geek:_2,gen:_2,govt:_2,health:_2,iwi:_2,kiwi:_2,maori:_2,"xn--mori-qsa":_2,māori:_2,mil:_2,net:_2,org:_2,parliament:_2,school:_2,cloudns:_3}],om:[1,{co:_2,com:_2,edu:_2,gov:_2,med:_2,museum:_2,net:_2,org:_2,pro:_2}],onion:_2,org:[1,{altervista:_3,pimienta:_3,poivron:_3,potager:_3,sweetpepper:_3,cdn77:[0,{c:_3,rsc:_3}],"cdn77-secure":[0,{origin:[0,{ssl:_3}]}],ae:_3,cloudns:_3,"ip-dynamic":_3,ddnss:_3,dpdns:_3,duckdns:_3,tunk:_3,blogdns:_3,blogsite:_3,boldlygoingnowhere:_3,dnsalias:_3,dnsdojo:_3,doesntexist:_3,dontexist:_3,doomdns:_3,dvrdns:_3,dynalias:_3,dyndns:[2,{go:_3,home:_3}],endofinternet:_3,endoftheinternet:_3,"from-me":_3,"game-host":_3,gotdns:_3,"hobby-site":_3,homedns:_3,homeftp:_3,homelinux:_3,homeunix:_3,"is-a-bruinsfan":_3,"is-a-candidate":_3,"is-a-celticsfan":_3,"is-a-chef":_3,"is-a-geek":_3,"is-a-knight":_3,"is-a-linux-user":_3,"is-a-patsfan":_3,"is-a-soxfan":_3,"is-found":_3,"is-lost":_3,"is-saved":_3,"is-very-bad":_3,"is-very-evil":_3,"is-very-good":_3,"is-very-nice":_3,"is-very-sweet":_3,"isa-geek":_3,"kicks-ass":_3,misconfused:_3,podzone:_3,readmyblog:_3,selfip:_3,sellsyourhome:_3,servebbs:_3,serveftp:_3,servegame:_3,"stuff-4-sale":_3,webhop:_3,accesscam:_3,camdvr:_3,freeddns:_3,mywire:_3,webredirect:_3,twmail:_3,eu:[2,{al:_3,asso:_3,at:_3,au:_3,be:_3,bg:_3,ca:_3,cd:_3,ch:_3,cn:_3,cy:_3,cz:_3,de:_3,dk:_3,edu:_3,ee:_3,es:_3,fi:_3,fr:_3,gr:_3,hr:_3,hu:_3,ie:_3,il:_3,in:_3,int:_3,is:_3,it:_3,jp:_3,kr:_3,lt:_3,lu:_3,lv:_3,me:_3,mk:_3,mt:_3,my:_3,net:_3,ng:_3,nl:_3,no:_3,nz:_3,pl:_3,pt:_3,ro:_3,ru:_3,se:_3,si:_3,sk:_3,tr:_3,uk:_3,us:_3}],fedorainfracloud:_3,fedorapeople:_3,fedoraproject:[0,{cloud:_3,os:_45,stg:[0,{os:_45}]}],freedesktop:_3,hatenadiary:_3,hepforge:_3,"in-dsl":_3,"in-vpn":_3,js:_3,barsy:_3,mayfirst:_3,routingthecloud:_3,bmoattachments:_3,"cable-modem":_3,collegefan:_3,couchpotatofries:_3,hopto:_3,mlbfan:_3,myftp:_3,mysecuritycamera:_3,nflfan:_3,"no-ip":_3,"read-books":_3,ufcfan:_3,zapto:_3,dynserv:_3,"now-dns":_3,"is-local":_3,httpbin:_3,pubtls:_3,jpn:_3,"my-firewall":_3,myfirewall:_3,spdns:_3,"small-web":_3,dsmynas:_3,familyds:_3,teckids:_59,tuxfamily:_3,hk:_3,us:_3,toolforge:_3,wmcloud:[2,{beta:_3}],wmflabs:_3,za:_3}],pa:[1,{abo:_2,ac:_2,com:_2,edu:_2,gob:_2,ing:_2,med:_2,net:_2,nom:_2,org:_2,sld:_2}],pe:[1,{com:_2,edu:_2,gob:_2,mil:_2,net:_2,nom:_2,org:_2}],pf:[1,{com:_2,edu:_2,org:_2}],pg:_21,ph:[1,{com:_2,edu:_2,gov:_2,i:_2,mil:_2,net:_2,ngo:_2,org:_2,cloudns:_3}],pk:[1,{ac:_2,biz:_2,com:_2,edu:_2,fam:_2,gkp:_2,gob:_2,gog:_2,gok:_2,gop:_2,gos:_2,gov:_2,net:_2,org:_2,web:_2}],pl:[1,{com:_2,net:_2,org:_2,agro:_2,aid:_2,atm:_2,auto:_2,biz:_2,edu:_2,gmina:_2,gsm:_2,info:_2,mail:_2,media:_2,miasta:_2,mil:_2,nieruchomosci:_2,nom:_2,pc:_2,powiat:_2,priv:_2,realestate:_2,rel:_2,sex:_2,shop:_2,sklep:_2,sos:_2,szkola:_2,targi:_2,tm:_2,tourism:_2,travel:_2,turystyka:_2,gov:[1,{ap:_2,griw:_2,ic:_2,is:_2,kmpsp:_2,konsulat:_2,kppsp:_2,kwp:_2,kwpsp:_2,mup:_2,mw:_2,oia:_2,oirm:_2,oke:_2,oow:_2,oschr:_2,oum:_2,pa:_2,pinb:_2,piw:_2,po:_2,pr:_2,psp:_2,psse:_2,pup:_2,rzgw:_2,sa:_2,sdn:_2,sko:_2,so:_2,sr:_2,starostwo:_2,ug:_2,ugim:_2,um:_2,umig:_2,upow:_2,uppo:_2,us:_2,uw:_2,uzs:_2,wif:_2,wiih:_2,winb:_2,wios:_2,witd:_2,wiw:_2,wkz:_2,wsa:_2,wskr:_2,wsse:_2,wuoz:_2,wzmiuw:_2,zp:_2,zpisdn:_2}],augustow:_2,"babia-gora":_2,bedzin:_2,beskidy:_2,bialowieza:_2,bialystok:_2,bielawa:_2,bieszczady:_2,boleslawiec:_2,bydgoszcz:_2,bytom:_2,cieszyn:_2,czeladz:_2,czest:_2,dlugoleka:_2,elblag:_2,elk:_2,glogow:_2,gniezno:_2,gorlice:_2,grajewo:_2,ilawa:_2,jaworzno:_2,"jelenia-gora":_2,jgora:_2,kalisz:_2,karpacz:_2,kartuzy:_2,kaszuby:_2,katowice:_2,"kazimierz-dolny":_2,kepno:_2,ketrzyn:_2,klodzko:_2,kobierzyce:_2,kolobrzeg:_2,konin:_2,konskowola:_2,kutno:_2,lapy:_2,lebork:_2,legnica:_2,lezajsk:_2,limanowa:_2,lomza:_2,lowicz:_2,lubin:_2,lukow:_2,malbork:_2,malopolska:_2,mazowsze:_2,mazury:_2,mielec:_2,mielno:_2,mragowo:_2,naklo:_2,nowaruda:_2,nysa:_2,olawa:_2,olecko:_2,olkusz:_2,olsztyn:_2,opoczno:_2,opole:_2,ostroda:_2,ostroleka:_2,ostrowiec:_2,ostrowwlkp:_2,pila:_2,pisz:_2,podhale:_2,podlasie:_2,polkowice:_2,pomorskie:_2,pomorze:_2,prochowice:_2,pruszkow:_2,przeworsk:_2,pulawy:_2,radom:_2,"rawa-maz":_2,rybnik:_2,rzeszow:_2,sanok:_2,sejny:_2,skoczow:_2,slask:_2,slupsk:_2,sosnowiec:_2,"stalowa-wola":_2,starachowice:_2,stargard:_2,suwalki:_2,swidnica:_2,swiebodzin:_2,swinoujscie:_2,szczecin:_2,szczytno:_2,tarnobrzeg:_2,tgory:_2,turek:_2,tychy:_2,ustka:_2,walbrzych:_2,warmia:_2,warszawa:_2,waw:_2,wegrow:_2,wielun:_2,wlocl:_2,wloclawek:_2,wodzislaw:_2,wolomin:_2,wroclaw:_2,zachpomor:_2,zagan:_2,zarow:_2,zgora:_2,zgorzelec:_2,art:_3,gliwice:_3,krakow:_3,poznan:_3,wroc:_3,zakopane:_3,beep:_3,"ecommerce-shop":_3,cfolks:_3,dfirma:_3,dkonto:_3,you2:_3,shoparena:_3,homesklep:_3,sdscloud:_3,unicloud:_3,lodz:_3,pabianice:_3,plock:_3,sieradz:_3,skierniewice:_3,zgierz:_3,krasnik:_3,leczna:_3,lubartow:_3,lublin:_3,poniatowa:_3,swidnik:_3,co:_3,torun:_3,simplesite:_3,myspreadshop:_3,gda:_3,gdansk:_3,gdynia:_3,med:_3,sopot:_3,bielsko:_3}],pm:[1,{own:_3,name:_3}],pn:[1,{co:_2,edu:_2,gov:_2,net:_2,org:_2}],post:_2,pr:[1,{biz:_2,com:_2,edu:_2,gov:_2,info:_2,isla:_2,name:_2,net:_2,org:_2,pro:_2,ac:_2,est:_2,prof:_2}],pro:[1,{aaa:_2,aca:_2,acct:_2,avocat:_2,bar:_2,cpa:_2,eng:_2,jur:_2,law:_2,med:_2,recht:_2,"12chars":_3,cloudns:_3,keenetic:_3,barsy:_3,ngrok:_3}],ps:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,plo:_2,sec:_2}],pt:[1,{com:_2,edu:_2,gov:_2,int:_2,net:_2,nome:_2,org:_2,publ:_2,"123paginaweb":_3}],pw:[1,{gov:_2,cloudns:_3,x443:_3}],py:[1,{com:_2,coop:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2}],qa:[1,{com:_2,edu:_2,gov:_2,mil:_2,name:_2,net:_2,org:_2,sch:_2}],re:[1,{asso:_2,com:_2,netlib:_3,can:_3}],ro:[1,{arts:_2,com:_2,firm:_2,info:_2,nom:_2,nt:_2,org:_2,rec:_2,store:_2,tm:_2,www:_2,co:_3,shop:_3,barsy:_3}],rs:[1,{ac:_2,co:_2,edu:_2,gov:_2,in:_2,org:_2,brendly:_20,barsy:_3,ox:_3}],ru:[1,{ac:_3,edu:_3,gov:_3,int:_3,mil:_3,eurodir:_3,adygeya:_3,bashkiria:_3,bir:_3,cbg:_3,com:_3,dagestan:_3,grozny:_3,kalmykia:_3,kustanai:_3,marine:_3,mordovia:_3,msk:_3,mytis:_3,nalchik:_3,nov:_3,pyatigorsk:_3,spb:_3,vladikavkaz:_3,vladimir:_3,na4u:_3,mircloud:_3,myjino:[2,{hosting:_6,landing:_6,spectrum:_6,vps:_6}],cldmail:[0,{hb:_3}],mcdir:[2,{vps:_3}],mcpre:_3,net:_3,org:_3,pp:_3,ras:_3}],rw:[1,{ac:_2,co:_2,coop:_2,gov:_2,mil:_2,net:_2,org:_2}],sa:[1,{com:_2,edu:_2,gov:_2,med:_2,net:_2,org:_2,pub:_2,sch:_2}],sb:_4,sc:_4,sd:[1,{com:_2,edu:_2,gov:_2,info:_2,med:_2,net:_2,org:_2,tv:_2}],se:[1,{a:_2,ac:_2,b:_2,bd:_2,brand:_2,c:_2,d:_2,e:_2,f:_2,fh:_2,fhsk:_2,fhv:_2,g:_2,h:_2,i:_2,k:_2,komforb:_2,kommunalforbund:_2,komvux:_2,l:_2,lanbib:_2,m:_2,n:_2,naturbruksgymn:_2,o:_2,org:_2,p:_2,parti:_2,pp:_2,press:_2,r:_2,s:_2,t:_2,tm:_2,u:_2,w:_2,x:_2,y:_2,z:_2,com:_3,iopsys:_3,"123minsida":_3,itcouldbewor:_3,myspreadshop:_3}],sg:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,enscaled:_3}],sh:[1,{com:_2,gov:_2,mil:_2,net:_2,org:_2,hashbang:_3,botda:_3,lovable:_3,platform:[0,{ent:_3,eu:_3,us:_3}],teleport:_3,now:_3}],si:[1,{f5:_3,gitapp:_3,gitpage:_3}],sj:_2,sk:[1,{org:_2}],sl:_4,sm:_2,sn:[1,{art:_2,com:_2,edu:_2,gouv:_2,org:_2,univ:_2}],so:[1,{com:_2,edu:_2,gov:_2,me:_2,net:_2,org:_2,surveys:_3}],sr:_2,ss:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,me:_2,net:_2,org:_2,sch:_2}],st:[1,{co:_2,com:_2,consulado:_2,edu:_2,embaixada:_2,mil:_2,net:_2,org:_2,principe:_2,saotome:_2,store:_2,helioho:_3,cn:_6,kirara:_3,noho:_3}],su:[1,{abkhazia:_3,adygeya:_3,aktyubinsk:_3,arkhangelsk:_3,armenia:_3,ashgabad:_3,azerbaijan:_3,balashov:_3,bashkiria:_3,bryansk:_3,bukhara:_3,chimkent:_3,dagestan:_3,"east-kazakhstan":_3,exnet:_3,georgia:_3,grozny:_3,ivanovo:_3,jambyl:_3,kalmykia:_3,kaluga:_3,karacol:_3,karaganda:_3,karelia:_3,khakassia:_3,krasnodar:_3,kurgan:_3,kustanai:_3,lenug:_3,mangyshlak:_3,mordovia:_3,msk:_3,murmansk:_3,nalchik:_3,navoi:_3,"north-kazakhstan":_3,nov:_3,obninsk:_3,penza:_3,pokrovsk:_3,sochi:_3,spb:_3,tashkent:_3,termez:_3,togliatti:_3,troitsk:_3,tselinograd:_3,tula:_3,tuva:_3,vladikavkaz:_3,vladimir:_3,vologda:_3}],sv:[1,{com:_2,edu:_2,gob:_2,org:_2,red:_2}],sx:_10,sy:_5,sz:[1,{ac:_2,co:_2,org:_2}],tc:_2,td:_2,tel:_2,tf:[1,{sch:_3}],tg:_2,th:[1,{ac:_2,co:_2,go:_2,in:_2,mi:_2,net:_2,or:_2,online:_3,shop:_3}],tj:[1,{ac:_2,biz:_2,co:_2,com:_2,edu:_2,go:_2,gov:_2,int:_2,mil:_2,name:_2,net:_2,nic:_2,org:_2,test:_2,web:_2}],tk:_2,tl:_10,tm:[1,{co:_2,com:_2,edu:_2,gov:_2,mil:_2,net:_2,nom:_2,org:_2}],tn:[1,{com:_2,ens:_2,fin:_2,gov:_2,ind:_2,info:_2,intl:_2,mincom:_2,nat:_2,net:_2,org:_2,perso:_2,tourism:_2,orangecloud:_3}],to:[1,{611:_3,com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,oya:_3,x0:_3,quickconnect:_28,vpnplus:_3,nett:_3}],tr:[1,{av:_2,bbs:_2,bel:_2,biz:_2,com:_2,dr:_2,edu:_2,gen:_2,gov:_2,info:_2,k12:_2,kep:_2,mil:_2,name:_2,net:_2,org:_2,pol:_2,tel:_2,tsk:_2,tv:_2,web:_2,nc:_10}],tt:[1,{biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,mil:_2,name:_2,net:_2,org:_2,pro:_2}],tv:[1,{"better-than":_3,dyndns:_3,"on-the-web":_3,"worse-than":_3,from:_3,sakura:_3}],tw:[1,{club:_2,com:[1,{mymailer:_3}],ebiz:_2,edu:_2,game:_2,gov:_2,idv:_2,mil:_2,net:_2,org:_2,url:_3,mydns:_3}],tz:[1,{ac:_2,co:_2,go:_2,hotel:_2,info:_2,me:_2,mil:_2,mobi:_2,ne:_2,or:_2,sc:_2,tv:_2}],ua:[1,{com:_2,edu:_2,gov:_2,in:_2,net:_2,org:_2,cherkassy:_2,cherkasy:_2,chernigov:_2,chernihiv:_2,chernivtsi:_2,chernovtsy:_2,ck:_2,cn:_2,cr:_2,crimea:_2,cv:_2,dn:_2,dnepropetrovsk:_2,dnipropetrovsk:_2,donetsk:_2,dp:_2,if:_2,"ivano-frankivsk":_2,kh:_2,kharkiv:_2,kharkov:_2,kherson:_2,khmelnitskiy:_2,khmelnytskyi:_2,kiev:_2,kirovograd:_2,km:_2,kr:_2,kropyvnytskyi:_2,krym:_2,ks:_2,kv:_2,kyiv:_2,lg:_2,lt:_2,lugansk:_2,luhansk:_2,lutsk:_2,lv:_2,lviv:_2,mk:_2,mykolaiv:_2,nikolaev:_2,od:_2,odesa:_2,odessa:_2,pl:_2,poltava:_2,rivne:_2,rovno:_2,rv:_2,sb:_2,sebastopol:_2,sevastopol:_2,sm:_2,sumy:_2,te:_2,ternopil:_2,uz:_2,uzhgorod:_2,uzhhorod:_2,vinnica:_2,vinnytsia:_2,vn:_2,volyn:_2,yalta:_2,zakarpattia:_2,zaporizhzhe:_2,zaporizhzhia:_2,zhitomir:_2,zhytomyr:_2,zp:_2,zt:_2,cc:_3,inf:_3,ltd:_3,cx:_3,biz:_3,co:_3,pp:_3,v:_3}],ug:[1,{ac:_2,co:_2,com:_2,edu:_2,go:_2,gov:_2,mil:_2,ne:_2,or:_2,org:_2,sc:_2,us:_2}],uk:[1,{ac:_2,co:[1,{bytemark:[0,{dh:_3,vm:_3}],layershift:_48,barsy:_3,barsyonline:_3,retrosnub:_58,"nh-serv":_3,"no-ip":_3,adimo:_3,myspreadshop:_3}],gov:[1,{api:_3,campaign:_3,service:_3}],ltd:_2,me:_2,net:_2,nhs:_2,org:[1,{glug:_3,lug:_3,lugs:_3,affinitylottery:_3,raffleentry:_3,weeklylottery:_3}],plc:_2,police:_2,sch:_21,conn:_3,copro:_3,hosp:_3,"independent-commission":_3,"independent-inquest":_3,"independent-inquiry":_3,"independent-panel":_3,"independent-review":_3,"public-inquiry":_3,"royal-commission":_3,pymnt:_3,barsy:_3,nimsite:_3,oraclegovcloudapps:_6}],us:[1,{dni:_2,isa:_2,nsn:_2,ak:_66,al:_66,ar:_66,as:_66,az:_66,ca:_66,co:_66,ct:_66,dc:_66,de:_67,fl:_66,ga:_66,gu:_66,hi:_68,ia:_66,id:_66,il:_66,in:_66,ks:_66,ky:_66,la:_66,ma:[1,{k12:[1,{chtr:_2,paroch:_2,pvt:_2}],cc:_2,lib:_2}],md:_66,me:_66,mi:[1,{k12:_2,cc:_2,lib:_2,"ann-arbor":_2,cog:_2,dst:_2,eaton:_2,gen:_2,mus:_2,tec:_2,washtenaw:_2}],mn:_66,mo:_66,ms:[1,{k12:_2,cc:_2}],mt:_66,nc:_66,nd:_68,ne:_66,nh:_66,nj:_66,nm:_66,nv:_66,ny:_66,oh:_66,ok:_66,or:_66,pa:_66,pr:_66,ri:_68,sc:_66,sd:_68,tn:_66,tx:_66,ut:_66,va:_66,vi:_66,vt:_66,wa:_66,wi:_66,wv:_67,wy:_66,cloudns:_3,"is-by":_3,"land-4-sale":_3,"stuff-4-sale":_3,heliohost:_3,enscaled:[0,{phx:_3}],mircloud:_3,"azure-api":_3,azurewebsites:_3,ngo:_3,golffan:_3,noip:_3,pointto:_3,freeddns:_3,srv:[2,{gh:_3,gl:_3}],servername:_3}],uy:[1,{com:_2,edu:_2,gub:_2,mil:_2,net:_2,org:_2,gv:_3}],uz:[1,{co:_2,com:_2,net:_2,org:_2}],va:_2,vc:[1,{com:_2,edu:_2,gov:_2,mil:_2,net:_2,org:_2,gv:[2,{d:_3}],"0e":_6,mydns:_3}],ve:[1,{arts:_2,bib:_2,co:_2,com:_2,e12:_2,edu:_2,emprende:_2,firm:_2,gob:_2,gov:_2,ia:_2,info:_2,int:_2,mil:_2,net:_2,nom:_2,org:_2,rar:_2,rec:_2,store:_2,tec:_2,web:_2}],vg:[1,{edu:_2}],vi:[1,{co:_2,com:_2,k12:_2,net:_2,org:_2}],vn:[1,{ac:_2,ai:_2,biz:_2,com:_2,edu:_2,gov:_2,health:_2,id:_2,info:_2,int:_2,io:_2,name:_2,net:_2,org:_2,pro:_2,angiang:_2,bacgiang:_2,backan:_2,baclieu:_2,bacninh:_2,"baria-vungtau":_2,bentre:_2,binhdinh:_2,binhduong:_2,binhphuoc:_2,binhthuan:_2,camau:_2,cantho:_2,caobang:_2,daklak:_2,daknong:_2,danang:_2,dienbien:_2,dongnai:_2,dongthap:_2,gialai:_2,hagiang:_2,haiduong:_2,haiphong:_2,hanam:_2,hanoi:_2,hatinh:_2,haugiang:_2,hoabinh:_2,hungyen:_2,khanhhoa:_2,kiengiang:_2,kontum:_2,laichau:_2,lamdong:_2,langson:_2,laocai:_2,longan:_2,namdinh:_2,nghean:_2,ninhbinh:_2,ninhthuan:_2,phutho:_2,phuyen:_2,quangbinh:_2,quangnam:_2,quangngai:_2,quangninh:_2,quangtri:_2,soctrang:_2,sonla:_2,tayninh:_2,thaibinh:_2,thainguyen:_2,thanhhoa:_2,thanhphohochiminh:_2,thuathienhue:_2,tiengiang:_2,travinh:_2,tuyenquang:_2,vinhlong:_2,vinhphuc:_2,yenbai:_2}],vu:_47,wf:[1,{biz:_3,sch:_3}],ws:[1,{com:_2,edu:_2,gov:_2,net:_2,org:_2,advisor:_6,cloud66:_3,dyndns:_3,mypets:_3}],yt:[1,{org:_3}],"xn--mgbaam7a8h":_2,امارات:_2,"xn--y9a3aq":_2,հայ:_2,"xn--54b7fta0cc":_2,বাংলা:_2,"xn--90ae":_2,бг:_2,"xn--mgbcpq6gpa1a":_2,البحرين:_2,"xn--90ais":_2,бел:_2,"xn--fiqs8s":_2,中国:_2,"xn--fiqz9s":_2,中國:_2,"xn--lgbbat1ad8j":_2,الجزائر:_2,"xn--wgbh1c":_2,مصر:_2,"xn--e1a4c":_2,ею:_2,"xn--qxa6a":_2,ευ:_2,"xn--mgbah1a3hjkrd":_2,موريتانيا:_2,"xn--node":_2,გე:_2,"xn--qxam":_2,ελ:_2,"xn--j6w193g":[1,{"xn--gmqw5a":_2,"xn--55qx5d":_2,"xn--mxtq1m":_2,"xn--wcvs22d":_2,"xn--uc0atv":_2,"xn--od0alg":_2}],香港:[1,{個人:_2,公司:_2,政府:_2,教育:_2,組織:_2,網絡:_2}],"xn--2scrj9c":_2,ಭಾರತ:_2,"xn--3hcrj9c":_2,ଭାରତ:_2,"xn--45br5cyl":_2,ভাৰত:_2,"xn--h2breg3eve":_2,भारतम्:_2,"xn--h2brj9c8c":_2,भारोत:_2,"xn--mgbgu82a":_2,ڀارت:_2,"xn--rvc1e0am3e":_2,ഭാരതം:_2,"xn--h2brj9c":_2,भारत:_2,"xn--mgbbh1a":_2,بارت:_2,"xn--mgbbh1a71e":_2,بھارت:_2,"xn--fpcrj9c3d":_2,భారత్:_2,"xn--gecrj9c":_2,ભારત:_2,"xn--s9brj9c":_2,ਭਾਰਤ:_2,"xn--45brj9c":_2,ভারত:_2,"xn--xkc2dl3a5ee0h":_2,இந்தியா:_2,"xn--mgba3a4f16a":_2,ایران:_2,"xn--mgba3a4fra":_2,ايران:_2,"xn--mgbtx2b":_2,عراق:_2,"xn--mgbayh7gpa":_2,الاردن:_2,"xn--3e0b707e":_2,한국:_2,"xn--80ao21a":_2,қаз:_2,"xn--q7ce6a":_2,ລາວ:_2,"xn--fzc2c9e2c":_2,ලංකා:_2,"xn--xkc2al3hye2a":_2,இலங்கை:_2,"xn--mgbc0a9azcg":_2,المغرب:_2,"xn--d1alf":_2,мкд:_2,"xn--l1acc":_2,мон:_2,"xn--mix891f":_2,澳門:_2,"xn--mix082f":_2,澳门:_2,"xn--mgbx4cd0ab":_2,مليسيا:_2,"xn--mgb9awbf":_2,عمان:_2,"xn--mgbai9azgqp6j":_2,پاکستان:_2,"xn--mgbai9a5eva00b":_2,پاكستان:_2,"xn--ygbi2ammx":_2,فلسطين:_2,"xn--90a3ac":[1,{"xn--80au":_2,"xn--90azh":_2,"xn--d1at":_2,"xn--c1avg":_2,"xn--o1ac":_2,"xn--o1ach":_2}],срб:[1,{ак:_2,обр:_2,од:_2,орг:_2,пр:_2,упр:_2}],"xn--p1ai":_2,рф:_2,"xn--wgbl6a":_2,قطر:_2,"xn--mgberp4a5d4ar":_2,السعودية:_2,"xn--mgberp4a5d4a87g":_2,السعودیة:_2,"xn--mgbqly7c0a67fbc":_2,السعودیۃ:_2,"xn--mgbqly7cvafr":_2,السعوديه:_2,"xn--mgbpl2fh":_2,سودان:_2,"xn--yfro4i67o":_2,新加坡:_2,"xn--clchc0ea0b2g2a9gcd":_2,சிங்கப்பூர்:_2,"xn--ogbpf8fl":_2,سورية:_2,"xn--mgbtf8fl":_2,سوريا:_2,"xn--o3cw4h":[1,{"xn--o3cyx2a":_2,"xn--12co0c3b4eva":_2,"xn--m3ch0j3a":_2,"xn--h3cuzk1di":_2,"xn--12c1fe0br":_2,"xn--12cfi8ixb8l":_2}],ไทย:[1,{ทหาร:_2,ธุรกิจ:_2,เน็ต:_2,รัฐบาล:_2,ศึกษา:_2,องค์กร:_2}],"xn--pgbs0dh":_2,تونس:_2,"xn--kpry57d":_2,台灣:_2,"xn--kprw13d":_2,台湾:_2,"xn--nnx388a":_2,臺灣:_2,"xn--j1amh":_2,укр:_2,"xn--mgb2ddes":_2,اليمن:_2,xxx:_2,ye:_5,za:[0,{ac:_2,agric:_2,alt:_2,co:_2,edu:_2,gov:_2,grondar:_2,law:_2,mil:_2,net:_2,ngo:_2,nic:_2,nis:_2,nom:_2,org:_2,school:_2,tm:_2,web:_2}],zm:[1,{ac:_2,biz:_2,co:_2,com:_2,edu:_2,gov:_2,info:_2,mil:_2,net:_2,org:_2,sch:_2}],zw:[1,{ac:_2,co:_2,gov:_2,mil:_2,org:_2}],aaa:_2,aarp:_2,abb:_2,abbott:_2,abbvie:_2,abc:_2,able:_2,abogado:_2,abudhabi:_2,academy:[1,{official:_3}],accenture:_2,accountant:_2,accountants:_2,aco:_2,actor:_2,ads:_2,adult:_2,aeg:_2,aetna:_2,afl:_2,africa:_2,agakhan:_2,agency:_2,aig:_2,airbus:_2,airforce:_2,airtel:_2,akdn:_2,alibaba:_2,alipay:_2,allfinanz:_2,allstate:_2,ally:_2,alsace:_2,alstom:_2,amazon:_2,americanexpress:_2,americanfamily:_2,amex:_2,amfam:_2,amica:_2,amsterdam:_2,analytics:_2,android:_2,anquan:_2,anz:_2,aol:_2,apartments:_2,app:[1,{adaptable:_3,aiven:_3,beget:_6,brave:_7,clerk:_3,clerkstage:_3,cloudflare:_3,wnext:_3,csb:[2,{preview:_3}],convex:_3,corespeed:_3,deta:_3,ondigitalocean:_3,easypanel:_3,encr:[2,{frontend:_3}],evervault:_8,expo:[2,{staging:_3}],edgecompute:_3,"on-fleek":_3,flutterflow:_3,sprites:_3,e2b:_3,framer:_3,gadget:_3,github:_3,hosted:_6,run:[0,{"*":_3,mtls:_6}],web:_3,hackclub:_3,hasura:_3,onhercules:_3,botdash:_3,shiptoday:_3,leapcell:_3,loginline:_3,lovable:_3,luyani:_3,magicpatterns:_3,medusajs:_3,messerli:_3,miren:_3,mocha:_3,netlify:_3,ngrok:_3,"ngrok-free":_3,developer:_6,noop:_3,northflank:_6,upsun:_6,railway:[0,{up:_3}],replit:_9,nyat:_3,snowflake:[0,{"*":_3,privatelink:_6}],streamlit:_3,spawnbase:_3,telebit:_3,typedream:_3,vercel:_3,wal:_3,wasmer:_3,bookonline:_3,windsurf:_3,base44:_3,zeabur:_3,zerops:_6}],apple:[1,{int:[2,{cloud:[0,{"*":_3,r:[0,{"*":_3,"ap-north-1":_6,"ap-south-1":_6,"ap-south-2":_6,"eu-central-1":_6,"eu-north-1":_6,"us-central-1":_6,"us-central-2":_6,"us-east-1":_6,"us-east-2":_6,"us-west-1":_6,"us-west-2":_6,"us-west-3":_6}]}]}]}],aquarelle:_2,arab:_2,aramco:_2,archi:_2,army:_2,art:_2,arte:_2,asda:_2,associates:_2,athleta:_2,attorney:_2,auction:_2,audi:_2,audible:_2,audio:_2,auspost:_2,author:_2,auto:_2,autos:_2,aws:[1,{on:[0,{"af-south-1":_11,"ap-east-1":_11,"ap-northeast-1":_11,"ap-northeast-2":_11,"ap-northeast-3":_11,"ap-south-1":_11,"ap-south-2":_12,"ap-southeast-1":_11,"ap-southeast-2":_11,"ap-southeast-3":_11,"ap-southeast-4":_12,"ap-southeast-5":_12,"ca-central-1":_11,"ca-west-1":_12,"eu-central-1":_11,"eu-central-2":_12,"eu-north-1":_11,"eu-south-1":_11,"eu-south-2":_12,"eu-west-1":_11,"eu-west-2":_11,"eu-west-3":_11,"il-central-1":_12,"me-central-1":_12,"me-south-1":_11,"sa-east-1":_11,"us-east-1":_11,"us-east-2":_11,"us-west-1":_11,"us-west-2":_11,"ap-southeast-7":_13,"mx-central-1":_13,"us-gov-east-1":_14,"us-gov-west-1":_14}],sagemaker:[0,{"ap-northeast-1":_16,"ap-northeast-2":_16,"ap-south-1":_16,"ap-southeast-1":_16,"ap-southeast-2":_16,"ca-central-1":_18,"eu-central-1":_16,"eu-west-1":_16,"eu-west-2":_16,"us-east-1":_18,"us-east-2":_18,"us-west-2":_18,"af-south-1":_15,"ap-east-1":_15,"ap-northeast-3":_15,"ap-south-2":_17,"ap-southeast-3":_15,"ap-southeast-4":_17,"ca-west-1":[0,{notebook:_3,"notebook-fips":_3}],"eu-central-2":_15,"eu-north-1":_15,"eu-south-1":_15,"eu-south-2":_15,"eu-west-3":_15,"il-central-1":_15,"me-central-1":_15,"me-south-1":_15,"sa-east-1":_15,"us-gov-east-1":_19,"us-gov-west-1":_19,"us-west-1":[0,{notebook:_3,"notebook-fips":_3,studio:_3}],experiments:_6}],repost:[0,{private:_6}]}],axa:_2,azure:_2,baby:_2,baidu:_2,banamex:_2,band:_2,bank:_2,bar:_2,barcelona:_2,barclaycard:_2,barclays:_2,barefoot:_2,bargains:_2,baseball:_2,basketball:[1,{aus:_3,nz:_3}],bauhaus:_2,bayern:_2,bbc:_2,bbt:_2,bbva:_2,bcg:_2,bcn:_2,beats:_2,beauty:_2,beer:_2,berlin:_2,best:_2,bestbuy:_2,bet:_2,bharti:_2,bible:_2,bid:_2,bike:_2,bing:_2,bingo:_2,bio:_2,black:_2,blackfriday:_2,blockbuster:_2,blog:_2,bloomberg:_2,blue:_2,bms:_2,bmw:_2,bnpparibas:_2,boats:_2,boehringer:_2,bofa:_2,bom:_2,bond:_2,boo:_2,book:_2,booking:_2,bosch:_2,bostik:_2,boston:_2,bot:_2,boutique:_2,box:_2,bradesco:_2,bridgestone:_2,broadway:_2,broker:_2,brother:_2,brussels:_2,build:[1,{shiptoday:_3,v0:_3,windsurf:_3}],builders:[1,{cloudsite:_3}],business:_22,buy:_2,buzz:_2,bzh:_2,cab:_2,cafe:_2,cal:_2,call:_2,calvinklein:_2,cam:_2,camera:_2,camp:[1,{emf:[0,{at:_3}]}],canon:_2,capetown:_2,capital:_2,capitalone:_2,car:_2,caravan:_2,cards:_2,care:_2,career:_2,careers:_2,cars:_2,casa:[1,{nabu:[0,{ui:_3}]}],case:[1,{sav:_3}],cash:_2,casino:_2,catering:_2,catholic:_2,cba:_2,cbn:_2,cbre:_2,center:_2,ceo:_2,cern:_2,cfa:_2,cfd:_2,chanel:_2,channel:_2,charity:_2,chase:_2,chat:_2,cheap:_2,chintai:_2,christmas:_2,chrome:_2,church:_2,cipriani:_2,circle:_2,cisco:_2,citadel:_2,citi:_2,citic:_2,city:_2,claims:_2,cleaning:_2,click:_2,clinic:_2,clinique:_2,clothing:_2,cloud:[1,{antagonist:_3,convex:_3,elementor:_3,emergent:_3,encoway:[0,{eu:_3}],statics:_6,ravendb:_3,axarnet:[0,{"es-1":_3}],diadem:_3,jelastic:[0,{vip:_3}],jele:_3,"jenv-aruba":[0,{aruba:[0,{eur:[0,{it1:_3}]}],it1:_3}],keliweb:[2,{cs:_3}],oxa:[2,{tn:_3,uk:_3}],primetel:[2,{uk:_3}],reclaim:[0,{ca:_3,uk:_3,us:_3}],trendhosting:[0,{ch:_3,de:_3}],jote:_3,jotelulu:_3,kuleuven:_3,laravel:_3,linkyard:_3,magentosite:_6,matlab:_3,observablehq:_3,perspecta:_3,vapor:_3,"on-rancher":_6,scw:[0,{baremetal:[0,{"fr-par-1":_3,"fr-par-2":_3,"nl-ams-1":_3}],"fr-par":[0,{cockpit:_3,ddl:_3,dtwh:_3,fnc:[2,{functions:_3}],ifr:_3,k8s:_24,kafk:_3,mgdb:_3,rdb:_3,s3:_3,"s3-website":_3,scbl:_3,whm:_3}],instances:[0,{priv:_3,pub:_3}],k8s:_3,"nl-ams":[0,{cockpit:_3,ddl:_3,dtwh:_3,ifr:_3,k8s:_24,kafk:_3,mgdb:_3,rdb:_3,s3:_3,"s3-website":_3,scbl:_3,whm:_3}],"pl-waw":[0,{cockpit:_3,ddl:_3,dtwh:_3,ifr:_3,k8s:_24,kafk:_3,mgdb:_3,rdb:_3,s3:_3,"s3-website":_3,scbl:_3}],scalebook:_3,smartlabeling:_3}],servebolt:_3,onstackit:[0,{runs:_3}],trafficplex:_3,"unison-services":_3,urown:_3,voorloper:_3,zap:_3}],club:[1,{cloudns:_3,jele:_3,barsy:_3}],clubmed:_2,coach:_2,codes:[1,{owo:_6}],coffee:_2,college:_2,cologne:_2,commbank:_2,community:[1,{nog:_3,ravendb:_3,myforum:_3}],company:_2,compare:_2,computer:_2,comsec:_2,condos:_2,construction:_2,consulting:_2,contact:_2,contractors:_2,cooking:_2,cool:[1,{elementor:_3,de:_3}],corsica:_2,country:_2,coupon:_2,coupons:_2,courses:_2,cpa:_2,credit:_2,creditcard:_2,creditunion:_2,cricket:_2,crown:_2,crs:_2,cruise:_2,cruises:_2,cuisinella:_2,cymru:_2,cyou:_2,dad:_2,dance:_2,data:_2,date:_2,dating:_2,datsun:_2,day:_2,dclk:_2,dds:_2,deal:_2,dealer:_2,deals:_2,degree:_2,delivery:_2,dell:_2,deloitte:_2,delta:_2,democrat:_2,dental:_2,dentist:_2,desi:_2,design:[1,{graphic:_3,bss:_3}],dev:[1,{"12chars":_3,myaddr:_3,panel:_3,bearblog:_3,brave:_7,lcl:_6,lclstage:_6,stg:_6,stgstage:_6,pages:_3,r2:_3,workers:_3,deno:_3,"deno-staging":_3,deta:_3,lp:[2,{api:_3,objects:_3}],evervault:_8,fly:_3,githubpreview:_3,gateway:_6,grebedoc:_3,botdash:_3,inbrowser:_6,"is-a-good":_3,iserv:_3,leapcell:_3,runcontainers:_3,localcert:[0,{user:_6}],loginline:_3,barsy:_3,mediatech:_3,"mocha-sandbox":_3,modx:_3,ngrok:_3,"ngrok-free":_3,"is-a-fullstack":_3,"is-cool":_3,"is-not-a":_3,localplayer:_3,xmit:_3,"platter-app":_3,replit:[2,{archer:_3,bones:_3,canary:_3,global:_3,hacker:_3,id:_3,janeway:_3,kim:_3,kira:_3,kirk:_3,odo:_3,paris:_3,picard:_3,pike:_3,prerelease:_3,reed:_3,riker:_3,sisko:_3,spock:_3,staging:_3,sulu:_3,tarpit:_3,teams:_3,tucker:_3,wesley:_3,worf:_3}],crm:[0,{aa:_6,ab:_6,ac:_6,ad:_6,ae:_6,af:_6,ci:_6,d:_6,pa:_6,pb:_6,pc:_6,pd:_6,pe:_6,pf:_6,w:_6,wa:_6,wb:_6,wc:_6,wd:_6,we:_6,wf:_6}],erp:_50,vercel:_3,webhare:_6,hrsn:_3,"is-a":_3}],dhl:_2,diamonds:_2,diet:_2,digital:[1,{cloudapps:[2,{london:_3}]}],direct:[1,{libp2p:_3}],directory:_2,discount:_2,discover:_2,dish:_2,diy:_51,dnp:_2,docs:_2,doctor:_2,dog:_2,domains:_2,dot:_2,download:_2,drive:_2,dtv:_2,dubai:_2,dupont:_2,durban:_2,dvag:_2,dvr:_2,earth:_2,eat:_2,eco:_2,edeka:_2,education:_22,email:[1,{crisp:[0,{on:_3}],tawk:_53,tawkto:_53}],emerck:_2,energy:_2,engineer:_2,engineering:_2,enterprises:_2,epson:_2,equipment:_2,ericsson:_2,erni:_2,esq:_2,estate:[1,{compute:_6}],eurovision:_2,eus:[1,{party:_54}],events:[1,{koobin:_3,co:_3}],exchange:_2,expert:_2,exposed:_2,express:_2,extraspace:_2,fage:_2,fail:_2,fairwinds:_2,faith:_2,family:_2,fan:_2,fans:_2,farm:[1,{storj:_3}],farmers:_2,fashion:_2,fast:_2,fedex:_2,feedback:_2,ferrari:_2,ferrero:_2,fidelity:_2,fido:_2,film:_2,final:_2,finance:_2,financial:_22,fire:_2,firestone:_2,firmdale:_2,fish:_2,fishing:_2,fit:_2,fitness:_2,flickr:_2,flights:_2,flir:_2,florist:_2,flowers:_2,fly:_2,foo:_2,food:_2,football:_2,ford:_2,forex:_2,forsale:_2,forum:_2,foundation:_2,fox:_2,free:_2,fresenius:_2,frl:_2,frogans:_2,frontier:_2,ftr:_2,fujitsu:_2,fun:_2,fund:_2,furniture:_2,futbol:_2,fyi:_2,gal:_2,gallery:_2,gallo:_2,gallup:_2,game:_2,games:[1,{pley:_3,sheezy:_3}],gap:_2,garden:_2,gay:[1,{pages:_3}],gbiz:_2,gdn:[1,{cnpy:_3}],gea:_2,gent:_2,genting:_2,george:_2,ggee:_2,gift:_2,gifts:_2,gives:_2,giving:_2,glass:_2,gle:_2,global:[1,{appwrite:_3}],globo:_2,gmail:_2,gmbh:_2,gmo:_2,gmx:_2,godaddy:_2,gold:_2,goldpoint:_2,golf:_2,goo:_2,goodyear:_2,goog:[1,{cloud:_3,translate:_3,usercontent:_6}],google:_2,gop:_2,got:_2,grainger:_2,graphics:_2,gratis:_2,green:_2,gripe:_2,grocery:_2,group:_51,gucci:_2,guge:_2,guide:_2,guitars:_2,guru:_2,hair:_2,hamburg:_2,hangout:_2,haus:_2,hbo:_2,hdfc:_2,hdfcbank:_2,health:[1,{hra:_3}],healthcare:_2,help:_2,helsinki:_2,here:_2,hermes:_2,hiphop:_2,hisamitsu:_2,hitachi:_2,hiv:_2,hkt:_2,hockey:_2,holdings:_2,holiday:_2,homedepot:_2,homegoods:_2,homes:_2,homesense:_2,honda:_2,horse:_2,hospital:_2,host:[1,{cloudaccess:_3,freesite:_3,easypanel:_3,emergent:_3,fastvps:_3,myfast:_3,gadget:_3,tempurl:_3,wpmudev:_3,iserv:_3,jele:_3,mircloud:_3,bolt:_3,wp2:_3,half:_3}],hosting:[1,{opencraft:_3}],hot:_2,hotel:_2,hotels:_2,hotmail:_2,house:_2,how:_2,hsbc:_2,hughes:_2,hyatt:_2,hyundai:_2,ibm:_2,icbc:_2,ice:_2,icu:_2,ieee:_2,ifm:_2,ikano:_2,imamat:_2,imdb:_2,immo:_2,immobilien:_2,inc:_2,industries:_2,infiniti:_2,ing:_2,ink:_2,institute:_2,insurance:_2,insure:_2,international:_2,intuit:_2,investments:_2,ipiranga:_2,irish:_2,ismaili:_2,ist:_2,istanbul:_2,itau:_2,itv:_2,jaguar:_2,java:_2,jcb:_2,jeep:_2,jetzt:_2,jewelry:_2,jio:_2,jll:_2,jmp:_2,jnj:_2,joburg:_2,jot:_2,joy:_2,jpmorgan:_2,jprs:_2,juegos:_2,juniper:_2,kaufen:_2,kddi:_2,kerryhotels:_2,kerryproperties:_2,kfh:_2,kia:_2,kids:_2,kim:_2,kindle:_2,kitchen:_2,kiwi:_2,koeln:_2,komatsu:_2,kosher:_2,kpmg:_2,kpn:_2,krd:[1,{co:_3,edu:_3}],kred:_2,kuokgroup:_2,kyoto:_2,lacaixa:_2,lamborghini:_2,lamer:_2,land:_2,landrover:_2,lanxess:_2,lasalle:_2,lat:_2,latino:_2,latrobe:_2,law:_2,lawyer:_2,lds:_2,lease:_2,leclerc:_2,lefrak:_2,legal:_2,lego:_2,lexus:_2,lgbt:_2,lidl:_2,life:_2,lifeinsurance:_2,lifestyle:_2,lighting:_2,like:_2,lilly:_2,limited:_2,limo:_2,lincoln:_2,link:[1,{myfritz:_3,cyon:_3,joinmc:_3,dweb:_6,inbrowser:_6,keenetic:_3,nftstorage:_61,mypep:_3,storacha:_61,w3s:_61}],live:[1,{aem:_3,hlx:_3,ewp:_6}],living:_2,llc:_2,llp:_2,loan:_2,loans:_2,locker:_2,locus:_2,lol:[1,{omg:_3}],london:_2,lotte:_2,lotto:_2,love:_2,lpl:_2,lplfinancial:_2,ltd:_2,ltda:_2,lundbeck:_2,luxe:_2,luxury:_2,madrid:_2,maif:_2,maison:_2,makeup:_2,man:_2,management:_2,mango:_2,map:_2,market:_2,marketing:_2,markets:_2,marriott:_2,marshalls:_2,mattel:_2,mba:_2,mckinsey:_2,med:_2,media:_62,meet:_2,melbourne:_2,meme:_2,memorial:_2,men:_2,menu:[1,{barsy:_3,barsyonline:_3}],merck:_2,merckmsd:_2,miami:_2,microsoft:_2,mini:_2,mint:_2,mit:_2,mitsubishi:_2,mlb:_2,mls:_2,mma:_2,mobile:_2,moda:_2,moe:_2,moi:_2,mom:_2,monash:_2,money:_2,monster:_2,mormon:_2,mortgage:_2,moscow:_2,moto:_2,motorcycles:_2,mov:_2,movie:_2,msd:_2,mtn:_2,mtr:_2,music:_2,nab:_2,nagoya:_2,navy:_2,nba:_2,nec:_2,netbank:_2,netflix:_2,network:[1,{aem:_3,alces:_6,appwrite:_3,co:_3,arvo:_3,azimuth:_3,tlon:_3}],neustar:_2,new:_2,news:[1,{noticeable:_3}],next:_2,nextdirect:_2,nexus:_2,nfl:_2,ngo:_2,nhk:_2,nico:_2,nike:_2,nikon:_2,ninja:_2,nissan:_2,nissay:_2,nokia:_2,norton:_2,now:_2,nowruz:_2,nowtv:_2,nra:_2,nrw:_2,ntt:_2,nyc:_2,obi:_2,observer:_2,office:_2,okinawa:_2,olayan:_2,olayangroup:_2,ollo:_2,omega:_2,one:[1,{kin:_6,service:_3,website:_3}],ong:_2,onl:_2,online:[1,{eero:_3,"eero-stage":_3,websitebuilder:_3,leapcell:_3,barsy:_3}],ooo:_2,open:_2,oracle:_2,orange:[1,{tech:_3}],organic:_2,origins:_2,osaka:_2,otsuka:_2,ott:_2,ovh:[1,{nerdpol:_3}],page:[1,{aem:_3,hlx:_3,codeberg:_3,deuxfleurs:_3,heyflow:_3,prvcy:_3,rocky:_3,statichost:_3,pdns:_3,plesk:_3}],panasonic:_2,paris:_2,pars:_2,partners:_2,parts:_2,party:_2,pay:_2,pccw:_2,pet:_2,pfizer:_2,pharmacy:_2,phd:_2,philips:_2,phone:_2,photo:_2,photography:_2,photos:_62,physio:_2,pics:_2,pictet:_2,pictures:[1,{1337:_3}],pid:_2,pin:_2,ping:_2,pink:_2,pioneer:_2,pizza:[1,{ngrok:_3}],place:_22,play:_2,playstation:_2,plumbing:_2,plus:[1,{playit:[2,{at:_6,with:_3}]}],pnc:_2,pohl:_2,poker:_2,politie:_2,porn:_2,praxi:_2,press:_2,prime:_2,prod:_2,productions:_2,prof:_2,progressive:_2,promo:_2,properties:_2,property:_2,protection:_2,pru:_2,prudential:_2,pub:[1,{id:_6,kin:_6,barsy:_3}],pwc:_2,qpon:_2,quebec:_2,quest:_2,racing:_2,radio:_2,read:_2,realestate:_2,realtor:_2,realty:_2,recipes:_2,red:_2,redumbrella:_2,rehab:_2,reise:_2,reisen:_2,reit:_2,reliance:_2,ren:_2,rent:_2,rentals:_2,repair:_2,report:_2,republican:_2,rest:_2,restaurant:_2,review:_2,reviews:[1,{aem:_3}],rexroth:_2,rich:_2,richardli:_2,ricoh:_2,ril:_2,rio:_2,rip:[1,{clan:_3}],rocks:[1,{myddns:_3,stackit:_3,"lima-city":_3,webspace:_3}],rodeo:_2,rogers:_2,room:_2,rsvp:_2,rugby:_2,ruhr:_2,run:[1,{appwrite:_6,canva:_3,development:_3,ravendb:_3,liara:[2,{iran:_3}],lovable:_3,needle:_3,build:_6,code:_6,database:_6,migration:_6,onporter:_3,repl:_3,stackit:_3,val:_50,vercel:_3,wix:_3}],rwe:_2,ryukyu:_2,saarland:_2,safe:_2,safety:_2,sakura:_2,sale:_2,salon:_2,samsclub:_2,samsung:_2,sandvik:_2,sandvikcoromant:_2,sanofi:_2,sap:_2,sarl:_2,sas:_2,save:_2,saxo:_2,sbi:_2,sbs:_2,scb:_2,schaeffler:_2,schmidt:_2,scholarships:_2,school:_2,schule:_2,schwarz:_2,science:_2,scot:[1,{co:_3,me:_3,org:_3,gov:[2,{service:_3}]}],search:_2,seat:_2,secure:_2,security:_2,seek:_2,select:_2,sener:_2,services:[1,{loginline:_3}],seven:_2,sew:_2,sex:_2,sexy:_2,sfr:_2,shangrila:_2,sharp:_2,shell:_2,shia:_2,shiksha:_2,shoes:_2,shop:[1,{base:_3,hoplix:_3,barsy:_3,barsyonline:_3,shopware:_3}],shopping:_2,shouji:_2,show:_2,silk:_2,sina:_2,singles:_2,site:[1,{square:_3,canva:_25,cloudera:_6,convex:_3,cyon:_3,caffeine:_3,fastvps:_3,figma:_3,"figma-gov":_3,preview:_3,heyflow:_3,jele:_3,jouwweb:_3,loginline:_3,barsy:_3,co:_3,notion:_3,omniwe:_3,opensocial:_3,madethis:_3,support:_3,platformsh:_6,tst:_6,byen:_3,sol:_3,srht:_3,novecore:_3,cpanel:_3,wpsquared:_3,sourcecraft:_3}],ski:_2,skin:_2,sky:_2,skype:_2,sling:_2,smart:_2,smile:_2,sncf:_2,soccer:_2,social:_2,softbank:_2,software:_2,sohu:_2,solar:_2,solutions:_2,song:_2,sony:_2,soy:_2,spa:_2,space:[1,{myfast:_3,heiyu:_3,hf:[2,{static:_3}],"app-ionos":_3,project:_3,uber:_3,xs4all:_3}],sport:_2,spot:_2,srl:_2,stada:_2,staples:_2,star:_2,statebank:_2,statefarm:_2,stc:_2,stcgroup:_2,stockholm:_2,storage:_2,store:[1,{barsy:_3,sellfy:_3,shopware:_3,storebase:_3}],stream:_2,studio:_2,study:_2,style:_2,sucks:_2,supplies:_2,supply:_2,support:[1,{barsy:_3}],surf:_2,surgery:_2,suzuki:_2,swatch:_2,swiss:_2,sydney:_2,systems:[1,{knightpoint:_3,miren:_3}],tab:_2,taipei:_2,talk:_2,taobao:_2,target:_2,tatamotors:_2,tatar:_2,tattoo:_2,tax:_2,taxi:_2,tci:_2,tdk:_2,team:[1,{discourse:_3,jelastic:_3}],tech:[1,{cleverapps:_3}],technology:_22,temasek:_2,tennis:_2,teva:_2,thd:_2,theater:_2,theatre:_2,tiaa:_2,tickets:_2,tienda:_2,tips:_2,tires:_2,tirol:_2,tjmaxx:_2,tjx:_2,tkmaxx:_2,tmall:_2,today:[1,{prequalifyme:_3}],tokyo:_2,tools:[1,{addr:_49,myaddr:_3}],top:[1,{ntdll:_3,wadl:_6}],toray:_2,toshiba:_2,total:_2,tours:_2,town:_2,toyota:_2,toys:_2,trade:_2,trading:_2,training:_2,travel:_2,travelers:_2,travelersinsurance:_2,trust:_2,trv:_2,tube:_2,tui:_2,tunes:_2,tushu:_2,tvs:_2,ubank:_2,ubs:_2,unicom:_2,university:_2,uno:_2,uol:_2,ups:_2,vacations:_2,vana:_2,vanguard:_2,vegas:_2,ventures:_2,verisign:_2,versicherung:_2,vet:_2,viajes:_2,video:_2,vig:_2,viking:_2,villas:_2,vin:_2,vip:[1,{hidns:_3}],virgin:_2,visa:_2,vision:_2,viva:_2,vivo:_2,vlaanderen:_2,vodka:_2,volvo:_2,vote:_2,voting:_2,voto:_2,voyage:_2,wales:_2,walmart:_2,walter:_2,wang:_2,wanggou:_2,watch:_2,watches:_2,weather:_2,weatherchannel:_2,webcam:_2,weber:_2,website:_62,wed:_2,wedding:_2,weibo:_2,weir:_2,whoswho:_2,wien:_2,wiki:_62,williamhill:_2,win:_2,windows:_2,wine:_2,winners:_2,wme:_2,wolterskluwer:_2,woodside:_2,work:[1,{"imagine-proxy":_3}],works:_2,world:_2,wow:_2,wtc:_2,wtf:_2,xbox:_2,xerox:_2,xihuan:_2,xin:_2,"xn--11b4c3d":_2,कॉम:_2,"xn--1ck2e1b":_2,セール:_2,"xn--1qqw23a":_2,佛山:_2,"xn--30rr7y":_2,慈善:_2,"xn--3bst00m":_2,集团:_2,"xn--3ds443g":_2,在线:_2,"xn--3pxu8k":_2,点看:_2,"xn--42c2d9a":_2,คอม:_2,"xn--45q11c":_2,八卦:_2,"xn--4gbrim":_2,موقع:_2,"xn--55qw42g":_2,公益:_2,"xn--55qx5d":_2,公司:_2,"xn--5su34j936bgsg":_2,香格里拉:_2,"xn--5tzm5g":_2,网站:_2,"xn--6frz82g":_2,移动:_2,"xn--6qq986b3xl":_2,我爱你:_2,"xn--80adxhks":_2,москва:_2,"xn--80aqecdr1a":_2,католик:_2,"xn--80asehdb":_2,онлайн:_2,"xn--80aswg":_2,сайт:_2,"xn--8y0a063a":_2,联通:_2,"xn--9dbq2a":_2,קום:_2,"xn--9et52u":_2,时尚:_2,"xn--9krt00a":_2,微博:_2,"xn--b4w605ferd":_2,淡马锡:_2,"xn--bck1b9a5dre4c":_2,ファッション:_2,"xn--c1avg":_2,орг:_2,"xn--c2br7g":_2,नेट:_2,"xn--cck2b3b":_2,ストア:_2,"xn--cckwcxetd":_2,アマゾン:_2,"xn--cg4bki":_2,삼성:_2,"xn--czr694b":_2,商标:_2,"xn--czrs0t":_2,商店:_2,"xn--czru2d":_2,商城:_2,"xn--d1acj3b":_2,дети:_2,"xn--eckvdtc9d":_2,ポイント:_2,"xn--efvy88h":_2,新闻:_2,"xn--fct429k":_2,家電:_2,"xn--fhbei":_2,كوم:_2,"xn--fiq228c5hs":_2,中文网:_2,"xn--fiq64b":_2,中信:_2,"xn--fjq720a":_2,娱乐:_2,"xn--flw351e":_2,谷歌:_2,"xn--fzys8d69uvgm":_2,電訊盈科:_2,"xn--g2xx48c":_2,购物:_2,"xn--gckr3f0f":_2,クラウド:_2,"xn--gk3at1e":_2,通販:_2,"xn--hxt814e":_2,网店:_2,"xn--i1b6b1a6a2e":_2,संगठन:_2,"xn--imr513n":_2,餐厅:_2,"xn--io0a7i":_2,网络:_2,"xn--j1aef":_2,ком:_2,"xn--jlq480n2rg":_2,亚马逊:_2,"xn--jvr189m":_2,食品:_2,"xn--kcrx77d1x4a":_2,飞利浦:_2,"xn--kput3i":_2,手机:_2,"xn--mgba3a3ejt":_2,ارامكو:_2,"xn--mgba7c0bbn0a":_2,العليان:_2,"xn--mgbab2bd":_2,بازار:_2,"xn--mgbca7dzdo":_2,ابوظبي:_2,"xn--mgbi4ecexp":_2,كاثوليك:_2,"xn--mgbt3dhd":_2,همراه:_2,"xn--mk1bu44c":_2,닷컴:_2,"xn--mxtq1m":_2,政府:_2,"xn--ngbc5azd":_2,شبكة:_2,"xn--ngbe9e0a":_2,بيتك:_2,"xn--ngbrx":_2,عرب:_2,"xn--nqv7f":_2,机构:_2,"xn--nqv7fs00ema":_2,组织机构:_2,"xn--nyqy26a":_2,健康:_2,"xn--otu796d":_2,招聘:_2,"xn--p1acf":[1,{"xn--90amc":_3,"xn--j1aef":_3,"xn--j1ael8b":_3,"xn--h1ahn":_3,"xn--j1adp":_3,"xn--c1avg":_3,"xn--80aaa0cvac":_3,"xn--h1aliz":_3,"xn--90a1af":_3,"xn--41a":_3}],рус:[1,{биз:_3,ком:_3,крым:_3,мир:_3,мск:_3,орг:_3,самара:_3,сочи:_3,спб:_3,я:_3}],"xn--pssy2u":_2,大拿:_2,"xn--q9jyb4c":_2,みんな:_2,"xn--qcka1pmc":_2,グーグル:_2,"xn--rhqv96g":_2,世界:_2,"xn--rovu88b":_2,書籍:_2,"xn--ses554g":_2,网址:_2,"xn--t60b56a":_2,닷넷:_2,"xn--tckwe":_2,コム:_2,"xn--tiq49xqyj":_2,天主教:_2,"xn--unup4y":_2,游戏:_2,"xn--vermgensberater-ctb":_2,vermögensberater:_2,"xn--vermgensberatung-pwb":_2,vermögensberatung:_2,"xn--vhquv":_2,企业:_2,"xn--vuq861b":_2,信息:_2,"xn--w4r85el8fhu5dnra":_2,嘉里大酒店:_2,"xn--w4rs40l":_2,嘉里:_2,"xn--xhq521b":_2,广东:_2,"xn--zfr164b":_2,政务:_2,xyz:[1,{caffeine:_3,botdash:_3,telebit:_6}],yachts:_2,yahoo:_2,yamaxun:_2,yandex:_2,yodobashi:_2,yoga:_2,yokohama:_2,you:_2,youtube:_2,yun:_2,zappos:_2,zara:_2,zero:_2,zip:_2,zone:[1,{triton:_6,stackit:_3,lima:_3}],zuerich:_2}]})();function lookupInTrie(parts,trie,index,allowedMask){let result=null,node=trie;for(;node!==void 0&&((node[0]&allowedMask)!==0&&(result={index:index+1,isIcann:(node[0]&1)!==0,isPrivate:(node[0]&2)!==0}),index!==-1);){let succ=node[1];node=Object.prototype.hasOwnProperty.call(succ,parts[index])?succ[parts[index]]:succ["*"],index-=1}return result}function suffixLookup(hostname3,options,out){var _a2;if(fastPathLookup(hostname3,options,out))return;let hostnameParts=hostname3.split("."),allowedMask=(options.allowPrivateDomains?2:0)|(options.allowIcannDomains?1:0),exceptionMatch=lookupInTrie(hostnameParts,exceptions,hostnameParts.length-1,allowedMask);if(exceptionMatch!==null){out.isIcann=exceptionMatch.isIcann,out.isPrivate=exceptionMatch.isPrivate,out.publicSuffix=hostnameParts.slice(exceptionMatch.index+1).join(".");return}let rulesMatch=lookupInTrie(hostnameParts,rules,hostnameParts.length-1,allowedMask);if(rulesMatch!==null){out.isIcann=rulesMatch.isIcann,out.isPrivate=rulesMatch.isPrivate,out.publicSuffix=hostnameParts.slice(rulesMatch.index).join(".");return}out.isIcann=!1,out.isPrivate=!1,out.publicSuffix=(_a2=hostnameParts[hostnameParts.length-1])!==null&&_a2!==void 0?_a2:null}var RESULT=getEmptyResult();function parse4(url2,options={}){return parseImpl(url2,5,suffixLookup,options,getEmptyResult())}function getHostname(url2,options={}){return resetResult(RESULT),parseImpl(url2,0,suffixLookup,options,RESULT).hostname}function getPublicSuffix2(url2,options={}){return resetResult(RESULT),parseImpl(url2,2,suffixLookup,options,RESULT).publicSuffix}function getDomain2(url2,options={}){return resetResult(RESULT),parseImpl(url2,3,suffixLookup,options,RESULT).domain}function getSubdomain(url2,options={}){return resetResult(RESULT),parseImpl(url2,4,suffixLookup,options,RESULT).subdomain}function getDomainWithoutSuffix(url2,options={}){return resetResult(RESULT),parseImpl(url2,5,suffixLookup,options,RESULT).domainWithoutSuffix}exports.getDomain=getDomain2;exports.getDomainWithoutSuffix=getDomainWithoutSuffix;exports.getHostname=getHostname;exports.getPublicSuffix=getPublicSuffix2;exports.getSubdomain=getSubdomain;exports.parse=parse4}});import fs8 from"node:fs";import os6 from"node:os";import path10 from"node:path";function resolveNativeHostDirectory(options={}){let env=options.env??process.env,home=(options.homedir??os6.homedir)();switch(options.platform??process.platform){case"darwin":return path10.join(home,"Library/Application Support/Google/Chrome/NativeMessagingHosts");case"linux":return path10.join(home,".config/google-chrome/NativeMessagingHosts");case"win32":return path10.join(env.PROGRAMDATA||"C:\\ProgramData","Google\\Chrome\\NativeMessagingHosts");default:throw new Error(`Unsupported platform: ${String(options.platform??process.platform)}`)}}var MEARL_NATIVE_HOST_NAMES,init_nativeHost=__esm({"../client/dist/nativeHost.js"(){"use strict";MEARL_NATIVE_HOST_NAMES={skills:"com.alibaba.mearl.skills",mcp:"com.alibaba.mearl.mcp"}}});var require_ms=__commonJS({"../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"(exports,module){var s=1e3,m=s*60,h=m*60,d=h*24,w=d*7,y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse4(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse4(str){if(str=String(str),!(str.length>100)){var match=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"weeks":case"week":case"w":return n*w;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d?Math.round(ms/d)+"d":msAbs>=h?Math.round(ms/h)+"h":msAbs>=m?Math.round(ms/m)+"m":msAbs>=s?Math.round(ms/s)+"s":ms+"ms"}function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d?plural(ms,msAbs,d,"day"):msAbs>=h?plural(ms,msAbs,h,"hour"):msAbs>=m?plural(ms,msAbs,m,"minute"):msAbs>=s?plural(ms,msAbs,s,"second"):ms+" ms"}function plural(ms,msAbs,n,name){var isPlural=msAbs>=n*1.5;return Math.round(ms/n)+" "+name+(isPlural?"s":"")}}});var require_common=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/common.js"(exports,module){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash2=0;for(let i=0;i<namespace.length;i++)hash2=(hash2<<5)-hash2+namespace.charCodeAt(i),hash2|=0;return createDebug.colors[Math.abs(hash2)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug(...args){if(!debug.enabled)return;let self=debug,curr=Number(new Date),ms=curr-(prevTime||curr);self.diff=ms,self.prev=prevTime,self.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match,format)=>{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self,args),(self.log||createDebug.log).apply(self,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend2,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend2(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/browser.js"(exports,module){exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=localstorage();exports.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch{}}function load(){let r;try{r=exports.storage.getItem("debug")||exports.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error48){return"[UnexpectedJSONParseError]: "+error48.message}}}});var require_has_flag=__commonJS({"../../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js"(exports,module){"use strict";module.exports=(flag,argv)=>{argv=argv||process.argv;let prefix=flag.startsWith("-")?"":flag.length===1?"-":"--",pos=argv.indexOf(prefix+flag),terminatorPos=argv.indexOf("--");return pos!==-1&&(terminatorPos===-1?!0:pos<terminatorPos)}}});var require_supports_color=__commonJS({"../../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js"(exports,module){"use strict";var os13=__require("os"),hasFlag=require_has_flag(),env=process.env,forceColor;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")?forceColor=!1:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(forceColor=!0);"FORCE_COLOR"in env&&(forceColor=env.FORCE_COLOR.length===0||parseInt(env.FORCE_COLOR,10)!==0);function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function supportsColor(stream){if(forceColor===!1)return 0;if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2;if(stream&&!stream.isTTY&&forceColor!==!0)return 0;let min=forceColor?1:0;if(process.platform==="win32"){let osRelease=os13.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in env){let version3=parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version3>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:(env.TERM==="dumb",min)}function getSupportLevel(stream){let level=supportsColor(stream);return translateLevel(level)}module.exports={supportsColor:getSupportLevel,stdout:getSupportLevel(process.stdout),stderr:getSupportLevel(process.stderr)}}});var require_node=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/node.js"(exports,module){var tty=__require("tty"),util=__require("util");exports.init=init;exports.log=log2;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.destroy=util.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports.inspectOpts?!!exports.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix+args[0].split(`
1067
+ `))!==-1;)lines.push(this.buffer.slice(0,newlineIndex)),this.buffer=this.buffer.slice(newlineIndex+1);return{lines,overflow:!1}}}}});import fs8 from"node:fs";import os6 from"node:os";import path10 from"node:path";function resolveNativeHostDirectory(options={}){let env=options.env??process.env,home=(options.homedir??os6.homedir)();switch(options.platform??process.platform){case"darwin":return path10.join(home,"Library/Application Support/Google/Chrome/NativeMessagingHosts");case"linux":return path10.join(home,".config/google-chrome/NativeMessagingHosts");case"win32":return path10.join(env.PROGRAMDATA||"C:\\ProgramData","Google\\Chrome\\NativeMessagingHosts");default:throw new Error(`Unsupported platform: ${String(options.platform??process.platform)}`)}}var MEARL_NATIVE_HOST_NAMES,init_nativeHost=__esm({"../client/dist/nativeHost.js"(){"use strict";MEARL_NATIVE_HOST_NAMES={skills:"com.alibaba.mearl.skills",mcp:"com.alibaba.mearl.mcp"}}});var require_ms=__commonJS({"../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"(exports,module){var s=1e3,m=s*60,h=m*60,d=h*24,w=d*7,y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse4(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse4(str){if(str=String(str),!(str.length>100)){var match=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"weeks":case"week":case"w":return n*w;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d?Math.round(ms/d)+"d":msAbs>=h?Math.round(ms/h)+"h":msAbs>=m?Math.round(ms/m)+"m":msAbs>=s?Math.round(ms/s)+"s":ms+"ms"}function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d?plural(ms,msAbs,d,"day"):msAbs>=h?plural(ms,msAbs,h,"hour"):msAbs>=m?plural(ms,msAbs,m,"minute"):msAbs>=s?plural(ms,msAbs,s,"second"):ms+" ms"}function plural(ms,msAbs,n,name){var isPlural=msAbs>=n*1.5;return Math.round(ms/n)+" "+name+(isPlural?"s":"")}}});var require_common=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/common.js"(exports,module){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash2=0;for(let i=0;i<namespace.length;i++)hash2=(hash2<<5)-hash2+namespace.charCodeAt(i),hash2|=0;return createDebug.colors[Math.abs(hash2)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug(...args){if(!debug.enabled)return;let self=debug,curr=Number(new Date),ms=curr-(prevTime||curr);self.diff=ms,self.prev=prevTime,self.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match,format)=>{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self,args),(self.log||createDebug.log).apply(self,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend2,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend2(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/browser.js"(exports,module){exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=localstorage();exports.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch{}}function load(){let r;try{r=exports.storage.getItem("debug")||exports.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error48){return"[UnexpectedJSONParseError]: "+error48.message}}}});var require_has_flag=__commonJS({"../../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js"(exports,module){"use strict";module.exports=(flag,argv)=>{argv=argv||process.argv;let prefix=flag.startsWith("-")?"":flag.length===1?"-":"--",pos=argv.indexOf(prefix+flag),terminatorPos=argv.indexOf("--");return pos!==-1&&(terminatorPos===-1?!0:pos<terminatorPos)}}});var require_supports_color=__commonJS({"../../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js"(exports,module){"use strict";var os13=__require("os"),hasFlag=require_has_flag(),env=process.env,forceColor;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")?forceColor=!1:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(forceColor=!0);"FORCE_COLOR"in env&&(forceColor=env.FORCE_COLOR.length===0||parseInt(env.FORCE_COLOR,10)!==0);function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function supportsColor(stream){if(forceColor===!1)return 0;if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2;if(stream&&!stream.isTTY&&forceColor!==!0)return 0;let min=forceColor?1:0;if(process.platform==="win32"){let osRelease=os13.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in env){let version3=parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version3>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:(env.TERM==="dumb",min)}function getSupportLevel(stream){let level=supportsColor(stream);return translateLevel(level)}module.exports={supportsColor:getSupportLevel,stdout:getSupportLevel(process.stdout),stderr:getSupportLevel(process.stderr)}}});var require_node=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/node.js"(exports,module){var tty=__require("tty"),util=__require("util");exports.init=init;exports.log=log2;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.destroy=util.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports.inspectOpts?!!exports.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix+args[0].split(`
1068
1068
  `).join(`
1069
1069
  `+prefix),args.push(colorCode+"m+"+module.exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log2(...args){return process.stderr.write(util.formatWithOptions(exports.inspectOpts,...args)+`
1070
1070
  `)}function save(namespaces){namespaces?process.env.DEBUG=namespaces:delete process.env.DEBUG}function load(){return process.env.DEBUG}function init(debug){debug.inspectOpts={};let keys=Object.keys(exports.inspectOpts);for(let i=0;i<keys.length;i++)debug.inspectOpts[keys[i]]=exports.inspectOpts[keys[i]]}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.o=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts).split(`
1071
1071
  `).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/index.js"(exports,module){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module.exports=require_browser():module.exports=require_node()}});var require_wrappy=__commonJS({"../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js"(exports,module){module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!="function")throw new TypeError("need wrapper function");return Object.keys(fn).forEach(function(k){wrapper[k]=fn[k]}),wrapper;function wrapper(){for(var args=new Array(arguments.length),i=0;i<args.length;i++)args[i]=arguments[i];var ret=fn.apply(this,args),cb2=args[args.length-1];return typeof ret=="function"&&ret!==cb2&&Object.keys(cb2).forEach(function(k){ret[k]=cb2[k]}),ret}}}});var require_once=__commonJS({"../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js"(exports,module){var wrappy=require_wrappy();module.exports=wrappy(once);module.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return once(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return onceStrict(this)},configurable:!0})});function once(fn){var f=function(){return f.called?f.value:(f.called=!0,f.value=fn.apply(this,arguments))};return f.called=!1,f}function onceStrict(fn){var f=function(){if(f.called)throw new Error(f.onceError);return f.called=!0,f.value=fn.apply(this,arguments)},name=fn.name||"Function wrapped with `once`";return f.onceError=name+" shouldn't be called more than once",f.called=!1,f}}});var require_end_of_stream=__commonJS({"../../node_modules/.pnpm/end-of-stream@1.4.5/node_modules/end-of-stream/index.js"(exports,module){var once=require_once(),noop=function(){},qnt=global.Bare?queueMicrotask:process.nextTick.bind(process),isRequest=function(stream){return stream.setHeader&&typeof stream.abort=="function"},isChildProcess=function(stream){return stream.stdio&&Array.isArray(stream.stdio)&&stream.stdio.length===3},eos=function(stream,opts,callback){if(typeof opts=="function")return eos(stream,null,opts);opts||(opts={}),callback=once(callback||noop);var ws=stream._writableState,rs=stream._readableState,readable=opts.readable||opts.readable!==!1&&stream.readable,writable=opts.writable||opts.writable!==!1&&stream.writable,cancelled=!1,onlegacyfinish=function(){stream.writable||onfinish()},onfinish=function(){writable=!1,readable||callback.call(stream)},onend=function(){readable=!1,writable||callback.call(stream)},onexit=function(exitCode){callback.call(stream,exitCode?new Error("exited with error code: "+exitCode):null)},onerror=function(err){callback.call(stream,err)},onclose=function(){qnt(onclosenexttick)},onclosenexttick=function(){if(!cancelled){if(readable&&!(rs&&rs.ended&&!rs.destroyed))return callback.call(stream,new Error("premature close"));if(writable&&!(ws&&ws.ended&&!ws.destroyed))return callback.call(stream,new Error("premature close"))}},onrequest=function(){stream.req.on("finish",onfinish)};return isRequest(stream)?(stream.on("complete",onfinish),stream.on("abort",onclose),stream.req?onrequest():stream.on("request",onrequest)):writable&&!ws&&(stream.on("end",onlegacyfinish),stream.on("close",onlegacyfinish)),isChildProcess(stream)&&stream.on("exit",onexit),stream.on("end",onend),stream.on("finish",onfinish),opts.error!==!1&&stream.on("error",onerror),stream.on("close",onclose),function(){cancelled=!0,stream.removeListener("complete",onfinish),stream.removeListener("abort",onclose),stream.removeListener("request",onrequest),stream.req&&stream.req.removeListener("finish",onfinish),stream.removeListener("end",onlegacyfinish),stream.removeListener("close",onlegacyfinish),stream.removeListener("finish",onfinish),stream.removeListener("exit",onexit),stream.removeListener("end",onend),stream.removeListener("error",onerror),stream.removeListener("close",onclose)}};module.exports=eos}});var require_pump=__commonJS({"../../node_modules/.pnpm/pump@3.0.4/node_modules/pump/index.js"(exports,module){var once=require_once(),eos=require_end_of_stream(),fs24;try{fs24=__require("fs")}catch{}var noop=function(){},ancient=typeof process>"u"?!1:/^v?\.0/.test(process.version),isFn=function(fn){return typeof fn=="function"},isFS=function(stream){return!ancient||!fs24?!1:(stream instanceof(fs24.ReadStream||noop)||stream instanceof(fs24.WriteStream||noop))&&isFn(stream.close)},isRequest=function(stream){return stream.setHeader&&isFn(stream.abort)},destroyer=function(stream,reading,writing,callback){callback=once(callback);var closed=!1;stream.on("close",function(){closed=!0}),eos(stream,{readable:reading,writable:writing},function(err){if(err)return callback(err);closed=!0,callback()});var destroyed=!1;return function(err){if(!closed&&!destroyed){if(destroyed=!0,isFS(stream))return stream.close(noop);if(isRequest(stream))return stream.abort();if(isFn(stream.destroy))return stream.destroy();callback(err||new Error("stream was destroyed"))}}},call=function(fn){fn()},pipe2=function(from,to){return from.pipe(to)},pump=function(){var streams=Array.prototype.slice.call(arguments),callback=isFn(streams[streams.length-1]||noop)&&streams.pop()||noop;if(Array.isArray(streams[0])&&(streams=streams[0]),streams.length<2)throw new Error("pump requires two streams per minimum");var error48,destroys=streams.map(function(stream,i){var reading=i<streams.length-1,writing=i>0;return destroyer(stream,reading,writing,function(err){error48||(error48=err),err&&destroys.forEach(call),!reading&&(destroys.forEach(call),callback(error48))})});return streams.reduce(pipe2)};module.exports=pump}});var require_buffer_stream=__commonJS({"../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/buffer-stream.js"(exports,module){"use strict";var{PassThrough:PassThroughStream}=__require("stream");module.exports=options=>{options={...options};let{array:array2}=options,{encoding}=options,isBuffer=encoding==="buffer",objectMode=!1;array2?objectMode=!(encoding||isBuffer):encoding=encoding||"utf8",isBuffer&&(encoding=null);let stream=new PassThroughStream({objectMode});encoding&&stream.setEncoding(encoding);let length=0,chunks=[];return stream.on("data",chunk=>{chunks.push(chunk),objectMode?length=chunks.length:length+=chunk.length}),stream.getBufferedValue=()=>array2?chunks:isBuffer?Buffer.concat(chunks,length):chunks.join(""),stream.getBufferedLength=()=>length,stream}}});var require_get_stream=__commonJS({"../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/index.js"(exports,module){"use strict";var{constants:BufferConstants}=__require("buffer"),pump=require_pump(),bufferStream=require_buffer_stream(),MaxBufferError=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function getStream(inputStream,options){if(!inputStream)return Promise.reject(new Error("Expected a stream"));options={maxBuffer:1/0,...options};let{maxBuffer}=options,stream;return await new Promise((resolve11,reject)=>{let rejectPromise=error48=>{error48&&stream.getBufferedLength()<=BufferConstants.MAX_LENGTH&&(error48.bufferedData=stream.getBufferedValue()),reject(error48)};stream=pump(inputStream,bufferStream(options),error48=>{if(error48){rejectPromise(error48);return}resolve11()}),stream.on("data",()=>{stream.getBufferedLength()>maxBuffer&&rejectPromise(new MaxBufferError)})}),stream.getBufferedValue()}module.exports=getStream;module.exports.default=getStream;module.exports.buffer=(stream,options)=>getStream(stream,{...options,encoding:"buffer"});module.exports.array=(stream,options)=>getStream(stream,{...options,array:!0});module.exports.MaxBufferError=MaxBufferError}});var require_pend=__commonJS({"../../node_modules/.pnpm/pend@1.2.0/node_modules/pend/index.js"(exports,module){module.exports=Pend;function Pend(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}Pend.prototype.go=function(fn){this.pending<this.max?pendGo(this,fn):this.waiting.push(fn)};Pend.prototype.wait=function(cb){this.pending===0?cb(this.error):this.listeners.push(cb)};Pend.prototype.hold=function(){return pendHold(this)};function pendHold(self){self.pending+=1;var called=!1;return onCb;function onCb(err){if(called)throw new Error("callback called twice");if(called=!0,self.error=self.error||err,self.pending-=1,self.waiting.length>0&&self.pending<self.max)pendGo(self,self.waiting.shift());else if(self.pending===0){var listeners=self.listeners;self.listeners=[],listeners.forEach(cbListener)}}function cbListener(listener){listener(self.error)}}function pendGo(self,fn){fn(pendHold(self))}}});var require_fd_slicer=__commonJS({"../../node_modules/.pnpm/fd-slicer@1.1.0/node_modules/fd-slicer/index.js"(exports){var fs24=__require("fs"),util=__require("util"),stream=__require("stream"),Readable2=stream.Readable,Writable2=stream.Writable,PassThrough=stream.PassThrough,Pend=require_pend(),EventEmitter2=__require("events").EventEmitter;exports.createFromBuffer=createFromBuffer;exports.createFromFd=createFromFd;exports.BufferSlicer=BufferSlicer;exports.FdSlicer=FdSlicer;util.inherits(FdSlicer,EventEmitter2);function FdSlicer(fd,options){options=options||{},EventEmitter2.call(this),this.fd=fd,this.pend=new Pend,this.pend.max=1,this.refCount=0,this.autoClose=!!options.autoClose}FdSlicer.prototype.read=function(buffer,offset,length,position,callback){var self=this;self.pend.go(function(cb){fs24.read(self.fd,buffer,offset,length,position,function(err,bytesRead,buffer2){cb(),callback(err,bytesRead,buffer2)})})};FdSlicer.prototype.write=function(buffer,offset,length,position,callback){var self=this;self.pend.go(function(cb){fs24.write(self.fd,buffer,offset,length,position,function(err,written,buffer2){cb(),callback(err,written,buffer2)})})};FdSlicer.prototype.createReadStream=function(options){return new ReadStream(this,options)};FdSlicer.prototype.createWriteStream=function(options){return new WriteStream(this,options)};FdSlicer.prototype.ref=function(){this.refCount+=1};FdSlicer.prototype.unref=function(){var self=this;if(self.refCount-=1,self.refCount>0)return;if(self.refCount<0)throw new Error("invalid unref");self.autoClose&&fs24.close(self.fd,onCloseDone);function onCloseDone(err){err?self.emit("error",err):self.emit("close")}};util.inherits(ReadStream,Readable2);function ReadStream(context,options){options=options||{},Readable2.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end,this.pos=this.start,this.destroyed=!1}ReadStream.prototype._read=function(n){var self=this;if(!self.destroyed){var toRead=Math.min(self._readableState.highWaterMark,n);if(self.endOffset!=null&&(toRead=Math.min(toRead,self.endOffset-self.pos)),toRead<=0){self.destroyed=!0,self.push(null),self.context.unref();return}self.context.pend.go(function(cb){if(self.destroyed)return cb();var buffer=new Buffer(toRead);fs24.read(self.context.fd,buffer,0,toRead,self.pos,function(err,bytesRead){err?self.destroy(err):bytesRead===0?(self.destroyed=!0,self.push(null),self.context.unref()):(self.pos+=bytesRead,self.push(buffer.slice(0,bytesRead))),cb()})})}};ReadStream.prototype.destroy=function(err){this.destroyed||(err=err||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",err),this.context.unref())};util.inherits(WriteStream,Writable2);function WriteStream(context,options){options=options||{},Writable2.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end==null?1/0:+options.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}WriteStream.prototype._write=function(buffer,encoding,callback){var self=this;if(!self.destroyed){if(self.pos+buffer.length>self.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",self.destroy(),callback(err);return}self.context.pend.go(function(cb){if(self.destroyed)return cb();fs24.write(self.context.fd,buffer,0,buffer.length,self.pos,function(err2,bytes){err2?(self.destroy(),cb(),callback(err2)):(self.bytesWritten+=bytes,self.pos+=bytes,self.emit("progress"),cb(),callback())})})}};WriteStream.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};util.inherits(BufferSlicer,EventEmitter2);function BufferSlicer(buffer,options){EventEmitter2.call(this),options=options||{},this.refCount=0,this.buffer=buffer,this.maxChunkSize=options.maxChunkSize||Number.MAX_SAFE_INTEGER}BufferSlicer.prototype.read=function(buffer,offset,length,position,callback){var end=position+length,delta=end-this.buffer.length,written=delta>0?delta:length;this.buffer.copy(buffer,offset,position,end),setImmediate(function(){callback(null,written)})};BufferSlicer.prototype.write=function(buffer,offset,length,position,callback){buffer.copy(this.buffer,position,offset,offset+length),setImmediate(function(){callback(null,length,buffer)})};BufferSlicer.prototype.createReadStream=function(options){options=options||{};var readStream=new PassThrough(options);readStream.destroyed=!1,readStream.start=options.start||0,readStream.endOffset=options.end,readStream.pos=readStream.endOffset||this.buffer.length;for(var entireSlice=this.buffer.slice(readStream.start,readStream.pos),offset=0;;){var nextOffset=offset+this.maxChunkSize;if(nextOffset>=entireSlice.length){offset<entireSlice.length&&readStream.write(entireSlice.slice(offset,entireSlice.length));break}readStream.write(entireSlice.slice(offset,nextOffset)),offset=nextOffset}return readStream.end(),readStream.destroy=function(){readStream.destroyed=!0},readStream};BufferSlicer.prototype.createWriteStream=function(options){var bufferSlicer=this;options=options||{};var writeStream=new Writable2(options);return writeStream.start=options.start||0,writeStream.endOffset=options.end==null?this.buffer.length:+options.end,writeStream.bytesWritten=0,writeStream.pos=writeStream.start,writeStream.destroyed=!1,writeStream._write=function(buffer,encoding,callback){if(!writeStream.destroyed){var end=writeStream.pos+buffer.length;if(end>writeStream.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",writeStream.destroyed=!0,callback(err);return}buffer.copy(bufferSlicer.buffer,writeStream.pos,0,buffer.length),writeStream.bytesWritten+=buffer.length,writeStream.pos=end,writeStream.emit("progress"),callback()}},writeStream.destroy=function(){writeStream.destroyed=!0},writeStream};BufferSlicer.prototype.ref=function(){this.refCount+=1};BufferSlicer.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function createFromBuffer(buffer,options){return new BufferSlicer(buffer,options)}function createFromFd(fd,options){return new FdSlicer(fd,options)}}});var require_buffer_crc32=__commonJS({"../../node_modules/.pnpm/buffer-crc32@0.2.13/node_modules/buffer-crc32/index.js"(exports,module){var Buffer2=__require("buffer").Buffer,CRC_TABLE=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(CRC_TABLE=new Int32Array(CRC_TABLE));function ensureBuffer(input2){if(Buffer2.isBuffer(input2))return input2;var hasNewBufferAPI=typeof Buffer2.alloc=="function"&&typeof Buffer2.from=="function";if(typeof input2=="number")return hasNewBufferAPI?Buffer2.alloc(input2):new Buffer2(input2);if(typeof input2=="string")return hasNewBufferAPI?Buffer2.from(input2):new Buffer2(input2);throw new Error("input must be buffer, number, or string, received "+typeof input2)}function bufferizeInt(num){var tmp=ensureBuffer(4);return tmp.writeInt32BE(num,0),tmp}function _crc32(buf,previous){buf=ensureBuffer(buf),Buffer2.isBuffer(previous)&&(previous=previous.readUInt32BE(0));for(var crc=~~previous^-1,n=0;n<buf.length;n++)crc=CRC_TABLE[(crc^buf[n])&255]^crc>>>8;return crc^-1}function crc32(){return bufferizeInt(_crc32.apply(null,arguments))}crc32.signed=function(){return _crc32.apply(null,arguments)};crc32.unsigned=function(){return _crc32.apply(null,arguments)>>>0};module.exports=crc32}});var require_yauzl=__commonJS({"../../node_modules/.pnpm/yauzl@2.10.0/node_modules/yauzl/index.js"(exports){var fs24=__require("fs"),zlib=__require("zlib"),fd_slicer=require_fd_slicer(),crc32=require_buffer_crc32(),util=__require("util"),EventEmitter2=__require("events").EventEmitter,Transform=__require("stream").Transform,PassThrough=__require("stream").PassThrough,Writable2=__require("stream").Writable;exports.open=open4;exports.fromFd=fromFd;exports.fromBuffer=fromBuffer;exports.fromRandomAccessReader=fromRandomAccessReader;exports.dosDateTimeToDate=dosDateTimeToDate;exports.validateFileName=validateFileName;exports.ZipFile=ZipFile;exports.Entry=Entry;exports.RandomAccessReader=RandomAccessReader;function open4(path27,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs24.open(path27,"r",function(err,fd){if(err)return callback(err);fromFd(fd,options,function(err2,zipfile){err2&&fs24.close(fd,defaultCallback),callback(err2,zipfile)})})}function fromFd(fd,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!1),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs24.fstat(fd,function(err,stats){if(err)return callback(err);var reader=fd_slicer.createFromFd(fd,{autoClose:!0});fromRandomAccessReader(reader,stats.size,options,callback)})}function fromBuffer(buffer,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose=!1,options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1);var reader=fd_slicer.createFromBuffer(buffer,{maxChunkSize:65536});fromRandomAccessReader(reader,buffer.length,options,callback)}function fromRandomAccessReader(reader,totalSize,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0);var decodeStrings=!!options.decodeStrings;if(options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),typeof totalSize!="number")throw new Error("expected totalSize parameter to be a number");if(totalSize>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");reader.ref();var eocdrWithoutCommentSize=22,maxCommentSize=65535,bufferSize=Math.min(eocdrWithoutCommentSize+maxCommentSize,totalSize),buffer=newBuffer(bufferSize),bufferReadStart=totalSize-buffer.length;readAndAssertNoEof(reader,buffer,0,bufferSize,bufferReadStart,function(err){if(err)return callback(err);for(var i=bufferSize-eocdrWithoutCommentSize;i>=0;i-=1)if(buffer.readUInt32LE(i)===101010256){var eocdrBuffer=buffer.slice(i),diskNumber=eocdrBuffer.readUInt16LE(4);if(diskNumber!==0)return callback(new Error("multi-disk zip files are not supported: found disk number: "+diskNumber));var entryCount=eocdrBuffer.readUInt16LE(10),centralDirectoryOffset=eocdrBuffer.readUInt32LE(16),commentLength=eocdrBuffer.readUInt16LE(20),expectedCommentLength=eocdrBuffer.length-eocdrWithoutCommentSize;if(commentLength!==expectedCommentLength)return callback(new Error("invalid comment length. expected: "+expectedCommentLength+". found: "+commentLength));var comment=decodeStrings?decodeBuffer(eocdrBuffer,22,eocdrBuffer.length,!1):eocdrBuffer.slice(22);if(!(entryCount===65535||centralDirectoryOffset===4294967295))return callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames));var zip64EocdlBuffer=newBuffer(20),zip64EocdlOffset=bufferReadStart+i-zip64EocdlBuffer.length;readAndAssertNoEof(reader,zip64EocdlBuffer,0,zip64EocdlBuffer.length,zip64EocdlOffset,function(err2){if(err2)return callback(err2);if(zip64EocdlBuffer.readUInt32LE(0)!==117853008)return callback(new Error("invalid zip64 end of central directory locator signature"));var zip64EocdrOffset=readUInt64LE(zip64EocdlBuffer,8),zip64EocdrBuffer=newBuffer(56);readAndAssertNoEof(reader,zip64EocdrBuffer,0,zip64EocdrBuffer.length,zip64EocdrOffset,function(err3){return err3?callback(err3):zip64EocdrBuffer.readUInt32LE(0)!==101075792?callback(new Error("invalid zip64 end of central directory record signature")):(entryCount=readUInt64LE(zip64EocdrBuffer,32),centralDirectoryOffset=readUInt64LE(zip64EocdrBuffer,48),callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames)))})});return}callback(new Error("end of central directory record signature not found"))})}util.inherits(ZipFile,EventEmitter2);function ZipFile(reader,centralDirectoryOffset,fileSize,entryCount,comment,autoClose,lazyEntries,decodeStrings,validateEntrySizes,strictFileNames){var self=this;EventEmitter2.call(self),self.reader=reader,self.reader.on("error",function(err){emitError(self,err)}),self.reader.once("close",function(){self.emit("close")}),self.readEntryCursor=centralDirectoryOffset,self.fileSize=fileSize,self.entryCount=entryCount,self.comment=comment,self.entriesRead=0,self.autoClose=!!autoClose,self.lazyEntries=!!lazyEntries,self.decodeStrings=!!decodeStrings,self.validateEntrySizes=!!validateEntrySizes,self.strictFileNames=!!strictFileNames,self.isOpen=!0,self.emittedError=!1,self.lazyEntries||self._readEntry()}ZipFile.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function emitErrorAndAutoClose(self,err){self.autoClose&&self.close(),emitError(self,err)}function emitError(self,err){self.emittedError||(self.emittedError=!0,self.emit("error",err))}ZipFile.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};ZipFile.prototype._readEntry=function(){var self=this;if(self.entryCount===self.entriesRead){setImmediate(function(){self.autoClose&&self.close(),!self.emittedError&&self.emit("end")});return}if(!self.emittedError){var buffer=newBuffer(46);readAndAssertNoEof(self.reader,buffer,0,buffer.length,self.readEntryCursor,function(err){if(err)return emitErrorAndAutoClose(self,err);if(!self.emittedError){var entry=new Entry,signature=buffer.readUInt32LE(0);if(signature!==33639248)return emitErrorAndAutoClose(self,new Error("invalid central directory file header signature: 0x"+signature.toString(16)));if(entry.versionMadeBy=buffer.readUInt16LE(4),entry.versionNeededToExtract=buffer.readUInt16LE(6),entry.generalPurposeBitFlag=buffer.readUInt16LE(8),entry.compressionMethod=buffer.readUInt16LE(10),entry.lastModFileTime=buffer.readUInt16LE(12),entry.lastModFileDate=buffer.readUInt16LE(14),entry.crc32=buffer.readUInt32LE(16),entry.compressedSize=buffer.readUInt32LE(20),entry.uncompressedSize=buffer.readUInt32LE(24),entry.fileNameLength=buffer.readUInt16LE(28),entry.extraFieldLength=buffer.readUInt16LE(30),entry.fileCommentLength=buffer.readUInt16LE(32),entry.internalFileAttributes=buffer.readUInt16LE(36),entry.externalFileAttributes=buffer.readUInt32LE(38),entry.relativeOffsetOfLocalHeader=buffer.readUInt32LE(42),entry.generalPurposeBitFlag&64)return emitErrorAndAutoClose(self,new Error("strong encryption is not supported"));self.readEntryCursor+=46,buffer=newBuffer(entry.fileNameLength+entry.extraFieldLength+entry.fileCommentLength),readAndAssertNoEof(self.reader,buffer,0,buffer.length,self.readEntryCursor,function(err2){if(err2)return emitErrorAndAutoClose(self,err2);if(!self.emittedError){var isUtf8=(entry.generalPurposeBitFlag&2048)!==0;entry.fileName=self.decodeStrings?decodeBuffer(buffer,0,entry.fileNameLength,isUtf8):buffer.slice(0,entry.fileNameLength);var fileCommentStart=entry.fileNameLength+entry.extraFieldLength,extraFieldBuffer=buffer.slice(entry.fileNameLength,fileCommentStart);entry.extraFields=[];for(var i=0;i<extraFieldBuffer.length-3;){var headerId=extraFieldBuffer.readUInt16LE(i+0),dataSize=extraFieldBuffer.readUInt16LE(i+2),dataStart=i+4,dataEnd=dataStart+dataSize;if(dataEnd>extraFieldBuffer.length)return emitErrorAndAutoClose(self,new Error("extra field length exceeds extra field buffer size"));var dataBuffer=newBuffer(dataSize);extraFieldBuffer.copy(dataBuffer,0,dataStart,dataEnd),entry.extraFields.push({id:headerId,data:dataBuffer}),i=dataEnd}if(entry.fileComment=self.decodeStrings?decodeBuffer(buffer,fileCommentStart,fileCommentStart+entry.fileCommentLength,isUtf8):buffer.slice(fileCommentStart,fileCommentStart+entry.fileCommentLength),entry.comment=entry.fileComment,self.readEntryCursor+=buffer.length,self.entriesRead+=1,entry.uncompressedSize===4294967295||entry.compressedSize===4294967295||entry.relativeOffsetOfLocalHeader===4294967295){for(var zip64EiefBuffer=null,i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===1){zip64EiefBuffer=extraField.data;break}}if(zip64EiefBuffer==null)return emitErrorAndAutoClose(self,new Error("expected zip64 extended information extra field"));var index=0;if(entry.uncompressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include uncompressed size"));entry.uncompressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.compressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include compressed size"));entry.compressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.relativeOffsetOfLocalHeader===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include relative header offset"));entry.relativeOffsetOfLocalHeader=readUInt64LE(zip64EiefBuffer,index),index+=8}}if(self.decodeStrings)for(var i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===28789){if(extraField.data.length<6||extraField.data.readUInt8(0)!==1)continue;var oldNameCrc32=extraField.data.readUInt32LE(1);if(crc32.unsigned(buffer.slice(0,entry.fileNameLength))!==oldNameCrc32)continue;entry.fileName=decodeBuffer(extraField.data,5,extraField.data.length,!0);break}}if(self.validateEntrySizes&&entry.compressionMethod===0){var expectedCompressedSize=entry.uncompressedSize;if(entry.isEncrypted()&&(expectedCompressedSize+=12),entry.compressedSize!==expectedCompressedSize){var msg="compressed/uncompressed size mismatch for stored file: "+entry.compressedSize+" != "+entry.uncompressedSize;return emitErrorAndAutoClose(self,new Error(msg))}}if(self.decodeStrings){self.strictFileNames||(entry.fileName=entry.fileName.replace(/\\/g,"/"));var errorMessage3=validateFileName(entry.fileName,self.validateFileNameOptions);if(errorMessage3!=null)return emitErrorAndAutoClose(self,new Error(errorMessage3))}self.emit("entry",entry),self.lazyEntries||self._readEntry()}})}})}};ZipFile.prototype.openReadStream=function(entry,options,callback){var self=this,relativeStart=0,relativeEnd=entry.compressedSize;if(callback==null)callback=options,options={};else{if(options.decrypt!=null){if(!entry.isEncrypted())throw new Error("options.decrypt can only be specified for encrypted entries");if(options.decrypt!==!1)throw new Error("invalid options.decrypt value: "+options.decrypt);if(entry.isCompressed()&&options.decompress!==!1)throw new Error("entry is encrypted and compressed, and options.decompress !== false")}if(options.decompress!=null){if(!entry.isCompressed())throw new Error("options.decompress can only be specified for compressed entries");if(!(options.decompress===!1||options.decompress===!0))throw new Error("invalid options.decompress value: "+options.decompress)}if(options.start!=null||options.end!=null){if(entry.isCompressed()&&options.decompress!==!1)throw new Error("start/end range not allowed for compressed entry without options.decompress === false");if(entry.isEncrypted()&&options.decrypt!==!1)throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false")}if(options.start!=null){if(relativeStart=options.start,relativeStart<0)throw new Error("options.start < 0");if(relativeStart>entry.compressedSize)throw new Error("options.start > entry.compressedSize")}if(options.end!=null){if(relativeEnd=options.end,relativeEnd<0)throw new Error("options.end < 0");if(relativeEnd>entry.compressedSize)throw new Error("options.end > entry.compressedSize");if(relativeEnd<relativeStart)throw new Error("options.end < options.start")}}if(!self.isOpen)return callback(new Error("closed"));if(entry.isEncrypted()&&options.decrypt!==!1)return callback(new Error("entry is encrypted, and options.decrypt !== false"));self.reader.ref();var buffer=newBuffer(30);readAndAssertNoEof(self.reader,buffer,0,buffer.length,entry.relativeOffsetOfLocalHeader,function(err){try{if(err)return callback(err);var signature=buffer.readUInt32LE(0);if(signature!==67324752)return callback(new Error("invalid local file header signature: 0x"+signature.toString(16)));var fileNameLength=buffer.readUInt16LE(26),extraFieldLength=buffer.readUInt16LE(28),localFileHeaderEnd=entry.relativeOffsetOfLocalHeader+buffer.length+fileNameLength+extraFieldLength,decompress;if(entry.compressionMethod===0)decompress=!1;else if(entry.compressionMethod===8)decompress=options.decompress!=null?options.decompress:!0;else return callback(new Error("unsupported compression method: "+entry.compressionMethod));var fileDataStart=localFileHeaderEnd,fileDataEnd=fileDataStart+entry.compressedSize;if(entry.compressedSize!==0&&fileDataEnd>self.fileSize)return callback(new Error("file data overflows file bounds: "+fileDataStart+" + "+entry.compressedSize+" > "+self.fileSize));var readStream=self.reader.createReadStream({start:fileDataStart+relativeStart,end:fileDataStart+relativeEnd}),endpointStream=readStream;if(decompress){var destroyed=!1,inflateFilter=zlib.createInflateRaw();readStream.on("error",function(err2){setImmediate(function(){destroyed||inflateFilter.emit("error",err2)})}),readStream.pipe(inflateFilter),self.validateEntrySizes?(endpointStream=new AssertByteCountStream(entry.uncompressedSize),inflateFilter.on("error",function(err2){setImmediate(function(){destroyed||endpointStream.emit("error",err2)})}),inflateFilter.pipe(endpointStream)):endpointStream=inflateFilter,endpointStream.destroy=function(){destroyed=!0,inflateFilter!==endpointStream&&inflateFilter.unpipe(endpointStream),readStream.unpipe(inflateFilter),readStream.destroy()}}callback(null,endpointStream)}finally{self.reader.unref()}})};function Entry(){}Entry.prototype.getLastModDate=function(){return dosDateTimeToDate(this.lastModFileDate,this.lastModFileTime)};Entry.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};Entry.prototype.isCompressed=function(){return this.compressionMethod===8};function dosDateTimeToDate(date5,time3){var day=date5&31,month=(date5>>5&15)-1,year=(date5>>9&127)+1980,millisecond=0,second=(time3&31)*2,minute=time3>>5&63,hour=time3>>11&31;return new Date(year,month,day,hour,minute,second,millisecond)}function validateFileName(fileName){return fileName.indexOf("\\")!==-1?"invalid characters in fileName: "+fileName:/^[a-zA-Z]:/.test(fileName)||/^\//.test(fileName)?"absolute path: "+fileName:fileName.split("/").indexOf("..")!==-1?"invalid relative path: "+fileName:null}function readAndAssertNoEof(reader,buffer,offset,length,position,callback){if(length===0)return setImmediate(function(){callback(null,newBuffer(0))});reader.read(buffer,offset,length,position,function(err,bytesRead){if(err)return callback(err);if(bytesRead<length)return callback(new Error("unexpected EOF"));callback()})}util.inherits(AssertByteCountStream,Transform);function AssertByteCountStream(byteCount){Transform.call(this),this.actualByteCount=0,this.expectedByteCount=byteCount}AssertByteCountStream.prototype._transform=function(chunk,encoding,cb){if(this.actualByteCount+=chunk.length,this.actualByteCount>this.expectedByteCount){var msg="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return cb(new Error(msg))}cb(null,chunk)};AssertByteCountStream.prototype._flush=function(cb){if(this.actualByteCount<this.expectedByteCount){var msg="not enough bytes in the stream. expected "+this.expectedByteCount+". got only "+this.actualByteCount;return cb(new Error(msg))}cb()};util.inherits(RandomAccessReader,EventEmitter2);function RandomAccessReader(){EventEmitter2.call(this),this.refCount=0}RandomAccessReader.prototype.ref=function(){this.refCount+=1};RandomAccessReader.prototype.unref=function(){var self=this;if(self.refCount-=1,self.refCount>0)return;if(self.refCount<0)throw new Error("invalid unref");self.close(onCloseDone);function onCloseDone(err){if(err)return self.emit("error",err);self.emit("close")}};RandomAccessReader.prototype.createReadStream=function(options){var start=options.start,end=options.end;if(start===end){var emptyStream=new PassThrough;return setImmediate(function(){emptyStream.end()}),emptyStream}var stream=this._readStreamForRange(start,end),destroyed=!1,refUnrefFilter=new RefUnrefFilter(this);stream.on("error",function(err){setImmediate(function(){destroyed||refUnrefFilter.emit("error",err)})}),refUnrefFilter.destroy=function(){stream.unpipe(refUnrefFilter),refUnrefFilter.unref(),stream.destroy()};var byteCounter=new AssertByteCountStream(end-start);return refUnrefFilter.on("error",function(err){setImmediate(function(){destroyed||byteCounter.emit("error",err)})}),byteCounter.destroy=function(){destroyed=!0,refUnrefFilter.unpipe(byteCounter),refUnrefFilter.destroy()},stream.pipe(refUnrefFilter).pipe(byteCounter)};RandomAccessReader.prototype._readStreamForRange=function(start,end){throw new Error("not implemented")};RandomAccessReader.prototype.read=function(buffer,offset,length,position,callback){var readStream=this.createReadStream({start:position,end:position+length}),writeStream=new Writable2,written=0;writeStream._write=function(chunk,encoding,cb){chunk.copy(buffer,offset+written,0,chunk.length),written+=chunk.length,cb()},writeStream.on("finish",callback),readStream.on("error",function(error48){callback(error48)}),readStream.pipe(writeStream)};RandomAccessReader.prototype.close=function(callback){setImmediate(callback)};util.inherits(RefUnrefFilter,PassThrough);function RefUnrefFilter(context){PassThrough.call(this),this.context=context,this.context.ref(),this.unreffedYet=!1}RefUnrefFilter.prototype._flush=function(cb){this.unref(),cb()};RefUnrefFilter.prototype.unref=function(cb){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var cp437="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ";function decodeBuffer(buffer,start,end,isUtf8){if(isUtf8)return buffer.toString("utf8",start,end);for(var result="",i=start;i<end;i++)result+=cp437[buffer[i]];return result}function readUInt64LE(buffer,offset){var lower32=buffer.readUInt32LE(offset),upper32=buffer.readUInt32LE(offset+4);return upper32*4294967296+lower32}var newBuffer;typeof Buffer.allocUnsafe=="function"?newBuffer=function(len){return Buffer.allocUnsafe(len)}:newBuffer=function(len){return new Buffer(len)};function defaultCallback(err){if(err)throw err}}});var require_extract_zip=__commonJS({"../../node_modules/.pnpm/extract-zip@2.0.1/node_modules/extract-zip/index.js"(exports,module){var debug=require_src()("extract-zip"),{createWriteStream,promises:fs24}=__require("fs"),getStream=require_get_stream(),path27=__require("path"),{promisify}=__require("util"),stream=__require("stream"),yauzl=require_yauzl(),openZip=promisify(yauzl.open),pipeline=promisify(stream.pipeline),Extractor=class{constructor(zipPath,opts){this.zipPath=zipPath,this.opts=opts}async extract(){return debug("opening",this.zipPath,"with opts",this.opts),this.zipfile=await openZip(this.zipPath,{lazyEntries:!0}),this.canceled=!1,new Promise((resolve11,reject)=>{this.zipfile.on("error",err=>{this.canceled=!0,reject(err)}),this.zipfile.readEntry(),this.zipfile.on("close",()=>{this.canceled||(debug("zip extraction complete"),resolve11())}),this.zipfile.on("entry",async entry=>{if(this.canceled){debug("skipping entry",entry.fileName,{cancelled:this.canceled});return}if(debug("zipfile entry",entry.fileName),entry.fileName.startsWith("__MACOSX/")){this.zipfile.readEntry();return}let destDir=path27.dirname(path27.join(this.opts.dir,entry.fileName));try{await fs24.mkdir(destDir,{recursive:!0});let canonicalDestDir=await fs24.realpath(destDir);if(path27.relative(this.opts.dir,canonicalDestDir).split(path27.sep).includes(".."))throw new Error(`Out of bound path "${canonicalDestDir}" found while processing file ${entry.fileName}`);await this.extractEntry(entry),debug("finished processing",entry.fileName),this.zipfile.readEntry()}catch(err){this.canceled=!0,this.zipfile.close(),reject(err)}})})}async extractEntry(entry){if(this.canceled){debug("skipping entry extraction",entry.fileName,{cancelled:this.canceled});return}this.opts.onEntry&&this.opts.onEntry(entry,this.zipfile);let dest=path27.join(this.opts.dir,entry.fileName),mode=entry.externalFileAttributes>>16&65535,IFMT=61440,IFDIR=16384,symlink=(mode&IFMT)===40960,isDir=(mode&IFMT)===IFDIR;!isDir&&entry.fileName.endsWith("/")&&(isDir=!0);let madeBy=entry.versionMadeBy>>8;isDir||(isDir=madeBy===0&&entry.externalFileAttributes===16),debug("extracting entry",{filename:entry.fileName,isDir,isSymlink:symlink});let procMode=this.getExtractedMode(mode,isDir)&511,destDir=isDir?dest:path27.dirname(dest),mkdirOptions={recursive:!0};if(isDir&&(mkdirOptions.mode=procMode),debug("mkdir",{dir:destDir,...mkdirOptions}),await fs24.mkdir(destDir,mkdirOptions),isDir)return;debug("opening read stream",dest);let readStream=await promisify(this.zipfile.openReadStream.bind(this.zipfile))(entry);if(symlink){let link=await getStream(readStream);debug("creating symlink",link,dest),await fs24.symlink(link,dest)}else await pipeline(readStream,createWriteStream(dest,{mode:procMode}))}getExtractedMode(entryMode,isDir){let mode=entryMode;return mode===0&&(isDir?(this.opts.defaultDirMode&&(mode=parseInt(this.opts.defaultDirMode,10)),mode||(mode=493)):(this.opts.defaultFileMode&&(mode=parseInt(this.opts.defaultFileMode,10)),mode||(mode=420))),mode}};module.exports=async function(zipPath,opts){if(debug("creating target directory",opts.dir),!path27.isAbsolute(opts.dir))throw new Error("Target directory is expected to be absolute");return await fs24.mkdir(opts.dir,{recursive:!0}),opts.dir=await fs24.realpath(opts.dir),new Extractor(zipPath,opts).extract()}}});import fs11 from"node:fs";import path13 from"node:path";import{execFileSync}from"node:child_process";function unregisterWindowsNativeHost(hostName){let registryKey=`HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;try{execFileSync("reg",["delete",registryKey,"/f"],{stdio:"pipe"})}catch{}}function uninstallNativeHostArtifacts(options={},dependencies={}){let{mode="both",silent=!1}=options;if(mode==="both")return["skills","mcp"].map(integrationMode=>uninstallNativeHostArtifacts({...options,mode:integrationMode},dependencies)).every(Boolean);let writeLine=dependencies.writeLine??(line=>console.error(line)),log2=line=>{silent||writeLine(line)};try{let existsSync12=dependencies.existsSync??fs11.existsSync,platform=dependencies.platform??process.platform,hostDir=dependencies.hostDir??resolveNativeHostDirectory({env:dependencies.env,homedir:dependencies.homedir,platform}),unlinkSync=dependencies.unlinkSync??fs11.unlinkSync,unregister=dependencies.unregisterWindowsNativeHost??unregisterWindowsNativeHost,hostName=MEARL_NATIVE_HOST_NAMES[mode],launcherExtension=platform==="win32"?"cmd":"sh",artifacts=[path13.join(hostDir,`${hostName}.json`),path13.join(hostDir,`${hostName}-launcher.${launcherExtension}`)];for(let artifact of artifacts)existsSync12(artifact)&&(unlinkSync(artifact),log2(`✅ Removed: ${artifact}`));return platform==="win32"&&unregister(hostName),!0}catch(error48){return log2(`❌ Uninstall failed: ${error48 instanceof Error?error48.message:String(error48)}`),!1}}var init_nativeHost2=__esm({"../setup/dist/nativeHost.js"(){"use strict";init_nativeHost()}});function initBrowserRegistry(deps){logFn=deps.log}function recordFileFor(browserId){return keyedConfigFile(BROWSERS_SUBDIR,browserId)}function persist(patch){if(!identity)return!1;let file2=recordFileFor(identity.browserId),previous=readRecord(file2);if(previous&&previous.pid!==process.pid&&isAlive(previous.pid))return!1;let record4={pid:process.pid,browserId:identity.browserId,socketPath:identity.socketPath,browserName:identity.browserName,nativeHostVersion:identity.nativeHostVersion,transport:identity.transport,startedAt:identity.startedAt,lastFocusedAt:previous?.lastFocusedAt,extensionVersion:previous?.extensionVersion,...patch,updatedAt:Date.now()};try{return previous?.pid===process.pid?writeRecordIfPid(file2,process.pid,record4):previous&&!removeRecordIfPid(file2,previous.pid)?!1:claimRecord(file2,record4)}catch(error48){return logFn("browser-registry: failed to write record:",String(error48)),!1}}async function retireUnreachableBrowserRecord(browserId,canConnect){let file2=recordFileFor(browserId),existing=readRecord(file2);return!existing||existing.pid===process.pid||!isAlive(existing.pid)||await canConnect(existing.socketPath)?!1:removeRecordIfPid(file2,existing.pid)}function registerBrowser(info){let startedAt=identity?.startedAt??new Date().toISOString();identity={browserId:info.browserId,socketPath:info.socketPath,browserName:info.browserName,nativeHostVersion:info.nativeHostVersion,transport:info.transport,startedAt};let previous=readRecord(recordFileFor(info.browserId)),registered=persist({lastFocusedAt:info.preserveFocus===!1?info.lastFocusedAt??0:previous?.lastFocusedAt??info.lastFocusedAt??Date.now(),extensionVersion:info.extensionVersion});return logFn(`browser-registry: ${registered?"registered":"registration skipped"} ${info.browserName} (${info.browserId})`),registered}function writeFocusNow(){lastFocusWriteAt=Date.now(),persist({lastFocusedAt:lastFocusWriteAt})}function touchFocus(){if(!identity)return;let elapsed=Date.now()-lastFocusWriteAt;if(elapsed>=FOCUS_WRITE_THROTTLE_MS){writeFocusNow();return}focusFlushTimer||(focusFlushTimer=setTimeout(()=>{focusFlushTimer=null,writeFocusNow()},FOCUS_WRITE_THROTTLE_MS-elapsed),focusFlushTimer.unref())}function unregisterBrowser(){if(focusFlushTimer&&(clearTimeout(focusFlushTimer),focusFlushTimer=null),!identity)return;let file2=recordFileFor(identity.browserId);removeRecordIfPid(file2,process.pid)}function pruneDeadBrowsers(){let now=Date.now();for(let file2 of listRecordFiles(keyedDir(BROWSERS_SUBDIR))){let rec=readRecord(file2);if(!rec){removeInvalidRecord(file2);continue}isAlive(rec.pid)||now-(rec.updatedAt??0)>STALE_RECORD_TTL_MS&&removeRecordIfPid(file2,rec.pid)}}function listRegisteredBrowsers(){let records=[];for(let file2 of listRecordFiles(keyedDir(BROWSERS_SUBDIR))){let record4=readRecord(file2);record4&&isAlive(record4.pid)&&records.push(record4)}return records.sort((a,b)=>(b.lastFocusedAt??0)-(a.lastFocusedAt??0)||(b.updatedAt??0)-(a.updatedAt??0))}var BROWSERS_SUBDIR,STALE_RECORD_TTL_MS,FOCUS_WRITE_THROTTLE_MS,identity,logFn,lastFocusWriteAt,focusFlushTimer,init_browser_registry=__esm({"src/browser-registry.ts"(){"use strict";init_dist();BROWSERS_SUBDIR="browsers",STALE_RECORD_TTL_MS=5*6e4,FOCUS_WRITE_THROTTLE_MS=1e3,identity=null,logFn=()=>{};lastFocusWriteAt=0,focusFlushTimer=null}});import net3 from"node:net";function requestBrowserSocket(socketPath,action,data,version3,timeoutMs=6e4,browserId,host,routing){let id=`browser_rpc_${Date.now()}_${Math.random().toString(36).slice(2,10)}`;return new Promise((resolve11,reject)=>{let client2=net3.createConnection(socketPath),lines=new Utf8LineBuffer(MAX_RESPONSE_BUFFER_SIZE),settled=!1,finish=(error48,result)=>{settled||(settled=!0,clearTimeout(timer),client2.removeAllListeners(),client2.destroy(),error48?reject(error48):resolve11(result))},timer=setTimeout(()=>finish(new Error(`Browser request timeout after ${timeoutMs}ms`)),timeoutMs),deadline=Date.now()+timeoutMs;client2.on("connect",()=>{client2.write(`${JSON.stringify({id,action,data,version:version3,protocolVersion:3,controlSource:routing?.controlSource??"local",...routing?.providerTarget?{providerTarget:routing.providerTarget,deadline}:{},...browserId?{browserId}:{},...host?{host}:{}})}
1072
- `)}),client2.on("data",chunk=>{let result=lines.push(chunk);if(result.overflow){finish(new Error("Browser response exceeded the supported size"));return}for(let line of result.lines){let response;try{response=JSON.parse(line)}catch{continue}if(response.id===id){response.success?finish(void 0,response.data):finish(new Error(response.error||"Browser request failed"));return}}}),client2.on("error",error48=>finish(error48)),client2.on("end",()=>finish(new Error("Browser connection closed before responding"))),client2.on("close",()=>finish(new Error("Browser connection closed before responding")))})}var MAX_RESPONSE_BUFFER_SIZE,init_browser_socket_request=__esm({"src/browser-socket-request.ts"(){"use strict";init_socketLines();init_dist3();MAX_RESPONSE_BUFFER_SIZE=64*1024*1024}});var NATIVE_HOST_VERSION,init_version=__esm({"src/version.ts"(){"use strict";NATIVE_HOST_VERSION="2.22.2"}});function providerRequestTimeoutMs(action,data,deadline){if(deadline!==void 0){if(!Number.isSafeInteger(deadline)||deadline<=0)throw new Error("Invalid Provider request deadline");let remaining=deadline-Date.now();if(remaining<=0)throw new Error("Provider request deadline exceeded");if(remaining>2147483647)throw new Error("Provider request deadline exceeds the supported range");return remaining}return resolveActionTimeoutSec(action,data,120)*1e3}var init_provider_request_timeout=__esm({"src/provider-request-timeout.ts"(){"use strict";init_actionTimeouts()}});import{isAbsolute as isAbsolute7}from"node:path";import{AsyncLocalStorage}from"node:async_hooks";function identity2(browser){return`${browser.pid}:${browser.startedAt}:${browser.socketPath}`}var ProviderControlService,init_provider_control=__esm({"src/provider-control.ts"(){"use strict";init_dist4();init_control_session_manager();init_dist3();init_provider_request_timeout();ProviderControlService=class{constructor(dependencies){this.dependencies=dependencies}deadlines=new AsyncLocalStorage;controls=new Map;retired=new Set;retire(manager){let cleanup=Promise.all(manager.registry.list().map(session=>manager.registry.waitForIdle(session.sessionId))).then(()=>manager.artifacts.dispose());this.retired.add(cleanup),cleanup.finally(()=>this.retired.delete(cleanup)).catch(()=>{})}reap(){let browsers=this.dependencies.browsers();for(let[browserId,control]of this.controls){let browser=browsers.find(item=>item.browserId===browserId);(!browser||identity2(browser)!==control.identity)&&(this.controls.delete(browserId),this.retire(control.manager))}}browser(browserId){let browser=this.dependencies.browsers().find(item=>item.browserId===browserId);if(browser?.transport!=="provider"||!browser.providerBrowserId)throw new Error("CONTROL_SESSION_NOT_FOUND: Provider browser is unavailable");return assertProviderProtocolVersion(browser.provider?.protocolVersion,browser.provider?.id??"Provider"),browser}list(){return this.reap(),[...this.controls.values()].flatMap(control=>control.manager.registry.list())}find(sessionId){this.reap();let sessions=[...this.controls.values()].map(control=>control.manager.registry.find(sessionId)).filter(session=>session!==void 0);if(sessions.length>1)throw new Error("CONTROL_SESSION_AMBIGUOUS: multiple browsers own this id");return sessions[0]}async userControl(sessionId,operation){this.reap();for(let[browserId,control]of this.controls){try{control.manager.registry.info(sessionId)}catch{continue}if(identity2(this.browser(browserId))!==control.identity)throw new Error("CONTROL_SESSION_NOT_FOUND");return control.manager.userControl(sessionId,operation)}throw new Error("CONTROL_SESSION_NOT_FOUND")}getControl(browser){let previous=this.controls.get(browser.browserId);if(previous?.identity===identity2(browser))return previous;previous&&this.retire(previous.manager);let control={identity:identity2(browser),manager:new ControlSessionManager({browserId:()=>browser.browserId,transport:()=>"provider",invoke:async(action,payload)=>{let current=this.browser(browser.browserId);if(identity2(current)!==control.identity)throw new Error("CONTROL_SESSION_NOT_FOUND");let{__mearlControlSource:origin="local",__mearlBlockedTabIds:blocked,...data}=payload;if(action==="tab_open"&&blocked?.length&&data.reuse!=="never"){let result=await this.request(current,"tab_list",{},origin);if(!Array.isArray(result.tabs))throw new Error("Provider did not return its current pages");if(findMatchingTabs(result.tabs,data.url,data.match).some(tab=>blocked.includes(tab.tabId??tab.id)))throw new Error("TAB_CONTROLLED_BY_SESSION")}return this.request(current,action,data,origin)},cleanup:async(tabs,_transport,preserveEnvironment)=>{preserveEnvironment||await this.clearEnvironment(browser.browserId,tabs)},download:async(data,_transport,origin)=>{let current=this.browser(browser.browserId);if(identity2(current)!==control.identity)throw new Error("CONTROL_SESSION_NOT_FOUND");let result=await this.request(current,"page_download",data,origin);if(!result||typeof result.filename!="string"||!result.filename||typeof result.filePath!="string"||!isAbsolute7(result.filePath)||!Object.hasOwn(result,"action")||result.owned!==void 0&&typeof result.owned!="boolean")throw new Error("Provider page_download must return a completed file with filename, absolute filePath and action");return{filename:result.filename,filePath:result.filePath,action:result.action,owned:result.owned===!0}},notify:this.dependencies.notify})};return this.controls.set(browser.browserId,control),control}async request(browser,action,data,origin,host){action==="browser_release"&&(action="browser_instances",data={operation:"detach"});let lifecycle=action==="browser_close"?data.deleteProfile===!0?"deleteData":"close":action==="get_browser_access_url"?"access":action==="browser_instances"?data.operation==="sync_cookies"?"syncCookies":data.operation:void 0;if(lifecycle&&!browser.operations?.includes(lifecycle))throw new Error(`Provider browser does not support ${lifecycle}`);if(!lifecycle&&action!=="get_versions"){if(browser.status!=="connected")throw new Error("Provider browser is not connected");if(!browser.capabilities?.actions.some(capability=>capability===action))throw new Error(`Provider browser does not support ${action}`)}let deadline=this.deadlines.getStore();return deadline!==void 0?(providerRequestTimeoutMs(action,data,deadline),this.dependencies.request(browser,action,data,origin,host,deadline)):this.dependencies.request(browser,action,data,origin,host)}async clearEnvironment(browserId,tabs){let browser=this.browser(browserId),actions=new Set(browser.capabilities?.actions??[]);if(actions.has("set_mock")&&!actions.has("get_mocks"))throw new Error("Provider cannot enumerate Mock state for cleanup");let clear=async(action,data)=>{let result=await this.request(browser,action,data,"local");if(result?.success===!1||result?.action?.success===!1)throw new Error(result.error??result.action?.error??"Provider environment cleanup failed")};for(let tabId of tabs){if(actions.has("set_mock")){let result=await this.request(browser,"get_mocks",{tabId},"local");if(!Array.isArray(result.mocks))throw new Error("Provider did not return its Mock state");let names=new Set(result.mocks.map(mock=>mock.apiName));for(let apiName of names)await clear("set_mock",{tabId,apiName,enabled:!1})}for(let[action,data]of[["set_app_profile",{tabId,enabled:!1,mtopEnv:"default"}],["set_device_emulation",{tabId,enabled:!1}],["set_timezone",{tabId,timezone:""}]])actions.has(action)&&await clear(action,data)}}async invoke(browserId,action,data={},sessionId,origin="local",host,deadline){return this.deadlines.run(deadline,async()=>{deadline!==void 0&&providerRequestTimeoutMs(action,data,deadline),this.reap();let browser=this.browser(browserId),{manager}=this.getControl(browser);if(action==="get_versions"||action==="get_browser_access_url")return this.request(browser,action,data,origin);if(action==="browser_instances"){if(!["start","detach","sync_cookies"].includes(data.operation))throw new Error("Invalid browser instance operation");return manager.registry.releaseBrowser(()=>this.request(browser,action,data,origin,host))}return manager.invoke(action,data,sessionId,void 0,origin)})}async dispose(){await Promise.all([...this.retired,...[...this.controls.values()].map(async({manager})=>{await Promise.all(manager.registry.list().map(session=>manager.registry.waitForIdle(session.sessionId))),await manager.artifacts.dispose()})])}}}});var provider_control_host_exports={};__export(provider_control_host_exports,{runProviderControlHost:()=>runProviderControlHost});import net4 from"node:net";import{chmodSync as chmodSync2,rmSync as rmSync14}from"node:fs";import{randomUUID as randomUUID21}from"node:crypto";async function runProviderControlHost(token){let file2=providerControlHostFile(),owner=readRecord(file2);if(!owner||owner.token!==token)throw new Error("Provider control host startup ownership was lost");let socketPath=providerControlSocketPath(process.pid);if(!writeRecordIfPid(file2,owner.pid,{pid:process.pid,socketPath,token,ready:!1,protocolVersion:3}))throw new Error("Provider control host startup ownership was lost");let connections=new Set,service=new ProviderControlService({browsers:listRegisteredBrowsers,request:(browser,action,data,origin,host,deadline)=>requestBrowserSocket(browser.socketPath,action,data,NATIVE_HOST_VERSION,providerRequestTimeoutMs(action,data,deadline),browser.providerBrowserId,host,{controlSource:origin}),notify:()=>{for(let browser of listRegisteredBrowsers())browser.transport==="extension"&&requestBrowserSocket(browser.socketPath,"provider_control_sessions_changed",{},NATIVE_HOST_VERSION,5e3).catch(()=>{})}}),server=net4.createServer(socket=>{connections.add(socket),socket.on("error",()=>{}),socket.once("close",()=>connections.delete(socket));let lines=new Utf8LineBuffer(16*1024*1024);socket.on("data",chunk=>{let result=lines.push(chunk);if(result.overflow)return socket.destroy();for(let line of result.lines)handle(line,socket)})});async function handle(line,socket){let id="";try{let request=JSON.parse(line);id=typeof request.id=="string"?request.id:randomUUID21(),assertProviderProtocolVersion(request.protocolVersion,"Provider control client");let data=request.data??{},result;if(request.action==="__control_session_resolve")result={session:service.find(data.sessionId)??null};else if(request.action==="browser_sessions")if(data.operation==="list")result={sessions:service.list()};else{if(!["handoff","resume","release"].includes(data.operation)||typeof data.sessionId!="string"||!data.sessionId)throw new Error("Invalid browser session operation");result={session:await service.userControl(data.sessionId,data.operation)}}else{if(typeof request.providerTarget!="string"||typeof request.action!="string")throw new Error("Provider browser and action are required");if(!data||typeof data!="object"||Array.isArray(data))throw new Error("Invalid action payload");if(request.transport&&request.transport!=="provider")throw new Error("A session cannot change transport");result=await service.invoke(request.providerTarget,request.action,data,request.controlSessionId,request.controlSource??"local",request.host,request.deadline)}socket.destroyed||socket.write(JSON.stringify({id,success:!0,data:result})+`
1072
+ `)}),client2.on("data",chunk=>{let result=lines.push(chunk);if(result.overflow){finish(new Error("Browser response exceeded the supported size"));return}for(let line of result.lines){let response;try{response=JSON.parse(line)}catch{continue}if(response.id===id){response.success?finish(void 0,response.data):finish(new Error(response.error||"Browser request failed"));return}}}),client2.on("error",error48=>finish(error48)),client2.on("end",()=>finish(new Error("Browser connection closed before responding"))),client2.on("close",()=>finish(new Error("Browser connection closed before responding")))})}var MAX_RESPONSE_BUFFER_SIZE,init_browser_socket_request=__esm({"src/browser-socket-request.ts"(){"use strict";init_socketLines();init_dist3();MAX_RESPONSE_BUFFER_SIZE=64*1024*1024}});var NATIVE_HOST_VERSION,init_version=__esm({"src/version.ts"(){"use strict";NATIVE_HOST_VERSION="2.22.3"}});function providerRequestTimeoutMs(action,data,deadline){if(deadline!==void 0){if(!Number.isSafeInteger(deadline)||deadline<=0)throw new Error("Invalid Provider request deadline");let remaining=deadline-Date.now();if(remaining<=0)throw new Error("Provider request deadline exceeded");if(remaining>2147483647)throw new Error("Provider request deadline exceeds the supported range");return remaining}return resolveActionTimeoutSec(action,data,120)*1e3}var init_provider_request_timeout=__esm({"src/provider-request-timeout.ts"(){"use strict";init_actionTimeouts()}});import{isAbsolute as isAbsolute7}from"node:path";import{AsyncLocalStorage}from"node:async_hooks";function identity2(browser){return`${browser.pid}:${browser.startedAt}:${browser.socketPath}`}var ProviderControlService,init_provider_control=__esm({"src/provider-control.ts"(){"use strict";init_dist4();init_control_session_manager();init_dist3();init_provider_request_timeout();ProviderControlService=class{constructor(dependencies){this.dependencies=dependencies}deadlines=new AsyncLocalStorage;controls=new Map;retired=new Set;retire(manager){let cleanup=Promise.all(manager.registry.list().map(session=>manager.registry.waitForIdle(session.sessionId))).then(()=>manager.artifacts.dispose());this.retired.add(cleanup),cleanup.finally(()=>this.retired.delete(cleanup)).catch(()=>{})}reap(){let browsers=this.dependencies.browsers();for(let[browserId,control]of this.controls){let browser=browsers.find(item=>item.browserId===browserId);(!browser||identity2(browser)!==control.identity)&&(this.controls.delete(browserId),this.retire(control.manager))}}browser(browserId){let browser=this.dependencies.browsers().find(item=>item.browserId===browserId);if(browser?.transport!=="provider"||!browser.providerBrowserId)throw new Error("CONTROL_SESSION_NOT_FOUND: Provider browser is unavailable");return assertProviderProtocolVersion(browser.provider?.protocolVersion,browser.provider?.id??"Provider"),browser}list(){return this.reap(),[...this.controls.values()].flatMap(control=>control.manager.registry.list())}find(sessionId){this.reap();let sessions=[...this.controls.values()].map(control=>control.manager.registry.find(sessionId)).filter(session=>session!==void 0);if(sessions.length>1)throw new Error("CONTROL_SESSION_AMBIGUOUS: multiple browsers own this id");return sessions[0]}async userControl(sessionId,operation){this.reap();for(let[browserId,control]of this.controls){try{control.manager.registry.info(sessionId)}catch{continue}if(identity2(this.browser(browserId))!==control.identity)throw new Error("CONTROL_SESSION_NOT_FOUND");return control.manager.userControl(sessionId,operation)}throw new Error("CONTROL_SESSION_NOT_FOUND")}getControl(browser){let previous=this.controls.get(browser.browserId);if(previous?.identity===identity2(browser))return previous;previous&&this.retire(previous.manager);let control={identity:identity2(browser),manager:new ControlSessionManager({browserId:()=>browser.browserId,transport:()=>"provider",invoke:async(action,payload)=>{let current=this.browser(browser.browserId);if(identity2(current)!==control.identity)throw new Error("CONTROL_SESSION_NOT_FOUND");let{__mearlControlSource:origin="local",__mearlBlockedTabIds:blocked,...data}=payload;if(action==="tab_open"&&blocked?.length&&data.reuse!=="never"){let result=await this.request(current,"tab_list",{},origin);if(!Array.isArray(result.tabs))throw new Error("Provider did not return its current pages");if(findMatchingTabs(result.tabs,data.url,data.match).some(tab=>blocked.includes(tab.tabId??tab.id)))throw new Error("TAB_CONTROLLED_BY_SESSION")}return this.request(current,action,data,origin)},cleanup:async(tabs,_transport,preserveEnvironment)=>{preserveEnvironment||await this.clearEnvironment(browser.browserId,tabs)},download:async(data,_transport,origin)=>{let current=this.browser(browser.browserId);if(identity2(current)!==control.identity)throw new Error("CONTROL_SESSION_NOT_FOUND");let result=await this.request(current,"page_download",data,origin);if(!result||typeof result.filename!="string"||!result.filename||typeof result.filePath!="string"||!isAbsolute7(result.filePath)||!Object.hasOwn(result,"action")||result.owned!==void 0&&typeof result.owned!="boolean")throw new Error("Provider page_download must return a completed file with filename, absolute filePath and action");return{filename:result.filename,filePath:result.filePath,action:result.action,owned:result.owned===!0}},notify:this.dependencies.notify})};return this.controls.set(browser.browserId,control),control}async request(browser,action,data,origin,host){action==="browser_release"&&(action="browser_instances",data={operation:"detach"});let lifecycle=action==="browser_close"?data.deleteProfile===!0?"deleteData":"close":action==="get_browser_access_url"?"access":action==="browser_instances"?data.operation==="sync_cookies"?"syncCookies":data.operation:void 0;if(lifecycle&&!browser.operations?.includes(lifecycle))throw new Error(`Provider browser does not support ${lifecycle}`);if(!lifecycle&&action!=="get_versions"){if(browser.status!=="connected")throw new Error("Provider browser is not connected");if(!browser.capabilities?.actions.some(capability=>capability===action))throw new Error(`Provider browser does not support ${action}`)}let deadline=this.deadlines.getStore();return deadline!==void 0?(providerRequestTimeoutMs(action,data,deadline),this.dependencies.request(browser,action,data,origin,host,deadline)):this.dependencies.request(browser,action,data,origin,host)}async clearEnvironment(browserId,tabs){let browser=this.browser(browserId),actions=new Set(browser.capabilities?.actions??[]);if(actions.has("set_mock")&&!actions.has("get_mocks"))throw new Error("Provider cannot enumerate Mock state for cleanup");let clear=async(action,data)=>{let result=await this.request(browser,action,data,"local");if(result?.success===!1||result?.action?.success===!1)throw new Error(result.error??result.action?.error??"Provider environment cleanup failed")};for(let tabId of tabs){if(actions.has("set_mock")){let result=await this.request(browser,"get_mocks",{tabId},"local");if(!Array.isArray(result.mocks))throw new Error("Provider did not return its Mock state");let names=new Set(result.mocks.map(mock=>mock.apiName));for(let apiName of names)await clear("set_mock",{tabId,apiName,enabled:!1})}for(let[action,data]of[["set_app_profile",{tabId,enabled:!1,mtopEnv:"default"}],["set_device_emulation",{tabId,enabled:!1}],["set_timezone",{tabId,timezone:""}]])actions.has(action)&&await clear(action,data)}}async invoke(browserId,action,data={},sessionId,origin="local",host,deadline){return this.deadlines.run(deadline,async()=>{deadline!==void 0&&providerRequestTimeoutMs(action,data,deadline),this.reap();let browser=this.browser(browserId),{manager}=this.getControl(browser);if(action==="get_versions"||action==="get_browser_access_url")return this.request(browser,action,data,origin);if(action==="browser_instances"){if(!["start","detach","sync_cookies"].includes(data.operation))throw new Error("Invalid browser instance operation");return manager.registry.releaseBrowser(()=>this.request(browser,action,data,origin,host))}return manager.invoke(action,data,sessionId,void 0,origin)})}async dispose(){await Promise.all([...this.retired,...[...this.controls.values()].map(async({manager})=>{await Promise.all(manager.registry.list().map(session=>manager.registry.waitForIdle(session.sessionId))),await manager.artifacts.dispose()})])}}}});var provider_control_host_exports={};__export(provider_control_host_exports,{runProviderControlHost:()=>runProviderControlHost});import net4 from"node:net";import{chmodSync as chmodSync2,rmSync as rmSync14}from"node:fs";import{randomUUID as randomUUID21}from"node:crypto";async function runProviderControlHost(token){let file2=providerControlHostFile(),owner=readRecord(file2);if(!owner||owner.token!==token)throw new Error("Provider control host startup ownership was lost");let socketPath=providerControlSocketPath(process.pid);if(!writeRecordIfPid(file2,owner.pid,{pid:process.pid,socketPath,token,ready:!1,protocolVersion:3}))throw new Error("Provider control host startup ownership was lost");let connections=new Set,service=new ProviderControlService({browsers:listRegisteredBrowsers,request:(browser,action,data,origin,host,deadline)=>requestBrowserSocket(browser.socketPath,action,data,NATIVE_HOST_VERSION,providerRequestTimeoutMs(action,data,deadline),browser.providerBrowserId,host,{controlSource:origin}),notify:()=>{for(let browser of listRegisteredBrowsers())browser.transport==="extension"&&requestBrowserSocket(browser.socketPath,"provider_control_sessions_changed",{},NATIVE_HOST_VERSION,5e3).catch(()=>{})}}),server=net4.createServer(socket=>{connections.add(socket),socket.on("error",()=>{}),socket.once("close",()=>connections.delete(socket));let lines=new Utf8LineBuffer(16*1024*1024);socket.on("data",chunk=>{let result=lines.push(chunk);if(result.overflow)return socket.destroy();for(let line of result.lines)handle(line,socket)})});async function handle(line,socket){let id="";try{let request=JSON.parse(line);id=typeof request.id=="string"?request.id:randomUUID21(),assertProviderProtocolVersion(request.protocolVersion,"Provider control client");let data=request.data??{},result;if(request.action==="__control_session_resolve")result={session:service.find(data.sessionId)??null};else if(request.action==="browser_sessions")if(data.operation==="list")result={sessions:service.list()};else{if(!["handoff","resume","release"].includes(data.operation)||typeof data.sessionId!="string"||!data.sessionId)throw new Error("Invalid browser session operation");result={session:await service.userControl(data.sessionId,data.operation)}}else{if(typeof request.providerTarget!="string"||typeof request.action!="string")throw new Error("Provider browser and action are required");if(!data||typeof data!="object"||Array.isArray(data))throw new Error("Invalid action payload");if(request.transport&&request.transport!=="provider")throw new Error("A session cannot change transport");result=await service.invoke(request.providerTarget,request.action,data,request.controlSessionId,request.controlSource??"local",request.host,request.deadline)}socket.destroyed||socket.write(JSON.stringify({id,success:!0,data:result})+`
1073
1073
  `)}catch(error48){socket.destroyed||socket.write(JSON.stringify({id,success:!1,error:error48 instanceof Error?error48.message:String(error48)})+`
1074
1074
  `)}}try{if(await new Promise((resolve11,reject)=>{server.once("error",reject),server.listen(socketPath,()=>{server.removeListener("error",reject),resolve11()})}),process.platform!=="win32"&&chmodSync2(socketPath,384),!writeRecordIfPid(file2,process.pid,{pid:process.pid,socketPath,token,ready:!0,protocolVersion:3}))throw new Error("Provider control host startup ownership was lost");await new Promise(resolve11=>{let stop=()=>{removeRecordIfPid(file2,process.pid);for(let socket of connections)socket.destroy();server.close(()=>resolve11())};process.once("SIGTERM",stop),process.once("SIGINT",stop)})}finally{removeRecordIfPid(file2,process.pid);for(let socket of connections)socket.destroy();server.close(),process.platform!=="win32"&&rmSync14(socketPath,{force:!0}),await service.dispose()}}var init_provider_control_host=__esm({"src/provider-control-host.ts"(){"use strict";init_dist();init_host();init_browser_registry();init_browser_socket_request();init_provider_control();init_socketLines();init_version();init_dist3();init_provider_request_timeout()}});import fs18 from"node:fs";import path21 from"node:path";function resolveLauncherNodePaths(execPath){let nodePath=path21.resolve(execPath),homebrewNode=nodePath.match(/^(.*)\/Cellar\/(node(?:@\d+(?:\.\d+)*)?)\/[^/]+\/bin\/node$/);if(!homebrewNode)return[nodePath];let[,prefix,formula]=homebrewNode,stablePath=path21.join(prefix,"opt",formula,"bin","node");try{if(fs18.accessSync(stablePath,fs18.constants.X_OK),fs18.statSync(stablePath).isFile()&&fs18.realpathSync(stablePath)===fs18.realpathSync(nodePath))return[stablePath,nodePath]}catch{}return[nodePath,stablePath]}function shellQuote(value){return`'${value.replaceAll("'","'\\''")}'`}function createLauncherScript(hostDir,hostPath,hostName,execPath=process.execPath){let nodePaths=process.platform==="win32"?[path21.resolve(execPath)]:resolveLauncherNodePaths(execPath),metadataLine=`mearl-native-host-launcher: ${JSON.stringify({version:1,nodePaths,hostPath})}`;if(process.platform==="win32"){let launcherPath2=path21.join(hostDir,`${hostName}-launcher.cmd`),content2=`@echo off\r
1075
1075
  rem ${metadataLine}\r
@@ -1693,7 +1693,7 @@ ${message}`:message,promptContent=[...prompt?[{type:"text",text:prompt}]:[],...i
1693
1693
  <li data-auth-step data-state="waiting"><span class="step-mark">2</span><span></span></li>
1694
1694
  <li data-auth-step data-state="waiting"><span class="step-mark">3</span><span></span></li></ol></div>
1695
1695
  <footer><button class="cancel" type="button" data-auth-cancel></button></footer>
1696
- </section></div>`,shadow.querySelector("[data-auth-eyebrow]").textContent=authCodeText.eyebrow,shadow.querySelector("[data-auth-title]").textContent=authCodeText.title,shadow.querySelector("[data-auth-status]").textContent=authCodeText.starting,shadow.querySelector("[data-auth-detail]").textContent=authCodeText.startingDetail,shadow.querySelector("[data-auth-visual-label]").textContent=authCodeText.starting,shadow.querySelector(".cancel").textContent=authCodeText.cancel,shadow.querySelector(".close").setAttribute("aria-label",authCodeText.cancel),shadow.querySelectorAll("[data-auth-step]").forEach((step,index)=>{step.lastElementChild.textContent=authCodeText.steps[index]??""}),shadow.querySelectorAll("[data-auth-cancel]").forEach(button=>{button.addEventListener("click",()=>{window.postMessage({source:SRC,type:"authCodeCancel",requestId},"*"),finishAuthCode(requestId,{success:!1,error:"User cancelled authorization"})})}),(document.body??document.documentElement).appendChild(overlay),pending.overlay=overlay}if(svg){let parsed=new DOMParser().parseFromString(svg,"image/svg+xml").documentElement;if(parsed.namespaceURI!=="http://www.w3.org/2000/svg"||parsed.tagName!=="svg")return;let image=document.importNode(parsed,!0);image.setAttribute("role","img"),image.setAttribute("aria-label","支付宝扫码配对二维码"),pending.overlay.shadowRoot?.querySelector("[data-auth-qr]")?.replaceChildren(image);let visual=pending.overlay.shadowRoot?.querySelector("[data-auth-visual]");visual&&(visual.dataset.ready="true"),armAuthCodeTimeout(requestId,135e3),(pending.phase==="starting"||pending.phase==="installing")&&updateAuthCodeProgress(requestId,"pairing")}}}function callAuthCode(params,succ,fail2){activeAuthCodeRequestId!==null&&(window.postMessage({source:SRC,type:"authCodeCancel",requestId:activeAuthCodeRequestId},"*"),finishAuthCode(activeAuthCodeRequestId,{success:!1,error:"Authorization request replaced"}));let requestId=++bridgeRequestSeq;activeAuthCodeRequestId=requestId,pendingAuthCode[requestId]={succ,fail:fail2,phase:"starting"},armAuthCodeTimeout(requestId,135e3),showAuthCodePairing(requestId),window.postMessage({source:SRC,type:"authCode",requestId,payload:params},"*")}function degradedUserInfo(fallback,reason){let result={...fallback};try{Object.defineProperties(result,{__mearlDegraded:{enumerable:!1,value:!0},__mearlDegradedReason:{enumerable:!1,value:reason}})}catch{}return console.warn(TAG,"userInfo 降级:",reason),result}function callMtop(params,succ,fail2){let id=++bridgeRequestSeq;pendingMtop[id]={succ,fail:fail2};let post=params.post,rawTimeout=params.timeout??params.timer,timeout=typeof rawTimeout=="number"?rawTimeout:typeof rawTimeout=="string"&&rawTimeout.trim()!==""?Number(rawTimeout):void 0,payload={...params,data:params.data!==void 0?params.data:params.param??{},method:params.method??(post===!0||post===1||post==="1"||post==="true"?"POST":"GET"),env:params.env??(/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"prod"),...Number.isFinite(timeout)&&{timeout}};window.postMessage({source:SRC,type:"mtop",requestId:id,payload},"*"),log2("mtop 代发 →",params.api)}function callMtopAsync(params){return new Promise((resolve11,reject)=>callMtop(params,resolve11,reject))}function callMtopStream(params,succ,fail2){let sessionId=typeof params.id=="string"?params.id:String(params.id??""),request=params.request&&typeof params.request=="object"?params.request:null;if(!sessionId||!request||typeof request.api!="string"){fail2?.("invalid mtop_stream params");return}let requestId=++bridgeRequestSeq;pendingMtopStreams[requestId]={sessionId},window.postMessage({source:SRC,type:"mtopStream",requestId,payload:{...request,timeout:params.timeout,method:params.method??request.method,env:/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"prod"}},"*"),succ?.({}),log2("mtop 流式代发 →",request.api)}function callUserInfo(fallback,succ){if(fallback.userId){succ?.(fallback);return}let requestId=++bridgeRequestSeq,timer=setTimeout(()=>{let pending=pendingUserInfo[requestId];pending&&(delete pendingUserInfo[requestId],pending.succ?.(degradedUserInfo(pending.fallback,"native relay timeout")))},1e3);pendingUserInfo[requestId]={fallback,succ,timer},window.postMessage({source:SRC,type:"userInfo",requestId},"*")}function emitMtopStreamEvent(sessionId,eventType,data){let detail=data&&typeof data=="object"?{...data,eventType}:{data,eventType};document.dispatchEvent(new CustomEvent(`mtop_stream${sessionId}`,{detail}))}function pickDirectUploadTarget(response){if(!response||typeof response!="object")return null;let data=response.data;if(data?.success===!1)return null;let result=data?.result,target=Array.isArray(result?.urls)?result.urls[0]:void 0;if(!target||typeof target!="object")return null;let item=target;if(typeof item.put!="string"||!item.put||typeof item.get!="string"||!item.get)return null;let rawHeaders=item.putHeaders&&typeof item.putHeaders=="object"?item.putHeaders:{},putHeaders=Object.fromEntries(Object.entries(rawHeaders).map(([key,value])=>[key,String(value)]));return{put:item.put,get:item.get,putHeaders}}async function uploadImage(file2){let uploader=config2.imagePicker;if(!uploader)throw new Error("图片上传能力未配置");let env=/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"prod",response=await callMtopAsync({api:uploader.api,v:uploader.version,method:"POST",env,timeout:6e4,data:{fcId:uploader.fcId,fcGroup:uploader.fcGroup,fcName:uploader.uploadUrlFunction,fcData:JSON.stringify({requestType:"url",mimes:[file2.type||"image/jpeg"],prefix:uploader.prefix,region:uploader.region,uploadNumber:1}),fcConfig:JSON.stringify({timeout:6e4,disasterRecover:!0})}}),target=pickDirectUploadTarget(response);if(!target)throw new Error("获取图片上传地址失败");let uploadUrl=`${target.put}${target.put.includes("?")?"&":"?"}getAvatar=1`,uploadResponse=await fetch(uploadUrl,{method:"PUT",headers:target.putHeaders,body:file2});if(uploadResponse.status!==200)throw new Error(`图片直传失败: HTTP ${uploadResponse.status}`);return target.get}function readImageDataUrl(file2){return new Promise((resolve11,reject)=>{let reader=new FileReader;reader.addEventListener("load",()=>{if(typeof reader.result=="string"&&reader.result.startsWith("data:")){resolve11(reader.result);return}reject(new Error("读取图片数据失败"))},{once:!0}),reader.addEventListener("error",()=>reject(reader.error??new Error("读取图片数据失败")),{once:!0}),reader.readAsDataURL(file2)})}function openImagePicker(options,onSuccess,onFailure){let input2=document.createElement("input");input2.type="file",input2.accept="image/*";let maxSelect=Number.isFinite(options.maxSelect)?Math.min(999,Math.max(1,Math.floor(options.maxSelect))):1;input2.multiple=maxSelect>1,options.capture&&(input2.capture="environment"),input2.style.display="none";let settled=!1,finish=()=>{settled=!0,input2.remove()},fail2=reason=>{settled||(finish(),onFailure(reason))};input2.addEventListener("cancel",()=>fail2("image selection cancelled"),{once:!0}),input2.addEventListener("change",()=>{let files=Array.from(input2.files??[]).slice(0,maxSelect);if(files.length===0){fail2("image selection cancelled");return}if(files.some(file2=>!file2.type.startsWith("image/"))){console.error(TAG,"仅支持选择图片文件"),fail2("only image files are supported");return}let resolveImage=options.resultType==="dataUrl"?readImageDataUrl:uploadImage;Promise.all(files.map(resolveImage)).then(urls=>{settled||(onSuccess(urls),log2(options.resultType==="dataUrl"?"图片选择并读取完成:":"图片选择并上传完成:",urls))}).catch(error48=>{console.error(TAG,"图片处理失败:",error48),fail2(error48 instanceof Error?error48.message:"image processing failed")}).finally(finish)},{once:!0}),(document.body??document.documentElement).appendChild(input2),input2.click(),window.addEventListener("focus",()=>{setTimeout(()=>{!settled&&!input2.files?.length&&fail2("image selection cancelled")},1e3)},{once:!0})}function showPaymentDialog(api,params,succeed,failed){document.querySelector('[data-mearl-payment-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-payment-dialog","true"),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent="支付确认";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"}),desc.textContent=`模拟 ${api} 支付,请选择操作`;let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let btnBase=(text3,bg,color,action)=>{let btn=document.createElement("button");return btn.textContent=text3,btn.setAttribute("data-mearl-action",action),Object.assign(btn.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background:bg,color}),btn},confirmBtn=btnBase("完成支付","#1677ff","#fff","payment-confirm"),cancelBtn=btnBase("取消支付","#f5f5f5","#333","payment-cancel"),cleanup=()=>{overlay.remove()};confirmBtn.addEventListener("click",()=>{cleanup(),log2("用户完成支付",api),succeed(api==="wx.requestPayment"?{errMsg:"requestPayment:ok"}:{ResultStatus:"9000",resultStatus:"9000"})}),cancelBtn.addEventListener("click",()=>{cleanup(),log2("用户取消支付",api),failed(api==="wx.requestPayment"?{errMsg:"requestPayment:fail cancel"}:{ResultStatus:"6001",resultStatus:"6001"})}),btnRow.appendChild(cancelBtn),btnRow.appendChild(confirmBtn),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function showMiniProgramActionDialog(action,params,confirmed,cancelled){document.querySelector('[data-mearl-mini-program-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-mini-program-dialog","true"),overlay.setAttribute("data-mearl-mini-program-action",action),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent=action==="navigateMiniProgram"?"打开其他小程序":"订阅消息";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"});let targetTitle=params.title?.trim()||"其他";desc.textContent=action==="navigateMiniProgram"?`即将打开“${targetTitle}”小程序,是否继续?`:"模拟微信订阅消息授权,请选择操作";let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let createButton=(text3,background,color,actionName)=>{let button=document.createElement("button");return button.textContent=text3,button.setAttribute("data-mearl-action",actionName),Object.assign(button.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background,color}),button},confirmButton=createButton(action==="navigateMiniProgram"?"确定":"允许","#1677ff","#fff","mini-program-confirm"),cancelButton=createButton("取消","#f5f5f5","#333","mini-program-cancel"),cleanup=()=>overlay.remove();confirmButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:ok"}:{result:"SUCCESS",data:{totalCount:1,acceptCount:1}};log2("用户确认小程序原生能力",action,params.appId??params.scene??""),confirmed(result)}),cancelButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:fail cancel"}:{result:"CLOSE_BY_USER"};log2("用户取消小程序原生能力",action),cancelled(result)}),btnRow.appendChild(cancelButton),btnRow.appendChild(confirmButton),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function handleMessage(msg){if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_AUTH_CODE_PROGRESS")return(msg.phase==="installing"||msg.phase==="connected"||msg.phase==="authorizing")&&updateAuthCodeProgress(msg.requestId,msg.phase),!0;if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_AUTH_CODE_PAIRING"){let result=msg.result;return typeof result?.qrSvg=="string"&&showAuthCodePairing(msg.requestId,result.qrSvg),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_AUTH_CODE_RESPONSE")return finishAuthCode(msg.requestId,msg.result),!0;if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_RESPONSE"){let pending=pendingMtop[msg.requestId];if(!pending)return!0;delete pendingMtop[msg.requestId];let result=msg.result;return result?.success?pending.succ?.(result.response):pending.fail?.(result?.error??"mtop delegate failed"),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_USER_INFO_RESPONSE"){let requestId=msg.requestId,pending=pendingUserInfo[requestId];if(!pending)return!0;delete pendingUserInfo[requestId],clearTimeout(pending.timer);let result=msg.result,response=result?.success&&result.response&&typeof result.response=="object"?result.response:{};return pending.succ?.(result?.success?{...pending.fallback,...response}:degradedUserInfo(pending.fallback,typeof result?.error=="string"&&result.error?result.error:"native relay failed")),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_STREAM_EVENT"){let requestId=msg.requestId,pending=pendingMtopStreams[requestId];if(!pending)return!0;let eventType=msg.eventType;return emitMtopStreamEvent(pending.sessionId,eventType,msg.data),(eventType==="onFinish"||eventType==="onError")&&delete pendingMtopStreams[requestId],!0}return!1}return{showAppToast,callMtop,callMtopStream,callUserInfo,callAuthCode,openImagePicker,showPaymentDialog,showMiniProgramActionDialog,handleMessage}}function installAppProfileBridgeProtocol(config2,environment,host){let{w,SRC,TAG,isTop,log:log2}=environment,{pageTransport,systemBars,requestOpen,requestClose,requestCloseAll,requestContainerData}=host,{showAppToast,callMtop,callMtopStream,callUserInfo,callAuthCode,openImagePicker,showPaymentDialog,showMiniProgramActionDialog}=pageTransport,{applyNavigationBarState,applyStatusBarState,syncSimulatedTitleBar}=systemBars,NOT_IMPLEMENTED_PAYLOAD=JSON.stringify({ret:["HY_FAILED"],msg:"not implemented"}),FPT_STORAGE_KEY=`__mearl_app_fpt__:${config2.profile}`,CALENDAR_STORAGE_KEY=`__mearl_app_calendar_events__:${config2.profile}`,unsupportedNativeInputNotified=!1,stopNetworkQualityMonitor=null,voiceRecognition=null,voiceRecognitionSession=0,voiceRecognitionTranscript="",voiceRecognitionInterimTranscript="",voiceRecognitionStopping=!1,voiceRecognitionRunning=!1,simulatedPageHidden=!1,simulatedVisibilityInstalled=!1,hasPendingMiniProgramBackData=!1,pendingMiniProgramBackData,notificationListeners=new Map,megaListenerSeq=0,megaBroadcastListeners=new Map,megaLifeCycleListeners=new Set,megaPageCloseListeners=new Set,megaSystemBackListener=null,megaKVMutationVersion=0,MEGA_KV_TOTAL_SIZE=5*1024*1024,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}function replaceMegaKVStorage(value){if(!(!value||typeof value!="object"||Array.isArray(value))){megaKVStorage.clear();for(let[bizId,rawEntries]of Object.entries(value)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,entryValue]of Object.entries(rawEntries))typeof entryValue=="string"&&entries.set(key,entryValue);megaKVStorage.set(bizId,entries)}persistMegaKVStorage()}}function applyMegaKVMutation(payload){let operation=typeof payload.operation=="string"?payload.operation:"",bizId=typeof payload.bizId=="string"?payload.bizId:"",key=typeof payload.key=="string"?payload.key:"";if(bizId){if(operation==="set"&&key&&typeof payload.value=="string"){let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,payload.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"&&key){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return;megaKVMutationVersion+=1,persistMegaKVStorage()}}function emitMegaCallback(callback,value){callback&&setTimeout(()=>callback(value),0)}function megaBroadcastBizId(value){return typeof value=="string"&&value?value:"__MEGA_GLOBAL_MESSAGE__"}function dispatchMegaBroadcast(payload){let bizId=megaBroadcastBizId(payload.bizId),eventName=typeof payload.eventName=="string"?payload.eventName:"";if(eventName)for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||(listener.once&&megaBroadcastListeners.delete(listener.id),emitMegaCallback(listener.callback,{statusCode:1,type:"onEvent",data:{detail:payload.detail}}),listener.once&&emitMegaCallback(listener.callback,{statusCode:99,type:"finish"}))}let documentPrototype=typeof Document=="function"?Document.prototype:null,nativeHiddenDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"hidden"):void 0,nativeVisibilityDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"visibilityState"):void 0;function installSimulatedVisibilityState(){if(!simulatedVisibilityInstalled){simulatedVisibilityInstalled=!0;try{Object.defineProperty(document,"hidden",{configurable:!0,get:()=>simulatedPageHidden||!!(nativeHiddenDescriptor?.get?.call(document)??!1)}),Object.defineProperty(document,"visibilityState",{configurable:!0,get:()=>simulatedPageHidden?"hidden":nativeVisibilityDescriptor?.get?.call(document)??"visible"})}catch{}}}function dispatchPageTransitionEvent(type){try{let event=typeof PageTransitionEvent=="function"?new PageTransitionEvent(type,{persisted:!1}):new Event(type);window.dispatchEvent(event)}catch{}}function dispatchActiveEvents(){for(let name of config2.activeEvents)try{document.dispatchEvent(new Event(name))}catch{}}function handlePageVisibility(hidden){if(hidden===simulatedPageHidden)return;installSimulatedVisibilityState(),simulatedPageHidden=hidden;let lifeCycleType=hidden?"onPageDisappear":"onPageAppear";for(let callback of megaLifeCycleListeners)emitMegaCallback(callback,{statusCode:1,type:lifeCycleType,data:{pageId:location.href}});try{document.dispatchEvent(new Event("visibilitychange"))}catch{}if(hidden){try{window.dispatchEvent(new Event("blur"))}catch{}dispatchPageTransitionEvent("pagehide");return}dispatchPageTransitionEvent("pageshow");try{window.dispatchEvent(new Event("focus"))}catch{}dispatchActiveEvents()}function resolveWindowFunction(path27){let parts=path27.split(".").filter(Boolean),owner=w;for(let index=0;index<parts.length-1;index+=1){let next=owner[parts[index]];if(!next||typeof next!="object")return null;owner=next}let fn=owner[parts[parts.length-1]];return typeof fn=="function"?fn.bind(owner):null}function handleNativeBack(){let megaHandled=!1;for(let callback of megaPageCloseListeners)megaHandled=!0,emitMegaCallback(callback,{statusCode:1,type:"onClose",data:{}});if(megaSystemBackListener&&(megaHandled=!0,emitMegaCallback(megaSystemBackListener,{statusCode:1,type:"onSuccess",data:{}})),megaHandled)return!0;let nativeBack=config2.nativeBack;if(!nativeBack)return!1;if(nativeBack.handler){let handler=resolveWindowFunction(nativeBack.handler);if(!handler)return!1;try{return handler(),!0}catch{return!1}}let controlled=!1;if(nativeBack.controlFunction){let control=resolveWindowFunction(nativeBack.controlFunction);if(!control)return!1;try{controlled=control()===!0}catch{return!1}if(!controlled)return!1}if(!nativeBack.event)return controlled;try{let event=new Event(nativeBack.event,{cancelable:!0});return document.dispatchEvent(event),controlled||event.defaultPrevented}catch{return controlled}}function handleAppMessage(message){if(!message||typeof message!="object")return;let payload=message;if(payload.kind==="megaBroadcast"){dispatchMegaBroadcast(payload);return}if(payload.kind==="megaKVStorage"){applyMegaKVMutation(payload);return}if(payload.kind==="legacyBroadcast"&&typeof payload.instanceId=="string"){try{let event=new CustomEvent(`Broadcast.Message.${payload.instanceId}`,{detail:payload.message});Object.defineProperty(event,"param",{configurable:!0,value:payload.message}),document.dispatchEvent(event)}catch{}return}if(payload.kind==="notification"&&typeof payload.name=="string"){let listener=notificationListeners.get(payload.name);listener&&setTimeout(()=>listener(payload.data),0);return}if(!(payload.kind!=="message"||!config2.messageEvent))try{document.dispatchEvent(new CustomEvent(config2.messageEvent,{detail:{data:payload.data}}))}catch{}}function sendAppMessage(message){if(isTop){handleAppMessage(message);return}window.top?.postMessage({source:SRC,type:"appMessageToOpener",message},"*")}function applyRuntimeResponses(responses){let current=config2.actions.responses??{};for(let[api,response]of Object.entries(responses))current[api]=response;config2.actions.responses=current}function parseFpt(value){let entries=[],normalized=value.trim();if(!normalized)return entries;let pattern3=/([0-9A-Za-z._-]+)\(([0-9A-Za-z._-]+)\)/g,consumed="";for(let match of normalized.matchAll(pattern3))consumed+=match[0],entries.push([match[1],match[2]]);return consumed===normalized?entries:[]}function setFptEntry(entries,key,value){entries.delete(key),entries.set(key,value)}function readInitialFptEntries(){let entries=new Map;try{for(let[key,value]of parseFpt(sessionStorage.getItem(FPT_STORAGE_KEY)??""))setFptEntry(entries,key,value)}catch{}try{let currentFpt=new URL(location.href).searchParams.get("fpt")??"";for(let[key,value]of parseFpt(currentFpt))setFptEntry(entries,key,value)}catch{}return entries}let fptEntries=readInitialFptEntries();function serializeFpt(entries){return Array.from(entries,([key,value])=>`${key}(${value})`).join("")}function persistFpt(){try{let value=serializeFpt(fptEntries);value?sessionStorage.setItem(FPT_STORAGE_KEY,value):sessionStorage.removeItem(FPT_STORAGE_KEY)}catch{}}function decorateUrlWithFpt(rawUrl){let targetUrl=mapScheme(rawUrl)??rawUrl;if(fptEntries.size===0)return targetUrl;try{let url2=new URL(targetUrl,location.href);if(url2.protocol!=="http:"&&url2.protocol!=="https:")return targetUrl;let merged=new Map(fptEntries);for(let[key,value]of parseFpt(url2.searchParams.get("fpt")??""))setFptEntry(merged,key,value);return url2.searchParams.set("fpt",serializeFpt(merged)),url2.href}catch{return targetUrl}}function classify(api){let a=config2.actions;return a.open.includes(api)?"open":a.close.includes(api)?"close":a.title.includes(api)?"title":a.navigationBar?.includes(api)?"navigationBar":a.statusBar?.includes(api)?"statusBar":a.systemInfo.includes(api)?"systemInfo":a.mtop.includes(api)?"mtop":a.kvGet?.includes(api)?"kvGet":a.kvSet?.includes(api)?"kvSet":a.kvDelete?.includes(api)?"kvDelete":a.pageContext?.includes(api)?"pageContext":a.responses&&Object.prototype.hasOwnProperty.call(a.responses,api)?"response":a.behaviors&&Object.prototype.hasOwnProperty.call(a.behaviors,api)?a.behaviors[api]:a.noop.includes(api)?"noop":"unknown"}function pickUrl(params){if(!params||typeof params!="object")return null;let p=params,candidates=[p.url,p.data?.url,p.param?.url,p.value?.params?.url];for(let c of candidates)if(typeof c=="string"&&c)return c;return null}function pickCloseData(params){if(params&&typeof params=="object"){let p=params;if("data"in p&&p.data!==void 0)return p.data;if(Object.keys(p).length>0)return p}}function decodeCookieValue2(raw){let value=raw;for(let i=0;i<2;i+=1)try{let decoded=decodeURIComponent(value);if(decoded===value)break;value=decoded}catch{break}return value.replace(/\\u([0-9a-f]{4})/gi,(_match,hex3)=>String.fromCharCode(Number.parseInt(hex3,16)))}function readCookie(name){let prefix=`${name}=`,pair=document.cookie.split(";").map(value=>value.trim()).find(value=>value.startsWith(prefix));return pair?decodeCookieValue2(pair.slice(prefix.length)):""}function readUserCookie(name){let pageUserCookie=w.userCookie;if(!pageUserCookie||typeof pageUserCookie!="object")return"";let value=pageUserCookie[name];return typeof value=="string"?decodeCookieValue2(value):""}function readFirstUserCookie(names){for(let name of names){let value=readCookie(name)||readUserCookie(name);if(value&&value!=="null")return value}return""}let cbSeq=0,callbacks={};function stashCallback(fn){if(typeof fn!="function")return 0;let id=++cbSeq;return callbacks[id]=fn,id}function extractQuery(url2,param){let q=url2.indexOf("?");if(q===-1)return null;for(let pair of url2.slice(q+1).split("&")){let eq=pair.indexOf("=");if(eq>0&&pair.slice(0,eq)===param)return pair.slice(eq+1)}return null}function matchesHostSuffix(hostname3,suffixes){if(!suffixes?.length)return!0;let normalizedHost=hostname3.toLowerCase().replace(/\.$/,"");return suffixes.some(value=>{let suffix=value.toLowerCase().replace(/^\./,"").replace(/\.$/,"");return normalizedHost===suffix||normalizedHost.endsWith(`.${suffix}`)})}function matchesRouteHost(rawUrl,suffixes){if(!suffixes?.length)return!0;try{let parsed=new URL(rawUrl,location.href),hostname3=parsed.protocol==="http:"||parsed.protocol==="https:"?parsed.hostname:location.hostname;return matchesHostSuffix(hostname3,suffixes)}catch{return matchesHostSuffix(location.hostname,suffixes)}}function resolveSchemeValue(raw,depth){if(depth>3)return null;let value=raw;try{value=decodeURIComponent(raw)}catch{}if(value.startsWith("{"))try{let found=pickUrl(JSON.parse(value));if(!found)return null;value=found}catch{return null}if(/^https?:/i.test(value))return value;if(/^[a-z][a-z0-9+.-]*:/i.test(value))return mapScheme(value,depth+1);let nestedUrl=extractQuery(value,"url");return nestedUrl?resolveSchemeValue(nestedUrl,depth+1):null}function mapScheme(url2,depth=0){if(depth>3)return null;let lower=url2.toLowerCase();for(let rule of config2.schemes){if(!matchesRouteHost(url2,rule.hostSuffixes))continue;let normalizedMatch=rule.match.toLowerCase(),matchedUrl=url2;if(!lower.startsWith(normalizedMatch)){if(!normalizedMatch.startsWith("/"))continue;try{let parsed=new URL(url2,location.href);if(matchedUrl=`${parsed.pathname}${parsed.search}${parsed.hash}`,!matchedUrl.toLowerCase().startsWith(normalizedMatch))continue}catch{continue}}if(rule.targetPath){let suffix=matchedUrl.slice(rule.match.length);if(suffix&&!suffix.startsWith("?")&&!suffix.startsWith("#"))continue;try{let source=new URL(matchedUrl),origin=location.origin;if(rule.targetHostPrefix){let hostname3=location.hostname.toLowerCase(),domainSuffix=hostname3==="wapa.taobao.com"||hostname3.endsWith(".wapa.taobao.com")?"wapa.taobao.com":hostname3==="m.taobao.com"||hostname3.endsWith(".m.taobao.com")?"m.taobao.com":"";domainSuffix&&(origin=`https://${rule.targetHostPrefix}.${domainSuffix}`)}let target=new URL(rule.targetPath,`${origin}/`);target.search=source.search,target.hash=source.hash;for(let[key,value]of Object.entries(rule.targetParams??{}))target.searchParams.has(key)||target.searchParams.set(key,value);return target.href}catch{return null}}if(!rule.param)continue;let raw=extractQuery(matchedUrl,rule.param);if(!raw)return null;let resolved=resolveSchemeValue(raw,depth);if(!resolved||!rule.useCurrentOrigin)return resolved;try{let target=new URL(resolved);return`${location.origin}${target.pathname}${target.search}${target.hash}`}catch{return resolved}}return null}function firstRouteParam(params,names){for(let name of names){let value=params.get(name);if(value)return value}return""}function resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){if(!rawUrl)return null;try{let target=new URL(rawUrl,location.href);for(let name of forwardParams){let value=paymentPageUrl.searchParams.get(name);value&&!target.searchParams.get(name)&&target.searchParams.set(name,value)}resultParam&&target.searchParams.set(resultParam.name,JSON.stringify(resultParam.value));let resolved=useCurrentOrigin&&(target.protocol==="http:"||target.protocol==="https:")?`${location.origin}${target.pathname}${target.search}${target.hash}`:target.href;return decorateUrlWithFpt(resolved)}catch{return null}}function openPaymentCallback(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){let target=resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam);target&&requestOpen(target,0,!1)}function handleMiniProgramPaymentRoute(rawUrl){let paymentPageUrl;try{paymentPageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=paymentPageUrl.pathname.replace(/\/+$/,"")||"/",rule=config2.miniProgram?.paymentRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&matchesHostSuffix(paymentPageUrl.hostname,candidate.hostSuffixes));if(!rule)return!1;let successUrl=firstRouteParam(paymentPageUrl.searchParams,rule.successUrlParams),failureUrl=firstRouteParam(paymentPageUrl.searchParams,rule.failureUrlParams),forwardParams=rule.forwardParams??[],useCurrentOrigin=rule.useCurrentOrigin===!0,paymentParams;try{let parsed=JSON.parse(paymentPageUrl.searchParams.get(rule.paymentParamsParam)??"");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error;paymentParams=parsed,paymentParams.timeStamp!==void 0&&(paymentParams.timeStamp=String(paymentParams.timeStamp))}catch{return log2("微信支付参数解析失败,执行失败回跳",rawUrl),openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams),!0}return showPaymentDialog("wx.requestPayment",paymentParams,result=>{openPaymentCallback(successUrl,paymentPageUrl,useCurrentOrigin,forwardParams,rule.successResultParam?{name:rule.successResultParam,value:result}:void 0)},()=>{openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams)}),!0}function finishMiniProgramNativeRoute(action,result,storageId){handleResume({data:action==="subscribeMessage"?result:void 0,storageId,callbackId:0,final:!0})}function handleMiniProgramNativeRoute(rawUrl){let nativePageUrl;try{nativePageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=nativePageUrl.pathname.replace(/\/+$/,"")||"/",action=nativePageUrl.searchParams.get("action");if(action!=="navigateMiniProgram"&&action!=="subscribeMessage"||!config2.miniProgram?.nativeRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&candidate.actions.includes(action)&&matchesHostSuffix(nativePageUrl.hostname,candidate.hostSuffixes)))return!1;let params={};nativePageUrl.searchParams.forEach((value,name)=>{params[name]=value});let storageId=nativePageUrl.searchParams.get("__storage_id");return handlePageVisibility(!0),showMiniProgramActionDialog(action,params,result=>finishMiniProgramNativeRoute(action,result,storageId),result=>finishMiniProgramNativeRoute(action,result,storageId)),!0}function handleMiniProgramPostMessage(data){let rules=config2.miniProgram?.messageRules;if(!rules?.length)return!1;let messages=Array.isArray(data)?data:[data],handled=!1;for(let value of messages){if(!value||typeof value!="object"||Array.isArray(value))continue;let message=value;if(typeof message.type!="string")continue;let rule=rules.find(candidate=>candidate.type===message.type&&matchesHostSuffix(location.hostname,candidate.hostSuffixes));rule&&(handled=!0,rule.action==="stageBackData"?(pendingMiniProgramBackData=message.data,hasPendingMiniProgramBackData=!0):rule.action==="closeAll"&&(isTop?requestCloseAll(message.data)||requestClose(message.data):window.top?.postMessage({source:SRC,type:"closeAll",data:message.data},"*")))}return handled}function matchesImagePickerScheme(url2){let lower=url2.toLowerCase();return config2.imagePicker?.schemes.some(scheme=>lower.startsWith(scheme))===!0}function createImagePickerCallbackId(){try{if(typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch{}return`${Date.now()}-${Math.random().toString(36).slice(2)}`}function handleMaybeScheme(url2){if(typeof url2!="string"||!url2||!/^[a-z][a-z0-9+.-]*:/i.test(url2)||/^(https?|about|blob|data|javascript):/i.test(url2))return!1;let mapped=mapScheme(url2);return mapped?(log2("scheme 映射为 H5 open:",url2,"→",mapped),requestOpen(decorateUrlWithFpt(mapped),0,!1)):log2("外部 scheme 已拦截(真机表现为唤端):",url2),!0}function handleResume(msg){let{data,storageId,callbackId,final,gotoEvent,silent}=msg;if(gotoEvent&&dispatchGotoEvent(data),callbackId&&callbacks[callbackId]){if(!silent)try{callbacks[callbackId]({backdata:data})}catch(e){console.error(TAG,"callbackCommand 执行失败",e)}final&&delete callbacks[callbackId]}if(data&&typeof data=="object"&&storageId)try{let d={...data};d.__$data=!0,d.__$storageId=String(storageId),localStorage.setItem("XPI_BACK_LISTENER_DATA_STORAGE",JSON.stringify(d))}catch{}simulatedPageHidden?handlePageVisibility(!1):dispatchActiveEvents()}function dispatchGotoEvent(data){if(data!==void 0)try{document.dispatchEvent(new CustomEvent("WV.GotoEvent",{detail:{data}}))}catch{}}function sendUserTrack(params){if(!params||typeof params!="object")return;let p=params,logkey=typeof p.logkey=="string"?p.logkey:"",gmkey=typeof p.gmkey=="string"?p.gmkey:typeof p.event=="string"?p.event:"",gokey=typeof p.gokey=="string"?p.gokey:"";if(!/^\/[0-9A-Za-z._/-]+$/.test(logkey)||!/^[0-9A-Za-z_-]+$/.test(gmkey))return;let pageWindow=w,aplus=pageWindow.goldlog??pageWindow.aplus;if(typeof aplus?.send!="function")return;let configuredHost=aplus.getMetaInfo?.("aplus-rhost-g"),host2=(typeof configuredHost=="string"?configuredHost:"gm.mmstat.com").replace(/^https?:\/\//i,"").replace(/^\/\//,"").split("/")[0];if(!(!host2||!/^[0-9A-Za-z.-]+$/.test(host2)))try{aplus.send(`//${host2}${logkey}`,`gmkey=${encodeURIComponent(gmkey)}&gokey=${gokey}&ts=${Date.now()}`,"GET")}catch{}}function readNetworkState(){let connection=navigator.connection;return navigator.onLine?connection?.type==="wifi"?"wifi":connection?.effectiveType??"unknown":"fail"}function networkTypeNumber(state){return{wifi:2,"slow-2g":3,"2g":3,"3g":4,"4g":5,"5g":6,fail:7}[state]??0}function emitVoiceRecognitionEvent(name,detail){try{document.dispatchEvent(new CustomEvent(name,{detail}))}catch{}}function browserSpeechRecognitionConstructor(){let candidate=w.SpeechRecognition??w.webkitSpeechRecognition;return typeof candidate=="function"?candidate:null}function voiceRecognitionLanguage(){let language=config2.language||navigator.language||"zh-CN";return/^zh-hans$/i.test(language)?"zh-CN":/^zh-hant$/i.test(language)?"zh-TW":language}function localVoiceRecognitionLanguage(language){return/^zh-(cn|hans)$/i.test(language)?"cmn-Hans-CN":/^zh-(tw|hant)$/i.test(language)?"cmn-Hant-TW":language}function detachVoiceRecognition(recognition){recognition.onstart=null,recognition.onresult=null,recognition.onerror=null,recognition.onend=null,recognition.onspeechstart=null,recognition.onspeechend=null}function finishVoiceRecognition(recognition,status){if(voiceRecognition!==recognition)return;let content=voiceRecognitionInterimTranscript.trim()||voiceRecognitionTranscript.trim();voiceRecognition=null,voiceRecognitionSession+=1,voiceRecognitionRunning=!1,voiceRecognitionStopping=!1,voiceRecognitionInterimTranscript="",detachVoiceRecognition(recognition),emitVoiceRecognitionEvent("WV.Voicetone",{tone:0}),emitVoiceRecognitionEvent("WV.VoiceRecog",{content,finished:!0,status})}function cancelVoiceRecognition(notifyPage){let recognition=voiceRecognition;if(recognition){voiceRecognition=null,voiceRecognitionSession+=1,voiceRecognitionRunning=!1,voiceRecognitionStopping=!1,voiceRecognitionInterimTranscript="",detachVoiceRecognition(recognition);try{recognition.abort()}catch{}emitVoiceRecognitionEvent("WV.Voicetone",{tone:0}),notifyPage&&emitVoiceRecognitionEvent("WV.VoiceRecogFailed",{status:2})}}function startVoiceRecognition(succeed,failed){cancelVoiceRecognition(!1);let SpeechRecognition=browserSpeechRecognitionConstructor();if(!SpeechRecognition){let error48={error_code:-1,error_message:"speech recognition unavailable"};emitVoiceRecognitionEvent("WV.VoiceRecogFailed",{status:-1,...error48}),failed(error48);return}let recognition=new SpeechRecognition,session=++voiceRecognitionSession;voiceRecognition=recognition,voiceRecognitionTranscript="",voiceRecognitionInterimTranscript="",voiceRecognitionStopping=!1,voiceRecognitionRunning=!1,recognition.continuous=!0,recognition.interimResults=!0,recognition.maxAlternatives=1,recognition.lang=voiceRecognitionLanguage();let isCurrent=()=>voiceRecognition===recognition&&voiceRecognitionSession===session,recognitionFailed=!1,failRecognition=(message,code)=>{if(!isCurrent()||recognitionFailed)return;recognitionFailed=!0;let error48={error_code:-1,error_message:message,error:code};voiceRecognition=null,voiceRecognitionSession+=1,voiceRecognitionRunning=!1,voiceRecognitionStopping=!1,detachVoiceRecognition(recognition);try{recognition.abort()}catch{}emitVoiceRecognitionEvent("WV.Voicetone",{tone:0}),emitVoiceRecognitionEvent("WV.VoiceRecogFailed",{status:-1,...error48}),failed(error48)},beginRecognition=()=>{if(isCurrent())try{recognition.start(),voiceRecognitionRunning=!0,succeed({})}catch(error48){failRecognition(error48 instanceof Error?error48.message:"speech recognition start failed","start-failed")}};recognition.onstart=()=>{isCurrent()&&(voiceRecognitionRunning=!0)},recognition.onspeechstart=()=>{isCurrent()&&emitVoiceRecognitionEvent("WV.Voicetone",{tone:10})},recognition.onspeechend=()=>{isCurrent()&&emitVoiceRecognitionEvent("WV.Voicetone",{tone:0})},recognition.onresult=event=>{if(!isCurrent()||!event.results)return;let interimTranscript="",startIndex=Math.max(0,event.resultIndex??0);for(let index=startIndex;index<event.results.length;index+=1){let result=event.results[index],transcript=result?.[0]?.transcript??"";result?.isFinal?voiceRecognitionTranscript+=transcript:interimTranscript+=transcript}let content=`${voiceRecognitionTranscript}${interimTranscript}`.trim();voiceRecognitionInterimTranscript=content,content&&emitVoiceRecognitionEvent("WV.VoiceRecogPartial",{content})},recognition.onerror=event=>{if(!isCurrent())return;let code=event.error??"unknown";code!=="no-speech"&&(code==="aborted"&&voiceRecognitionStopping||failRecognition(event.message||`speech recognition failed: ${code}`,code))},recognition.onend=()=>{if(isCurrent()){if(voiceRecognitionRunning=!1,voiceRecognitionStopping){finishVoiceRecognition(recognition,1);return}setTimeout(()=>{if(!(!isCurrent()||voiceRecognitionStopping))try{recognition.start(),voiceRecognitionRunning=!0}catch(error48){failRecognition(error48 instanceof Error?error48.message:"speech recognition restart failed","restart-failed")}},0)}};let localLanguage=localVoiceRecognitionLanguage(recognition.lang);if(typeof recognition.processLocally=="boolean"&&typeof SpeechRecognition.available=="function"){SpeechRecognition.available({langs:[localLanguage],processLocally:!0}).then(availability=>{if(isCurrent()){if(availability==="available"){recognition.lang=localLanguage,recognition.processLocally=!0,beginRecognition();return}if((availability==="downloadable"||availability==="downloading")&&typeof SpeechRecognition.install=="function"){showAppToast({message:"正在准备语音识别,首次使用可能需要一些时间",milliseconds:3e3}),SpeechRecognition.install({langs:[localLanguage],processLocally:!0}).then(installed=>{if(!installed){isCurrent()&&beginRecognition();return}if(!isCurrent()){showAppToast({message:"语音识别已准备好,请再试一次",milliseconds:3e3});return}recognition.lang=localLanguage,recognition.processLocally=!0,beginRecognition()}).catch(()=>beginRecognition());return}beginRecognition()}}).catch(()=>beginRecognition());return}beginRecognition()}function calendarTimestamp(value){if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value!="string"||!value.trim())return null;let numeric=Number(value);if(Number.isFinite(numeric)&&numeric>0)return numeric;let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}function calendarEventFromParams(params){let p=params&&typeof params=="object"?params:{},stringValue=(...values)=>values.find(value=>typeof value=="string")??"";return{title:stringValue(p.calendar_title,p.title),startTime:calendarTimestamp(p.calendar_start_ms??p.start_time??p.calendar_start_datetime),endTime:calendarTimestamp(p.calendar_end_ms??p.end_time??p.calendar_end_datetime),url:stringValue(p.calendar_url,p.url),note:stringValue(p.calendar_note,p.note),location:stringValue(p.calendar_location,p.location)}}function readCalendarEvents(){try{let parsed=JSON.parse(localStorage.getItem(CALENDAR_STORAGE_KEY)??"[]");return Array.isArray(parsed)?parsed.filter(event=>event!==null&&typeof event=="object"&&typeof event.title=="string"):[]}catch{return[]}}function writeCalendarEvents(events){try{return localStorage.setItem(CALENDAR_STORAGE_KEY,JSON.stringify(events)),!0}catch{return!1}}function sameCalendarEvent(stored,candidate){return candidate.url?stored.url===candidate.url:!!candidate.title&&stored.title===candidate.title&&(candidate.startTime===null||stored.startTime===candidate.startTime)&&(candidate.endTime===null||stored.endTime===candidate.endTime)}function calendarEventResponse(event){return{title:event.title,start_time:event.startTime,end_time:event.endTime,url:event.url,note:event.note,location:event.location}}function dispatch(api,params,onSuccess,onFailure,callbackCommandFn){let succeed=value=>{onSuccess&&setTimeout(()=>onSuccess(value),0)},failed=reason=>{onFailure&&setTimeout(()=>onFailure(reason),0)},kind=classify(api),silent=config2.actions.silent?.includes(api)===!0;if(silent||log2("桥调用",api,`(${kind})`,params??""),kind==="open"||kind==="navigate"){let p=params&&typeof params=="object"?params:{},navigationData=p.data&&typeof p.data=="object"?p.data:void 0;if(kind==="navigate"&&navigationData?.type==="back"){isTop?requestCloseAll(navigationData.data,!0)||dispatchGotoEvent(navigationData.data):window.top?.postMessage({source:SRC,type:"closeAll",data:navigationData.data,gotoEvent:!0},"*"),succeed({});return}let url2=pickUrl(params);if(!url2){failed("missing url");return}if(matchesImagePickerScheme(url2)){openImagePicker({maxSelect:1,capture:!1},urls=>{let pic=urls[0];pic&&typeof callbackCommandFn=="function"&&callbackCommandFn({pic,uuid:createImagePickerCallbackId(),timeStamp:Date.now()})},error48=>console.error(TAG,"图片选择失败:",error48)),succeed({});return}if(handleMiniProgramPaymentRoute(url2)){succeed({});return}if(handleMiniProgramNativeRoute(url2)){succeed({});return}let wd=p.useWebdialog===!0||p.useWebdialog==="true"||p.useWebdialog===1||p.useWebdialog==="1";requestOpen(decorateUrlWithFpt(url2),stashCallback(callbackCommandFn),wd,p),succeed({});return}if(kind==="closeAll"){isTop?requestCloseAll(void 0):window.top?.postMessage({source:SRC,type:"closeAll"},"*"),succeed({});return}if(kind==="closeBackData"){let p=params&&typeof params=="object"?params:{};requestClose(Object.prototype.hasOwnProperty.call(p,"backdata")?p.backdata:pickCloseData(p)),succeed({});return}if(kind==="close"){if(api==="navigateBack"&&hasPendingMiniProgramBackData){let data=pendingMiniProgramBackData;pendingMiniProgramBackData=void 0,hasPendingMiniProgramBackData=!1,requestClose(data)}else requestClose(pickCloseData(params));succeed({});return}if(kind==="postMessage"){let p=params&&typeof params=="object"?params:{},data=p.data??p;handleMiniProgramPostMessage(data)||sendAppMessage({kind:"message",data}),succeed({});return}if(kind==="notifySubscribe"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}onSuccess&&notificationListeners.set(p.name,onSuccess);return}if(kind==="notifyUnsubscribe"){let p=params&&typeof params=="object"?params:{};typeof p.name=="string"&&notificationListeners.delete(p.name),succeed({});return}if(kind==="notifyPost"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}sendAppMessage({kind:"notification",name:p.name,data:p.data}),succeed({});return}if(kind==="sharedFileRead"||kind==="sharedFileWrite"||kind==="sharedDataGet"||kind==="sharedDataSet"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="legacyBroadcastCreate"||kind==="legacyBroadcastPost"||kind==="legacyBroadcastClose"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="title"){let title=params&&typeof params=="object"?params.title??params.name:void 0;if(typeof title=="string"&&title){systemBars.markStateExplicit();try{document.title=title,syncSimulatedTitleBar()}catch{}isTop||window.top?.postMessage({source:SRC,type:"title",title},"*")}succeed({});return}if(kind==="navigationBar"){applyNavigationBarState(api,params),succeed({});return}if(kind==="statusBar"){applyStatusBarState(params),succeed({});return}if(kind==="systemInfo"){let model=config2.globals.__DEVICE_MODEL__||"iPhone",info={language:config2.language,model,systemVersion:config2.systemVersion,statusBarHeight:config2.statusBarHeight,platform:config2.platform,brand:config2.platform==="iOS"?"Apple":"Android",client_version:config2.globals.__APP_VERSION__??"",client_type:config2.clientType};succeed(api==="WVNativeDetector.getModelInfo"?{...info,platform:model}:info);return}if(kind==="mtop"){callMtop(params??{},onSuccess,onFailure);return}if(kind==="mtopStream"){callMtopStream(params??{},succeed,failed);return}if(kind==="kvGet"||kind==="kvSet"||kind==="kvDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed("missing key");return}try{let storageKey=`__mearl_app_kv__:${key}`;if(kind==="kvGet"){let stored=localStorage.getItem(storageKey);stored!==null?succeed(stored):failed(JSON.stringify({ret:["HY_FAILED"],msg:"key not found"}))}else if(kind==="kvSet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);localStorage.setItem(storageKey,value),succeed({})}else localStorage.removeItem(storageKey),succeed({})}catch{failed(JSON.stringify({ret:["HY_FAILED"],msg:"kv storage unavailable"}))}return}if(kind==="pageContext"){succeed({pageContext:void 0});return}if(kind==="memoryGet"||kind==="memorySet"||kind==="memoryDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed({error_message:"missing key"});return}try{let storageKey=`__mearl_app_memory__:${key}`;if(kind==="memoryGet"){let value=sessionStorage.getItem(storageKey);succeed(value===null?{}:{value})}else if(kind==="memorySet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);sessionStorage.setItem(storageKey,value),succeed({key,success:!0})}else sessionStorage.removeItem(storageKey),succeed({key,success:!0})}catch{failed({error_message:"memory cache unavailable"})}return}if(kind==="availabilityMap"){let p=params&&typeof params=="object"?params:{},channels=Array.isArray(p.data)?p.data.filter(value=>typeof value=="string"):[];succeed({res:"success",data:Object.fromEntries(channels.map(channel=>[channel,!1]))});return}if(kind==="userInfo"){let userId=readFirstUserCookie(["unb"]),userName=readFirstUserCookie(["_w_tb_nick","_nk_","snk","tracknick"]);callUserInfo({...userId&&{userId},...userName&&{userName}},succeed);return}if(kind==="authCode"){callAuthCode(params,succeed,failed);return}if(kind==="networkInfo"){let state=readNetworkState();if(api==="WVNetwork.getNetworkType"){succeed({type:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G"}[state]??"UNKNOWN"});return}if(config2.policies?.networkResult==="alipay"){succeed({networkAvailable:state!=="fail",networkType:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G",fail:"NOTREACHABLE"}[state]??"UNKNOWN"});return}let type=networkTypeNumber(state);succeed({type,state:state==="slow-2g"?"2g":state});return}if(kind==="networkQualityMonitor"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"";if(action==="add_notify_network_quality"){if(!stopNetworkQualityMonitor){let notify=()=>{try{document.dispatchEvent(new CustomEvent("WV.NETWORK_TYPE_CHANGED",{detail:{new_network_type:networkTypeNumber(readNetworkState())}}))}catch{}},connection=navigator.connection;window.addEventListener("online",notify),window.addEventListener("offline",notify),connection?.addEventListener?.("change",notify),stopNetworkQualityMonitor=()=>{window.removeEventListener("online",notify),window.removeEventListener("offline",notify),connection?.removeEventListener?.("change",notify)}}succeed({});return}if(action==="remove_notify_network_quality"){stopNetworkQualityMonitor?.(),stopNetworkQualityMonitor=null,succeed({});return}failed({error_message:"unsupported network quality monitor action"});return}if(kind==="voiceRecognition"){let status=Number((params&&typeof params=="object"?params:{}).status);if(status===0){startVoiceRecognition(succeed,failed);return}if(status===1){let recognition=voiceRecognition;if(recognition)if(voiceRecognitionStopping=!0,voiceRecognitionRunning)try{recognition.stop()}catch{finishVoiceRecognition(recognition,1)}else finishVoiceRecognition(recognition,1);succeed({});return}if(status===2){cancelVoiceRecognition(!0),succeed({});return}failed({error_code:-1,error_message:"unsupported voice recognition status"});return}if(kind==="beaconRequest"){let url2=pickUrl(params);if(!url2){failed({error_message:"missing url"});return}try{let resolved=new URL(url2,location.href);if(resolved.protocol!=="http:"&&resolved.protocol!=="https:"){failed({error_message:"unsupported request protocol"});return}let image=new Image;image.referrerPolicy="no-referrer-when-downgrade",image.src=resolved.href,succeed({})}catch{failed({error_message:"invalid url"})}return}if(kind==="calendar"){let p=params&&typeof params=="object"?params:{},events=readCalendarEvents();if(api==="store_calendar_event"){let event=calendarEventFromParams(p);if(!event.title||event.startTime===null){failed({error_message:"calendar title and start time are required"});return}let next=events.filter(stored=>!sameCalendarEvent(stored,event));if(next.push(event),!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0});return}if(api==="remove_calendar_event"){let candidate=calendarEventFromParams(p),next=events.filter(stored=>!sameCalendarEvent(stored,candidate));if(!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0,removed:events.length-next.length});return}if(api==="check_batch_calendar"){let batch=Array.isArray(p.batch)?p.batch:[];succeed({batch:batch.map(item=>{let candidate=calendarEventFromParams(item);return{...item&&typeof item=="object"?item:{},success:events.some(stored=>sameCalendarEvent(stored,candidate))}})});return}let urls=Array.isArray(p.urls)?p.urls.filter(value=>typeof value=="string"):typeof p.url=="string"?[p.url]:[],titles=Array.isArray(p.calendar_titles)?p.calendar_titles.filter(value=>typeof value=="string"):typeof p.calendar_title=="string"?[p.calendar_title]:[],matched=events.filter(event=>(urls.length===0||urls.includes(event.url))&&(titles.length===0||titles.includes(event.title)));succeed({events:matched.map(calendarEventResponse)});return}if(kind==="geolocation"){let p=params&&typeof params=="object"?params:{},windvane=api==="WVLocation.getLocation",wechat=api==="getLocation"&&config2.bridges.some(bridge=>bridge.style==="wechat"),failLocation=(errorCode,errorMsg)=>{failed({errorCode,errorMsg,...windvane&&{ret:["HY_FAILED"],errMsg:errorCode===1?"PERMISSION_DENIED":"POSITION_UNAVAILABLE",message:errorMsg},...wechat&&{errMsg:`getLocation:fail ${errorMsg}`}})};if(wechat&&p.type&&p.type!=="wgs84"){failLocation(2,`unsupported coordinate type: ${String(p.type)}`);return}if(!navigator.geolocation){failLocation(2,"geolocation unavailable");return}let locate=()=>navigator.geolocation.getCurrentPosition(position=>{let{latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed}=position.coords,coords={latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed};if(api==="lbs"){let provider=config2.geolocation;if(!provider){failLocation(2,"reverse geocoding unavailable");return}callMtop({api:provider.reverseGeocodeApi,v:provider.version,data:{latitude,longitude,includeGJ:1},timeout:5e3},value=>{let response=value??{},address=response.data??{};if(!Array.isArray(response.ret)||!response.ret.some(ret=>typeof ret=="string"&&ret.startsWith("SUCCESS::"))||typeof address.cityName!="string"||!address.cityName.trim()||typeof address.cityCode!="string"||!address.cityCode.trim()){failLocation(2,"reverse geocoding returned no city");return}succeed({...coords,timestamp:position.timestamp,country:address.country,province:address.province,district:address.district,city:address.cityName,cityName:address.cityName,cityCode:address.cityCode,divisionId:address.divisionId,iataCode:address.iataCode,address:address.detail})},()=>failLocation(2,"reverse geocoding failed"));return}succeed(windvane?{ret:["HY_SUCCESS"],coords,timestamp:position.timestamp}:{...coords,timestamp:position.timestamp,...wechat&&{errMsg:"getLocation:ok"}})},error48=>failLocation(error48.code,error48.message),{enableHighAccuracy:p.enableHighAccuracy===!0||p.enableHighAcuracy===!0,timeout:1e4,maximumAge:p.useCache===!1?0:3e5});navigator.permissions?.query?navigator.permissions.query({name:"geolocation"}).then(status=>{status.state==="granted"?locate():failLocation(1,"location permission not granted")}).catch(locate):locate();return}if(kind==="permission"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",permission=typeof p.permission=="string"?p.permission:"",permissionFailed=message=>failed({error_code:-1,error_message:message});if(permission==="album"||permission==="MODIFY_AUDIO_SETTINGS"){action==="check"||action==="request"?succeed({}):permissionFailed("unsupported permission action");return}let browserPermission=permission==="mic"?"microphone":permission==="camera"?"camera":permission==="lbs"?"geolocation":"";if(!browserPermission){permissionFailed("unsupported permission");return}if(action==="check"&&navigator.permissions?.query){navigator.permissions.query({name:browserPermission}).then(status=>{status.state==="granted"?succeed({}):permissionFailed("permission not granted")}).catch(()=>permissionFailed("permission check failed"));return}if(action==="request"&&(permission==="mic"||permission==="camera")){if(!navigator.mediaDevices?.getUserMedia){permissionFailed("media permission unavailable");return}navigator.mediaDevices.getUserMedia({audio:permission==="mic",video:permission==="camera"}).then(stream=>{for(let track of stream.getTracks())track.stop();succeed({})}).catch(()=>permissionFailed("permission denied"));return}if(action==="request"&&permission==="lbs"&&navigator.geolocation){navigator.geolocation.getCurrentPosition(()=>succeed({}),()=>permissionFailed("permission denied"),{timeout:1e4});return}permissionFailed("unsupported permission action");return}if(kind==="imagePicker"){let p=params&&typeof params=="object"?params:{},requestedMaxSelect=Number(p.maxSelect??p.max_select),maxSelect=Number.isFinite(requestedMaxSelect)?requestedMaxSelect:1,pickType=Number(p.pickType??p.pick_type),uploadType=Number(p.uploadType??p.upload_type);openImagePicker({maxSelect,capture:pickType===1,resultType:uploadType===3?"dataUrl":"uploadedUrl"},urls=>succeed({imgUrls:urls}),failed);return}if(kind==="prefetch"){let p=params&&typeof params=="object"?params:{},url2=typeof p.url=="string"?p.url:"";if(!url2){failed({code:-1,errorMsg:"url is empty"});return}let resolvedUrl;try{resolvedUrl=new URL(url2,location.href).href}catch{failed({code:-1,errorMsg:"invalid url"});return}if(!Array.from(document.querySelectorAll('link[rel="prefetch"]')).some(link=>link.href===resolvedUrl)){let link=document.createElement("link");link.rel="prefetch",link.href=url2,(document.head??document.documentElement).appendChild(link)}succeed({});return}if(kind==="fptTrack"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",actionParams=p.params&&typeof p.params=="object"?p.params:{},key=typeof actionParams.key=="string"?actionParams.key:"";if(action==="setFpt"){let value=typeof actionParams.value=="string"?actionParams.value:"";if(!key||!value||!/^[0-9A-Za-z._-]+$/.test(key)||!/^[0-9A-Za-z._-]+$/.test(value)||`${key}(${value})`.length>100){failed({error_message:"invalid fpt key or value"});return}setFptEntry(fptEntries,key,value),persistFpt()}else action==="deleteFpt"&&key&&(fptEntries.delete(key),persistFpt());succeed({});return}if(kind==="previewFile"){let p=params&&typeof params=="object"?params:{},fileUrl=typeof p.file_url=="string"?p.file_url:"",remoteUrl=typeof p.file_remote_url=="string"?p.file_remote_url:"",url2=(fileUrl.startsWith("http")?fileUrl:remoteUrl)||fileUrl||remoteUrl;url2?(requestOpen(url2,0,!1),succeed({})):failed({code:-1,errorMsg:"file_url is empty"});return}if(kind==="toast"){let error48=showAppToast(params);error48?failed({error_message:error48}):succeed({});return}if(kind==="unsupportedNativeInput"){let containerType="";try{containerType=new URL(location.href).searchParams.get("containerType")??""}catch{}!unsupportedNativeInputNotified&&(containerType==="h5_dx"||containerType==="flutter_h5")&&(unsupportedNativeInputNotified=!0,showAppToast({message:"当前页面使用原生输入框,请移除 URL 中的 containerType 参数以正常操作",milliseconds:4e3})),succeed({});return}if(kind==="payment"){log2("桥调用支付,等待用户确认",api,params),showPaymentDialog(api,params,succeed,failed);return}if(kind==="userTrack"){sendUserTrack(params),succeed({});return}if(kind==="response"){succeed(config2.actions.responses?.[api]);return}if(kind==="noop"){succeed({});return}silent||log2("未覆盖桥方法,回调 failure(页面库将走 H5 兜底):",api),failed(NOT_IMPLEMENTED_PAYLOAD)}let MEGA_SUPPORTED_APIS={stdPop:["showWeex2","showWeex","showH5","changeSize","close"],broadcast:["addEventListener","dispatchEvent","removeEventListener"],kvStorage:["setItem","getItem","removeItem","getAllKeys","clear","getCurrentInfo","getCurrentInfoAndKeys"],LifeCycle:["addPageLifeCycleListener","removePageLifeCycleListener"],Container:["interceptPageClose","disableInterceptPageClose"],navigator:["openURL","close","replace","setSystemBackBlockListener","removeSystemBackBlockListener"],NavBar:["setTitle"],Router:["popPage"]};function isMegaApiSupported(ability,api){return typeof ability=="string"&&typeof api=="string"&&MEGA_SUPPORTED_APIS[ability]?.includes(api)===!0}function megaParams(value){return value&&typeof value=="object"&&!Array.isArray(value)?value:{}}function megaError(callback,statusCode,message){emitMegaCallback(callback,{statusCode,type:"result",data:{errorMessage:typeof message=="string"?message:String(message??"")}})}function cloneMegaDetail(value){if(value===void 0)return{success:!0,value:void 0};try{return{success:!0,value:JSON.parse(JSON.stringify(value))}}catch{return{success:!1}}}function megaSuccess(data={}){return{statusCode:0,type:"result",data}}function megaFailure(message){return{statusCode:500,type:"result",data:{errorMessage:message}}}function megaKVParams(params){return{bizId:typeof params.bizID=="string"?params.bizID:typeof params.bizId=="string"?params.bizId:"",key:typeof params.key=="string"?params.key:"",value:typeof params.value=="string"?params.value:null}}function megaStringByteLength(value){try{return typeof TextEncoder=="function"?new TextEncoder().encode(value).length:value.length}catch{return value.length}}function megaKVUsedSize(entries){let size=0;for(let value of entries.values())size+=megaStringByteLength(value);return size}function reportMegaKVMutation(operation,bizId,key="",value,onSuccess,onFailure){requestContainerData("megaKVMutation",{operation,bizId,key,...value===void 0?{}:{value}},()=>onSuccess?.(),reason=>{log2("KVStorage 容器同步失败:",reason),onFailure?.(reason)})}function completeMegaKVMutation(operation,bizId,key,value,synchronous,callback){let result=megaSuccess();return reportMegaKVMutation(operation,bizId,key,value,synchronous?void 0:()=>emitMegaCallback(callback,result),synchronous?void 0:reason=>emitMegaCallback(callback,megaFailure(String(reason??"container sync failed")))),synchronous?result:null}function executeMegaKVStorage(api,params,synchronous,callback){let{bizId,key,value}=megaKVParams(params);if(!bizId)return megaFailure("missing bizID");let entries=megaKVStorage.get(bizId)??new Map;if(api==="setItem"){if(!key)return megaFailure("missing key");if(value===null||value==="")return megaFailure("missing value");let previousSize=megaStringByteLength(entries.get(key)??"");return megaKVUsedSize(entries)-previousSize+megaStringByteLength(value)>MEGA_KV_TOTAL_SIZE?megaFailure("KVStorage quota exceeded"):(entries.set(key,value),megaKVStorage.set(bizId,entries),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("set",bizId,key,value,synchronous,callback))}if(api==="getItem"){if(!key)return megaFailure("missing key");let result=entries.get(key)??"";return megaSuccess(synchronous?{result}:result)}if(api==="removeItem")return key?(entries.delete(key),entries.size===0&&megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("remove",bizId,key,void 0,synchronous,callback)):megaFailure("missing key");if(api==="getAllKeys"){let result=Array.from(entries.keys());return megaSuccess(synchronous?{result}:result)}if(api==="clear")return megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("clear",bizId,"",void 0,synchronous,callback);if(api==="getCurrentInfo"||api==="getCurrentInfoAndKeys"){let data={totalSize:MEGA_KV_TOTAL_SIZE,freeSize:Math.max(MEGA_KV_TOTAL_SIZE-megaKVUsedSize(entries),0)};return api==="getCurrentInfoAndKeys"&&(data.keys=Array.from(entries.keys())),megaSuccess(data)}return{statusCode:405,type:"result",data:{}}}function handleMegaLifeCycle(api,callback){if(api==="addPageLifeCycleListener"){callback&&megaLifeCycleListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="removePageLifeCycleListener"){let listeners=Array.from(megaLifeCycleListeners);megaLifeCycleListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`LifeCycle.${api} is not supported`)}function handleMegaContainer(api,callback){if(api==="interceptPageClose"){callback&&megaPageCloseListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="disableInterceptPageClose"){let listeners=Array.from(megaPageCloseListeners);megaPageCloseListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`Container.${api} is not supported`)}function megaNavigationUrl(params){let rawUrl=pickUrl(params);if(!rawUrl)return null;if(!params.extQuery||typeof params.extQuery!="object"||Array.isArray(params.extQuery))return rawUrl;try{let target=new URL(rawUrl,location.href);for(let[key,value]of Object.entries(params.extQuery))value!=null&&target.searchParams.set(key,String(value));return target.href}catch{return rawUrl}}function handleMegaNavigator(api,params,callback){if(api==="openURL"||api==="replace"){let url2=megaNavigationUrl(params);if(!url2){megaError(callback,500,"missing url");return}let callbackId=api==="openURL"&&callback?stashCallback(value=>{let backdata=value&&typeof value=="object"?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onResult",data:{result:!0,...backdata===void 0?{}:{data:backdata}}}),emitMegaCallback(callback,{statusCode:99,type:"finish",data:{}})}):0;requestOpen(url2,callbackId,!1,{...params,...api==="replace"?{__mearlReplace:!0}:{}}),emitMegaCallback(callback,megaSuccess());return}if(api==="close"){emitMegaCallback(callback,megaSuccess()),requestClose(void 0);return}if(api==="setSystemBackBlockListener"){megaSystemBackListener&&megaSystemBackListener!==callback&&emitMegaCallback(megaSystemBackListener,{statusCode:99,type:"finish",data:{}}),megaSystemBackListener=callback??null,emitMegaCallback(callback,megaSuccess());return}if(api==="removeSystemBackBlockListener"){let listener=megaSystemBackListener;megaSystemBackListener=null,emitMegaCallback(callback,megaSuccess()),listener&&emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`navigator.${api} is not supported`)}function handleMegaNavBar(api,params,callback){if(api!=="setTitle"){megaError(callback,405,`NavBar.${api} is not supported`);return}applyNavigationBarState(api,params),emitMegaCallback(callback,megaSuccess())}function handleMegaRouter(api,callback){if(api!=="popPage"){megaError(callback,405,`Router.${api} is not supported`);return}emitMegaCallback(callback,megaSuccess()),requestClose(void 0)}function handleMegaStdPop(api,params,callback){if(api==="showH5"||api==="showWeex2"||api==="showWeex"){let url2=pickUrl(params),popId=typeof params.popId=="string"?params.popId.trim():"";if(!url2||!popId){megaError(callback,500,url2?"missing popId":"missing url");return}let callbackId=stashCallback(value=>{let result=value&&typeof value=="object"&&"backdata"in value?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onClose",data:result}),emitMegaCallback(callback,{statusCode:99,type:"finish"})});requestOpen(url2,callbackId,!0,{...params,__mearlMegaPopId:popId}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(api==="close"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}let cloned=cloneMegaDetail(params.result);if(!cloned.success){megaError(callback,500,"result is not serializable");return}requestContainerData("megaPopClose",{popId,result:cloned.value},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="changeSize"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}requestContainerData("megaPopResize",{...params,popId},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}megaError(callback,405,`stdPop.${api} is not supported`)}function handleMegaBroadcast(api,params,callback){let bizId=megaBroadcastBizId(params.bizId),eventName=typeof params.eventName=="string"?params.eventName.trim():"";if(!eventName){megaError(callback,500,"missing eventName");return}if(api==="addEventListener"){if(!callback)return;let id=`mearl-mega-listener-${++megaListenerSeq}`;megaBroadcastListeners.set(id,{id,bizId,eventName,once:params.once===!0,callback}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),emitMegaCallback(callback,{statusCode:1,type:"onAdd",data:{listenerId:id}});return}if(api==="dispatchEvent"){let detail=cloneMegaDetail(params.detail);if(!detail.success){megaError(callback,500,"detail is not serializable");return}requestContainerData("megaBroadcast",{message:{kind:"megaBroadcast",bizId,eventName,detail:detail.value}},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="removeEventListener"){let listenerId=typeof params.listenerId=="string"?params.listenerId:"",removed=[];for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||listenerId&&listener.id!==listenerId||(megaBroadcastListeners.delete(listener.id),removed.push(listener));emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});for(let listener of removed)emitMegaCallback(listener.callback,{statusCode:99,type:"finish"});return}megaError(callback,405,`broadcast.${api} is not supported`)}function makeMegaBridge(){return{asyncCall:(ability,api,rawParams,callback)=>{let params=megaParams(rawParams);if(ability==="ability"&&api==="available"){emitMegaCallback(callback,{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}});return}if(ability==="ability"&&api==="batchFinishTrace"){emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(!isMegaApiSupported(ability,api)){megaError(callback,405,`${ability}.${api} is not supported`);return}if(ability==="stdPop")handleMegaStdPop(api,params,callback);else if(ability==="broadcast")handleMegaBroadcast(api,params,callback);else if(ability==="kvStorage"){let result=executeMegaKVStorage(api,params,!1,callback);result&&emitMegaCallback(callback,result)}else ability==="LifeCycle"?handleMegaLifeCycle(api,callback):ability==="Container"?handleMegaContainer(api,callback):ability==="navigator"?handleMegaNavigator(api,params,callback):ability==="NavBar"?handleMegaNavBar(api,params,callback):handleMegaRouter(api,callback)},syncCall:(ability,api,rawParams)=>{let params=megaParams(rawParams);return ability==="ability"&&api==="available"?{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}}:ability==="kvStorage"&&isMegaApiSupported(ability,api)?executeMegaKVStorage(api,params,!0)??megaFailure("container sync pending"):{statusCode:405,type:"result",data:{}}}}}function makeBridge(style){if(style==="mega")return makeMegaBridge();if(style==="easybikeNative"){let callNative=rawPayload=>{let payload;try{payload=typeof rawPayload=="string"?JSON.parse(rawPayload):rawPayload??{}}catch{return}let classMap=typeof payload.classMap=="string"?payload.classMap:"",method=typeof payload.method=="string"?payload.method:"",callbackId=typeof payload.callbackId=="string"||typeof payload.callbackId=="number"?String(payload.callbackId):"",params;try{params=typeof payload.params=="string"?payload.params?JSON.parse(payload.params):{}:payload.params??{}}catch{params={}}let complete=(code,data,msg="")=>{let callback=resolveWindowFunction("callBack");callbackId&&callback&&callback({callbackId,code,data,msg})};dispatch(`${classMap}.${method}`,params,value=>complete(0,value),error48=>complete(1,void 0,typeof error48=="string"?error48:String(error48??"")))};return{postMessage:callNative,callNative}}if(style==="windvane"){let call=(api,params,success2,failure)=>{let onSuccess=typeof success2=="function"?success2:void 0,onFailure=typeof failure=="function"?failure:void 0;if(onSuccess||onFailure){dispatch(api,params,onSuccess,onFailure);return}return new Promise((resolve11,reject)=>dispatch(api,params,resolve11,reject))};return{isAvailable:!0,version:"8.7.0",call2:call,call:(cls,method,params,succ,fail2)=>call(`${cls}.${method}`,params,succ,fail2)}}if(style==="fliggy"||style==="alipay"||style==="callback"){let bridge={call:(api,params,succ,fail2)=>{typeof params=="function"&&(fail2=succ,succ=params,params=void 0);let p=params&&typeof params=="object"?params:{},successFn=succ??(typeof p.success_callback=="function"?p.success_callback:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0),failureFn=fail2??(typeof p.fail_callback=="function"?p.fail_callback:void 0)??(typeof p.failure_callback=="function"?p.failure_callback:void 0)??(typeof p.failCallback=="function"?p.failCallback:void 0)??(typeof p.failureCallback=="function"?p.failureCallback:void 0);dispatch(api,p,res=>successFn?.(res),err=>{failureFn?failureFn(err):successFn?.({error:err})},p.callbackCommand??p.callback_command)},pushBack:(prefixOrApi,apiOrParams,paramsOrSucc,succ)=>{let api=prefixOrApi,params=apiOrParams,success2=paramsOrSucc;typeof apiOrParams=="string"&&(api=apiOrParams,params=paramsOrSucc,success2=succ);let p=params??{},successFn=(typeof success2=="function"?success2:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0);return dispatch(api,p,res=>successFn?.(res),void 0,p.callbackCommand??p.callback_command),bridge},sendUriScheme:uri=>(handleMaybeScheme(uri),bridge)};if(style==="fliggy"){let normalizedAppName=(config2.globals.__APP_NAME__??"").toUpperCase(),os13=config2.clientType==="iphone"?"ios":"android",isAliApp=name=>normalizedAppName===name.toUpperCase();Object.assign(bridge,{version:"1.0.21",device:{os:os13,OS:config2.platform,type:os13,version:config2.systemVersion,model:config2.globals.__DEVICE_MODEL__??""},platform:os13,isAliApp,isTmall:isAliApp("TM"),isTaobao:isAliApp("TB"),isAlipay:isAliApp("AP"),isAlitrip:isAliApp("LX"),isKoubei:isAliApp("KB"),isElm:isAliApp("ELMC"),isGaode:isAliApp("amap"),isUC:/UCBrowser/i.test(config2.userAgent),isWeibo:/Weibo/i.test(config2.userAgent),isWeixin:/MicroMessenger/i.test(config2.userAgent),isWindVane:config2.bridges.some(item=>item.style==="windvane"),isAlipayClient:/AlipayClient/i.test(config2.userAgent)})}return bridge}if(style==="btrip")return{call:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="invoke")return{invoke:(api,params)=>{let p=params??{};dispatch(api,p,p.success,p.fail)}};if(style==="callHandler")return{callHandler:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="amap")return{ready:cb=>cb?.(),send:(msg,cb)=>{let m=msg??{};dispatch(typeof m.action=="string"?m.action:"",m,res=>cb?.(res),err=>cb?.({error:err}))}};if(style==="didi")return{openPage:params=>dispatch("openPage",params??{},void 0,void 0),closePage:params=>dispatch("closePage",params??{},void 0,void 0)};if(style==="wechat"||style==="wechatMiniProgram"){let invoke3=(api,params)=>{let p=params&&typeof params=="object"?params:{};dispatch(api,p,value=>{p.success?.(value),p.complete?.(value)},error48=>{p.fail?.(error48),p.complete?.(error48)})};return style==="wechat"?{ready:callback=>{callback&&setTimeout(callback,0)},getLocation:params=>invoke3("getLocation",params)}:{navigateTo:params=>invoke3("navigateTo",params),redirectTo:params=>invoke3("redirectTo",params),switchTab:params=>invoke3("switchTab",params),reLaunch:params=>invoke3("reLaunch",params),navigateBack:params=>invoke3("navigateBack",params),postMessage:params=>invoke3("postMessage",params),getEnv:callback=>{callback&&setTimeout(()=>callback({miniprogram:!0}),0)}}}return{}}function setGlobal(path27,value){let parts=path27.split("."),obj=w;for(let i=0;i<parts.length-1;i++){let cur=obj[parts[i]];(!cur||typeof cur!="object")&&(obj[parts[i]]={}),obj=obj[parts[i]]}obj[parts[parts.length-1]]=value}function setPersistentGlobal(path27,value){let parts=path27.split(".").filter(Boolean);if(parts.length<2){setGlobal(path27,value);return}let[rootKey,...nestedParts]=parts,isObjectLike=candidate=>typeof candidate=="object"&&candidate!==null||typeof candidate=="function",attachBridge=candidate=>{let root=isObjectLike(candidate)?candidate:{},obj=root;for(let index=0;index<nestedParts.length-1;index+=1){let key=nestedParts[index],child=obj[key];if(!isObjectLike(child))try{obj[key]={}}catch{return root}obj=obj[key]}let leaf=nestedParts[nestedParts.length-1];try{Object.defineProperty(obj,leaf,{configurable:!1,enumerable:!0,get:()=>value,set:()=>{}})}catch{try{obj[leaf]=value}catch{}}return root},currentRoot=attachBridge(w[rootKey]);try{Object.defineProperty(w,rootKey,{configurable:!1,enumerable:!0,get:()=>currentRoot,set:next=>{currentRoot=attachBridge(next)}})}catch{w[rootKey]=currentRoot}}if(config2.bridges.some(spec=>spec.style==="mega")){let hydrationVersion=megaKVMutationVersion;requestContainerData("megaKVSnapshot",{},value=>{let entries=value&&typeof value=="object"?value.entries:void 0;megaKVMutationVersion===hydrationVersion&&replaceMegaKVStorage(entries)},()=>{})}for(let spec of config2.bridges)try{let bridge=makeBridge(spec.style);spec.persistent?setPersistentGlobal(spec.global,bridge):setGlobal(spec.global,bridge)}catch(e){console.error(TAG,"桥安装失败:",spec.global,e)}return{mapScheme,handleMaybeScheme,handleAppMessage,handleNativeBack,handleResume,handlePageVisibility,applyRuntimeResponses}}function installAppProfileContainerStack(config2,environment,links){let{SRC,TAG,simulateSystemBars,ROOT_FRAME_NAME,LAYER_FRAME_NAME,isTop,isRootFrame,isLayerFrame,isContainerFrame,usesRootContainer,log:log2}=environment,{pageTransport}=links,initialLayerTitleBarState=url2=>links.getSystemBars().initialLayerTitleBarState(url2),resolvedTitleBarState=layer=>links.getSystemBars().resolvedTitleBarState(layer),parseReportedTitleBarState=value=>links.getSystemBars().parseReportedTitleBarState(value),createSimulatedNavigationBarView=(placement,onBack)=>links.getSystemBars().createNavigationBarView(placement,onBack),destroySimulatedNavigationBarView=view=>links.getSystemBars().destroyNavigationBarView(view),syncLayerViewport=(layer,state)=>links.getSystemBars().syncLayerViewport(layer,state),syncActiveSystemBars=()=>links.getSystemBars().syncActiveSystemBars(),syncSimulatedTitleBar=()=>links.getSystemBars().syncSimulatedTitleBar(),rootContainerActive=!1,rootOverlayActive=!1,rootFrame=null,rootBusinessUrl=location.href,splitScreenActive=usesRootContainer&&config2.rootContainer?.splitScreen===!0,webViewEnvironmentRequestSeq=0,simulatedPageHidden=!1,runtimeResponses=null;function syncSimulatorStateToWindow(target){target&&(target.postMessage({source:SRC,type:"requestTitleBarState"},"*"),runtimeResponses&&target.postMessage({source:SRC,type:"runtimeResponses",profile:config2.profile,responses:runtimeResponses},"*"),simulatedPageHidden&&target.postMessage({source:SRC,type:"simulatorVisibility",hidden:!0},"*"))}function startPreparedWebViewNavigation(frame,target,canCommit,registerCleanup){let insets=config2.safeAreaInsets??{top:config2.statusBarHeight,right:0,bottom:0,left:0};if(!usesRootContainer||!Object.values(insets).some(value=>value>0)){canCommit()&&(frame.src=target);return}let requestId=++webViewEnvironmentRequestSeq,startedAt=Date.now(),settled=!1,fallbackTimer=0,cleanup=()=>{settled||(settled=!0,clearTimeout(fallbackTimer),window.removeEventListener("message",handleResponse),registerCleanup?.(null))},commitNavigation=fallbackReason=>{cleanup(),fallbackReason&&console.warn(TAG,"WebView 环境准备未完成,降级提交导航",JSON.stringify({reason:fallbackReason,elapsedMs:Date.now()-startedAt,requestId,target})),canCommit()&&(frame.src=target)},handleResponse=event=>{if(event.source!==window||event.data?.source!=="mearl-content"||event.data?.type!=="APP_BRIDGE_PREPARE_WEBVIEW_RESPONSE"||event.data?.requestId!==requestId)return;let result=event.data.result;result?.success===!0?commitNavigation():commitNavigation(String(result?.error??"unknown preparation failure"))};registerCleanup?.(cleanup),window.addEventListener("message",handleResponse),fallbackTimer=setTimeout(()=>commitNavigation("preparation timed out after 500ms"),500);try{window.postMessage({source:SRC,type:"prepareWebView",requestId},"*")}catch(error48){commitNavigation(error48 instanceof Error?error48.message:String(error48))}}function installRootContainer(){if(!usesRootContainer||!/^https?:$/i.test(location.protocol)||!/^(text\/html|application\/xhtml\+xml)$/i.test(document.contentType))return;let shellRoot,frame;try{let rootOverlay=splitScreenActive?null:resolveOverlayPresentation(rootBusinessUrl,void 0,!1);rootOverlayActive=rootOverlay!==null;for(let cookie of config2.rootContainer?.initialCookies??[]){if(!cookie.name)continue;let parts=[`${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`,`Path=${cookie.path??"/"}`];cookie.domain&&parts.push(`Domain=${cookie.domain}`),document.cookie=parts.join("; ")}shellRoot=document.createElement("html");let shellHead=document.createElement("head"),charset=document.createElement("meta"),viewport=document.createElement("meta"),title=document.createElement("title"),shellBody=document.createElement("body");if(frame=document.createElement("iframe"),shellRoot.setAttribute("data-mearl-app-shell",""),shellBody.setAttribute("data-mearl-app-shell",""),charset.setAttribute("charset","utf-8"),viewport.name="viewport",viewport.content="width=device-width,initial-scale=1,viewport-fit=cover",shellHead.append(charset,viewport,title),shellRoot.append(shellHead,shellBody),shellRoot.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",shellBody.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",frame.name=ROOT_FRAME_NAME,frame.setAttribute("data-mearl-root-webview",config2.profile),frame.setAttribute("allow","microphone; on-device-speech-recognition"),splitScreenActive&&frame.setAttribute("data-mearl-split-pane","left"),frame.style.cssText=rootOverlay?"position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;":splitScreenActive?"position:fixed;left:0;right:auto;top:0;bottom:0;width:50%;height:100%;border:0;border-right:1px solid rgba(15,23,42,.14);box-sizing:border-box;display:block;background:#fff;z-index:0;opacity:1;":"position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",frame.addEventListener("load",()=>{let committedSrc=frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(frame.contentWindow),requestAnimationFrame(()=>{rootFrame!==frame||!frame.isConnected||(frame.setAttribute("data-mearl-webview-ready",""),syncSimulatedTitleBar())}))}),rootOverlay){let overlayRoot=document.createElement("div"),mask=document.createElement("div"),sheet=document.createElement("div"),width=rootOverlay.widthRatio*100,left=(1-rootOverlay.widthRatio)/2*100;overlayRoot.setAttribute("data-mearl-root-overlay",config2.profile),mask.setAttribute("data-mearl-root-overlay-mask",""),sheet.setAttribute("data-mearl-root-overlay-sheet",""),overlayRoot.style.cssText="position:fixed;inset:0;z-index:0;pointer-events:none;",mask.style.cssText=`position:absolute;inset:0;background:rgba(0,0,0,${rootOverlay.maskAlpha});pointer-events:auto;`,sheet.style.cssText=`position:absolute;left:${left}%;right:auto;bottom:0;width:${width}%;height:${(1-rootOverlay.topRatio)*100}%;background:#fff;border-radius:${rootOverlay.radius}px ${rootOverlay.radius}px 0 0;overflow:hidden;pointer-events:auto;`,syncOverlayWidth(sheet,rootOverlay.widthRatio),rootOverlay.tapClose&&mask.addEventListener("click",()=>requestCloseOnTop(void 0)),sheet.appendChild(frame),overlayRoot.append(mask,sheet),shellBody.appendChild(overlayRoot)}else shellBody.appendChild(frame);let currentRoot=document.documentElement;currentRoot?document.replaceChild(shellRoot,currentRoot):document.appendChild(shellRoot)}catch(error48){console.warn(TAG,"根 WebView 容器创建失败,保留当前页面",error48),rootFrame=null;return}rootFrame=frame,rootContainerActive=!0;try{typeof window.stop=="function"&&window.stop()}catch(error48){console.warn(TAG,"停止外层文档加载失败,继续启动根 WebView",error48)}let initialRootUrl=window.__mearlRootDocumentUrl__?.(rootBusinessUrl)??rootBusinessUrl;try{startPreparedWebViewNavigation(frame,initialRootUrl,()=>rootFrame===frame&&frame.isConnected)}catch(error48){console.warn(TAG,"根 WebView 环境准备启动失败,直接提交业务导航",error48),rootFrame===frame&&frame.isConnected&&(frame.src=initialRootUrl)}}installRootContainer();function normalizeProxyPathPrefix(prefix){let withLeadingSlash=prefix.startsWith("/")?prefix:`/${prefix}`;return withLeadingSlash.endsWith("/")?withLeadingSlash:`${withLeadingSlash}/`}function matchesProxyTarget(hostname3,suffixes){return suffixes.some(suffix=>hostname3===suffix||hostname3.endsWith(`.${suffix}`))}function mapLayerFrameUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy||!location.hostname.startsWith(proxy.sourceHostPrefix))return url2;try{let target=new URL(url2,location.href);if(!/^https?:$/.test(target.protocol))return url2;let prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(target.hostname===location.hostname){if(target.pathname.startsWith(prefix))return url2;let derivedHost=location.pathname.startsWith(prefix)?location.pathname.slice(prefix.length).split("/")[0]:proxy.defaultTargetHost;return!derivedHost||!matchesProxyTarget(derivedHost,proxy.targetHostSuffixes)?url2:`${location.origin}${prefix}${derivedHost}${target.pathname}${target.search}${target.hash}`}return matchesProxyTarget(target.hostname,proxy.targetHostSuffixes)?`${location.origin}${prefix}${target.host}${target.pathname}${target.search}${target.hash}`:url2}catch{return url2}}function restoreLayerBusinessUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy)return url2;try{let current=new URL(url2,location.href),prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(current.origin!==location.origin||!current.pathname.startsWith(prefix))return url2;let rest=current.pathname.slice(prefix.length),slash=rest.indexOf("/"),host=slash===-1?rest:rest.slice(0,slash);if(!host)return url2;let hostname3=new URL(`${current.protocol}//${host}`).hostname;if(!matchesProxyTarget(hostname3,proxy.targetHostSuffixes))return url2;let pathname=slash===-1?"/":rest.slice(slash);return`${current.protocol}//${host}${pathname}${current.search}${current.hash}`}catch{return url2}}let ANIM_MS=config2.animationMs??300;function overlayMaxWidth(){let{maxWidthPx,maxWidthMinAppVersion}=config2.overlay??{};if(!(!maxWidthPx||!Number.isFinite(maxWidthPx)||maxWidthPx<=0)){if(maxWidthMinAppVersion){let version3=config2.globals.__APP_VERSION__??"";if(!/^\d+(?:\.\d+)*$/.test(version3))return;let current=version3.split(".").map(Number),minimum=maxWidthMinAppVersion.split(".").map(Number);for(let index=0;index<Math.max(current.length,minimum.length);index+=1){let difference=(current[index]??0)-(minimum[index]??0);if(difference<0)return;if(difference>0)break}}return maxWidthPx}}function syncOverlayWidth(sheet,widthRatio){let maximum=overlayMaxWidth();sheet.style.width=`${widthRatio*100}%`,sheet.style.left=maximum?"0":`${(1-widthRatio)/2*100}%`,sheet.style.right=maximum?"0":"auto",maximum&&(sheet.style.maxWidth=`${maximum}px`,sheet.style.marginLeft="auto",sheet.style.marginRight="auto")}function boolParam(value,fallback){return value===!0||value===1||value==="1"||value==="true"?!0:value===!1||value===0||value==="0"||value==="false"?!1:value===""?!0:fallback}function numberParam(value,fallback,min,max){let parsed=typeof value=="number"?value:Number(value);return Number.isFinite(parsed)?Math.min(Math.max(parsed,min),max):fallback}function resolveOverlayPresentation(url2,params,explicitWebdialog){let query=null;try{query=new URL(url2,location.href).searchParams}catch{}let records=[],addRecord=value=>{value&&typeof value=="object"&&!Array.isArray(value)&&records.push(value)};addRecord(params?.pageParams),addRecord(params?.page_params),addRecord(params?.popConfig),addRecord(params?.data),addRecord(params?.param),addRecord(params);let read=key=>{for(let record4 of records)if(Object.prototype.hasOwnProperty.call(record4,key))return record4[key];return query?.has(key)?query.get(key):void 0},protocol=config2.overlay;if(!explicitWebdialog&&(!protocol||!boolParam(read(protocol.enabledParam),!1)))return null;let configuredTopRatio=protocol?read(protocol.topRatioParam):void 0,configuredHeightRatio=protocol?.heightRatioParam?read(protocol.heightRatioParam):void 0,configuredMaxHeight=read("maxHeight")??configuredHeightRatio,defaultTopRatio=protocol?.defaultTopRatio??.2;return{topRatio:configuredTopRatio!==void 0?numberParam(configuredTopRatio,defaultTopRatio,0,1):configuredMaxHeight!==void 0?1-numberParam(configuredMaxHeight,1-defaultTopRatio,0,1):defaultTopRatio,widthRatio:numberParam(read("maxWidth"),1,0,1),radius:numberParam((protocol?read(protocol.radiusParam):void 0)??read("cornerRadius"),protocol?.defaultRadius??0,0,50),maskAlpha:numberParam(protocol?read(protocol.maskAlphaParam):void 0,protocol?.defaultMaskAlpha??.3,0,1),tapClose:boolParam((protocol?read(protocol.tapCloseParam):void 0)??read("tapEnable"),protocol?.defaultTapClose??!0)}}function requestsPopBeforeOpen(url2,params){if(params?.__mearlReplace===!0)return!0;let key=config2.popBeforeOpenParam;if(!key)return!1;let records=[params?.pageParams,params?.page_params,params?.data,params?.param,params];for(let value of records){if(!value||typeof value!="object"||Array.isArray(value))continue;let record4=value;if(Object.prototype.hasOwnProperty.call(record4,key))return boolParam(record4[key],!1)}try{let query=new URL(url2,location.href).searchParams;return query.has(key)&&boolParam(query.get(key),!1)}catch{return!1}}let layers=[],forwardStack=[],layerSeq=0,enteringLayerCount=0,closingLayerCount=0,explicitLayerTitleBarStates=new Map,rootScrollStyles=null,pendingClose=null,nativeBackRequestSeq=0,pendingNativeBack=null,containerDataRequestSeq=0,containerDataCallbacks=new Map,sharedFiles=new Map,sharedData=new Map,legacyBroadcastChannels=new Set,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}let PENDING_CLOSE_TIMEOUT_MS=400,pendingHistoryDepth=null,pendingSplitRootOpen=null;function clearPendingClose(){pendingClose&&(clearTimeout(pendingClose.timer),pendingClose=null)}function clearPendingNativeBack(){pendingNativeBack&&(clearTimeout(pendingNativeBack.timer),pendingNativeBack=null)}function clearPendingHistoryDepth(){pendingHistoryDepth&&(clearTimeout(pendingHistoryDepth.timer),pendingHistoryDepth=null)}function syncHistoryAfterDirectClose(){clearPendingHistoryDepth();let depth=layers.length,timer=setTimeout(()=>{pendingHistoryDepth=null,console.warn(TAG,"WebView 已出栈,但浏览器历史未在预期时间内同步",{depth})},PENDING_CLOSE_TIMEOUT_MS);pendingHistoryDepth={depth,timer},history.back()}function armPendingClose(data,retries){clearPendingClose();let timer=setTimeout(()=>{pendingClose=null,log2("close 未等到 popstate,直接关栈顶兜底"),closeToDepth(Math.max(layers.length-1,0),data,!0)},PENDING_CLOSE_TIMEOUT_MS);pendingClose={data,retries,timer},history.back()}function parseStorageId(url2){try{return new URL(url2,location.href).searchParams.get("__storage_id")}catch{return null}}function titleBarStateCacheKey(url2){try{let parsed=new URL(url2,location.href);return parsed.hash="",parsed.href}catch{return url2}}function cacheExplicitTitleBarState(layer,state){explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.entryUrl),state),explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.url),state)}function readDepth(state){if(state&&typeof state=="object"){let d=state.__mearl_layer__;if(typeof d=="number")return d}return null}function mapUrlForSync(url2,allowHostBorrowing=!0){let suffixes=config2.urlSyncHostSuffixes??[];try{let u=new URL(url2,location.href);if(!/^https?:$/.test(u.protocol))return;if(u.origin===location.origin)return u.pathname+u.search+u.hash;if(!(suffixes.length===0||suffixes.some(s=>u.host===s||u.host.endsWith(`.${s}`))))return;let proxy=config2.layerUrlProxy;return proxy&&location.hostname.startsWith(proxy.sourceHostPrefix)&&matchesProxyTarget(u.hostname,proxy.targetHostSuffixes)?`${normalizeProxyPathPrefix(proxy.pathPrefix)}${u.host}${u.pathname}${u.search}${u.hash}`:allowHostBorrowing?u.pathname+u.search+u.hash:void 0}catch{return}}function createLayerEl(overlay,id){let el=document.createElement("div");el.setAttribute("data-mearl-layer",String(id)),splitScreenActive&&el.setAttribute("data-mearl-split-pane","right"),el.style.cssText=splitScreenActive?`position:fixed;left:50%;right:0;top:0;bottom:0;width:50%;z-index:${2147483e3+id%100*2};`:`position:fixed;inset:0;z-index:${2147483e3+id%100*2};`;let frame=document.createElement("iframe");if(frame.name=LAYER_FRAME_NAME,frame.setAttribute("allow","microphone; on-device-speech-recognition"),frame.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms allow-modals allow-downloads allow-popups"),frame.style.cssText="position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",overlay){el.style.pointerEvents="none";let mask=document.createElement("div");mask.style.cssText=`position:absolute;inset:0;background:rgba(0,0,0,${overlay.maskAlpha});opacity:0;pointer-events:auto;`;let sheet=document.createElement("div"),width=overlay.widthRatio*100,left=(1-overlay.widthRatio)/2*100;return sheet.style.cssText=`position:absolute;left:${left}%;right:auto;bottom:0;width:${width}%;height:${(1-overlay.topRatio)*100}%;background:#fff;border-radius:${overlay.radius}px ${overlay.radius}px 0 0;overflow:hidden;pointer-events:auto;`,syncOverlayWidth(sheet,overlay.widthRatio),sheet.appendChild(frame),el.appendChild(mask),el.appendChild(sheet),{el,frame,animEl:sheet,mask}}return el.style.background="#fff",el.appendChild(frame),{el,frame,animEl:el,mask:null}}function setLayerInteractive(layer,interactive){layer.frame.style.pointerEvents=interactive?"":"none",layer.titleBarView&&(layer.titleBarView.root.style.pointerEvents=interactive?"":"none"),interactive?(layer.frame.removeAttribute("inert"),layer.frame.removeAttribute("aria-hidden"),layer.frame.removeAttribute("tabindex")):(layer.frame.setAttribute("inert",""),layer.frame.setAttribute("aria-hidden","true"),layer.frame.setAttribute("tabindex","-1"),layer.frame.blur()),layer.overlay?(layer.el.style.pointerEvents="none",layer.animEl.style.pointerEvents=interactive?"auto":"none",layer.mask&&(layer.mask.style.pointerEvents=interactive?"auto":"none")):layer.el.style.pointerEvents=interactive?"":"none"}function setRootFrameInteractive(interactive){rootFrame&&(rootFrame.style.pointerEvents=interactive?"":"none",interactive?(rootFrame.removeAttribute("inert"),rootFrame.removeAttribute("aria-hidden"),rootFrame.removeAttribute("tabindex")):(rootFrame.setAttribute("inert",""),rootFrame.setAttribute("aria-hidden","true"),rootFrame.setAttribute("tabindex","-1"),rootFrame.blur()))}function blockClosingLayerInteractions(layer){setLayerInteractive(layer,!1),layer.el.style.pointerEvents="auto"}function syncRootScrollLock(locked){let body=document.body;if(locked&&!rootScrollStyles){rootScrollStyles={html:document.documentElement.style.overflow,body:body?.style.overflow??null},document.documentElement.style.overflow="hidden",body&&(body.style.overflow="hidden");return}!locked&&rootScrollStyles&&(document.documentElement.style.overflow=rootScrollStyles.html,body&&rootScrollStyles.body!==null&&(body.style.overflow=rootScrollStyles.body),rootScrollStyles=null)}function syncLayerInteractivity(){let activeLayer=closingLayerCount===0&&enteringLayerCount===0?layers[layers.length-1]:void 0;for(let layer of layers)setLayerInteractive(layer,layer===activeLayer),!activeLayer&&layer===layers[layers.length-1]&&(layer.el.style.pointerEvents="auto");setRootFrameInteractive(splitScreenActive?pendingSplitRootOpen===null:layers.length===0&&enteringLayerCount===0&&closingLayerCount===0),syncRootScrollLock(layers.length>0||enteringLayerCount>0||closingLayerCount>0)}function finishLayerEntry(layer){layer.entering&&(layer.entering=!1,layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null),enteringLayerCount=Math.max(enteringLayerCount-1,0),syncLayerInteractivity())}function animateIn(layer){let t=layer.animEl;if(t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",t.offsetWidth,t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform="translate(0px, 0px)",layer.mask&&(layer.mask.style.transition=`opacity ${ANIM_MS}ms ease`,layer.mask.style.opacity="1"),ANIM_MS<=0){finishLayerEntry(layer);return}layer.enterTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finishLayerEntry(layer)},t.addEventListener("transitionend",layer.enterTransitionEnd),layer.enterTimer=setTimeout(()=>finishLayerEntry(layer),ANIM_MS+60)}function animateOut(layer,done){let t=layer.animEl;if(ANIM_MS<=0){t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),setTimeout(done,0);return}let settled=!1,fallbackTimer=0,finish=()=>{settled||(settled=!0,t.removeEventListener("transitionend",onTransitionEnd),clearTimeout(fallbackTimer),done())},onTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finish()};t.addEventListener("transitionend",onTransitionEnd),t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),fallbackTimer=setTimeout(finish,ANIM_MS+60)}function startLayerNavigation(layer,target){startPreparedWebViewNavigation(layer.frame,target,()=>!layer.closing&&layer.el.isConnected,cleanup=>{layer.navigationPreparationCleanup=cleanup})}function setPageVisibility(target,hidden){if(target===window){links.getBridgeProtocol().handlePageVisibility(hidden);return}try{target.postMessage({source:SRC,type:"simulatorVisibility",hidden},"*")}catch{}}function openLayer(url2,callbackId,overlay,openerWin,pushHistory,popId=null,animateEntry=!0){clearPendingClose();let target=url2;if(!/^https?:/i.test(target)){let mapped=links.getBridgeProtocol().mapScheme(target);if(!mapped)return log2("open 失败,scheme 未映射:",url2),null;target=mapped}location.protocol==="https:"&&target.startsWith("http:")&&(target="https:"+target.slice(5));let presentation=overlay??resolveOverlayPresentation(target,void 0,!1);log2("open →",presentation?"(webdialog) ":"",target);let parts=createLayerEl(presentation,++layerSeq),restoredTitleBarState=explicitLayerTitleBarStates.get(titleBarStateCacheKey(target)),layer={id:layerSeq,win:parts.frame.contentWindow,frame:parts.frame,entryUrl:target,url:target,overlay:presentation,openerWin,callbackId,storageId:parseStorageId(target),popId,el:parts.el,animEl:parts.animEl,mask:parts.mask,entering:animateEntry,enterTimer:null,enterTransitionEnd:null,closing:!1,navigationPreparationCleanup:null,titleBarState:restoredTitleBarState??initialLayerTitleBarState(target),titleBarStateExplicit:restoredTitleBarState!==void 0,titleBarStateReady:restoredTitleBarState!==void 0,titleBarView:null};if(popId&&layer.el.setAttribute("data-mearl-pop-id",popId),layer.mask&&presentation?.tapClose&&layer.mask.addEventListener("click",()=>requestOverlayClose(layer)),!presentation&&simulateSystemBars&&config2.titleBar&&(layer.titleBarView=createSimulatedNavigationBarView("layer",()=>requestNativeBack()),layer.titleBarView.root.setAttribute("data-mearl-layer-titlebar",String(layer.id)),parts.el.appendChild(layer.titleBarView.root)),layers.push(layer),splitScreenActive&&rootFrame?.contentWindow===openerWin||setPageVisibility(openerWin,!0),animateEntry&&(enteringLayerCount+=1),syncLayerViewport(layer,layer.titleBarState),syncLayerInteractivity(),parts.frame.addEventListener("load",()=>{layer.win=parts.frame.contentWindow,parts.frame.name=LAYER_FRAME_NAME;let committedSrc=parts.frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(parts.frame.contentWindow),requestAnimationFrame(()=>{layer.titleBarStateReady||layer.closing||!layer.el.isConnected||(layer.titleBarStateReady=!0,syncLayerViewport(layer,resolvedTitleBarState(layer)))}))}),(document.body??document.documentElement).appendChild(parts.el),layer.win=parts.frame.contentWindow,startLayerNavigation(layer,mapLayerFrameUrl(target)),animateEntry&&animateIn(layer),pushHistory){forwardStack.length=0;try{history.pushState({__mearl_layer__:layers.length},"",mapUrlForSync(target))}catch{}}return layer}function replaceLayer(sourceLayer,url2,callbackId,overlay,popId=null){if(sourceLayer.closing||layers[layers.length-1]!==sourceLayer){openLayer(url2,callbackId,overlay,sourceLayer.win??window,!0,popId);return}let replacement=openLayer(url2,callbackId,overlay,sourceLayer.openerWin,!1,popId);if(!replacement)return;sourceLayer.navigationPreparationCleanup?.(),sourceLayer.navigationPreparationCleanup=null,sourceLayer.entering&&(sourceLayer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),sourceLayer.enterTimer!==null&&clearTimeout(sourceLayer.enterTimer),sourceLayer.enterTransitionEnd&&sourceLayer.animEl.removeEventListener("transitionend",sourceLayer.enterTransitionEnd));let sourceIndex=layers.indexOf(sourceLayer);sourceIndex>=0&&layers.splice(sourceIndex,1),destroySimulatedNavigationBarView(sourceLayer.titleBarView),sourceLayer.el.remove(),forwardStack.length=0,syncLayerInteractivity(),syncActiveSystemBars();try{history.replaceState({__mearl_layer__:layers.length},"",mapUrlForSync(replacement.url))}catch{}}function closeLayer(layer,data,final,gotoEvent=!1,resumeOpener=!0,silent=!1,immediate=!1){if(layer.closing)return;layer.navigationPreparationCleanup?.(),layer.navigationPreparationCleanup=null,layer.entering&&(layer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null)),layer.closing=!0;let idx=layers.indexOf(layer);idx>=0&&layers.splice(idx,1),closingLayerCount+=1,blockClosingLayerInteractions(layer),syncLayerInteractivity(),syncActiveSystemBars(),final?forwardStack.length=0:forwardStack.push({url:layer.url,overlay:layer.overlay,openerWin:layer.openerWin,callbackId:layer.callbackId,storageId:layer.storageId,popId:layer.popId}),log2("close ←",layer.url,data===void 0?"":data);let finishClose=()=>{if(destroySimulatedNavigationBarView(layer.titleBarView),layer.el.remove(),closingLayerCount=Math.max(closingLayerCount-1,0),syncLayerInteractivity(),syncActiveSystemBars(),!!resumeOpener)if(layer.openerWin===window)links.getBridgeProtocol().handleResume({data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent});else try{layer.openerWin.postMessage({source:SRC,type:"resume",data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent},"*")}catch{}};immediate?finishClose():animateOut(layer,finishClose)}function closeToDepth(depth,data,final){for(;layers.length>depth;){let revealsTarget=layers.length===depth+1;closeLayer(layers[layers.length-1],revealsTarget?data:void 0,final,!1,revealsTarget)}}function closeAllLayers(data,gotoEvent=!1,silent=!1,immediate=!1){let depth=layers.length;for(;layers.length>0;){let isRootmostLayer=layers.length===1;closeLayer(layers[layers.length-1],isRootmostLayer?data:void 0,!0,isRootmostLayer&&gotoEvent,isRootmostLayer,silent,immediate)}if(depth>0)try{history.go(-depth)}catch{}return depth>0}function openFromSplitRoot(url2,callbackId,overlay,openerWin,popId){if(pendingSplitRootOpen){pendingSplitRootOpen={url:url2,callbackId,overlay,openerWin,popId};return}if(layers.length===0){openLayer(url2,callbackId,overlay,openerWin,!0,popId);return}pendingSplitRootOpen={url:url2,callbackId,overlay,openerWin,popId},closeAllLayers(void 0,!1,!0,!0)}function finishPendingSplitRootOpen(){let pending=pendingSplitRootOpen;pending&&(pendingSplitRootOpen=null,openLayer(pending.url,pending.callbackId,pending.overlay,pending.openerWin,!0,pending.popId,!1))}function requestOverlayClose(layer){if(!(layer.closing||layers[layers.length-1]!==layer)){if(!config2.overlay?.silentTapClose){for(let selector of config2.overlay?.tapCloseSelectors??[])try{let control=layer.frame.contentDocument?.querySelector(selector);if(typeof control?.click!="function")continue;control.click();return}catch{}requestCloseOnTop(void 0);return}pendingClose||pendingHistoryDepth||(closeLayer(layer,void 0,!0,!1,!0,!0),syncHistoryAfterDirectClose())}}function forwardToDepth(depth){for(;layers.length<depth&&forwardStack.length>0;){let entry=forwardStack.pop();openLayer(entry.url,entry.callbackId,entry.overlay,entry.openerWin,!1,entry.popId)}}function requestCloseOnTop(data){if(layers.length===0){history.back();return}if(rootContainerActive){closeLayer(layers[layers.length-1],data,!0),syncHistoryAfterDirectClose();return}armPendingClose(data,8)}function isActiveBusinessWindow(target){let topLayer=layers[layers.length-1];return topLayer?topLayer.frame.contentWindow===target:rootFrame?rootFrame.contentWindow===target:target===window}function finishNativeBack(requestId,target,handled){pendingNativeBack?.requestId!==requestId||pendingNativeBack.target!==target||(clearPendingNativeBack(),!handled&&isActiveBusinessWindow(target)&&requestCloseOnTop(void 0))}function requestNativeBack(){if(!isTop||pendingNativeBack)return;let target=layers[layers.length-1]?.frame.contentWindow??rootFrame?.contentWindow??window;if(!target||target===window){links.getBridgeProtocol().handleNativeBack()||requestCloseOnTop(void 0);return}let requestId=++nativeBackRequestSeq,timer=setTimeout(()=>finishNativeBack(requestId,target,!1),120);pendingNativeBack={requestId,target,timer};try{target.postMessage({source:SRC,type:"nativeBack",requestId},"*")}catch{finishNativeBack(requestId,target,!1)}}function layerForWindow(source){if(source)for(let layer of layers){if(layer.win===source)return layer;let currentWindow=layer.frame.contentWindow;if(currentWindow&&currentWindow===source)return layer.win=currentWindow,layer}}if(isTop){if(!rootContainerActive){let rawPushState=history.pushState.bind(history),rawReplaceState=history.replaceState.bind(history),withDepth=state=>state==null?{__mearl_layer__:layers.length}:typeof state=="object"&&!Array.isArray(state)?{...state,__mearl_layer__:layers.length}:state;try{history.pushState=function(...args){rawPushState(withDepth(args[0]),args[1],args[2])},history.replaceState=function(...args){rawReplaceState(withDepth(args[0]),args[1],args[2])}}catch{}}try{readDepth(history.state)===null&&history.replaceState({__mearl_layer__:0},"")}catch{}window.addEventListener("popstate",e=>{let depth=readDepth(e.state);if(pendingSplitRootOpen&&depth===0){finishPendingSplitRootOpen();return}if(pendingHistoryDepth){let expectedDepth=pendingHistoryDepth.depth;if(clearPendingHistoryDepth(),depth===expectedDepth)return;console.warn(TAG,"浏览器历史深度与 WebView 出栈事务不一致",{expectedDepth,actualDepth:depth})}if(rootContainerActive){if(depth===null)return;depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth);return}if(pendingClose){if(depth!==null&&depth<layers.length){let{data}=pendingClose;clearPendingClose(),closeToDepth(depth,data,!0)}else if(pendingClose.retries>0)armPendingClose(pendingClose.data,pendingClose.retries-1);else{let{data}=pendingClose;clearPendingClose(),closeToDepth(layers.length-1,data,!0)}return}depth!==null&&(depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth))})}function broadcastAppMessage(message){links.getBridgeProtocol().handleAppMessage(message);let targets=[rootFrame?.contentWindow??null,...layers.filter(layer=>!layer.closing).map(layer=>layer.frame.contentWindow)];for(let target of targets)if(!(!target||target===window))try{target.postMessage({source:SRC,type:"appMessage",message},"*")}catch{}}function closeMegaPop(popId,data){let index=layers.findIndex(layer=>layer.popId===popId&&!layer.closing);if(index<0)return!1;let closingDepth=layers.length-index;closeToDepth(index,data,!0);try{history.go(-closingDepth)}catch{}return!0}function resizeMegaPop(popId,params){let layer=layers.find(candidate=>candidate.popId===popId&&!candidate.closing);if(!layer?.overlay)return!1;if(params.maxHeight!==void 0){let maxHeight=numberParam(params.maxHeight,1-layer.overlay.topRatio,0,1);layer.overlay.topRatio=1-maxHeight,layer.animEl.style.height=`${maxHeight*100}%`}if(params.maxWidth!==void 0){let maxWidth=numberParam(params.maxWidth,1,0,1);layer.overlay.widthRatio=maxWidth,syncOverlayWidth(layer.animEl,maxWidth)}return params.animated===!0&&(layer.animEl.style.transition="height 200ms ease, width 200ms ease, left 200ms ease"),!0}function executeContainerData(action,params){if(action==="sharedFileRead"||action==="sharedFileWrite"){let fileName=typeof params.fileName=="string"?params.fileName:"";if(!fileName)return{success:!1,value:"missing fileName"};if(action==="sharedFileRead")return{success:!0,value:{data:sharedFiles.get(fileName)??""}};let data=typeof params.data=="string"?params.data:String(params.data??"");return sharedFiles.set(fileName,data),{success:!0,value:{}}}if(action==="sharedDataGet"){let keys=Array.isArray(params.keys)?params.keys.filter(key=>typeof key=="string"):[],data={};for(let key of keys)sharedData.has(key)&&(data[key]=sharedData.get(key));return{success:!0,value:{data}}}if(action==="sharedDataSet"){if(!params.data||typeof params.data!="object"||Array.isArray(params.data))return{success:!1,value:"missing shared data"};for(let[key,value]of Object.entries(params.data))value==null?sharedData.delete(key):sharedData.set(key,value);return{success:!0,value:{}}}if(action==="megaBroadcast")return!params.message||typeof params.message!="object"||Array.isArray(params.message)?{success:!1,value:"missing broadcast message"}:(broadcastAppMessage(params.message),{success:!0,value:{}});if(action==="megaKVSnapshot")return{success:!0,value:{entries:megaKVSnapshot()}};if(action==="megaKVMutation"){let operation=typeof params.operation=="string"?params.operation:"",bizId=typeof params.bizId=="string"?params.bizId:"";if(!bizId)return{success:!1,value:"missing bizID"};let key=typeof params.key=="string"?params.key:"";if((operation==="set"||operation==="remove")&&!key)return{success:!1,value:"missing key"};if(operation==="set"){if(typeof params.value!="string")return{success:!1,value:"missing value"};let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,params.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return{success:!1,value:"unsupported KVStorage operation"};return persistMegaKVStorage(),broadcastAppMessage({kind:"megaKVStorage",operation,bizId,key,value:params.value}),{success:!0,value:{}}}if(action==="legacyBroadcastCreate"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.add(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastPost"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?legacyBroadcastChannels.has(instanceId)?(broadcastAppMessage({kind:"legacyBroadcast",instanceId,message:params.message}),{success:!0,value:{}}):{success:!1,value:"broadcast channel not found"}:{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastClose"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.delete(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="megaPopClose"){let popId=typeof params.popId=="string"?params.popId:"";return popId?closeMegaPop(popId,params.result)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}if(action==="megaPopResize"){let popId=typeof params.popId=="string"?params.popId:"";return popId?resizeMegaPop(popId,params)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}return{success:!1,value:"unsupported container data action"}}function requestContainerData(action,params,onSuccess,onFailure){if(isTop){let result=executeContainerData(action,params);setTimeout(()=>result.success?onSuccess(result.value):onFailure(result.value),0);return}let requestId=++containerDataRequestSeq;containerDataCallbacks.set(requestId,{success:onSuccess,failure:onFailure});try{window.top?.postMessage({source:SRC,type:"containerDataRequest",requestId,action,params},"*")}catch(error48){containerDataCallbacks.delete(requestId),onFailure(error48 instanceof Error?error48.message:String(error48))}}function requestOpen(url2,callbackId,webdialog,params){let overlay=resolveOverlayPresentation(url2,params,webdialog),popBeforeOpen=requestsPopBeforeOpen(url2,params),popId=typeof params?.__mearlMegaPopId=="string"?params.__mearlMegaPopId:null;isTop?openLayer(url2,callbackId,overlay,window,!0,popId):window.top?.postMessage({source:SRC,type:"open",url:url2,callbackId,overlay,popBeforeOpen,popId},"*")}function requestClose(data){let payload;try{payload=data===void 0?void 0:JSON.parse(JSON.stringify(data))}catch{payload=void 0}isTop?requestCloseOnTop(payload):window.top?.postMessage({source:SRC,type:"close",data:payload},"*")}if(window.addEventListener("message",event=>{let msg=event.data;if(!(!msg||typeof msg!="object")){if(msg.source==="mearl-content"&&(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"||msg.type==="APP_BRIDGE_RUNTIME_RESPONSES")){if(!isTop||event.source!==window)return;if(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"&&typeof msg.hidden=="boolean"){simulatedPageHidden=msg.hidden,links.getBridgeProtocol().handlePageVisibility(msg.hidden);let lifecycleMessage={source:SRC,type:"simulatorVisibility",hidden:msg.hidden};rootFrame?.contentWindow?.postMessage(lifecycleMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(lifecycleMessage,"*")}else if(msg.type==="APP_BRIDGE_RUNTIME_RESPONSES"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){let responses=msg.responses;runtimeResponses={...runtimeResponses??{},...responses},links.getBridgeProtocol().applyRuntimeResponses(responses);let configMessage={source:SRC,type:"runtimeResponses",profile:config2.profile,responses};rootFrame?.contentWindow?.postMessage(configMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(configMessage,"*")}return}if(msg.source===SRC){if(isTop){let sourceLayer=layerForWindow(event.source),sourceIsRoot=!!(rootFrame?.contentWindow&&rootFrame.contentWindow===event.source);if(!sourceLayer&&!sourceIsRoot)return;if(msg.type==="open"&&typeof msg.url=="string"){let rawOverlay=msg.overlay&&typeof msg.overlay=="object"?msg.overlay:void 0,overlay=rawOverlay?{topRatio:numberParam(rawOverlay.topRatio,.2,0,1),widthRatio:numberParam(rawOverlay.widthRatio,1,0,1),radius:numberParam(rawOverlay.radius,0,0,50),maskAlpha:numberParam(rawOverlay.maskAlpha,.3,0,1),tapClose:boolParam(rawOverlay.tapClose,!0)}:resolveOverlayPresentation(msg.url,void 0,!1),callbackId=typeof msg.callbackId=="number"?msg.callbackId:0,popId=typeof msg.popId=="string"&&msg.popId?msg.popId:null;splitScreenActive&&sourceIsRoot?openFromSplitRoot(msg.url,callbackId,overlay,event.source??window,popId):msg.popBeforeOpen===!0&&sourceLayer?replaceLayer(sourceLayer,msg.url,callbackId,overlay,popId):openLayer(msg.url,callbackId,overlay,event.source??window,!0,popId)}else if(msg.type==="close")requestCloseOnTop(msg.data);else if(msg.type==="closeAll"){let gotoEvent=msg.gotoEvent===!0;if(gotoEvent&&sourceIsRoot&&layers.length===0&&msg.data!==void 0)try{event.source.postMessage({source:SRC,type:"resume",data:msg.data,storageId:null,callbackId:0,final:!0,gotoEvent:!0},"*")}catch{}else closeAllLayers(msg.data,gotoEvent)}else if(msg.type==="appMessageToOpener"&&sourceLayer){let target=sourceLayer.openerWin;if(target===window)links.getBridgeProtocol().handleAppMessage(msg.message);else try{target.postMessage({source:SRC,type:"appMessage",message:msg.message},"*")}catch{}}else if(msg.type==="containerDataRequest"&&typeof msg.requestId=="number"&&typeof msg.action=="string"&&msg.params&&typeof msg.params=="object"&&!Array.isArray(msg.params)&&event.source){let result=executeContainerData(msg.action,msg.params);try{event.source.postMessage({source:SRC,type:"containerDataResponse",requestId:msg.requestId,success:result.success,value:result.value},"*")}catch{}}else if(msg.type==="nativeBackResult"&&typeof msg.requestId=="number"&&typeof msg.handled=="boolean"&&event.source)finishNativeBack(msg.requestId,event.source,msg.handled);else if(msg.type==="urlChanged"&&typeof msg.url=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot){try{let target=new URL(msg.url,location.href);if(!/^https?:$/.test(target.protocol))return;rootBusinessUrl=target.href}catch{return}if(topLayer)return;let mapped=mapUrlForSync(rootBusinessUrl,!1);if(mapped)try{history.replaceState({__mearl_layer__:0},"",mapped)}catch{}}else if(topLayer&&!topLayer.closing&&sourceLayer===topLayer){topLayer.url=msg.url,topLayer.titleBarStateExplicit&&topLayer.titleBarState&&cacheExplicitTitleBarState(topLayer,topLayer.titleBarState);let mapped=mapUrlForSync(msg.url);if(mapped)try{history.replaceState({__mearl_layer__:layers.length},"",mapped)}catch{}}}else if(msg.type==="title"&&typeof msg.title=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot&&!topLayer)try{document.title=msg.title,syncSimulatedTitleBar()}catch{}else if(topLayer&&sourceLayer===topLayer){document.title=msg.title;let state=resolvedTitleBarState(topLayer);topLayer.titleBarState={...state,title:msg.title},syncLayerViewport(topLayer,topLayer.titleBarState)}}else if(msg.type==="titleBarState"){let state=parseReportedTitleBarState(msg.state);if(state&&sourceIsRoot)links.getSystemBars().setPresentedRootTitleBarState(state);else if(state&&sourceLayer){let explicit=msg.explicit===!0;sourceLayer.titleBarStateReady=!0,explicit?(sourceLayer.titleBarState=state,sourceLayer.titleBarStateExplicit=!0,cacheExplicitTitleBarState(sourceLayer,state)):sourceLayer.titleBarStateExplicit||(sourceLayer.titleBarState=state);let resolvedState=sourceLayer.titleBarState??state;syncLayerViewport(sourceLayer,resolvedState)}}}else if(msg.type==="requestTitleBarState"){if(event.source!==window.top)return;syncSimulatedTitleBar()}else if(msg.type==="simulatorVisibility"&&typeof msg.hidden=="boolean"){if(event.source!==window.top)return;links.getBridgeProtocol().handlePageVisibility(msg.hidden)}else if(msg.type==="appMessage"){if(event.source!==window.top)return;links.getBridgeProtocol().handleAppMessage(msg.message)}else if(msg.type==="nativeBack"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let handled=links.getBridgeProtocol().handleNativeBack();window.top?.postMessage({source:SRC,type:"nativeBackResult",requestId:msg.requestId,handled},"*")}else if(msg.type==="containerDataResponse"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let callback=containerDataCallbacks.get(msg.requestId);if(!callback)return;containerDataCallbacks.delete(msg.requestId),msg.success===!0?callback.success(msg.value):callback.failure(msg.value)}else if(msg.type==="runtimeResponses"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){if(event.source!==window.top)return;links.getBridgeProtocol().applyRuntimeResponses(msg.responses)}else if(msg.type==="resume"){if(event.source!==window.top)return;links.getBridgeProtocol().handleResume({data:msg.data,storageId:msg.storageId??null,callbackId:typeof msg.callbackId=="number"?msg.callbackId:0,final:msg.final===!0,gotoEvent:msg.gotoEvent===!0,silent:msg.silent===!0})}else event.source!==window.top&&window.top?.postMessage(msg,"*");return}pageTransport.handleMessage(msg)}}),!isTop&&isContainerFrame){let reportUrl=()=>{try{window.top?.postMessage({source:SRC,type:"urlChanged",url:restoreLayerBusinessUrl(location.href)},"*")}catch{}};try{let origPushState=history.pushState.bind(history),origReplaceState=history.replaceState.bind(history);history.pushState=function(...args){origPushState(...args),reportUrl()},history.replaceState=function(...args){origReplaceState(...args),reportUrl()},window.addEventListener("popstate",reportUrl),window.addEventListener("hashchange",reportUrl),window.addEventListener("pageshow",reportUrl),document.readyState==="complete"&&reportUrl()}catch{}}if(isContainerFrame){let requestProxyLocationOpen=url2=>{if(links.getBridgeProtocol().handleMaybeScheme(url2))return!0;try{let current=new URL(restoreLayerBusinessUrl(location.href)),target=new URL(url2,current);return!/^https?:$/.test(target.protocol)||target.origin===current.origin&&target.pathname===current.pathname&&target.search===current.search?!1:(requestOpen(target.href,0,!1),!0)}catch{return!1}};Object.defineProperty(window,"__PROXY_LOCATION__",{value:{get href(){return location.href},set href(url2){requestProxyLocationOpen(url2)||(location.href=mapLayerFrameUrl(url2))},replace(url2){links.getBridgeProtocol().handleMaybeScheme(url2)||location.replace(mapLayerFrameUrl(url2))},assign(url2){requestProxyLocationOpen(url2)||location.assign(mapLayerFrameUrl(url2))}},writable:!1,configurable:!0})}if(isContainerFrame){document.addEventListener("click",event=>{let el=event.target;for(;el&&el.tagName!=="A";)el=el.parentElement;if(!el)return;let href=el.getAttribute("href");if(href){if(links.getBridgeProtocol().handleMaybeScheme(href)){event.preventDefault(),event.stopPropagation();return}/^https?:/i.test(href)&&el.getAttribute("target")==="_blank"&&(event.preventDefault(),event.stopPropagation(),requestOpen(href,0,!1))}},!0);let origOpen=window.open;window.open=function(url2,target,features){let urlStr=typeof url2=="string"?url2:url2 instanceof URL?url2.href:"";return links.getBridgeProtocol().handleMaybeScheme(urlStr)?null:/^https?:/i.test(urlStr)?(requestOpen(urlStr,0,!1),null):origOpen?origOpen.call(window,url2,target,features):null};try{let proto=Location.prototype,origAssign=proto.assign,origReplace=proto.replace;origAssign&&(proto.assign=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origAssign.call(this,upgraded)}),origReplace&&(proto.replace=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origReplace.call(this,upgraded)})}catch{}}return log2("容器环境已就绪",isTop?"(top)":isRootFrame?"(root)":isLayerFrame?"(layer)":"(iframe,仅桥)"),{getRootFrame:()=>rootFrame,hasRootOverlay:()=>rootOverlayActive,getLayers:()=>layers,getClosingLayerCount:()=>closingLayerCount,requestOpen,requestClose,requestNativeBack,requestContainerData,closeAllLayers}}var APP_PROFILE_RUNTIME_FACTORIES={documentTransport:installRootWebViewDocumentTransport,environment:installAppProfileEnvironment,containerStack:installAppProfileContainerStack,bridgeProtocol:installAppProfileBridgeProtocol,pageTransport:installAppProfilePageTransport,systemBars:installAppProfileSystemBars};function buildAppProfileRuntimeCallSource(configExpression){return`(${installAppProfileRuntime.toString()})(${configExpression},{documentTransport:${installRootWebViewDocumentTransport.toString()},environment:${installAppProfileEnvironment.toString()},pageTransport:${installAppProfilePageTransport.toString()},containerStack:${installAppProfileContainerStack.toString()},systemBars:${installAppProfileSystemBars.toString()},bridgeProtocol:${installAppProfileBridgeProtocol.toString()}})`}function installAppProfileRuntime(config2,factories=APP_PROFILE_RUNTIME_FACTORIES){factories.documentTransport();let environment=factories.environment(config2);if(!environment)return;let pageTransport=factories.pageTransport(config2,environment),containerStack=factories.containerStack(config2,environment,{pageTransport,getSystemBars:()=>systemBars,getBridgeProtocol:()=>bridgeProtocol}),systemBars=factories.systemBars(config2,environment,{getRootFrame:containerStack.getRootFrame,hasRootOverlay:containerStack.hasRootOverlay,getLayers:containerStack.getLayers,getClosingLayerCount:containerStack.getClosingLayerCount,requestClose:containerStack.requestClose,requestNativeBack:containerStack.requestNativeBack}),bridgeProtocol=factories.bridgeProtocol(config2,environment,{pageTransport,systemBars,requestOpen:containerStack.requestOpen,requestClose:containerStack.requestClose,requestCloseAll:containerStack.closeAllLayers,requestContainerData:containerStack.requestContainerData})}init_dist4();import https from"node:https";import http3 from"node:http";var TYPE_INTO_ELEMENT_SRC=typeIntoElement.toString(),CLICK_ELEMENT_VIA_JS_SRC=clickElementViaJS.toString(),GET_CLICK_COORDS_FROM_NODE_SRC=getClickCoordsFromNode.toString();async function readCdpCurrentUrl(session,action){let url2=(await session.client.sendCommand("Runtime.evaluate",{expression:"location.href",returnByValue:!0})).result?.value;if(typeof url2!="string"||!url2)throw new Error(`${action}: could not read the current page URL`);return session.url=url2,url2}function nodeFetch(urlStr,options={}){return new Promise((resolve11,reject)=>{let url2=new URL(urlStr),isHttps=url2.protocol==="https:",lib=isHttps?https:http3,{method="GET",headers={},body,timeoutMs=3e4}=options,req=lib.request({host:url2.hostname,port:url2.port||(isHttps?443:80),path:url2.pathname+url2.search,method,headers},res=>{let responseHeaders={};for(let[key,value]of Object.entries(res.headers))typeof value=="string"?responseHeaders[key]=value:Array.isArray(value)&&(responseHeaders[key]=value.join(", "));let chunks=[];res.on("data",chunk=>chunks.push(Buffer.from(chunk))),res.on("end",()=>{let bodyBuffer=Buffer.concat(chunks);resolve11({status:res.statusCode??0,statusText:res.statusMessage??"",headers:responseHeaders,body:bodyBuffer.toString("utf-8"),bodyBuffer,setCookies:res.headers["set-cookie"]??[]})})});req.on("error",reject),req.setTimeout(timeoutMs,()=>{req.destroy(),reject(new Error(`Request timeout: ${urlStr}`))}),body&&req.write(body),req.end()})}async function getCookiesForUrl(session,targetUrl){let result=await session.client.sendCommand("Network.getCookies",{urls:[targetUrl]});return selectRequestCookies(result.cookies??[],targetUrl)}async function waitForPageLoad(session,timeoutMs,options={}){if(options.probeReadyState!==!1&&isCdpDeviceShellActive(session)){let deadline=Date.now()+timeoutMs;for(;Date.now()<deadline;){if((await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).catch(()=>null))?.result?.value==="complete")return;await new Promise(resolve11=>setTimeout(resolve11,50))}throw new Error(`Page load timeout after ${timeoutMs}ms`)}return new Promise((resolve11,reject)=>{let settled=!1,removeLoadListener=()=>{},finish=error48=>{settled||(settled=!0,clearTimeout(timer),removeLoadListener(),error48?reject(error48):resolve11())},timer=setTimeout(()=>{finish(new Error(`Page load timeout after ${timeoutMs}ms`))},timeoutMs);removeLoadListener=session.client.on("Page.loadEventFired",()=>finish()),options.probeReadyState!==!1&&session.client.sendCommand("Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).then(result=>{result.result?.value==="complete"&&finish()}).catch(()=>{})})}async function toCdpInputPoint(session,x,y){if(isCdpDeviceShellActive(session)){let offset=await getCdpDeviceShellInputOffset(session);return{x:x+offset.x,y:y+offset.y}}return{x,y}}async function dispatchCdpClick(session,x,y,pointerType){let point=await toCdpInputPoint(session,x,y);if(pointerType==="touch"){await dispatchPairedPageInputCommands(()=>sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[point]}),()=>sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]}));return}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y}),await dispatchPairedPageInputCommands(()=>sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:point.x,y:point.y,button:"left",buttons:1,clickCount:1}),()=>sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:point.x,y:point.y,button:"left",buttons:0,clickCount:1}))}async function dispatchCdpDrag(session,from,to,pointerType,durationMs){let[start,end]=await Promise.all([toCdpInputPoint(session,from.x,from.y),toCdpInputPoint(session,to.x,to.y)]),path27=buildPageDragPath(start,end,durationMs),waitForNextPoint=async()=>{path27.intervalMs<=0||await new Promise(resolve11=>setTimeout(resolve11,path27.intervalMs))};if(pointerType==="touch"){await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[start]});let primaryError2;try{for(let point of path27.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchMove",touchPoints:[point]})}catch(error48){throw primaryError2=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]}).catch(error48=>{if(primaryError2===void 0)throw error48})}return{steps:path27.points.length}}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:start.x,y:start.y}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:start.x,y:start.y,button:"left",buttons:1,clickCount:1});let primaryError;try{for(let point of path27.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y,button:"left",buttons:1})}catch(error48){throw primaryError=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:end.x,y:end.y,button:"left",buttons:0,clickCount:1}).catch(error48=>{if(primaryError===void 0)throw error48})}return{steps:path27.points.length}}async function sendCdpInputCommand(session,method,params){try{await session.client.sendCommand(method,params,1e4)}catch(error48){if(error48 instanceof Error&&error48.message===`CDP command timeout: ${method}`){let eventType=typeof params.type=="string"?` (${params.type})`:"",targetHint=method==="Input.dispatchTouchEvent"?'Touch input can stall on a hidden, background, or headless target; use clickMode "auto" or make the target visible. ':"",message=`CDP ${method}${eventType} timed out after ${1e4}ms. `+targetHint+"The page may already have changed; verify its current state before retrying.";throw/^(mousePressed|mouseReleased|touchStart|touchEnd)$/.test(String(params.type??""))?new PageActionDispatchUncertainError(message,{cause:error48,attempt:{inputCommand:{method,type:String(params.type??"")}}}):new Error(message,{cause:error48})}throw error48}}async function resolveBackendNodeObjectId(session,backendNodeId){let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(!objectId)throw new Error(`Cannot resolve element for backendNodeId ${backendNodeId}`);return objectId}var SCREENSHOT_HIDDEN_DISPLAY_PROPERTIES=["--mearl-side-panel-toggle-display","--mearl-device-cutout-display"],screenshotQueueTails=new WeakMap;async function runScreenshotExclusive(session,operation){let previous=screenshotQueueTails.get(session)??Promise.resolve(),unlock,tail=new Promise(resolve11=>{unlock=resolve11});screenshotQueueTails.set(session,tail),await previous;try{return await operation()}finally{unlock(),screenshotQueueTails.get(session)===tail&&screenshotQueueTails.delete(session)}}async function hideScreenshotArtifacts(session){return(await session.client.sendCommand("Runtime.evaluate",{expression:`
1696
+ </section></div>`,shadow.querySelector("[data-auth-eyebrow]").textContent=authCodeText.eyebrow,shadow.querySelector("[data-auth-title]").textContent=authCodeText.title,shadow.querySelector("[data-auth-status]").textContent=authCodeText.starting,shadow.querySelector("[data-auth-detail]").textContent=authCodeText.startingDetail,shadow.querySelector("[data-auth-visual-label]").textContent=authCodeText.starting,shadow.querySelector(".cancel").textContent=authCodeText.cancel,shadow.querySelector(".close").setAttribute("aria-label",authCodeText.cancel),shadow.querySelectorAll("[data-auth-step]").forEach((step,index)=>{step.lastElementChild.textContent=authCodeText.steps[index]??""}),shadow.querySelectorAll("[data-auth-cancel]").forEach(button=>{button.addEventListener("click",()=>{window.postMessage({source:SRC,type:"authCodeCancel",requestId},"*"),finishAuthCode(requestId,{success:!1,error:"User cancelled authorization"})})}),(document.body??document.documentElement).appendChild(overlay),pending.overlay=overlay}if(svg){let parsed=new DOMParser().parseFromString(svg,"image/svg+xml").documentElement;if(parsed.namespaceURI!=="http://www.w3.org/2000/svg"||parsed.tagName!=="svg")return;let image=document.importNode(parsed,!0);image.setAttribute("role","img"),image.setAttribute("aria-label","支付宝扫码配对二维码"),pending.overlay.shadowRoot?.querySelector("[data-auth-qr]")?.replaceChildren(image);let visual=pending.overlay.shadowRoot?.querySelector("[data-auth-visual]");visual&&(visual.dataset.ready="true"),armAuthCodeTimeout(requestId,135e3),(pending.phase==="starting"||pending.phase==="installing")&&updateAuthCodeProgress(requestId,"pairing")}}}function callAuthCode(params,succ,fail2){activeAuthCodeRequestId!==null&&(window.postMessage({source:SRC,type:"authCodeCancel",requestId:activeAuthCodeRequestId},"*"),finishAuthCode(activeAuthCodeRequestId,{success:!1,error:"Authorization request replaced"}));let requestId=++bridgeRequestSeq;activeAuthCodeRequestId=requestId,pendingAuthCode[requestId]={succ,fail:fail2,phase:"starting"},armAuthCodeTimeout(requestId,135e3),showAuthCodePairing(requestId),window.postMessage({source:SRC,type:"authCode",requestId,payload:params},"*")}function degradedUserInfo(fallback,reason){let result={...fallback};try{Object.defineProperties(result,{__mearlDegraded:{enumerable:!1,value:!0},__mearlDegradedReason:{enumerable:!1,value:reason}})}catch{}return console.warn(TAG,"userInfo 降级:",reason),result}function callMtop(params,succ,fail2){let id=++bridgeRequestSeq;pendingMtop[id]={succ,fail:fail2};let post=params.post,rawTimeout=params.timeout??params.timer,timeout=typeof rawTimeout=="number"?rawTimeout:typeof rawTimeout=="string"&&rawTimeout.trim()!==""?Number(rawTimeout):void 0,payload={...params,data:params.data!==void 0?params.data:params.param??{},method:params.method??(post===!0||post===1||post==="1"||post==="true"?"POST":"GET"),env:params.env??(/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"prod"),...Number.isFinite(timeout)&&{timeout}};window.postMessage({source:SRC,type:"mtop",requestId:id,payload},"*"),log2("mtop 代发 →",params.api)}function callMtopAsync(params){return new Promise((resolve11,reject)=>callMtop(params,resolve11,reject))}function callMtopStream(params,succ,fail2){let sessionId=typeof params.id=="string"?params.id:String(params.id??""),request=params.request&&typeof params.request=="object"?params.request:null;if(!sessionId||!request||typeof request.api!="string"){fail2?.("invalid mtop_stream params");return}let requestId=++bridgeRequestSeq;pendingMtopStreams[requestId]={sessionId},window.postMessage({source:SRC,type:"mtopStream",requestId,payload:{...request,timeout:params.timeout,method:params.method??request.method,env:/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"prod"}},"*"),succ?.({}),log2("mtop 流式代发 →",request.api)}function callUserInfo(fallback,succ){if(fallback.userId){succ?.(fallback);return}let requestId=++bridgeRequestSeq,timer=setTimeout(()=>{let pending=pendingUserInfo[requestId];pending&&(delete pendingUserInfo[requestId],pending.succ?.(degradedUserInfo(pending.fallback,"native relay timeout")))},1e3);pendingUserInfo[requestId]={fallback,succ,timer},window.postMessage({source:SRC,type:"userInfo",requestId},"*")}function emitMtopStreamEvent(sessionId,eventType,data){let detail=data&&typeof data=="object"?{...data,eventType}:{data,eventType};document.dispatchEvent(new CustomEvent(`mtop_stream${sessionId}`,{detail}))}function pickDirectUploadTarget(response){if(!response||typeof response!="object")return null;let data=response.data;if(data?.success===!1)return null;let result=data?.result,target=Array.isArray(result?.urls)?result.urls[0]:void 0;if(!target||typeof target!="object")return null;let item=target;if(typeof item.put!="string"||!item.put||typeof item.get!="string"||!item.get)return null;let rawHeaders=item.putHeaders&&typeof item.putHeaders=="object"?item.putHeaders:{},putHeaders=Object.fromEntries(Object.entries(rawHeaders).map(([key,value])=>[key,String(value)]));return{put:item.put,get:item.get,putHeaders}}async function uploadImage(file2){let uploader=config2.imagePicker;if(!uploader)throw new Error("图片上传能力未配置");let env=/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"prod",response=await callMtopAsync({api:uploader.api,v:uploader.version,method:"POST",env,timeout:6e4,data:{fcId:uploader.fcId,fcGroup:uploader.fcGroup,fcName:uploader.uploadUrlFunction,fcData:JSON.stringify({requestType:"url",mimes:[file2.type||"image/jpeg"],prefix:uploader.prefix,region:uploader.region,uploadNumber:1}),fcConfig:JSON.stringify({timeout:6e4,disasterRecover:!0})}}),target=pickDirectUploadTarget(response);if(!target)throw new Error("获取图片上传地址失败");let uploadUrl=`${target.put}${target.put.includes("?")?"&":"?"}getAvatar=1`,uploadResponse=await fetch(uploadUrl,{method:"PUT",headers:target.putHeaders,body:file2});if(uploadResponse.status!==200)throw new Error(`图片直传失败: HTTP ${uploadResponse.status}`);return target.get}function readImageDataUrl(file2){return new Promise((resolve11,reject)=>{let reader=new FileReader;reader.addEventListener("load",()=>{if(typeof reader.result=="string"&&reader.result.startsWith("data:")){resolve11(reader.result);return}reject(new Error("读取图片数据失败"))},{once:!0}),reader.addEventListener("error",()=>reject(reader.error??new Error("读取图片数据失败")),{once:!0}),reader.readAsDataURL(file2)})}function openImagePicker(options,onSuccess,onFailure){let input2=document.createElement("input");input2.type="file",input2.accept="image/*";let maxSelect=Number.isFinite(options.maxSelect)?Math.min(999,Math.max(1,Math.floor(options.maxSelect))):1;input2.multiple=maxSelect>1,options.capture&&(input2.capture="environment"),input2.style.display="none";let settled=!1,finish=()=>{settled=!0,input2.remove()},fail2=reason=>{settled||(finish(),onFailure(reason))};input2.addEventListener("cancel",()=>fail2("image selection cancelled"),{once:!0}),input2.addEventListener("change",()=>{let files=Array.from(input2.files??[]).slice(0,maxSelect);if(files.length===0){fail2("image selection cancelled");return}if(files.some(file2=>!file2.type.startsWith("image/"))){console.error(TAG,"仅支持选择图片文件"),fail2("only image files are supported");return}let resolveImage=options.resultType==="dataUrl"?readImageDataUrl:uploadImage;Promise.all(files.map(resolveImage)).then(urls=>{settled||(onSuccess(urls),log2(options.resultType==="dataUrl"?"图片选择并读取完成:":"图片选择并上传完成:",urls))}).catch(error48=>{console.error(TAG,"图片处理失败:",error48),fail2(error48 instanceof Error?error48.message:"image processing failed")}).finally(finish)},{once:!0}),(document.body??document.documentElement).appendChild(input2),input2.click(),window.addEventListener("focus",()=>{setTimeout(()=>{!settled&&!input2.files?.length&&fail2("image selection cancelled")},1e3)},{once:!0})}function showPaymentDialog(api,params,succeed,failed){document.querySelector('[data-mearl-payment-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-payment-dialog","true"),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent="支付确认";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"}),desc.textContent=`模拟 ${api} 支付,请选择操作`;let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let btnBase=(text3,bg,color,action)=>{let btn=document.createElement("button");return btn.textContent=text3,btn.setAttribute("data-mearl-action",action),Object.assign(btn.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background:bg,color}),btn},confirmBtn=btnBase("完成支付","#1677ff","#fff","payment-confirm"),cancelBtn=btnBase("取消支付","#f5f5f5","#333","payment-cancel"),cleanup=()=>{overlay.remove()};confirmBtn.addEventListener("click",()=>{cleanup(),log2("用户完成支付",api),succeed(api==="wx.requestPayment"?{errMsg:"requestPayment:ok"}:{ResultStatus:"9000",resultStatus:"9000"})}),cancelBtn.addEventListener("click",()=>{cleanup(),log2("用户取消支付",api),failed(api==="wx.requestPayment"?{errMsg:"requestPayment:fail cancel"}:{ResultStatus:"6001",resultStatus:"6001"})}),btnRow.appendChild(cancelBtn),btnRow.appendChild(confirmBtn),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function showMiniProgramActionDialog(action,params,confirmed,cancelled){document.querySelector('[data-mearl-mini-program-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-mini-program-dialog","true"),overlay.setAttribute("data-mearl-mini-program-action",action),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent=action==="navigateMiniProgram"?"打开其他小程序":"订阅消息";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"});let targetTitle=params.title?.trim()||"其他";desc.textContent=action==="navigateMiniProgram"?`即将打开“${targetTitle}”小程序,是否继续?`:"模拟微信订阅消息授权,请选择操作";let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let createButton=(text3,background,color,actionName)=>{let button=document.createElement("button");return button.textContent=text3,button.setAttribute("data-mearl-action",actionName),Object.assign(button.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background,color}),button},confirmButton=createButton(action==="navigateMiniProgram"?"确定":"允许","#1677ff","#fff","mini-program-confirm"),cancelButton=createButton("取消","#f5f5f5","#333","mini-program-cancel"),cleanup=()=>overlay.remove();confirmButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:ok"}:{result:"SUCCESS",data:{totalCount:1,acceptCount:1}};log2("用户确认小程序原生能力",action,params.appId??params.scene??""),confirmed(result)}),cancelButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:fail cancel"}:{result:"CLOSE_BY_USER"};log2("用户取消小程序原生能力",action),cancelled(result)}),btnRow.appendChild(cancelButton),btnRow.appendChild(confirmButton),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function handleMessage(msg){if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_AUTH_CODE_PROGRESS")return(msg.phase==="installing"||msg.phase==="connected"||msg.phase==="authorizing")&&updateAuthCodeProgress(msg.requestId,msg.phase),!0;if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_AUTH_CODE_PAIRING"){let result=msg.result;return typeof result?.qrSvg=="string"&&showAuthCodePairing(msg.requestId,result.qrSvg),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_AUTH_CODE_RESPONSE")return finishAuthCode(msg.requestId,msg.result),!0;if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_RESPONSE"){let pending=pendingMtop[msg.requestId];if(!pending)return!0;delete pendingMtop[msg.requestId];let result=msg.result;return result?.success?pending.succ?.(result.response):pending.fail?.(result?.error??"mtop delegate failed"),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_USER_INFO_RESPONSE"){let requestId=msg.requestId,pending=pendingUserInfo[requestId];if(!pending)return!0;delete pendingUserInfo[requestId],clearTimeout(pending.timer);let result=msg.result,response=result?.success&&result.response&&typeof result.response=="object"?result.response:{};return pending.succ?.(result?.success?{...pending.fallback,...response}:degradedUserInfo(pending.fallback,typeof result?.error=="string"&&result.error?result.error:"native relay failed")),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_STREAM_EVENT"){let requestId=msg.requestId,pending=pendingMtopStreams[requestId];if(!pending)return!0;let eventType=msg.eventType;return emitMtopStreamEvent(pending.sessionId,eventType,msg.data),(eventType==="onFinish"||eventType==="onError")&&delete pendingMtopStreams[requestId],!0}return!1}return{showAppToast,callMtop,callMtopStream,callUserInfo,callAuthCode,openImagePicker,showPaymentDialog,showMiniProgramActionDialog,handleMessage}}function installAppProfileBridgeProtocol(config2,environment,host){let{w,SRC,TAG,isTop,log:log2}=environment,{pageTransport,systemBars,requestOpen,requestClose,requestCloseAll,requestContainerData}=host,{showAppToast,callMtop,callMtopStream,callUserInfo,callAuthCode,openImagePicker,showPaymentDialog,showMiniProgramActionDialog}=pageTransport,{applyNavigationBarState,applyStatusBarState,syncSimulatedTitleBar}=systemBars,NOT_IMPLEMENTED_PAYLOAD=JSON.stringify({ret:["HY_FAILED"],msg:"not implemented"}),FPT_STORAGE_KEY=`__mearl_app_fpt__:${config2.profile}`,CALENDAR_STORAGE_KEY=`__mearl_app_calendar_events__:${config2.profile}`,unsupportedNativeInputNotified=!1,stopNetworkQualityMonitor=null,voiceRecognition=null,voiceRecognitionSession=0,voiceRecognitionTranscript="",voiceRecognitionInterimTranscript="",voiceRecognitionStopping=!1,voiceRecognitionRunning=!1,simulatedPageHidden=!1,simulatedVisibilityInstalled=!1,hasPendingMiniProgramBackData=!1,pendingMiniProgramBackData,notificationListeners=new Map,megaListenerSeq=0,megaBroadcastListeners=new Map,megaLifeCycleListeners=new Set,megaPageCloseListeners=new Set,megaSystemBackListener=null,megaKVMutationVersion=0,MEGA_KV_TOTAL_SIZE=5*1024*1024,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}function replaceMegaKVStorage(value){if(!(!value||typeof value!="object"||Array.isArray(value))){megaKVStorage.clear();for(let[bizId,rawEntries]of Object.entries(value)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,entryValue]of Object.entries(rawEntries))typeof entryValue=="string"&&entries.set(key,entryValue);megaKVStorage.set(bizId,entries)}persistMegaKVStorage()}}function applyMegaKVMutation(payload){let operation=typeof payload.operation=="string"?payload.operation:"",bizId=typeof payload.bizId=="string"?payload.bizId:"",key=typeof payload.key=="string"?payload.key:"";if(bizId){if(operation==="set"&&key&&typeof payload.value=="string"){let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,payload.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"&&key){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return;megaKVMutationVersion+=1,persistMegaKVStorage()}}function emitMegaCallback(callback,value){callback&&setTimeout(()=>callback(value),0)}function megaBroadcastBizId(value){return typeof value=="string"&&value?value:"__MEGA_GLOBAL_MESSAGE__"}function dispatchMegaBroadcast(payload){let bizId=megaBroadcastBizId(payload.bizId),eventName=typeof payload.eventName=="string"?payload.eventName:"";if(eventName)for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||(listener.once&&megaBroadcastListeners.delete(listener.id),emitMegaCallback(listener.callback,{statusCode:1,type:"onEvent",data:{detail:payload.detail}}),listener.once&&emitMegaCallback(listener.callback,{statusCode:99,type:"finish"}))}let documentPrototype=typeof Document=="function"?Document.prototype:null,nativeHiddenDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"hidden"):void 0,nativeVisibilityDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"visibilityState"):void 0;function installSimulatedVisibilityState(){if(!simulatedVisibilityInstalled){simulatedVisibilityInstalled=!0;try{Object.defineProperty(document,"hidden",{configurable:!0,get:()=>simulatedPageHidden||!!(nativeHiddenDescriptor?.get?.call(document)??!1)}),Object.defineProperty(document,"visibilityState",{configurable:!0,get:()=>simulatedPageHidden?"hidden":nativeVisibilityDescriptor?.get?.call(document)??"visible"})}catch{}}}function dispatchPageTransitionEvent(type){try{let event=typeof PageTransitionEvent=="function"?new PageTransitionEvent(type,{persisted:!1}):new Event(type);window.dispatchEvent(event)}catch{}}function dispatchActiveEvents(){for(let name of config2.activeEvents)try{document.dispatchEvent(new Event(name))}catch{}}function handlePageVisibility(hidden){if(hidden===simulatedPageHidden)return;installSimulatedVisibilityState(),simulatedPageHidden=hidden;let lifeCycleType=hidden?"onPageDisappear":"onPageAppear";for(let callback of megaLifeCycleListeners)emitMegaCallback(callback,{statusCode:1,type:lifeCycleType,data:{pageId:location.href}});try{document.dispatchEvent(new Event("visibilitychange"))}catch{}if(hidden){try{window.dispatchEvent(new Event("blur"))}catch{}dispatchPageTransitionEvent("pagehide");return}dispatchPageTransitionEvent("pageshow");try{window.dispatchEvent(new Event("focus"))}catch{}dispatchActiveEvents()}function resolveWindowFunction(path27){let parts=path27.split(".").filter(Boolean),owner=w;for(let index=0;index<parts.length-1;index+=1){let next=owner[parts[index]];if(!next||typeof next!="object")return null;owner=next}let fn=owner[parts[parts.length-1]];return typeof fn=="function"?fn.bind(owner):null}function handleNativeBack(){let megaHandled=!1;for(let callback of megaPageCloseListeners)megaHandled=!0,emitMegaCallback(callback,{statusCode:1,type:"onClose",data:{}});if(megaSystemBackListener&&(megaHandled=!0,emitMegaCallback(megaSystemBackListener,{statusCode:1,type:"onSuccess",data:{}})),megaHandled)return!0;let nativeBack=config2.nativeBack;if(!nativeBack)return!1;if(nativeBack.handler){let handler=resolveWindowFunction(nativeBack.handler);if(!handler)return!1;try{return handler(),!0}catch{return!1}}let controlled=!1;if(nativeBack.controlFunction){let control=resolveWindowFunction(nativeBack.controlFunction);if(!control)return!1;try{controlled=control()===!0}catch{return!1}if(!controlled)return!1}if(!nativeBack.event)return controlled;try{let event=new Event(nativeBack.event,{cancelable:!0});return document.dispatchEvent(event),controlled||event.defaultPrevented}catch{return controlled}}function handleAppMessage(message){if(!message||typeof message!="object")return;let payload=message;if(payload.kind==="megaBroadcast"){dispatchMegaBroadcast(payload);return}if(payload.kind==="megaKVStorage"){applyMegaKVMutation(payload);return}if(payload.kind==="legacyBroadcast"&&typeof payload.instanceId=="string"){try{let event=new CustomEvent(`Broadcast.Message.${payload.instanceId}`,{detail:payload.message});Object.defineProperty(event,"param",{configurable:!0,value:payload.message}),document.dispatchEvent(event)}catch{}return}if(payload.kind==="notification"&&typeof payload.name=="string"){let listener=notificationListeners.get(payload.name);listener&&setTimeout(()=>listener(payload.data),0);return}if(!(payload.kind!=="message"||!config2.messageEvent))try{document.dispatchEvent(new CustomEvent(config2.messageEvent,{detail:{data:payload.data}}))}catch{}}function sendAppMessage(message){if(isTop){handleAppMessage(message);return}window.top?.postMessage({source:SRC,type:"appMessageToOpener",message},"*")}function applyRuntimeResponses(responses){let current=config2.actions.responses??{};for(let[api,response]of Object.entries(responses))current[api]=response;config2.actions.responses=current}function parseFpt(value){let entries=[],normalized=value.trim();if(!normalized)return entries;let pattern3=/([0-9A-Za-z._-]+)\(([0-9A-Za-z._-]+)\)/g,consumed="";for(let match of normalized.matchAll(pattern3))consumed+=match[0],entries.push([match[1],match[2]]);return consumed===normalized?entries:[]}function setFptEntry(entries,key,value){entries.delete(key),entries.set(key,value)}function readInitialFptEntries(){let entries=new Map;try{for(let[key,value]of parseFpt(sessionStorage.getItem(FPT_STORAGE_KEY)??""))setFptEntry(entries,key,value)}catch{}try{let currentFpt=new URL(location.href).searchParams.get("fpt")??"";for(let[key,value]of parseFpt(currentFpt))setFptEntry(entries,key,value)}catch{}return entries}let fptEntries=readInitialFptEntries();function serializeFpt(entries){return Array.from(entries,([key,value])=>`${key}(${value})`).join("")}function persistFpt(){try{let value=serializeFpt(fptEntries);value?sessionStorage.setItem(FPT_STORAGE_KEY,value):sessionStorage.removeItem(FPT_STORAGE_KEY)}catch{}}function decorateUrlWithFpt(rawUrl){let targetUrl=mapScheme(rawUrl)??rawUrl;if(fptEntries.size===0)return targetUrl;try{let url2=new URL(targetUrl,location.href);if(url2.protocol!=="http:"&&url2.protocol!=="https:")return targetUrl;let merged=new Map(fptEntries);for(let[key,value]of parseFpt(url2.searchParams.get("fpt")??""))setFptEntry(merged,key,value);return url2.searchParams.set("fpt",serializeFpt(merged)),url2.href}catch{return targetUrl}}function classify(api){let a=config2.actions;return a.open.includes(api)?"open":a.close.includes(api)?"close":a.title.includes(api)?"title":a.navigationBar?.includes(api)?"navigationBar":a.statusBar?.includes(api)?"statusBar":a.systemInfo.includes(api)?"systemInfo":a.mtop.includes(api)?"mtop":a.kvGet?.includes(api)?"kvGet":a.kvSet?.includes(api)?"kvSet":a.kvDelete?.includes(api)?"kvDelete":a.pageContext?.includes(api)?"pageContext":a.responses&&Object.prototype.hasOwnProperty.call(a.responses,api)?"response":a.behaviors&&Object.prototype.hasOwnProperty.call(a.behaviors,api)?a.behaviors[api]:a.noop.includes(api)?"noop":"unknown"}function pickUrl(params){if(!params||typeof params!="object")return null;let p=params,candidates=[p.url,p.data?.url,p.param?.url,p.value?.params?.url];for(let c of candidates)if(typeof c=="string"&&c)return c;return null}function pickCloseData(params){if(params&&typeof params=="object"){let p=params;if("data"in p&&p.data!==void 0)return p.data;if(Object.keys(p).length>0)return p}}function decodeCookieValue2(raw){let value=raw;for(let i=0;i<2;i+=1)try{let decoded=decodeURIComponent(value);if(decoded===value)break;value=decoded}catch{break}return value.replace(/\\u([0-9a-f]{4})/gi,(_match,hex3)=>String.fromCharCode(Number.parseInt(hex3,16)))}function readCookie(name){let prefix=`${name}=`,pair=document.cookie.split(";").map(value=>value.trim()).find(value=>value.startsWith(prefix));return pair?decodeCookieValue2(pair.slice(prefix.length)):""}function readUserCookie(name){let pageUserCookie=w.userCookie;if(!pageUserCookie||typeof pageUserCookie!="object")return"";let value=pageUserCookie[name];return typeof value=="string"?decodeCookieValue2(value):""}function readFirstUserCookie(names){for(let name of names){let value=readCookie(name)||readUserCookie(name);if(value&&value!=="null")return value}return""}let cbSeq=0,callbacks={};function stashCallback(fn){if(typeof fn!="function")return 0;let id=++cbSeq;return callbacks[id]=fn,id}function extractQuery(url2,param){let q=url2.indexOf("?");if(q===-1)return null;for(let pair of url2.slice(q+1).split("&")){let eq=pair.indexOf("=");if(eq>0&&pair.slice(0,eq)===param)return pair.slice(eq+1)}return null}function matchesHostSuffix(hostname3,suffixes){if(!suffixes?.length)return!0;let normalizedHost=hostname3.toLowerCase().replace(/\.$/,"");return suffixes.some(value=>{let suffix=value.toLowerCase().replace(/^\./,"").replace(/\.$/,"");return normalizedHost===suffix||normalizedHost.endsWith(`.${suffix}`)})}function matchesRouteHost(rawUrl,suffixes){if(!suffixes?.length)return!0;try{let parsed=new URL(rawUrl,location.href),hostname3=parsed.protocol==="http:"||parsed.protocol==="https:"?parsed.hostname:location.hostname;return matchesHostSuffix(hostname3,suffixes)}catch{return matchesHostSuffix(location.hostname,suffixes)}}function resolveSchemeValue(raw,depth){if(depth>3)return null;let value=raw;try{value=decodeURIComponent(raw)}catch{}if(value.startsWith("{"))try{let found=pickUrl(JSON.parse(value));if(!found)return null;value=found}catch{return null}if(/^https?:/i.test(value))return value;if(/^[a-z][a-z0-9+.-]*:/i.test(value))return mapScheme(value,depth+1);let nestedUrl=extractQuery(value,"url");return nestedUrl?resolveSchemeValue(nestedUrl,depth+1):null}function mapScheme(url2,depth=0){if(depth>3)return null;let lower=url2.toLowerCase();for(let rule of config2.schemes){if(!matchesRouteHost(url2,rule.hostSuffixes))continue;let normalizedMatch=rule.match.toLowerCase(),matchedUrl=url2;if(!lower.startsWith(normalizedMatch)){if(!normalizedMatch.startsWith("/"))continue;try{let parsed=new URL(url2,location.href);if(matchedUrl=`${parsed.pathname}${parsed.search}${parsed.hash}`,!matchedUrl.toLowerCase().startsWith(normalizedMatch))continue}catch{continue}}if(rule.targetPath){let suffix=matchedUrl.slice(rule.match.length);if(suffix&&!suffix.startsWith("?")&&!suffix.startsWith("#"))continue;try{let source=new URL(matchedUrl),origin=location.origin;if(rule.targetHostPrefix){let hostname3=location.hostname.toLowerCase(),domainSuffix=hostname3==="wapa.taobao.com"||hostname3.endsWith(".wapa.taobao.com")?"wapa.taobao.com":hostname3==="m.taobao.com"||hostname3.endsWith(".m.taobao.com")?"m.taobao.com":"";domainSuffix&&(origin=`https://${rule.targetHostPrefix}.${domainSuffix}`)}let target=new URL(rule.targetPath,`${origin}/`);target.search=source.search,target.hash=source.hash;for(let[key,value]of Object.entries(rule.targetParams??{}))target.searchParams.has(key)||target.searchParams.set(key,value);return target.href}catch{return null}}if(!rule.param)continue;let raw=extractQuery(matchedUrl,rule.param);if(!raw)return null;let resolved=resolveSchemeValue(raw,depth);if(!resolved||!rule.useCurrentOrigin)return resolved;try{let target=new URL(resolved);return`${location.origin}${target.pathname}${target.search}${target.hash}`}catch{return resolved}}return null}function firstRouteParam(params,names){for(let name of names){let value=params.get(name);if(value)return value}return""}function resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){if(!rawUrl)return null;try{let target=new URL(rawUrl,location.href);for(let name of forwardParams){let value=paymentPageUrl.searchParams.get(name);value&&!target.searchParams.get(name)&&target.searchParams.set(name,value)}resultParam&&target.searchParams.set(resultParam.name,JSON.stringify(resultParam.value));let resolved=useCurrentOrigin&&(target.protocol==="http:"||target.protocol==="https:")?`${location.origin}${target.pathname}${target.search}${target.hash}`:target.href;return decorateUrlWithFpt(resolved)}catch{return null}}function openPaymentCallback(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){let target=resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam);target&&requestOpen(target,0,!1)}function handleMiniProgramPaymentRoute(rawUrl){let paymentPageUrl;try{paymentPageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=paymentPageUrl.pathname.replace(/\/+$/,"")||"/",rule=config2.miniProgram?.paymentRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&matchesHostSuffix(paymentPageUrl.hostname,candidate.hostSuffixes));if(!rule)return!1;let successUrl=firstRouteParam(paymentPageUrl.searchParams,rule.successUrlParams),failureUrl=firstRouteParam(paymentPageUrl.searchParams,rule.failureUrlParams),forwardParams=rule.forwardParams??[],useCurrentOrigin=rule.useCurrentOrigin===!0,paymentParams;try{let parsed=JSON.parse(paymentPageUrl.searchParams.get(rule.paymentParamsParam)??"");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error;paymentParams=parsed,paymentParams.timeStamp!==void 0&&(paymentParams.timeStamp=String(paymentParams.timeStamp))}catch{return log2("微信支付参数解析失败,执行失败回跳",rawUrl),openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams),!0}return showPaymentDialog("wx.requestPayment",paymentParams,result=>{openPaymentCallback(successUrl,paymentPageUrl,useCurrentOrigin,forwardParams,rule.successResultParam?{name:rule.successResultParam,value:result}:void 0)},()=>{openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams)}),!0}function finishMiniProgramNativeRoute(action,result,storageId){handleResume({data:action==="subscribeMessage"?result:void 0,storageId,callbackId:0,final:!0})}function handleMiniProgramNativeRoute(rawUrl){let nativePageUrl;try{nativePageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=nativePageUrl.pathname.replace(/\/+$/,"")||"/",action=nativePageUrl.searchParams.get("action");if(action!=="navigateMiniProgram"&&action!=="subscribeMessage"||!config2.miniProgram?.nativeRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&candidate.actions.includes(action)&&matchesHostSuffix(nativePageUrl.hostname,candidate.hostSuffixes)))return!1;let params={};nativePageUrl.searchParams.forEach((value,name)=>{params[name]=value});let storageId=nativePageUrl.searchParams.get("__storage_id");return handlePageVisibility(!0),showMiniProgramActionDialog(action,params,result=>finishMiniProgramNativeRoute(action,result,storageId),result=>finishMiniProgramNativeRoute(action,result,storageId)),!0}function handleMiniProgramPostMessage(data){let rules=config2.miniProgram?.messageRules;if(!rules?.length)return!1;let messages=Array.isArray(data)?data:[data],handled=!1;for(let value of messages){if(!value||typeof value!="object"||Array.isArray(value))continue;let message=value;if(typeof message.type!="string")continue;let rule=rules.find(candidate=>candidate.type===message.type&&matchesHostSuffix(location.hostname,candidate.hostSuffixes));rule&&(handled=!0,rule.action==="stageBackData"?(pendingMiniProgramBackData=message.data,hasPendingMiniProgramBackData=!0):rule.action==="closeAll"&&(isTop?requestCloseAll(message.data)||requestClose(message.data):window.top?.postMessage({source:SRC,type:"closeAll",data:message.data},"*")))}return handled}function matchesImagePickerScheme(url2){let lower=url2.toLowerCase();return config2.imagePicker?.schemes.some(scheme=>lower.startsWith(scheme))===!0}function createImagePickerCallbackId(){try{if(typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch{}return`${Date.now()}-${Math.random().toString(36).slice(2)}`}function handleMaybeScheme(url2){if(typeof url2!="string"||!url2||!/^[a-z][a-z0-9+.-]*:/i.test(url2)||/^(https?|about|blob|data|javascript):/i.test(url2))return!1;let mapped=mapScheme(url2);return mapped?(log2("scheme 映射为 H5 open:",url2,"→",mapped),requestOpen(decorateUrlWithFpt(mapped),0,!1)):log2("外部 scheme 已拦截(真机表现为唤端):",url2),!0}function handleResume(msg){let{data,storageId,callbackId,final,gotoEvent,silent}=msg;if(gotoEvent&&dispatchGotoEvent(data),callbackId&&callbacks[callbackId]){if(!silent)try{callbacks[callbackId]({backdata:data})}catch(e){console.error(TAG,"callbackCommand 执行失败",e)}final&&delete callbacks[callbackId]}if(data&&typeof data=="object"&&storageId)try{let d={...data};d.__$data=!0,d.__$storageId=String(storageId),localStorage.setItem("XPI_BACK_LISTENER_DATA_STORAGE",JSON.stringify(d))}catch{}simulatedPageHidden?handlePageVisibility(!1):dispatchActiveEvents()}function dispatchGotoEvent(data){if(data!==void 0)try{document.dispatchEvent(new CustomEvent("WV.GotoEvent",{detail:{data}}))}catch{}}function sendUserTrack(params){if(!params||typeof params!="object")return;let p=params,logkey=typeof p.logkey=="string"?p.logkey:"",gmkey=typeof p.gmkey=="string"?p.gmkey:typeof p.event=="string"?p.event:"",gokey=typeof p.gokey=="string"?p.gokey:"";if(!/^\/[0-9A-Za-z._/-]+$/.test(logkey)||!/^[0-9A-Za-z_-]+$/.test(gmkey))return;let pageWindow=w,aplus=pageWindow.goldlog??pageWindow.aplus;if(typeof aplus?.send!="function")return;let configuredHost=aplus.getMetaInfo?.("aplus-rhost-g"),host2=(typeof configuredHost=="string"?configuredHost:"gm.mmstat.com").replace(/^https?:\/\//i,"").replace(/^\/\//,"").split("/")[0];if(!(!host2||!/^[0-9A-Za-z.-]+$/.test(host2)))try{aplus.send(`//${host2}${logkey}`,`gmkey=${encodeURIComponent(gmkey)}&gokey=${gokey}&ts=${Date.now()}`,"GET")}catch{}}function readNetworkState(){let connection=navigator.connection;return navigator.onLine?connection?.type==="wifi"?"wifi":connection?.effectiveType??"unknown":"fail"}function networkTypeNumber(state){return{wifi:2,"slow-2g":3,"2g":3,"3g":4,"4g":5,"5g":6,fail:7}[state]??0}function emitVoiceRecognitionEvent(name,detail){try{document.dispatchEvent(new CustomEvent(name,{detail}))}catch{}}function browserSpeechRecognitionConstructor(){let candidate=w.SpeechRecognition??w.webkitSpeechRecognition;return typeof candidate=="function"?candidate:null}function voiceRecognitionLanguage(){let language=config2.language||navigator.language||"zh-CN";return/^zh-hans$/i.test(language)?"zh-CN":/^zh-hant$/i.test(language)?"zh-TW":language}function localVoiceRecognitionLanguage(language){return/^zh-(cn|hans)$/i.test(language)?"cmn-Hans-CN":/^zh-(tw|hant)$/i.test(language)?"cmn-Hant-TW":language}function detachVoiceRecognition(recognition){recognition.onstart=null,recognition.onresult=null,recognition.onerror=null,recognition.onend=null,recognition.onspeechstart=null,recognition.onspeechend=null}function finishVoiceRecognition(recognition,status){if(voiceRecognition!==recognition)return;let content=voiceRecognitionInterimTranscript.trim()||voiceRecognitionTranscript.trim();voiceRecognition=null,voiceRecognitionSession+=1,voiceRecognitionRunning=!1,voiceRecognitionStopping=!1,voiceRecognitionInterimTranscript="",detachVoiceRecognition(recognition),emitVoiceRecognitionEvent("WV.Voicetone",{tone:0}),emitVoiceRecognitionEvent("WV.VoiceRecog",{content,finished:!0,status})}function cancelVoiceRecognition(notifyPage){let recognition=voiceRecognition;if(recognition){voiceRecognition=null,voiceRecognitionSession+=1,voiceRecognitionRunning=!1,voiceRecognitionStopping=!1,voiceRecognitionInterimTranscript="",detachVoiceRecognition(recognition);try{recognition.abort()}catch{}emitVoiceRecognitionEvent("WV.Voicetone",{tone:0}),notifyPage&&emitVoiceRecognitionEvent("WV.VoiceRecogFailed",{status:2})}}function startVoiceRecognition(succeed,failed){cancelVoiceRecognition(!1);let SpeechRecognition=browserSpeechRecognitionConstructor();if(!SpeechRecognition){let error48={error_code:-1,error_message:"speech recognition unavailable"};emitVoiceRecognitionEvent("WV.VoiceRecogFailed",{status:-1,...error48}),failed(error48);return}let recognition=new SpeechRecognition,session=++voiceRecognitionSession;voiceRecognition=recognition,voiceRecognitionTranscript="",voiceRecognitionInterimTranscript="",voiceRecognitionStopping=!1,voiceRecognitionRunning=!1,recognition.continuous=!0,recognition.interimResults=!0,recognition.maxAlternatives=1,recognition.lang=voiceRecognitionLanguage();let isCurrent=()=>voiceRecognition===recognition&&voiceRecognitionSession===session,recognitionFailed=!1,failRecognition=(message,code)=>{if(!isCurrent()||recognitionFailed)return;recognitionFailed=!0;let error48={error_code:-1,error_message:message,error:code};voiceRecognition=null,voiceRecognitionSession+=1,voiceRecognitionRunning=!1,voiceRecognitionStopping=!1,detachVoiceRecognition(recognition);try{recognition.abort()}catch{}emitVoiceRecognitionEvent("WV.Voicetone",{tone:0}),emitVoiceRecognitionEvent("WV.VoiceRecogFailed",{status:-1,...error48}),failed(error48)},beginRecognition=()=>{if(isCurrent())try{recognition.start(),voiceRecognitionRunning=!0,succeed({})}catch(error48){failRecognition(error48 instanceof Error?error48.message:"speech recognition start failed","start-failed")}};recognition.onstart=()=>{isCurrent()&&(voiceRecognitionRunning=!0)},recognition.onspeechstart=()=>{isCurrent()&&emitVoiceRecognitionEvent("WV.Voicetone",{tone:10})},recognition.onspeechend=()=>{isCurrent()&&emitVoiceRecognitionEvent("WV.Voicetone",{tone:0})},recognition.onresult=event=>{if(!isCurrent()||!event.results)return;let interimTranscript="",startIndex=Math.max(0,event.resultIndex??0);for(let index=startIndex;index<event.results.length;index+=1){let result=event.results[index],transcript=result?.[0]?.transcript??"";result?.isFinal?voiceRecognitionTranscript+=transcript:interimTranscript+=transcript}let content=`${voiceRecognitionTranscript}${interimTranscript}`.trim();voiceRecognitionInterimTranscript=content,content&&emitVoiceRecognitionEvent("WV.VoiceRecogPartial",{content})},recognition.onerror=event=>{if(!isCurrent())return;let code=event.error??"unknown";code!=="no-speech"&&(code==="aborted"&&voiceRecognitionStopping||failRecognition(event.message||`speech recognition failed: ${code}`,code))},recognition.onend=()=>{if(isCurrent()){if(voiceRecognitionRunning=!1,voiceRecognitionStopping){finishVoiceRecognition(recognition,1);return}setTimeout(()=>{if(!(!isCurrent()||voiceRecognitionStopping))try{recognition.start(),voiceRecognitionRunning=!0}catch(error48){failRecognition(error48 instanceof Error?error48.message:"speech recognition restart failed","restart-failed")}},0)}};let localLanguage=localVoiceRecognitionLanguage(recognition.lang);if(typeof recognition.processLocally=="boolean"&&typeof SpeechRecognition.available=="function"){SpeechRecognition.available({langs:[localLanguage],processLocally:!0}).then(availability=>{if(isCurrent()){if(availability==="available"){recognition.lang=localLanguage,recognition.processLocally=!0,beginRecognition();return}if((availability==="downloadable"||availability==="downloading")&&typeof SpeechRecognition.install=="function"){showAppToast({message:"正在准备语音识别,首次使用可能需要一些时间",milliseconds:3e3}),SpeechRecognition.install({langs:[localLanguage],processLocally:!0}).then(installed=>{if(!installed){isCurrent()&&beginRecognition();return}if(!isCurrent()){showAppToast({message:"语音识别已准备好,请再试一次",milliseconds:3e3});return}recognition.lang=localLanguage,recognition.processLocally=!0,beginRecognition()}).catch(()=>beginRecognition());return}beginRecognition()}}).catch(()=>beginRecognition());return}beginRecognition()}function calendarTimestamp(value){if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value!="string"||!value.trim())return null;let numeric=Number(value);if(Number.isFinite(numeric)&&numeric>0)return numeric;let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}function calendarEventFromParams(params){let p=params&&typeof params=="object"?params:{},stringValue=(...values)=>values.find(value=>typeof value=="string")??"";return{title:stringValue(p.calendar_title,p.title),startTime:calendarTimestamp(p.calendar_start_ms??p.start_time??p.calendar_start_datetime),endTime:calendarTimestamp(p.calendar_end_ms??p.end_time??p.calendar_end_datetime),url:stringValue(p.calendar_url,p.url),note:stringValue(p.calendar_note,p.note),location:stringValue(p.calendar_location,p.location)}}function readCalendarEvents(){try{let parsed=JSON.parse(localStorage.getItem(CALENDAR_STORAGE_KEY)??"[]");return Array.isArray(parsed)?parsed.filter(event=>event!==null&&typeof event=="object"&&typeof event.title=="string"):[]}catch{return[]}}function writeCalendarEvents(events){try{return localStorage.setItem(CALENDAR_STORAGE_KEY,JSON.stringify(events)),!0}catch{return!1}}function sameCalendarEvent(stored,candidate){return candidate.url?stored.url===candidate.url:!!candidate.title&&stored.title===candidate.title&&(candidate.startTime===null||stored.startTime===candidate.startTime)&&(candidate.endTime===null||stored.endTime===candidate.endTime)}function calendarEventResponse(event){return{title:event.title,start_time:event.startTime,end_time:event.endTime,url:event.url,note:event.note,location:event.location}}function dispatch(api,params,onSuccess,onFailure,callbackCommandFn){let succeed=value=>{onSuccess&&setTimeout(()=>onSuccess(value),0)},failed=reason=>{onFailure&&setTimeout(()=>onFailure(reason),0)},kind=classify(api),silent=config2.actions.silent?.includes(api)===!0;if(silent||log2("桥调用",api,`(${kind})`,params??""),kind==="open"||kind==="navigate"){let p=params&&typeof params=="object"?params:{},navigationData=p.data&&typeof p.data=="object"?p.data:void 0;if(kind==="navigate"&&navigationData?.type==="back"){isTop?requestCloseAll(navigationData.data,!0)||dispatchGotoEvent(navigationData.data):window.top?.postMessage({source:SRC,type:"closeAll",data:navigationData.data,gotoEvent:!0},"*"),succeed({});return}let url2=pickUrl(params);if(!url2){failed("missing url");return}if(matchesImagePickerScheme(url2)){openImagePicker({maxSelect:1,capture:!1},urls=>{let pic=urls[0];pic&&typeof callbackCommandFn=="function"&&callbackCommandFn({pic,uuid:createImagePickerCallbackId(),timeStamp:Date.now()})},error48=>console.error(TAG,"图片选择失败:",error48)),succeed({});return}if(handleMiniProgramPaymentRoute(url2)){succeed({});return}if(handleMiniProgramNativeRoute(url2)){succeed({});return}let wd=p.useWebdialog===!0||p.useWebdialog==="true"||p.useWebdialog===1||p.useWebdialog==="1";requestOpen(decorateUrlWithFpt(url2),stashCallback(callbackCommandFn),wd,p),succeed({});return}if(kind==="closeAll"){isTop?requestCloseAll(void 0):window.top?.postMessage({source:SRC,type:"closeAll"},"*"),succeed({});return}if(kind==="closeBackData"){let p=params&&typeof params=="object"?params:{};requestClose(Object.prototype.hasOwnProperty.call(p,"backdata")?p.backdata:pickCloseData(p)),succeed({});return}if(kind==="close"){if(api==="navigateBack"&&hasPendingMiniProgramBackData){let data=pendingMiniProgramBackData;pendingMiniProgramBackData=void 0,hasPendingMiniProgramBackData=!1,requestClose(data)}else requestClose(pickCloseData(params));succeed({});return}if(kind==="postMessage"){let p=params&&typeof params=="object"?params:{},data=p.data??p;handleMiniProgramPostMessage(data)||sendAppMessage({kind:"message",data}),succeed({});return}if(kind==="notifySubscribe"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}onSuccess&&notificationListeners.set(p.name,onSuccess);return}if(kind==="notifyUnsubscribe"){let p=params&&typeof params=="object"?params:{};typeof p.name=="string"&&notificationListeners.delete(p.name),succeed({});return}if(kind==="notifyPost"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}sendAppMessage({kind:"notification",name:p.name,data:p.data}),succeed({});return}if(kind==="sharedFileRead"||kind==="sharedFileWrite"||kind==="sharedDataGet"||kind==="sharedDataSet"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="legacyBroadcastCreate"||kind==="legacyBroadcastPost"||kind==="legacyBroadcastClose"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="title"){let title=params&&typeof params=="object"?params.title??params.name:void 0;if(typeof title=="string"&&title){systemBars.markStateExplicit();try{document.title=title,syncSimulatedTitleBar()}catch{}isTop||window.top?.postMessage({source:SRC,type:"title",title},"*")}succeed({});return}if(kind==="navigationBar"){applyNavigationBarState(api,params),succeed({});return}if(kind==="statusBar"){applyStatusBarState(params),succeed({});return}if(kind==="systemInfo"){let model=config2.globals.__DEVICE_MODEL__||"iPhone",info={language:config2.language,model,systemVersion:config2.systemVersion,statusBarHeight:config2.statusBarHeight,platform:config2.platform,brand:config2.platform==="iOS"?"Apple":"Android",client_version:config2.globals.__APP_VERSION__??"",client_type:config2.clientType};succeed(api==="WVNativeDetector.getModelInfo"?{...info,platform:model}:info);return}if(kind==="mtop"){callMtop(params??{},onSuccess,onFailure);return}if(kind==="mtopStream"){callMtopStream(params??{},succeed,failed);return}if(kind==="kvGet"||kind==="kvSet"||kind==="kvDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed("missing key");return}try{let storageKey=`__mearl_app_kv__:${key}`;if(kind==="kvGet"){let stored=localStorage.getItem(storageKey);stored!==null?succeed(stored):failed(JSON.stringify({ret:["HY_FAILED"],msg:"key not found"}))}else if(kind==="kvSet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);localStorage.setItem(storageKey,value),succeed({})}else localStorage.removeItem(storageKey),succeed({})}catch{failed(JSON.stringify({ret:["HY_FAILED"],msg:"kv storage unavailable"}))}return}if(kind==="pageContext"){succeed({pageContext:void 0});return}if(kind==="memoryGet"||kind==="memorySet"||kind==="memoryDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed({error_message:"missing key"});return}try{let storageKey=`__mearl_app_memory__:${key}`;if(kind==="memoryGet"){let value=sessionStorage.getItem(storageKey);succeed(value===null?{}:{value})}else if(kind==="memorySet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);sessionStorage.setItem(storageKey,value),succeed({key,success:!0})}else sessionStorage.removeItem(storageKey),succeed({key,success:!0})}catch{failed({error_message:"memory cache unavailable"})}return}if(kind==="availabilityMap"){let p=params&&typeof params=="object"?params:{},channels=Array.isArray(p.data)?p.data.filter(value=>typeof value=="string"):[];succeed({res:"success",data:Object.fromEntries(channels.map(channel=>[channel,!1]))});return}if(kind==="userInfo"){let userId=readFirstUserCookie(["unb"]),userName=readFirstUserCookie(["_w_tb_nick","_nk_","snk","tracknick"]);callUserInfo({...userId&&{userId},...userName&&{userName}},succeed);return}if(kind==="authCode"){callAuthCode(params,succeed,failed);return}if(kind==="networkInfo"){let state=readNetworkState();if(api==="WVNetwork.getNetworkType"){succeed({type:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G"}[state]??"UNKNOWN"});return}if(config2.policies?.networkResult==="alipay"){succeed({networkAvailable:state!=="fail",networkType:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G",fail:"NOTREACHABLE"}[state]??"UNKNOWN"});return}let type=networkTypeNumber(state);succeed({type,state:state==="slow-2g"?"2g":state});return}if(kind==="networkQualityMonitor"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"";if(action==="add_notify_network_quality"){if(!stopNetworkQualityMonitor){let notify=()=>{try{document.dispatchEvent(new CustomEvent("WV.NETWORK_TYPE_CHANGED",{detail:{new_network_type:networkTypeNumber(readNetworkState())}}))}catch{}},connection=navigator.connection;window.addEventListener("online",notify),window.addEventListener("offline",notify),connection?.addEventListener?.("change",notify),stopNetworkQualityMonitor=()=>{window.removeEventListener("online",notify),window.removeEventListener("offline",notify),connection?.removeEventListener?.("change",notify)}}succeed({});return}if(action==="remove_notify_network_quality"){stopNetworkQualityMonitor?.(),stopNetworkQualityMonitor=null,succeed({});return}failed({error_message:"unsupported network quality monitor action"});return}if(kind==="voiceRecognition"){let status=Number((params&&typeof params=="object"?params:{}).status);if(status===0){startVoiceRecognition(succeed,failed);return}if(status===1){let recognition=voiceRecognition;if(recognition)if(voiceRecognitionStopping=!0,voiceRecognitionRunning)try{recognition.stop()}catch{finishVoiceRecognition(recognition,1)}else finishVoiceRecognition(recognition,1);succeed({});return}if(status===2){cancelVoiceRecognition(!0),succeed({});return}failed({error_code:-1,error_message:"unsupported voice recognition status"});return}if(kind==="beaconRequest"){let url2=pickUrl(params);if(!url2){failed({error_message:"missing url"});return}try{let resolved=new URL(url2,location.href);if(resolved.protocol!=="http:"&&resolved.protocol!=="https:"){failed({error_message:"unsupported request protocol"});return}let image=new Image;image.referrerPolicy="no-referrer-when-downgrade",image.src=resolved.href,succeed({})}catch{failed({error_message:"invalid url"})}return}if(kind==="calendar"){let p=params&&typeof params=="object"?params:{},events=readCalendarEvents();if(api==="store_calendar_event"){let event=calendarEventFromParams(p);if(!event.title||event.startTime===null){failed({error_message:"calendar title and start time are required"});return}let next=events.filter(stored=>!sameCalendarEvent(stored,event));if(next.push(event),!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0});return}if(api==="remove_calendar_event"){let candidate=calendarEventFromParams(p),next=events.filter(stored=>!sameCalendarEvent(stored,candidate));if(!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0,removed:events.length-next.length});return}if(api==="check_batch_calendar"){let batch=Array.isArray(p.batch)?p.batch:[];succeed({batch:batch.map(item=>{let candidate=calendarEventFromParams(item);return{...item&&typeof item=="object"?item:{},success:events.some(stored=>sameCalendarEvent(stored,candidate))}})});return}let urls=Array.isArray(p.urls)?p.urls.filter(value=>typeof value=="string"):typeof p.url=="string"?[p.url]:[],titles=Array.isArray(p.calendar_titles)?p.calendar_titles.filter(value=>typeof value=="string"):typeof p.calendar_title=="string"?[p.calendar_title]:[],matched=events.filter(event=>(urls.length===0||urls.includes(event.url))&&(titles.length===0||titles.includes(event.title)));succeed({events:matched.map(calendarEventResponse)});return}if(kind==="geolocation"){let p=params&&typeof params=="object"?params:{},windvane=api==="WVLocation.getLocation",wechat=api==="getLocation"&&config2.bridges.some(bridge=>bridge.style==="wechat"),failLocation=(errorCode,errorMsg)=>{failed({errorCode,errorMsg,...windvane&&{ret:["HY_FAILED"],errMsg:errorCode===1?"PERMISSION_DENIED":"POSITION_UNAVAILABLE",message:errorMsg},...wechat&&{errMsg:`getLocation:fail ${errorMsg}`}})};if(wechat&&p.type&&p.type!=="wgs84"){failLocation(2,`unsupported coordinate type: ${String(p.type)}`);return}if(!navigator.geolocation){failLocation(2,"geolocation unavailable");return}let locate=()=>navigator.geolocation.getCurrentPosition(position=>{let{latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed}=position.coords,coords={latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed};if(api==="lbs"){let provider=config2.geolocation;if(!provider){failLocation(2,"reverse geocoding unavailable");return}callMtop({api:provider.reverseGeocodeApi,v:provider.version,data:{latitude,longitude,includeGJ:1},timeout:5e3},value=>{let response=value??{},address=response.data??{};if(!Array.isArray(response.ret)||!response.ret.some(ret=>typeof ret=="string"&&ret.startsWith("SUCCESS::"))||typeof address.cityName!="string"||!address.cityName.trim()||typeof address.cityCode!="string"||!address.cityCode.trim()){failLocation(2,"reverse geocoding returned no city");return}succeed({...coords,timestamp:position.timestamp,country:address.country,province:address.province,district:address.district,city:address.cityName,cityName:address.cityName,cityCode:address.cityCode,divisionId:address.divisionId,iataCode:address.iataCode,address:address.detail})},()=>failLocation(2,"reverse geocoding failed"));return}succeed(windvane?{ret:["HY_SUCCESS"],coords,timestamp:position.timestamp}:{...coords,timestamp:position.timestamp,...wechat&&{errMsg:"getLocation:ok"}})},error48=>failLocation(error48.code,error48.message),{enableHighAccuracy:p.enableHighAccuracy===!0||p.enableHighAcuracy===!0,timeout:1e4,maximumAge:p.useCache===!1?0:3e5});navigator.permissions?.query?navigator.permissions.query({name:"geolocation"}).then(status=>{status.state==="granted"?locate():failLocation(1,"location permission not granted")}).catch(locate):locate();return}if(kind==="permission"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",permission=typeof p.permission=="string"?p.permission:"",permissionFailed=message=>failed({error_code:-1,error_message:message});if(permission==="album"||permission==="MODIFY_AUDIO_SETTINGS"){action==="check"||action==="request"?succeed({}):permissionFailed("unsupported permission action");return}let browserPermission=permission==="mic"?"microphone":permission==="camera"?"camera":permission==="lbs"?"geolocation":"";if(!browserPermission){permissionFailed("unsupported permission");return}if(action==="check"&&navigator.permissions?.query){navigator.permissions.query({name:browserPermission}).then(status=>{status.state==="granted"?succeed({}):permissionFailed("permission not granted")}).catch(()=>permissionFailed("permission check failed"));return}if(action==="request"&&(permission==="mic"||permission==="camera")){if(!navigator.mediaDevices?.getUserMedia){permissionFailed("media permission unavailable");return}navigator.mediaDevices.getUserMedia({audio:permission==="mic",video:permission==="camera"}).then(stream=>{for(let track of stream.getTracks())track.stop();succeed({})}).catch(()=>permissionFailed("permission denied"));return}if(action==="request"&&permission==="lbs"&&navigator.geolocation){navigator.geolocation.getCurrentPosition(()=>succeed({}),()=>permissionFailed("permission denied"),{timeout:1e4});return}permissionFailed("unsupported permission action");return}if(kind==="imagePicker"){let p=params&&typeof params=="object"?params:{},requestedMaxSelect=Number(p.maxSelect??p.max_select),maxSelect=Number.isFinite(requestedMaxSelect)?requestedMaxSelect:1,pickType=Number(p.pickType??p.pick_type),uploadType=Number(p.uploadType??p.upload_type);openImagePicker({maxSelect,capture:pickType===1,resultType:uploadType===3?"dataUrl":"uploadedUrl"},urls=>succeed({imgUrls:urls}),failed);return}if(kind==="prefetch"){let p=params&&typeof params=="object"?params:{},url2=typeof p.url=="string"?p.url:"";if(!url2){failed({code:-1,errorMsg:"url is empty"});return}let resolvedUrl;try{resolvedUrl=new URL(url2,location.href).href}catch{failed({code:-1,errorMsg:"invalid url"});return}if(!Array.from(document.querySelectorAll('link[rel="prefetch"]')).some(link=>link.href===resolvedUrl)){let link=document.createElement("link");link.rel="prefetch",link.href=url2,(document.head??document.documentElement).appendChild(link)}succeed({});return}if(kind==="fptTrack"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",actionParams=p.params&&typeof p.params=="object"?p.params:{},key=typeof actionParams.key=="string"?actionParams.key:"";if(action==="setFpt"){let value=typeof actionParams.value=="string"?actionParams.value:"";if(!key||!value||!/^[0-9A-Za-z._-]+$/.test(key)||!/^[0-9A-Za-z._-]+$/.test(value)||`${key}(${value})`.length>100){failed({error_message:"invalid fpt key or value"});return}setFptEntry(fptEntries,key,value),persistFpt()}else action==="deleteFpt"&&key&&(fptEntries.delete(key),persistFpt());succeed({});return}if(kind==="previewFile"){let p=params&&typeof params=="object"?params:{},fileUrl=typeof p.file_url=="string"?p.file_url:"",remoteUrl=typeof p.file_remote_url=="string"?p.file_remote_url:"",url2=(fileUrl.startsWith("http")?fileUrl:remoteUrl)||fileUrl||remoteUrl;url2?(requestOpen(url2,0,!1),succeed({})):failed({code:-1,errorMsg:"file_url is empty"});return}if(kind==="toast"){let error48=showAppToast(params);error48?failed({error_message:error48}):succeed({});return}if(kind==="unsupportedNativeInput"){let containerType="";try{containerType=new URL(location.href).searchParams.get("containerType")??""}catch{}!unsupportedNativeInputNotified&&(containerType==="h5_dx"||containerType==="flutter_h5")&&(unsupportedNativeInputNotified=!0,showAppToast({message:"当前页面使用原生输入框,请移除 URL 中的 containerType 参数以正常操作",milliseconds:4e3})),succeed({});return}if(kind==="payment"){log2("桥调用支付,等待用户确认",api,params),showPaymentDialog(api,params,succeed,failed);return}if(kind==="userTrack"){sendUserTrack(params),succeed({});return}if(kind==="response"){succeed(config2.actions.responses?.[api]);return}if(kind==="noop"){succeed({});return}silent||log2("未覆盖桥方法,回调 failure(页面库将走 H5 兜底):",api),failed(NOT_IMPLEMENTED_PAYLOAD)}let MEGA_SUPPORTED_APIS={stdPop:["showWeex2","showWeex","showH5","changeSize","close"],broadcast:["addEventListener","dispatchEvent","removeEventListener"],kvStorage:["setItem","getItem","removeItem","getAllKeys","clear","getCurrentInfo","getCurrentInfoAndKeys"],LifeCycle:["addPageLifeCycleListener","removePageLifeCycleListener"],Container:["interceptPageClose","disableInterceptPageClose"],navigator:["openURL","close","replace","setSystemBackBlockListener","removeSystemBackBlockListener"],NavBar:["setTitle"],Router:["popPage"]};function isMegaApiSupported(ability,api){return typeof ability=="string"&&typeof api=="string"&&MEGA_SUPPORTED_APIS[ability]?.includes(api)===!0}function megaParams(value){return value&&typeof value=="object"&&!Array.isArray(value)?value:{}}function megaError(callback,statusCode,message){emitMegaCallback(callback,{statusCode,type:"result",data:{errorMessage:typeof message=="string"?message:String(message??"")}})}function cloneMegaDetail(value){if(value===void 0)return{success:!0,value:void 0};try{return{success:!0,value:JSON.parse(JSON.stringify(value))}}catch{return{success:!1}}}function megaSuccess(data={}){return{statusCode:0,type:"result",data}}function megaFailure(message){return{statusCode:500,type:"result",data:{errorMessage:message}}}function megaKVParams(params){return{bizId:typeof params.bizID=="string"?params.bizID:typeof params.bizId=="string"?params.bizId:"",key:typeof params.key=="string"?params.key:"",value:typeof params.value=="string"?params.value:null}}function megaStringByteLength(value){try{return typeof TextEncoder=="function"?new TextEncoder().encode(value).length:value.length}catch{return value.length}}function megaKVUsedSize(entries){let size=0;for(let value of entries.values())size+=megaStringByteLength(value);return size}function reportMegaKVMutation(operation,bizId,key="",value,onSuccess,onFailure){requestContainerData("megaKVMutation",{operation,bizId,key,...value===void 0?{}:{value}},()=>onSuccess?.(),reason=>{log2("KVStorage 容器同步失败:",reason),onFailure?.(reason)})}function completeMegaKVMutation(operation,bizId,key,value,synchronous,callback){let result=megaSuccess();return reportMegaKVMutation(operation,bizId,key,value,synchronous?void 0:()=>emitMegaCallback(callback,result),synchronous?void 0:reason=>emitMegaCallback(callback,megaFailure(String(reason??"container sync failed")))),synchronous?result:null}function executeMegaKVStorage(api,params,synchronous,callback){let{bizId,key,value}=megaKVParams(params);if(!bizId)return megaFailure("missing bizID");let entries=megaKVStorage.get(bizId)??new Map;if(api==="setItem"){if(!key)return megaFailure("missing key");if(value===null||value==="")return megaFailure("missing value");let previousSize=megaStringByteLength(entries.get(key)??"");return megaKVUsedSize(entries)-previousSize+megaStringByteLength(value)>MEGA_KV_TOTAL_SIZE?megaFailure("KVStorage quota exceeded"):(entries.set(key,value),megaKVStorage.set(bizId,entries),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("set",bizId,key,value,synchronous,callback))}if(api==="getItem"){if(!key)return megaFailure("missing key");let result=entries.get(key)??"";return megaSuccess(synchronous?{result}:result)}if(api==="removeItem")return key?(entries.delete(key),entries.size===0&&megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("remove",bizId,key,void 0,synchronous,callback)):megaFailure("missing key");if(api==="getAllKeys"){let result=Array.from(entries.keys());return megaSuccess(synchronous?{result}:result)}if(api==="clear")return megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("clear",bizId,"",void 0,synchronous,callback);if(api==="getCurrentInfo"||api==="getCurrentInfoAndKeys"){let data={totalSize:MEGA_KV_TOTAL_SIZE,freeSize:Math.max(MEGA_KV_TOTAL_SIZE-megaKVUsedSize(entries),0)};return api==="getCurrentInfoAndKeys"&&(data.keys=Array.from(entries.keys())),megaSuccess(data)}return{statusCode:405,type:"result",data:{}}}function handleMegaLifeCycle(api,callback){if(api==="addPageLifeCycleListener"){callback&&megaLifeCycleListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="removePageLifeCycleListener"){let listeners=Array.from(megaLifeCycleListeners);megaLifeCycleListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`LifeCycle.${api} is not supported`)}function handleMegaContainer(api,callback){if(api==="interceptPageClose"){callback&&megaPageCloseListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="disableInterceptPageClose"){let listeners=Array.from(megaPageCloseListeners);megaPageCloseListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`Container.${api} is not supported`)}function megaNavigationUrl(params){let rawUrl=pickUrl(params);if(!rawUrl)return null;if(!params.extQuery||typeof params.extQuery!="object"||Array.isArray(params.extQuery))return rawUrl;try{let target=new URL(rawUrl,location.href);for(let[key,value]of Object.entries(params.extQuery))value!=null&&target.searchParams.set(key,String(value));return target.href}catch{return rawUrl}}function handleMegaNavigator(api,params,callback){if(api==="openURL"||api==="replace"){let url2=megaNavigationUrl(params);if(!url2){megaError(callback,500,"missing url");return}let callbackId=api==="openURL"&&callback?stashCallback(value=>{let backdata=value&&typeof value=="object"?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onResult",data:{result:!0,...backdata===void 0?{}:{data:backdata}}}),emitMegaCallback(callback,{statusCode:99,type:"finish",data:{}})}):0;requestOpen(url2,callbackId,!1,{...params,...api==="replace"?{__mearlReplace:!0}:{}}),emitMegaCallback(callback,megaSuccess());return}if(api==="close"){emitMegaCallback(callback,megaSuccess()),requestClose(void 0);return}if(api==="setSystemBackBlockListener"){megaSystemBackListener&&megaSystemBackListener!==callback&&emitMegaCallback(megaSystemBackListener,{statusCode:99,type:"finish",data:{}}),megaSystemBackListener=callback??null,emitMegaCallback(callback,megaSuccess());return}if(api==="removeSystemBackBlockListener"){let listener=megaSystemBackListener;megaSystemBackListener=null,emitMegaCallback(callback,megaSuccess()),listener&&emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`navigator.${api} is not supported`)}function handleMegaNavBar(api,params,callback){if(api!=="setTitle"){megaError(callback,405,`NavBar.${api} is not supported`);return}applyNavigationBarState(api,params),emitMegaCallback(callback,megaSuccess())}function handleMegaRouter(api,callback){if(api!=="popPage"){megaError(callback,405,`Router.${api} is not supported`);return}emitMegaCallback(callback,megaSuccess()),requestClose(void 0)}function handleMegaStdPop(api,params,callback){if(api==="showH5"||api==="showWeex2"||api==="showWeex"){let url2=pickUrl(params),popId=typeof params.popId=="string"?params.popId.trim():"";if(!url2||!popId){megaError(callback,500,url2?"missing popId":"missing url");return}let callbackId=stashCallback(value=>{let result=value&&typeof value=="object"&&"backdata"in value?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onClose",data:result}),emitMegaCallback(callback,{statusCode:99,type:"finish"})});requestOpen(url2,callbackId,!0,{...params,__mearlMegaPopId:popId}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(api==="close"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}let cloned=cloneMegaDetail(params.result);if(!cloned.success){megaError(callback,500,"result is not serializable");return}requestContainerData("megaPopClose",{popId,result:cloned.value},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="changeSize"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}requestContainerData("megaPopResize",{...params,popId},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}megaError(callback,405,`stdPop.${api} is not supported`)}function handleMegaBroadcast(api,params,callback){let bizId=megaBroadcastBizId(params.bizId),eventName=typeof params.eventName=="string"?params.eventName.trim():"";if(!eventName){megaError(callback,500,"missing eventName");return}if(api==="addEventListener"){if(!callback)return;let id=`mearl-mega-listener-${++megaListenerSeq}`;megaBroadcastListeners.set(id,{id,bizId,eventName,once:params.once===!0,callback}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),emitMegaCallback(callback,{statusCode:1,type:"onAdd",data:{listenerId:id}});return}if(api==="dispatchEvent"){let detail=cloneMegaDetail(params.detail);if(!detail.success){megaError(callback,500,"detail is not serializable");return}requestContainerData("megaBroadcast",{message:{kind:"megaBroadcast",bizId,eventName,detail:detail.value}},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="removeEventListener"){let listenerId=typeof params.listenerId=="string"?params.listenerId:"",removed=[];for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||listenerId&&listener.id!==listenerId||(megaBroadcastListeners.delete(listener.id),removed.push(listener));emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});for(let listener of removed)emitMegaCallback(listener.callback,{statusCode:99,type:"finish"});return}megaError(callback,405,`broadcast.${api} is not supported`)}function makeMegaBridge(){return{asyncCall:(ability,api,rawParams,callback)=>{let params=megaParams(rawParams);if(ability==="ability"&&api==="available"){emitMegaCallback(callback,{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}});return}if(ability==="ability"&&api==="batchFinishTrace"){emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(!isMegaApiSupported(ability,api)){megaError(callback,405,`${ability}.${api} is not supported`);return}if(ability==="stdPop")handleMegaStdPop(api,params,callback);else if(ability==="broadcast")handleMegaBroadcast(api,params,callback);else if(ability==="kvStorage"){let result=executeMegaKVStorage(api,params,!1,callback);result&&emitMegaCallback(callback,result)}else ability==="LifeCycle"?handleMegaLifeCycle(api,callback):ability==="Container"?handleMegaContainer(api,callback):ability==="navigator"?handleMegaNavigator(api,params,callback):ability==="NavBar"?handleMegaNavBar(api,params,callback):handleMegaRouter(api,callback)},syncCall:(ability,api,rawParams)=>{let params=megaParams(rawParams);return ability==="ability"&&api==="available"?{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}}:ability==="kvStorage"&&isMegaApiSupported(ability,api)?executeMegaKVStorage(api,params,!0)??megaFailure("container sync pending"):{statusCode:405,type:"result",data:{}}}}}function makeBridge(style){if(style==="mega")return makeMegaBridge();if(style==="easybikeNative"){let callNative=rawPayload=>{let payload;try{payload=typeof rawPayload=="string"?JSON.parse(rawPayload):rawPayload??{}}catch{return}let classMap=typeof payload.classMap=="string"?payload.classMap:"",method=typeof payload.method=="string"?payload.method:"",callbackId=typeof payload.callbackId=="string"||typeof payload.callbackId=="number"?String(payload.callbackId):"",params;try{params=typeof payload.params=="string"?payload.params?JSON.parse(payload.params):{}:payload.params??{}}catch{params={}}let complete=(code,data,msg="")=>{let callback=resolveWindowFunction("callBack");callbackId&&callback&&callback({callbackId,code,data,msg})};dispatch(`${classMap}.${method}`,params,value=>complete(0,value),error48=>complete(1,void 0,typeof error48=="string"?error48:String(error48??"")))};return{postMessage:callNative,callNative}}if(style==="windvane"){let call=(api,params,success2,failure)=>{let onSuccess=typeof success2=="function"?success2:void 0,onFailure=typeof failure=="function"?failure:void 0;if(onSuccess||onFailure){dispatch(api,params,onSuccess,onFailure);return}return new Promise((resolve11,reject)=>dispatch(api,params,resolve11,reject))};return{isAvailable:!0,version:"8.7.0",call2:call,call:(cls,method,params,succ,fail2)=>call(`${cls}.${method}`,params,succ,fail2)}}if(style==="fliggy"||style==="alipay"||style==="callback"){let bridge={call:(api,params,succ,fail2)=>{typeof params=="function"&&(fail2=succ,succ=params,params=void 0);let p=params&&typeof params=="object"?params:{},successFn=succ??(typeof p.success_callback=="function"?p.success_callback:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0),failureFn=fail2??(typeof p.fail_callback=="function"?p.fail_callback:void 0)??(typeof p.failure_callback=="function"?p.failure_callback:void 0)??(typeof p.failCallback=="function"?p.failCallback:void 0)??(typeof p.failureCallback=="function"?p.failureCallback:void 0);dispatch(api,p,res=>successFn?.(res),err=>{failureFn?failureFn(err):successFn?.({error:err})},p.callbackCommand??p.callback_command)},pushBack:(prefixOrApi,apiOrParams,paramsOrSucc,succ)=>{let api=prefixOrApi,params=apiOrParams,success2=paramsOrSucc;typeof apiOrParams=="string"&&(api=apiOrParams,params=paramsOrSucc,success2=succ);let p=params??{},successFn=(typeof success2=="function"?success2:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0);return dispatch(api,p,res=>successFn?.(res),void 0,p.callbackCommand??p.callback_command),bridge},sendUriScheme:uri=>(handleMaybeScheme(uri),bridge)};if(style==="fliggy"){let normalizedAppName=(config2.globals.__APP_NAME__??"").toUpperCase(),os13=config2.clientType==="iphone"?"ios":"android",isAliApp=name=>normalizedAppName===name.toUpperCase();Object.assign(bridge,{version:"1.0.21",device:{os:os13,OS:config2.platform,type:os13,version:config2.systemVersion,model:config2.globals.__DEVICE_MODEL__??""},platform:os13,isAliApp,isTmall:isAliApp("TM"),isTaobao:isAliApp("TB"),isAlipay:isAliApp("AP"),isAlitrip:isAliApp("LX"),isKoubei:isAliApp("KB"),isElm:isAliApp("ELMC"),isGaode:isAliApp("amap"),isUC:/UCBrowser/i.test(config2.userAgent),isWeibo:/Weibo/i.test(config2.userAgent),isWeixin:/MicroMessenger/i.test(config2.userAgent),isWindVane:config2.bridges.some(item=>item.style==="windvane"),isAlipayClient:/AlipayClient/i.test(config2.userAgent)})}return bridge}if(style==="btrip")return{call:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="invoke")return{invoke:(api,params)=>{let p=params??{};dispatch(api,p,p.success,p.fail)}};if(style==="callHandler")return{callHandler:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="amap")return{ready:cb=>cb?.(),send:(msg,cb)=>{let m=msg??{};dispatch(typeof m.action=="string"?m.action:"",m,res=>cb?.(res),err=>cb?.({error:err}))}};if(style==="didi")return{openPage:params=>dispatch("openPage",params??{},void 0,void 0),closePage:params=>dispatch("closePage",params??{},void 0,void 0)};if(style==="wechat"||style==="wechatMiniProgram"){let invoke3=(api,params)=>{let p=params&&typeof params=="object"?params:{};dispatch(api,p,value=>{p.success?.(value),p.complete?.(value)},error48=>{p.fail?.(error48),p.complete?.(error48)})};return style==="wechat"?{ready:callback=>{callback&&setTimeout(callback,0)},getLocation:params=>invoke3("getLocation",params)}:{navigateTo:params=>invoke3("navigateTo",params),redirectTo:params=>invoke3("redirectTo",params),switchTab:params=>invoke3("switchTab",params),reLaunch:params=>invoke3("reLaunch",params),navigateBack:params=>invoke3("navigateBack",params),postMessage:params=>invoke3("postMessage",params),getEnv:callback=>{callback&&setTimeout(()=>callback({miniprogram:!0}),0)}}}return{}}function setGlobal(path27,value){let parts=path27.split("."),obj=w;for(let i=0;i<parts.length-1;i++){let cur=obj[parts[i]];(!cur||typeof cur!="object")&&(obj[parts[i]]={}),obj=obj[parts[i]]}obj[parts[parts.length-1]]=value}function setPersistentGlobal(path27,value){let parts=path27.split(".").filter(Boolean);if(parts.length<2){setGlobal(path27,value);return}let[rootKey,...nestedParts]=parts,isObjectLike=candidate=>typeof candidate=="object"&&candidate!==null||typeof candidate=="function",attachBridge=candidate=>{let root=isObjectLike(candidate)?candidate:{},obj=root;for(let index=0;index<nestedParts.length-1;index+=1){let key=nestedParts[index],child=obj[key];if(!isObjectLike(child))try{obj[key]={}}catch{return root}obj=obj[key]}let leaf=nestedParts[nestedParts.length-1];try{Object.defineProperty(obj,leaf,{configurable:!1,enumerable:!0,get:()=>value,set:()=>{}})}catch{try{obj[leaf]=value}catch{}}return root},currentRoot=attachBridge(w[rootKey]);try{Object.defineProperty(w,rootKey,{configurable:!1,enumerable:!0,get:()=>currentRoot,set:next=>{currentRoot=attachBridge(next)}})}catch{w[rootKey]=currentRoot}}if(config2.bridges.some(spec=>spec.style==="mega")){let hydrationVersion=megaKVMutationVersion;requestContainerData("megaKVSnapshot",{},value=>{let entries=value&&typeof value=="object"?value.entries:void 0;megaKVMutationVersion===hydrationVersion&&replaceMegaKVStorage(entries)},()=>{})}for(let spec of config2.bridges)try{let bridge=makeBridge(spec.style);spec.persistent?setPersistentGlobal(spec.global,bridge):setGlobal(spec.global,bridge)}catch(e){console.error(TAG,"桥安装失败:",spec.global,e)}return{mapScheme,handleMaybeScheme,handleAppMessage,handleNativeBack,handleResume,handlePageVisibility,applyRuntimeResponses}}function installAppProfileContainerStack(config2,environment,links){let{SRC,TAG,simulateSystemBars,ROOT_FRAME_NAME,LAYER_FRAME_NAME,isTop,isRootFrame,isLayerFrame,isContainerFrame,usesRootContainer,log:log2}=environment,{pageTransport}=links,initialLayerTitleBarState=url2=>links.getSystemBars().initialLayerTitleBarState(url2),resolvedTitleBarState=layer=>links.getSystemBars().resolvedTitleBarState(layer),parseReportedTitleBarState=value=>links.getSystemBars().parseReportedTitleBarState(value),createSimulatedNavigationBarView=(placement,onBack)=>links.getSystemBars().createNavigationBarView(placement,onBack),destroySimulatedNavigationBarView=view=>links.getSystemBars().destroyNavigationBarView(view),syncLayerViewport=(layer,state)=>links.getSystemBars().syncLayerViewport(layer,state),syncActiveSystemBars=()=>links.getSystemBars().syncActiveSystemBars(),syncSimulatedTitleBar=()=>links.getSystemBars().syncSimulatedTitleBar(),rootContainerActive=!1,rootOverlayActive=!1,rootFrame=null,rootBusinessUrl=location.href,splitScreenActive=usesRootContainer&&config2.rootContainer?.splitScreen===!0,webViewEnvironmentRequestSeq=0,simulatedPageHidden=!1,runtimeResponses=null;function syncSimulatorStateToWindow(target){target&&(target.postMessage({source:SRC,type:"requestTitleBarState"},"*"),runtimeResponses&&target.postMessage({source:SRC,type:"runtimeResponses",profile:config2.profile,responses:runtimeResponses},"*"),simulatedPageHidden&&target.postMessage({source:SRC,type:"simulatorVisibility",hidden:!0},"*"))}function startPreparedWebViewNavigation(frame,target,canCommit,registerCleanup){let insets=config2.safeAreaInsets??{top:config2.statusBarHeight,right:0,bottom:0,left:0};if(!usesRootContainer||!Object.values(insets).some(value=>value>0)){canCommit()&&(frame.src=target);return}let requestId=++webViewEnvironmentRequestSeq,startedAt=Date.now(),settled=!1,fallbackTimer=0,cleanup=()=>{settled||(settled=!0,clearTimeout(fallbackTimer),window.removeEventListener("message",handleResponse),registerCleanup?.(null))},commitNavigation=fallbackReason=>{cleanup(),fallbackReason&&console.warn(TAG,"WebView 环境准备未完成,降级提交导航",JSON.stringify({reason:fallbackReason,elapsedMs:Date.now()-startedAt,requestId,target})),canCommit()&&(frame.src=target)},handleResponse=event=>{if(event.source!==window||event.data?.source!=="mearl-content"||event.data?.type!=="APP_BRIDGE_PREPARE_WEBVIEW_RESPONSE"||event.data?.requestId!==requestId)return;let result=event.data.result;result?.success===!0?commitNavigation():commitNavigation(String(result?.error??"unknown preparation failure"))};registerCleanup?.(cleanup),window.addEventListener("message",handleResponse),fallbackTimer=setTimeout(()=>commitNavigation("preparation timed out after 500ms"),500);try{window.postMessage({source:SRC,type:"prepareWebView",requestId},"*")}catch(error48){commitNavigation(error48 instanceof Error?error48.message:String(error48))}}function installRootContainer(){if(!usesRootContainer||!/^https?:$/i.test(location.protocol)||!/^(text\/html|application\/xhtml\+xml)$/i.test(document.contentType))return;let shellRoot,frame;try{let rootOverlay=splitScreenActive?null:resolveOverlayPresentation(rootBusinessUrl,void 0,!1);rootOverlayActive=rootOverlay!==null;for(let cookie of config2.rootContainer?.initialCookies??[]){if(!cookie.name)continue;let parts=[`${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`,`Path=${cookie.path??"/"}`];cookie.domain&&parts.push(`Domain=${cookie.domain}`),document.cookie=parts.join("; ")}shellRoot=document.createElement("html");let shellHead=document.createElement("head"),charset=document.createElement("meta"),viewport=document.createElement("meta"),title=document.createElement("title"),shellBody=document.createElement("body");if(frame=document.createElement("iframe"),shellRoot.setAttribute("data-mearl-app-shell",""),shellBody.setAttribute("data-mearl-app-shell",""),charset.setAttribute("charset","utf-8"),viewport.name="viewport",viewport.content="width=device-width,initial-scale=1,viewport-fit=cover",shellHead.append(charset,viewport,title),shellRoot.append(shellHead,shellBody),shellRoot.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",shellBody.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",frame.name=ROOT_FRAME_NAME,frame.setAttribute("data-mearl-root-webview",config2.profile),frame.setAttribute("allow","microphone; on-device-speech-recognition"),splitScreenActive&&frame.setAttribute("data-mearl-split-pane","left"),frame.style.cssText=rootOverlay?"position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;":splitScreenActive?"position:fixed;left:0;right:auto;top:0;bottom:0;width:50%;height:100%;border:0;border-right:1px solid rgba(15,23,42,.14);box-sizing:border-box;display:block;background:#fff;z-index:0;opacity:1;":"position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",frame.addEventListener("load",()=>{let committedSrc=frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(frame.contentWindow),requestAnimationFrame(()=>{rootFrame!==frame||!frame.isConnected||(frame.setAttribute("data-mearl-webview-ready",""),syncSimulatedTitleBar())}))}),rootOverlay){let overlayRoot=document.createElement("div"),mask=document.createElement("div"),sheet=document.createElement("div"),width=rootOverlay.widthRatio*100,left=(1-rootOverlay.widthRatio)/2*100;overlayRoot.setAttribute("data-mearl-root-overlay",config2.profile),mask.setAttribute("data-mearl-root-overlay-mask",""),sheet.setAttribute("data-mearl-root-overlay-sheet",""),overlayRoot.style.cssText="position:fixed;inset:0;z-index:0;pointer-events:none;",mask.style.cssText=`position:absolute;inset:0;background:rgba(0,0,0,${rootOverlay.maskAlpha});pointer-events:auto;`,sheet.style.cssText=`position:absolute;left:${left}%;right:auto;bottom:0;width:${width}%;height:${(1-rootOverlay.topRatio)*100}%;background:#fff;border-radius:${rootOverlay.radius}px ${rootOverlay.radius}px 0 0;overflow:hidden;pointer-events:auto;`,syncOverlayWidth(sheet,rootOverlay.widthRatio),rootOverlay.tapClose&&mask.addEventListener("click",()=>requestCloseOnTop(void 0)),sheet.appendChild(frame),overlayRoot.append(mask,sheet),shellBody.appendChild(overlayRoot)}else shellBody.appendChild(frame);let currentRoot=document.documentElement;currentRoot?document.replaceChild(shellRoot,currentRoot):document.appendChild(shellRoot)}catch(error48){console.warn(TAG,"根 WebView 容器创建失败,保留当前页面",error48),rootFrame=null;return}rootFrame=frame,rootContainerActive=!0;try{typeof window.stop=="function"&&window.stop()}catch(error48){console.warn(TAG,"停止外层文档加载失败,继续启动根 WebView",error48)}let initialRootUrl=window.__mearlRootDocumentUrl__?.(rootBusinessUrl)??rootBusinessUrl;try{startPreparedWebViewNavigation(frame,initialRootUrl,()=>rootFrame===frame&&frame.isConnected)}catch(error48){console.warn(TAG,"根 WebView 环境准备启动失败,直接提交业务导航",error48),rootFrame===frame&&frame.isConnected&&(frame.src=initialRootUrl)}}installRootContainer();function normalizeProxyPathPrefix(prefix){let withLeadingSlash=prefix.startsWith("/")?prefix:`/${prefix}`;return withLeadingSlash.endsWith("/")?withLeadingSlash:`${withLeadingSlash}/`}function matchesProxyTarget(hostname3,suffixes){return suffixes.some(suffix=>hostname3===suffix||hostname3.endsWith(`.${suffix}`))}function mapLayerFrameUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy||!location.hostname.startsWith(proxy.sourceHostPrefix))return url2;try{let target=new URL(url2,location.href);if(!/^https?:$/.test(target.protocol))return url2;let prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(target.hostname===location.hostname){if(target.pathname.startsWith(prefix))return url2;let derivedHost=location.pathname.startsWith(prefix)?location.pathname.slice(prefix.length).split("/")[0]:proxy.defaultTargetHost;return!derivedHost||!matchesProxyTarget(derivedHost,proxy.targetHostSuffixes)?url2:`${location.origin}${prefix}${derivedHost}${target.pathname}${target.search}${target.hash}`}return matchesProxyTarget(target.hostname,proxy.targetHostSuffixes)?`${location.origin}${prefix}${target.host}${target.pathname}${target.search}${target.hash}`:url2}catch{return url2}}function restoreLayerBusinessUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy)return url2;try{let current=new URL(url2,location.href),prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(current.origin!==location.origin||!current.pathname.startsWith(prefix))return url2;let rest=current.pathname.slice(prefix.length),slash=rest.indexOf("/"),host=slash===-1?rest:rest.slice(0,slash);if(!host)return url2;let hostname3=new URL(`${current.protocol}//${host}`).hostname;if(!matchesProxyTarget(hostname3,proxy.targetHostSuffixes))return url2;let pathname=slash===-1?"/":rest.slice(slash);return`${current.protocol}//${host}${pathname}${current.search}${current.hash}`}catch{return url2}}let ANIM_MS=config2.animationMs??300;function overlayMaxWidth(){let{maxWidthPx,maxWidthMinAppVersion}=config2.overlay??{};if(!(!maxWidthPx||!Number.isFinite(maxWidthPx)||maxWidthPx<=0)){if(maxWidthMinAppVersion){let version3=config2.globals.__APP_VERSION__??"";if(!/^\d+(?:\.\d+)*$/.test(version3))return;let current=version3.split(".").map(Number),minimum=maxWidthMinAppVersion.split(".").map(Number);for(let index=0;index<Math.max(current.length,minimum.length);index+=1){let difference=(current[index]??0)-(minimum[index]??0);if(difference<0)return;if(difference>0)break}}return maxWidthPx}}function syncOverlayWidth(sheet,widthRatio){let maximum=overlayMaxWidth();sheet.style.width=`${widthRatio*100}%`,sheet.style.left=maximum?"0":`${(1-widthRatio)/2*100}%`,sheet.style.right=maximum?"0":"auto",maximum&&(sheet.style.maxWidth=`${maximum}px`,sheet.style.marginLeft="auto",sheet.style.marginRight="auto")}function boolParam(value,fallback){return value===!0||value===1||value==="1"||value==="true"?!0:value===!1||value===0||value==="0"||value==="false"?!1:value===""?!0:fallback}function numberParam(value,fallback,min,max){let parsed=typeof value=="number"?value:Number(value);return Number.isFinite(parsed)?Math.min(Math.max(parsed,min),max):fallback}function resolveOverlayPresentation(url2,params,explicitWebdialog){let query=null;try{query=new URL(url2,location.href).searchParams}catch{}let records=[],addRecord=value=>{value&&typeof value=="object"&&!Array.isArray(value)&&records.push(value)};addRecord(params?.pageParams),addRecord(params?.page_params),addRecord(params?.popConfig),addRecord(params?.data),addRecord(params?.param),addRecord(params);let read=key=>{for(let record4 of records)if(Object.prototype.hasOwnProperty.call(record4,key))return record4[key];return query?.has(key)?query.get(key):void 0},protocol=config2.overlay;if(!explicitWebdialog&&(!protocol||!boolParam(read(protocol.enabledParam),!1)))return null;let configuredTopRatio=protocol?read(protocol.topRatioParam):void 0,configuredHeightRatio=protocol?.heightRatioParam?read(protocol.heightRatioParam):void 0,configuredMaxHeight=read("maxHeight")??configuredHeightRatio,defaultTopRatio=protocol?.defaultTopRatio??.2;return{topRatio:configuredTopRatio!==void 0?numberParam(configuredTopRatio,defaultTopRatio,0,1):configuredMaxHeight!==void 0?1-numberParam(configuredMaxHeight,1-defaultTopRatio,0,1):defaultTopRatio,widthRatio:numberParam(read("maxWidth"),1,0,1),radius:numberParam((protocol?read(protocol.radiusParam):void 0)??read("cornerRadius"),protocol?.defaultRadius??0,0,50),maskAlpha:numberParam(protocol?read(protocol.maskAlphaParam):void 0,protocol?.defaultMaskAlpha??.3,0,1),tapClose:boolParam((protocol?read(protocol.tapCloseParam):void 0)??read("tapEnable"),protocol?.defaultTapClose??!0)}}function requestsPopBeforeOpen(url2,params){if(params?.__mearlReplace===!0)return!0;let key=config2.popBeforeOpenParam;if(!key)return!1;let records=[params?.pageParams,params?.page_params,params?.data,params?.param,params];for(let value of records){if(!value||typeof value!="object"||Array.isArray(value))continue;let record4=value;if(Object.prototype.hasOwnProperty.call(record4,key))return boolParam(record4[key],!1)}try{let query=new URL(url2,location.href).searchParams;return query.has(key)&&boolParam(query.get(key),!1)}catch{return!1}}let layers=[],forwardStack=[],layerSeq=0,enteringLayerCount=0,closingLayerCount=0,explicitLayerTitleBarStates=new Map,rootScrollStyles=null,pendingClose=null,nativeBackRequestSeq=0,pendingNativeBack=null,containerDataRequestSeq=0,containerDataCallbacks=new Map,sharedFiles=new Map,sharedData=new Map,legacyBroadcastChannels=new Set,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}let PENDING_CLOSE_TIMEOUT_MS=400,pendingHistoryDepth=null,pendingSplitRootOpen=null;function clearPendingClose(){pendingClose&&(clearTimeout(pendingClose.timer),pendingClose=null)}function clearPendingNativeBack(){pendingNativeBack&&(clearTimeout(pendingNativeBack.timer),pendingNativeBack=null)}function clearPendingHistoryDepth(){pendingHistoryDepth&&(clearTimeout(pendingHistoryDepth.timer),pendingHistoryDepth=null)}function syncHistoryAfterDirectClose(){clearPendingHistoryDepth();let depth=layers.length,timer=setTimeout(()=>{pendingHistoryDepth=null,console.warn(TAG,"WebView 已出栈,但浏览器历史未在预期时间内同步",{depth})},PENDING_CLOSE_TIMEOUT_MS);pendingHistoryDepth={depth,timer},history.back()}function armPendingClose(data,retries){clearPendingClose();let timer=setTimeout(()=>{pendingClose=null,log2("close 未等到 popstate,直接关栈顶兜底"),closeToDepth(Math.max(layers.length-1,0),data,!0)},PENDING_CLOSE_TIMEOUT_MS);pendingClose={data,retries,timer},history.back()}function parseStorageId(url2){try{return new URL(url2,location.href).searchParams.get("__storage_id")}catch{return null}}function titleBarStateCacheKey(url2){try{let parsed=new URL(url2,location.href);return parsed.hash="",parsed.href}catch{return url2}}function cacheExplicitTitleBarState(layer,state){explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.entryUrl),state),explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.url),state)}function readDepth(state){if(state&&typeof state=="object"){let d=state.__mearl_layer__;if(typeof d=="number")return d}return null}function mapUrlForSync(url2,allowHostBorrowing=!0){let suffixes=config2.urlSyncHostSuffixes??[];try{let u=new URL(url2,location.href);if(!/^https?:$/.test(u.protocol))return;if(u.origin===location.origin)return u.pathname+u.search+u.hash;if(!(suffixes.length===0||suffixes.some(s=>u.host===s||u.host.endsWith(`.${s}`))))return;let proxy=config2.layerUrlProxy;return proxy&&location.hostname.startsWith(proxy.sourceHostPrefix)&&matchesProxyTarget(u.hostname,proxy.targetHostSuffixes)?`${normalizeProxyPathPrefix(proxy.pathPrefix)}${u.host}${u.pathname}${u.search}${u.hash}`:allowHostBorrowing?u.pathname+u.search+u.hash:void 0}catch{return}}function createLayerEl(overlay,id){let el=document.createElement("div");el.setAttribute("data-mearl-layer",String(id)),splitScreenActive&&el.setAttribute("data-mearl-split-pane","right"),el.style.cssText=splitScreenActive?`position:fixed;left:50%;right:0;top:0;bottom:0;width:50%;z-index:${2147483e3+id%100*2};`:`position:fixed;inset:0;z-index:${2147483e3+id%100*2};`;let frame=document.createElement("iframe");if(frame.name=LAYER_FRAME_NAME,frame.setAttribute("allow","microphone; on-device-speech-recognition"),frame.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms allow-modals allow-downloads allow-popups"),frame.style.cssText="position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",overlay){el.style.pointerEvents="none";let mask=document.createElement("div");mask.style.cssText=`position:absolute;inset:0;background:rgba(0,0,0,${overlay.maskAlpha});opacity:0;pointer-events:auto;`;let sheet=document.createElement("div"),width=overlay.widthRatio*100,left=(1-overlay.widthRatio)/2*100;return sheet.style.cssText=`position:absolute;left:${left}%;right:auto;bottom:0;width:${width}%;height:${(1-overlay.topRatio)*100}%;background:#fff;border-radius:${overlay.radius}px ${overlay.radius}px 0 0;overflow:hidden;pointer-events:auto;`,syncOverlayWidth(sheet,overlay.widthRatio),sheet.appendChild(frame),el.appendChild(mask),el.appendChild(sheet),{el,frame,animEl:sheet,mask}}return el.style.background="#fff",el.appendChild(frame),{el,frame,animEl:el,mask:null}}function setLayerInteractive(layer,interactive){layer.frame.style.pointerEvents=interactive?"":"none",layer.titleBarView&&(layer.titleBarView.root.style.pointerEvents=interactive?"":"none"),interactive?(layer.frame.removeAttribute("inert"),layer.frame.removeAttribute("aria-hidden"),layer.frame.removeAttribute("tabindex")):(layer.frame.setAttribute("inert",""),layer.frame.setAttribute("aria-hidden","true"),layer.frame.setAttribute("tabindex","-1"),layer.frame.blur()),layer.overlay?(layer.el.style.pointerEvents="none",layer.animEl.style.pointerEvents=interactive?"auto":"none",layer.mask&&(layer.mask.style.pointerEvents=interactive?"auto":"none")):layer.el.style.pointerEvents=interactive?"":"none"}function setRootFrameInteractive(interactive){rootFrame&&(rootFrame.style.pointerEvents=interactive?"":"none",interactive?(rootFrame.removeAttribute("inert"),rootFrame.removeAttribute("aria-hidden"),rootFrame.removeAttribute("tabindex")):(rootFrame.setAttribute("inert",""),rootFrame.setAttribute("aria-hidden","true"),rootFrame.setAttribute("tabindex","-1"),rootFrame.blur()))}function blockClosingLayerInteractions(layer){setLayerInteractive(layer,!1),layer.el.style.pointerEvents="auto"}function syncRootScrollLock(locked){let body=document.body;if(locked&&!rootScrollStyles){rootScrollStyles={html:document.documentElement.style.overflow,body:body?.style.overflow??null},document.documentElement.style.overflow="hidden",body&&(body.style.overflow="hidden");return}!locked&&rootScrollStyles&&(document.documentElement.style.overflow=rootScrollStyles.html,body&&rootScrollStyles.body!==null&&(body.style.overflow=rootScrollStyles.body),rootScrollStyles=null)}function syncLayerInteractivity(){let activeLayer=closingLayerCount===0&&enteringLayerCount===0?layers[layers.length-1]:void 0;for(let layer of layers)setLayerInteractive(layer,layer===activeLayer),!activeLayer&&layer===layers[layers.length-1]&&(layer.el.style.pointerEvents="auto");setRootFrameInteractive(splitScreenActive?pendingSplitRootOpen===null:layers.length===0&&enteringLayerCount===0&&closingLayerCount===0),syncRootScrollLock(layers.length>0||enteringLayerCount>0||closingLayerCount>0)}function finishLayerEntry(layer){layer.entering&&(layer.entering=!1,layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null),enteringLayerCount=Math.max(enteringLayerCount-1,0),syncLayerInteractivity())}function animateIn(layer){let t=layer.animEl;if(t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",t.offsetWidth,t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform="translate(0px, 0px)",layer.mask&&(layer.mask.style.transition=`opacity ${ANIM_MS}ms ease`,layer.mask.style.opacity="1"),ANIM_MS<=0){finishLayerEntry(layer);return}layer.enterTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finishLayerEntry(layer)},t.addEventListener("transitionend",layer.enterTransitionEnd),layer.enterTimer=setTimeout(()=>finishLayerEntry(layer),ANIM_MS+60)}function animateOut(layer,done){let t=layer.animEl;if(ANIM_MS<=0){t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),setTimeout(done,0);return}let settled=!1,fallbackTimer=0,finish=()=>{settled||(settled=!0,t.removeEventListener("transitionend",onTransitionEnd),clearTimeout(fallbackTimer),done())},onTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finish()};t.addEventListener("transitionend",onTransitionEnd),t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),fallbackTimer=setTimeout(finish,ANIM_MS+60)}function startLayerNavigation(layer,target){startPreparedWebViewNavigation(layer.frame,target,()=>!layer.closing&&layer.el.isConnected,cleanup=>{layer.navigationPreparationCleanup=cleanup})}function setPageVisibility(target,hidden){if(target===window){links.getBridgeProtocol().handlePageVisibility(hidden);return}try{target.postMessage({source:SRC,type:"simulatorVisibility",hidden},"*")}catch{}}function openLayer(url2,callbackId,overlay,openerWin,pushHistory,popId=null,animateEntry=!0){clearPendingClose();let target=url2;if(!/^https?:/i.test(target)){let mapped=links.getBridgeProtocol().mapScheme(target);if(!mapped)return log2("open 失败,scheme 未映射:",url2),null;target=mapped}location.protocol==="https:"&&target.startsWith("http:")&&(target="https:"+target.slice(5));let presentation=overlay??resolveOverlayPresentation(target,void 0,!1);log2("open →",presentation?"(webdialog) ":"",target);let parts=createLayerEl(presentation,++layerSeq),restoredTitleBarState=explicitLayerTitleBarStates.get(titleBarStateCacheKey(target)),layer={id:layerSeq,win:parts.frame.contentWindow,frame:parts.frame,entryUrl:target,url:target,overlay:presentation,openerWin,callbackId,storageId:parseStorageId(target),popId,el:parts.el,animEl:parts.animEl,mask:parts.mask,entering:animateEntry,enterTimer:null,enterTransitionEnd:null,closing:!1,navigationPreparationCleanup:null,titleBarState:restoredTitleBarState??initialLayerTitleBarState(target),titleBarStateExplicit:restoredTitleBarState!==void 0,titleBarStateReady:restoredTitleBarState!==void 0,titleBarView:null};if(popId&&layer.el.setAttribute("data-mearl-pop-id",popId),layer.mask&&presentation?.tapClose&&layer.mask.addEventListener("click",()=>requestOverlayClose(layer)),!presentation&&simulateSystemBars&&config2.titleBar&&(layer.titleBarView=createSimulatedNavigationBarView("layer",()=>requestNativeBack()),layer.titleBarView.root.setAttribute("data-mearl-layer-titlebar",String(layer.id)),parts.el.appendChild(layer.titleBarView.root)),layers.push(layer),splitScreenActive&&rootFrame?.contentWindow===openerWin||setPageVisibility(openerWin,!0),animateEntry&&(enteringLayerCount+=1),syncLayerViewport(layer,layer.titleBarState),syncLayerInteractivity(),parts.frame.addEventListener("load",()=>{layer.win=parts.frame.contentWindow,parts.frame.name=LAYER_FRAME_NAME;let committedSrc=parts.frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(parts.frame.contentWindow),requestAnimationFrame(()=>{layer.titleBarStateReady||layer.closing||!layer.el.isConnected||(layer.titleBarStateReady=!0,syncLayerViewport(layer,resolvedTitleBarState(layer)))}))}),(document.body??document.documentElement).appendChild(parts.el),layer.win=parts.frame.contentWindow,startLayerNavigation(layer,mapLayerFrameUrl(target)),animateEntry&&animateIn(layer),pushHistory){forwardStack.length=0;try{history.pushState({__mearl_layer__:layers.length},"",mapUrlForSync(target))}catch{}}return layer}function replaceLayer(sourceLayer,url2,callbackId,overlay,popId=null){if(sourceLayer.closing||layers[layers.length-1]!==sourceLayer){openLayer(url2,callbackId,overlay,sourceLayer.win??window,!0,popId);return}let replacement=openLayer(url2,callbackId,overlay,sourceLayer.openerWin,!1,popId);if(!replacement)return;sourceLayer.navigationPreparationCleanup?.(),sourceLayer.navigationPreparationCleanup=null,sourceLayer.entering&&(sourceLayer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),sourceLayer.enterTimer!==null&&clearTimeout(sourceLayer.enterTimer),sourceLayer.enterTransitionEnd&&sourceLayer.animEl.removeEventListener("transitionend",sourceLayer.enterTransitionEnd));let sourceIndex=layers.indexOf(sourceLayer);sourceIndex>=0&&layers.splice(sourceIndex,1),destroySimulatedNavigationBarView(sourceLayer.titleBarView),sourceLayer.el.remove(),forwardStack.length=0,syncLayerInteractivity(),syncActiveSystemBars();try{history.replaceState({__mearl_layer__:layers.length},"",mapUrlForSync(replacement.url))}catch{}}function closeLayer(layer,data,final,gotoEvent=!1,resumeOpener=!0,silent=!1,immediate=!1){if(layer.closing)return;layer.navigationPreparationCleanup?.(),layer.navigationPreparationCleanup=null,layer.entering&&(layer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null)),layer.closing=!0;let idx=layers.indexOf(layer);idx>=0&&layers.splice(idx,1),closingLayerCount+=1,blockClosingLayerInteractions(layer),syncLayerInteractivity(),syncActiveSystemBars(),final?forwardStack.length=0:forwardStack.push({url:layer.url,overlay:layer.overlay,openerWin:layer.openerWin,callbackId:layer.callbackId,storageId:layer.storageId,popId:layer.popId}),log2("close ←",layer.url,data===void 0?"":data);let finishClose=()=>{if(destroySimulatedNavigationBarView(layer.titleBarView),layer.el.remove(),closingLayerCount=Math.max(closingLayerCount-1,0),syncLayerInteractivity(),syncActiveSystemBars(),!!resumeOpener)if(layer.openerWin===window)links.getBridgeProtocol().handleResume({data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent});else try{layer.openerWin.postMessage({source:SRC,type:"resume",data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent},"*")}catch{}};immediate?finishClose():animateOut(layer,finishClose)}function closeToDepth(depth,data,final){for(;layers.length>depth;){let revealsTarget=layers.length===depth+1;closeLayer(layers[layers.length-1],revealsTarget?data:void 0,final,!1,revealsTarget)}}function closeAllLayers(data,gotoEvent=!1,silent=!1,immediate=!1){let depth=layers.length;for(;layers.length>0;){let isRootmostLayer=layers.length===1;closeLayer(layers[layers.length-1],isRootmostLayer?data:void 0,!0,isRootmostLayer&&gotoEvent,isRootmostLayer,silent,immediate)}if(depth>0)try{history.go(-depth)}catch{}return depth>0}function openFromSplitRoot(url2,callbackId,overlay,openerWin,popId){if(pendingSplitRootOpen){pendingSplitRootOpen={url:url2,callbackId,overlay,openerWin,popId};return}if(layers.length===0){openLayer(url2,callbackId,overlay,openerWin,!0,popId);return}pendingSplitRootOpen={url:url2,callbackId,overlay,openerWin,popId},closeAllLayers(void 0,!1,!0,!0)}function finishPendingSplitRootOpen(){let pending=pendingSplitRootOpen;pending&&(pendingSplitRootOpen=null,openLayer(pending.url,pending.callbackId,pending.overlay,pending.openerWin,!0,pending.popId,!1))}function requestOverlayClose(layer){if(!(layer.closing||layers[layers.length-1]!==layer)){if(!config2.overlay?.silentTapClose){for(let selector of config2.overlay?.tapCloseSelectors??[])try{let control=layer.frame.contentDocument?.querySelector(selector);if(typeof control?.click!="function")continue;control.click();return}catch{}requestCloseOnTop(void 0);return}pendingClose||pendingHistoryDepth||(closeLayer(layer,void 0,!0,!1,!0,!0),syncHistoryAfterDirectClose())}}function forwardToDepth(depth){for(;layers.length<depth&&forwardStack.length>0;){let entry=forwardStack.pop();openLayer(entry.url,entry.callbackId,entry.overlay,entry.openerWin,!1,entry.popId)}}function requestCloseOnTop(data){if(layers.length===0){history.back();return}if(rootContainerActive){closeLayer(layers[layers.length-1],data,!0),syncHistoryAfterDirectClose();return}armPendingClose(data,8)}function isActiveBusinessWindow(target){let topLayer=layers[layers.length-1];return topLayer?topLayer.frame.contentWindow===target:rootFrame?rootFrame.contentWindow===target:target===window}function finishNativeBack(requestId,target,handled){pendingNativeBack?.requestId!==requestId||pendingNativeBack.target!==target||(clearPendingNativeBack(),!handled&&isActiveBusinessWindow(target)&&requestCloseOnTop(void 0))}function requestNativeBack(){if(!isTop||pendingNativeBack)return;let target=layers[layers.length-1]?.frame.contentWindow??rootFrame?.contentWindow??window;if(!target||target===window){links.getBridgeProtocol().handleNativeBack()||requestCloseOnTop(void 0);return}let requestId=++nativeBackRequestSeq,timer=setTimeout(()=>finishNativeBack(requestId,target,!1),120);pendingNativeBack={requestId,target,timer};try{target.postMessage({source:SRC,type:"nativeBack",requestId},"*")}catch{finishNativeBack(requestId,target,!1)}}function layerForWindow(source){if(source)for(let layer of layers){if(layer.win===source)return layer;let currentWindow=layer.frame.contentWindow;if(currentWindow&&currentWindow===source)return layer.win=currentWindow,layer}}if(isTop){if(!rootContainerActive){let rawPushState=history.pushState.bind(history),rawReplaceState=history.replaceState.bind(history),withDepth=state=>state==null?{__mearl_layer__:layers.length}:typeof state=="object"&&!Array.isArray(state)?{...state,__mearl_layer__:layers.length}:state;try{history.pushState=function(...args){rawPushState(withDepth(args[0]),args[1],args[2])},history.replaceState=function(...args){rawReplaceState(withDepth(args[0]),args[1],args[2])}}catch{}}try{readDepth(history.state)===null&&history.replaceState({__mearl_layer__:0},"")}catch{}window.addEventListener("popstate",e=>{let depth=readDepth(e.state);if(pendingSplitRootOpen&&depth===0){finishPendingSplitRootOpen();return}if(pendingHistoryDepth){let expectedDepth=pendingHistoryDepth.depth;if(clearPendingHistoryDepth(),depth===expectedDepth)return;console.warn(TAG,"浏览器历史深度与 WebView 出栈事务不一致",{expectedDepth,actualDepth:depth})}if(rootContainerActive){if(depth===null)return;depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth);return}if(pendingClose){if(depth!==null&&depth<layers.length){let{data}=pendingClose;clearPendingClose(),closeToDepth(depth,data,!0)}else if(pendingClose.retries>0)armPendingClose(pendingClose.data,pendingClose.retries-1);else{let{data}=pendingClose;clearPendingClose(),closeToDepth(layers.length-1,data,!0)}return}depth!==null&&(depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth))})}function broadcastAppMessage(message){links.getBridgeProtocol().handleAppMessage(message);let targets=[rootFrame?.contentWindow??null,...layers.filter(layer=>!layer.closing).map(layer=>layer.frame.contentWindow)];for(let target of targets)if(!(!target||target===window))try{target.postMessage({source:SRC,type:"appMessage",message},"*")}catch{}}function closeMegaPop(popId,data){let index=layers.findIndex(layer=>layer.popId===popId&&!layer.closing);if(index<0)return!1;let closingDepth=layers.length-index;closeToDepth(index,data,!0);try{history.go(-closingDepth)}catch{}return!0}function resizeMegaPop(popId,params){let layer=layers.find(candidate=>candidate.popId===popId&&!candidate.closing);if(!layer?.overlay)return!1;if(params.maxHeight!==void 0){let maxHeight=numberParam(params.maxHeight,1-layer.overlay.topRatio,0,1);layer.overlay.topRatio=1-maxHeight,layer.animEl.style.height=`${maxHeight*100}%`}if(params.maxWidth!==void 0){let maxWidth=numberParam(params.maxWidth,1,0,1);layer.overlay.widthRatio=maxWidth,syncOverlayWidth(layer.animEl,maxWidth)}return params.animated===!0&&(layer.animEl.style.transition="height 200ms ease, width 200ms ease, left 200ms ease"),!0}function executeContainerData(action,params){if(action==="sharedFileRead"||action==="sharedFileWrite"){let fileName=typeof params.fileName=="string"?params.fileName:"";if(!fileName)return{success:!1,value:"missing fileName"};if(action==="sharedFileRead")return{success:!0,value:{data:sharedFiles.get(fileName)??""}};let data=typeof params.data=="string"?params.data:String(params.data??"");return sharedFiles.set(fileName,data),{success:!0,value:{}}}if(action==="sharedDataGet"){let keys=Array.isArray(params.keys)?params.keys.filter(key=>typeof key=="string"):[],data={};for(let key of keys)sharedData.has(key)&&(data[key]=sharedData.get(key));return{success:!0,value:{data}}}if(action==="sharedDataSet"){if(!params.data||typeof params.data!="object"||Array.isArray(params.data))return{success:!1,value:"missing shared data"};for(let[key,value]of Object.entries(params.data))value==null?sharedData.delete(key):sharedData.set(key,value);return{success:!0,value:{}}}if(action==="megaBroadcast")return!params.message||typeof params.message!="object"||Array.isArray(params.message)?{success:!1,value:"missing broadcast message"}:(broadcastAppMessage(params.message),{success:!0,value:{}});if(action==="megaKVSnapshot")return{success:!0,value:{entries:megaKVSnapshot()}};if(action==="megaKVMutation"){let operation=typeof params.operation=="string"?params.operation:"",bizId=typeof params.bizId=="string"?params.bizId:"";if(!bizId)return{success:!1,value:"missing bizID"};let key=typeof params.key=="string"?params.key:"";if((operation==="set"||operation==="remove")&&!key)return{success:!1,value:"missing key"};if(operation==="set"){if(typeof params.value!="string")return{success:!1,value:"missing value"};let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,params.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return{success:!1,value:"unsupported KVStorage operation"};return persistMegaKVStorage(),broadcastAppMessage({kind:"megaKVStorage",operation,bizId,key,value:params.value}),{success:!0,value:{}}}if(action==="legacyBroadcastCreate"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.add(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastPost"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?legacyBroadcastChannels.has(instanceId)?(broadcastAppMessage({kind:"legacyBroadcast",instanceId,message:params.message}),{success:!0,value:{}}):{success:!1,value:"broadcast channel not found"}:{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastClose"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.delete(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="megaPopClose"){let popId=typeof params.popId=="string"?params.popId:"";return popId?closeMegaPop(popId,params.result)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}if(action==="megaPopResize"){let popId=typeof params.popId=="string"?params.popId:"";return popId?resizeMegaPop(popId,params)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}return{success:!1,value:"unsupported container data action"}}function requestContainerData(action,params,onSuccess,onFailure){if(isTop){let result=executeContainerData(action,params);setTimeout(()=>result.success?onSuccess(result.value):onFailure(result.value),0);return}let requestId=++containerDataRequestSeq;containerDataCallbacks.set(requestId,{success:onSuccess,failure:onFailure});try{window.top?.postMessage({source:SRC,type:"containerDataRequest",requestId,action,params},"*")}catch(error48){containerDataCallbacks.delete(requestId),onFailure(error48 instanceof Error?error48.message:String(error48))}}function requestOpen(url2,callbackId,webdialog,params){let overlay=resolveOverlayPresentation(url2,params,webdialog),popBeforeOpen=requestsPopBeforeOpen(url2,params),popId=typeof params?.__mearlMegaPopId=="string"?params.__mearlMegaPopId:null;isTop?openLayer(url2,callbackId,overlay,window,!0,popId):window.top?.postMessage({source:SRC,type:"open",url:url2,callbackId,overlay,popBeforeOpen,popId},"*")}function requestClose(data){let payload;try{payload=data===void 0?void 0:JSON.parse(JSON.stringify(data))}catch{payload=void 0}isTop?requestCloseOnTop(payload):window.top?.postMessage({source:SRC,type:"close",data:payload},"*")}if(window.addEventListener("message",event=>{let msg=event.data;if(!(!msg||typeof msg!="object")){if(msg.source==="mearl-content"&&(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"||msg.type==="APP_BRIDGE_RUNTIME_RESPONSES")){if(!isTop||event.source!==window)return;if(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"&&typeof msg.hidden=="boolean"){simulatedPageHidden=msg.hidden,links.getBridgeProtocol().handlePageVisibility(msg.hidden);let lifecycleMessage={source:SRC,type:"simulatorVisibility",hidden:msg.hidden};rootFrame?.contentWindow?.postMessage(lifecycleMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(lifecycleMessage,"*")}else if(msg.type==="APP_BRIDGE_RUNTIME_RESPONSES"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){let responses=msg.responses;runtimeResponses={...runtimeResponses??{},...responses},links.getBridgeProtocol().applyRuntimeResponses(responses);let configMessage={source:SRC,type:"runtimeResponses",profile:config2.profile,responses};rootFrame?.contentWindow?.postMessage(configMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(configMessage,"*")}return}if(msg.source===SRC){if(isTop){let sourceLayer=layerForWindow(event.source),sourceIsRoot=!!(rootFrame?.contentWindow&&rootFrame.contentWindow===event.source);if(!sourceLayer&&!sourceIsRoot)return;if(msg.type==="open"&&typeof msg.url=="string"){let rawOverlay=msg.overlay&&typeof msg.overlay=="object"?msg.overlay:void 0,overlay=rawOverlay?{topRatio:numberParam(rawOverlay.topRatio,.2,0,1),widthRatio:numberParam(rawOverlay.widthRatio,1,0,1),radius:numberParam(rawOverlay.radius,0,0,50),maskAlpha:numberParam(rawOverlay.maskAlpha,.3,0,1),tapClose:boolParam(rawOverlay.tapClose,!0)}:resolveOverlayPresentation(msg.url,void 0,!1),callbackId=typeof msg.callbackId=="number"?msg.callbackId:0,popId=typeof msg.popId=="string"&&msg.popId?msg.popId:null;splitScreenActive&&sourceIsRoot?openFromSplitRoot(msg.url,callbackId,overlay,event.source??window,popId):msg.popBeforeOpen===!0&&sourceLayer?replaceLayer(sourceLayer,msg.url,callbackId,overlay,popId):openLayer(msg.url,callbackId,overlay,event.source??window,!0,popId)}else if(msg.type==="close")requestCloseOnTop(msg.data);else if(msg.type==="closeAll"){let gotoEvent=msg.gotoEvent===!0;if(gotoEvent&&sourceIsRoot&&layers.length===0&&msg.data!==void 0)try{event.source.postMessage({source:SRC,type:"resume",data:msg.data,storageId:null,callbackId:0,final:!0,gotoEvent:!0},"*")}catch{}else closeAllLayers(msg.data,gotoEvent)}else if(msg.type==="appMessageToOpener"&&sourceLayer){let target=sourceLayer.openerWin;if(target===window)links.getBridgeProtocol().handleAppMessage(msg.message);else try{target.postMessage({source:SRC,type:"appMessage",message:msg.message},"*")}catch{}}else if(msg.type==="containerDataRequest"&&typeof msg.requestId=="number"&&typeof msg.action=="string"&&msg.params&&typeof msg.params=="object"&&!Array.isArray(msg.params)&&event.source){let result=executeContainerData(msg.action,msg.params);try{event.source.postMessage({source:SRC,type:"containerDataResponse",requestId:msg.requestId,success:result.success,value:result.value},"*")}catch{}}else if(msg.type==="nativeBackResult"&&typeof msg.requestId=="number"&&typeof msg.handled=="boolean"&&event.source)finishNativeBack(msg.requestId,event.source,msg.handled);else if(msg.type==="urlChanged"&&typeof msg.url=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot){try{let target=new URL(msg.url,location.href);if(!/^https?:$/.test(target.protocol))return;rootBusinessUrl=target.href}catch{return}if(topLayer)return;let mapped=mapUrlForSync(rootBusinessUrl,!1);if(mapped)try{history.replaceState({__mearl_layer__:0},"",mapped)}catch{}}else if(topLayer&&!topLayer.closing&&sourceLayer===topLayer){topLayer.url=msg.url,topLayer.titleBarStateExplicit&&topLayer.titleBarState&&cacheExplicitTitleBarState(topLayer,topLayer.titleBarState);let mapped=mapUrlForSync(msg.url);if(mapped)try{history.replaceState({__mearl_layer__:layers.length},"",mapped)}catch{}}}else if(msg.type==="title"&&typeof msg.title=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot&&!topLayer)try{document.title=msg.title,syncSimulatedTitleBar()}catch{}else if(topLayer&&sourceLayer===topLayer){document.title=msg.title;let state=resolvedTitleBarState(topLayer);topLayer.titleBarState={...state,title:msg.title},syncLayerViewport(topLayer,topLayer.titleBarState)}}else if(msg.type==="titleBarState"){let state=parseReportedTitleBarState(msg.state);if(state&&sourceIsRoot)links.getSystemBars().setPresentedRootTitleBarState(state);else if(state&&sourceLayer){let explicit=msg.explicit===!0;sourceLayer.titleBarStateReady=!0,explicit?(sourceLayer.titleBarState=state,sourceLayer.titleBarStateExplicit=!0,cacheExplicitTitleBarState(sourceLayer,state)):sourceLayer.titleBarStateExplicit||(sourceLayer.titleBarState=state);let resolvedState=sourceLayer.titleBarState??state;syncLayerViewport(sourceLayer,resolvedState)}}}else if(msg.type==="requestTitleBarState"){if(event.source!==window.top)return;syncSimulatedTitleBar()}else if(msg.type==="simulatorVisibility"&&typeof msg.hidden=="boolean"){if(event.source!==window.top)return;links.getBridgeProtocol().handlePageVisibility(msg.hidden)}else if(msg.type==="appMessage"){if(event.source!==window.top)return;links.getBridgeProtocol().handleAppMessage(msg.message)}else if(msg.type==="nativeBack"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let handled=links.getBridgeProtocol().handleNativeBack();window.top?.postMessage({source:SRC,type:"nativeBackResult",requestId:msg.requestId,handled},"*")}else if(msg.type==="containerDataResponse"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let callback=containerDataCallbacks.get(msg.requestId);if(!callback)return;containerDataCallbacks.delete(msg.requestId),msg.success===!0?callback.success(msg.value):callback.failure(msg.value)}else if(msg.type==="runtimeResponses"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){if(event.source!==window.top)return;links.getBridgeProtocol().applyRuntimeResponses(msg.responses)}else if(msg.type==="resume"){if(event.source!==window.top)return;links.getBridgeProtocol().handleResume({data:msg.data,storageId:msg.storageId??null,callbackId:typeof msg.callbackId=="number"?msg.callbackId:0,final:msg.final===!0,gotoEvent:msg.gotoEvent===!0,silent:msg.silent===!0})}else event.source!==window.top&&window.top?.postMessage(msg,"*");return}pageTransport.handleMessage(msg)}}),!isTop&&isContainerFrame){let reportUrl=()=>{try{window.top?.postMessage({source:SRC,type:"urlChanged",url:restoreLayerBusinessUrl(location.href)},"*")}catch{}};try{let origPushState=history.pushState.bind(history),origReplaceState=history.replaceState.bind(history);history.pushState=function(...args){origPushState(...args),reportUrl()},history.replaceState=function(...args){origReplaceState(...args),reportUrl()},window.addEventListener("popstate",reportUrl),window.addEventListener("hashchange",reportUrl),window.addEventListener("pageshow",reportUrl),document.readyState==="complete"&&reportUrl()}catch{}}if(isContainerFrame){let requestProxyLocationOpen=url2=>{if(links.getBridgeProtocol().handleMaybeScheme(url2))return!0;try{let current=new URL(restoreLayerBusinessUrl(location.href)),target=new URL(url2,current);return!/^https?:$/.test(target.protocol)||target.origin===current.origin&&target.pathname===current.pathname&&target.search===current.search?!1:(requestOpen(target.href,0,!1),!0)}catch{return!1}};Object.defineProperty(window,"__PROXY_LOCATION__",{value:{get href(){return location.href},set href(url2){requestProxyLocationOpen(url2)||(location.href=mapLayerFrameUrl(url2))},replace(url2){links.getBridgeProtocol().handleMaybeScheme(url2)||location.replace(mapLayerFrameUrl(url2))},assign(url2){requestProxyLocationOpen(url2)||location.assign(mapLayerFrameUrl(url2))}},writable:!1,configurable:!0})}if(isContainerFrame){document.addEventListener("click",event=>{let el=event.target;for(;el&&el.tagName!=="A";)el=el.parentElement;if(!el)return;let href=el.getAttribute("href");if(href){if(links.getBridgeProtocol().handleMaybeScheme(href)){event.preventDefault(),event.stopPropagation();return}/^https?:/i.test(href)&&el.getAttribute("target")==="_blank"&&(event.preventDefault(),event.stopPropagation(),requestOpen(href,0,!1))}},!0);let origOpen=window.open;window.open=function(url2,target,features){let urlStr=typeof url2=="string"?url2:url2 instanceof URL?url2.href:"";return links.getBridgeProtocol().handleMaybeScheme(urlStr)?null:/^https?:/i.test(urlStr)?(requestOpen(urlStr,0,!1),null):origOpen?origOpen.call(window,url2,target,features):null};try{let proto=Location.prototype,origAssign=proto.assign,origReplace=proto.replace;origAssign&&(proto.assign=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origAssign.call(this,upgraded)}),origReplace&&(proto.replace=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origReplace.call(this,upgraded)})}catch{}}return log2("容器环境已就绪",isTop?"(top)":isRootFrame?"(root)":isLayerFrame?"(layer)":"(iframe,仅桥)"),{getRootFrame:()=>rootFrame,hasRootOverlay:()=>rootOverlayActive,getLayers:()=>layers,getClosingLayerCount:()=>closingLayerCount,requestOpen,requestClose,requestNativeBack,requestContainerData,closeAllLayers}}var APP_PROFILE_RUNTIME_FACTORIES={documentTransport:installRootWebViewDocumentTransport,environment:installAppProfileEnvironment,containerStack:installAppProfileContainerStack,bridgeProtocol:installAppProfileBridgeProtocol,pageTransport:installAppProfilePageTransport,systemBars:installAppProfileSystemBars};function buildAppProfileRuntimeCallSource(configExpression){return`(${installAppProfileRuntime.toString()})(${configExpression},{documentTransport:${installRootWebViewDocumentTransport.toString()},environment:${installAppProfileEnvironment.toString()},pageTransport:${installAppProfilePageTransport.toString()},containerStack:${installAppProfileContainerStack.toString()},systemBars:${installAppProfileSystemBars.toString()},bridgeProtocol:${installAppProfileBridgeProtocol.toString()}})`}function installAppProfileRuntime(config2,factories=APP_PROFILE_RUNTIME_FACTORIES){factories.documentTransport();let environment=factories.environment(config2);if(!environment)return;let pageTransport=factories.pageTransport(config2,environment),containerStack=factories.containerStack(config2,environment,{pageTransport,getSystemBars:()=>systemBars,getBridgeProtocol:()=>bridgeProtocol}),systemBars=factories.systemBars(config2,environment,{getRootFrame:containerStack.getRootFrame,hasRootOverlay:containerStack.hasRootOverlay,getLayers:containerStack.getLayers,getClosingLayerCount:containerStack.getClosingLayerCount,requestClose:containerStack.requestClose,requestNativeBack:containerStack.requestNativeBack}),bridgeProtocol=factories.bridgeProtocol(config2,environment,{pageTransport,systemBars,requestOpen:containerStack.requestOpen,requestClose:containerStack.requestClose,requestCloseAll:containerStack.closeAllLayers,requestContainerData:containerStack.requestContainerData})}init_dist4();import https from"node:https";import http3 from"node:http";var TYPE_INTO_ELEMENT_SRC=typeIntoElement.toString(),CLICK_ELEMENT_VIA_JS_SRC=clickElementViaJS.toString(),GET_CLICK_COORDS_FROM_NODE_SRC=getClickCoordsFromNode.toString();async function readCdpCurrentUrl(session,action){let url2=(await session.client.sendCommand("Runtime.evaluate",{expression:"location.href",returnByValue:!0})).result?.value;if(typeof url2!="string"||!url2)throw new Error(`${action}: could not read the current page URL`);return session.url=url2,url2}function nodeFetch(urlStr,options={}){return new Promise((resolve11,reject)=>{let url2=new URL(urlStr),isHttps=url2.protocol==="https:",lib=isHttps?https:http3,{method="GET",headers={},body,timeoutMs=3e4}=options,req=lib.request({host:url2.hostname,port:url2.port||(isHttps?443:80),path:url2.pathname+url2.search,method,headers},res=>{let responseHeaders={};for(let[key,value]of Object.entries(res.headers))typeof value=="string"?responseHeaders[key]=value:Array.isArray(value)&&(responseHeaders[key]=value.join(", "));let chunks=[];res.on("data",chunk=>chunks.push(Buffer.from(chunk))),res.on("end",()=>{let bodyBuffer=Buffer.concat(chunks);resolve11({status:res.statusCode??0,statusText:res.statusMessage??"",headers:responseHeaders,body:bodyBuffer.toString("utf-8"),bodyBuffer,setCookies:res.headers["set-cookie"]??[]})})});req.on("error",reject),req.setTimeout(timeoutMs,()=>{req.destroy(),reject(new Error(`Request timeout: ${urlStr}`))}),body&&req.write(body),req.end()})}async function getCookiesForUrl(session,targetUrl){let result=await session.client.sendCommand("Network.getAllCookies");return selectRequestCookies(result.cookies??[],targetUrl)}async function waitForPageLoad(session,timeoutMs,options={}){if(options.probeReadyState!==!1&&isCdpDeviceShellActive(session)){let deadline=Date.now()+timeoutMs;for(;Date.now()<deadline;){if((await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).catch(()=>null))?.result?.value==="complete")return;await new Promise(resolve11=>setTimeout(resolve11,50))}throw new Error(`Page load timeout after ${timeoutMs}ms`)}return new Promise((resolve11,reject)=>{let settled=!1,removeLoadListener=()=>{},finish=error48=>{settled||(settled=!0,clearTimeout(timer),removeLoadListener(),error48?reject(error48):resolve11())},timer=setTimeout(()=>{finish(new Error(`Page load timeout after ${timeoutMs}ms`))},timeoutMs);removeLoadListener=session.client.on("Page.loadEventFired",()=>finish()),options.probeReadyState!==!1&&session.client.sendCommand("Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).then(result=>{result.result?.value==="complete"&&finish()}).catch(()=>{})})}async function toCdpInputPoint(session,x,y){if(isCdpDeviceShellActive(session)){let offset=await getCdpDeviceShellInputOffset(session);return{x:x+offset.x,y:y+offset.y}}return{x,y}}async function dispatchCdpClick(session,x,y,pointerType){let point=await toCdpInputPoint(session,x,y);if(pointerType==="touch"){await dispatchPairedPageInputCommands(()=>sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[point]}),()=>sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]}));return}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y}),await dispatchPairedPageInputCommands(()=>sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:point.x,y:point.y,button:"left",buttons:1,clickCount:1}),()=>sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:point.x,y:point.y,button:"left",buttons:0,clickCount:1}))}async function dispatchCdpDrag(session,from,to,pointerType,durationMs){let[start,end]=await Promise.all([toCdpInputPoint(session,from.x,from.y),toCdpInputPoint(session,to.x,to.y)]),path27=buildPageDragPath(start,end,durationMs),waitForNextPoint=async()=>{path27.intervalMs<=0||await new Promise(resolve11=>setTimeout(resolve11,path27.intervalMs))};if(pointerType==="touch"){await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[start]});let primaryError2;try{for(let point of path27.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchMove",touchPoints:[point]})}catch(error48){throw primaryError2=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]}).catch(error48=>{if(primaryError2===void 0)throw error48})}return{steps:path27.points.length}}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:start.x,y:start.y}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:start.x,y:start.y,button:"left",buttons:1,clickCount:1});let primaryError;try{for(let point of path27.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y,button:"left",buttons:1})}catch(error48){throw primaryError=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:end.x,y:end.y,button:"left",buttons:0,clickCount:1}).catch(error48=>{if(primaryError===void 0)throw error48})}return{steps:path27.points.length}}async function sendCdpInputCommand(session,method,params){try{await session.client.sendCommand(method,params,1e4)}catch(error48){if(error48 instanceof Error&&error48.message===`CDP command timeout: ${method}`){let eventType=typeof params.type=="string"?` (${params.type})`:"",targetHint=method==="Input.dispatchTouchEvent"?'Touch input can stall on a hidden, background, or headless target; use clickMode "auto" or make the target visible. ':"",message=`CDP ${method}${eventType} timed out after ${1e4}ms. `+targetHint+"The page may already have changed; verify its current state before retrying.";throw/^(mousePressed|mouseReleased|touchStart|touchEnd)$/.test(String(params.type??""))?new PageActionDispatchUncertainError(message,{cause:error48,attempt:{inputCommand:{method,type:String(params.type??"")}}}):new Error(message,{cause:error48})}throw error48}}async function resolveBackendNodeObjectId(session,backendNodeId){let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(!objectId)throw new Error(`Cannot resolve element for backendNodeId ${backendNodeId}`);return objectId}var SCREENSHOT_HIDDEN_DISPLAY_PROPERTIES=["--mearl-side-panel-toggle-display","--mearl-device-cutout-display"],screenshotQueueTails=new WeakMap;async function runScreenshotExclusive(session,operation){let previous=screenshotQueueTails.get(session)??Promise.resolve(),unlock,tail=new Promise(resolve11=>{unlock=resolve11});screenshotQueueTails.set(session,tail),await previous;try{return await operation()}finally{unlock(),screenshotQueueTails.get(session)===tail&&screenshotQueueTails.delete(session)}}async function hideScreenshotArtifacts(session){return(await session.client.sendCommand("Runtime.evaluate",{expression:`
1697
1697
  (() => {
1698
1698
  const root = document.documentElement;
1699
1699
  if (!root) return [];
@@ -1741,7 +1741,7 @@ Content-Type: ${file2.contentType}\r
1741
1741
  \r
1742
1742
  `),file2.content,Buffer.from(`\r
1743
1743
  `))}return chunks.push(Buffer.from(`--${boundary}--\r
1744
- `)),{contentType:`multipart/form-data; boundary=${boundary}`,body:Buffer.concat(chunks)}}function hasMultipartPayload(data){return data.formData!==void 0||data.files!==void 0}async function executeNodeSendRequest(data,cookies=[],onResponseCookies){let{url:url2,method="GET",headers={},params,body,formData,files,responseType="auto",timeout=3e4}=data;if(!url2||typeof url2!="string"||url2.trim()==="")throw new Error("Invalid url: url must be a non-empty string");let normalizedMethod=method.toUpperCase();if(!ALLOWED_METHODS.has(normalizedMethod))throw new Error(`Invalid method: ${method}. Allowed: ${[...ALLOWED_METHODS].join(", ")}`);if(!Number.isFinite(timeout)||timeout<=0)throw new Error("timeout must be a positive number");let targetUrl=new URL(url2);for(let[key,value]of Object.entries(params??{}))targetUrl.searchParams.set(key,String(value));let requestHeaders={Accept:"application/json, text/plain, */*","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",...headers},resolvedSourceHeaders=getSendRequestSourceHeaders(targetUrl,headers);resolvedSourceHeaders.referer?setHeader(requestHeaders,"Referer",resolvedSourceHeaders.referer):removeHeader(requestHeaders,"Referer"),resolvedSourceHeaders.origin?setHeader(requestHeaders,"Origin",resolvedSourceHeaders.origin):removeHeader(requestHeaders,"Origin");let cookieHeader=serializeRequestCookies(cookies);cookieHeader&&setHeader(requestHeaders,"Cookie",cookieHeader);let xsrfToken=cookies.find(cookie=>cookie.name==="XSRF-TOKEN")?.value;xsrfToken&&!findSendRequestHeaderName(requestHeaders,"x-xsrf-token")&&setHeader(requestHeaders,"X-XSRF-TOKEN",xsrfToken);let requestBody,rawBodyFile=getSendRequestBodyFile(data);if(rawBodyFile){let[file2]=await readMultipartFiles([rawBodyFile]);requestBody=file2.content,findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type",file2.contentType),setHeader(requestHeaders,"Content-Length",String(requestBody.byteLength))}else if(hasMultipartPayload(data)){if(body!=null)throw new Error("body cannot be combined with formData or files");if(normalizedMethod==="GET"||normalizedMethod==="HEAD")throw new Error(`${normalizedMethod} requests cannot use formData or files`);if(findSendRequestHeaderName(requestHeaders,"content-type"))throw new Error("Do not set Content-Type when using formData or files; Mearl sets the boundary");let multipart=await buildMultipartBody(formData,files);requestBody=multipart.body,setHeader(requestHeaders,"Content-Type",multipart.contentType),setHeader(requestHeaders,"Content-Length",String(multipart.body.byteLength))}else body!=null&&!["GET","HEAD"].includes(normalizedMethod)&&(typeof body=="string"?(requestBody=body,findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","text/plain")):(requestBody=JSON.stringify(body),findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","application/json")));let result=await nodeFetch(targetUrl.toString(),{method:normalizedMethod,headers:requestHeaders,body:requestBody,timeoutMs:timeout}),cookieSync=data.withCookies!==!1?await onResponseCookies?.(targetUrl.href,result.setCookies):void 0,contentType2=(result.headers["content-type"]??"").split(";")[0].trim().toLowerCase(),responseHeaders=Object.fromEntries(Object.entries(result.headers).filter(([name])=>name.toLowerCase()!=="set-cookie"&&name.toLowerCase()!=="set-cookie2")),responseBody,bodyType;if(responseType==="auto"&&isBinarySendRequestContentType(contentType2))responseBody=result.bodyBuffer.toString("base64"),bodyType="base64";else{let trimmed=result.body.trimStart();if(responseType==="json"||responseType==="auto"&&contentType2.includes("application/json")||responseType==="auto"&&(trimmed.startsWith("{")||trimmed.startsWith("[")))try{responseBody=JSON.parse(result.body),bodyType="json"}catch{if(responseType==="json")throw new Error("send_request expected a JSON response");responseBody=result.body,bodyType="text"}else responseBody=result.body,bodyType="text"}return{success:!0,status:result.status,statusText:result.statusText,headers:responseHeaders,body:responseBody,bodyType,attachedCookieCount:cookies.length,...cookieSync?{cookieSync}:{}}}var import_tldts=__toESM(require_cjs(),1);function pathMatch(reqPath,cookiePath){return!!(cookiePath===reqPath||reqPath.indexOf(cookiePath)===0&&(cookiePath[cookiePath.length-1]==="/"||reqPath.startsWith(cookiePath)&&reqPath[cookiePath.length]==="/"))}var SPECIAL_USE_DOMAINS=["local","example","invalid","localhost","test"],SPECIAL_TREATMENT_DOMAINS=["localhost","invalid"],defaultGetPublicSuffixOptions={allowSpecialUseDomain:!1,ignoreError:!1};function getPublicSuffix(domain2,options={}){options={...defaultGetPublicSuffixOptions,...options};let domainParts=domain2.split("."),topLevelDomain=domainParts[domainParts.length-1],allowSpecialUseDomain=!!options.allowSpecialUseDomain,ignoreError=!!options.ignoreError;if(allowSpecialUseDomain&&topLevelDomain!==void 0&&SPECIAL_USE_DOMAINS.includes(topLevelDomain)){if(domainParts.length>1)return`${domainParts[domainParts.length-2]}.${topLevelDomain}`;if(SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain))return topLevelDomain}if(!ignoreError&&topLevelDomain!==void 0&&SPECIAL_USE_DOMAINS.includes(topLevelDomain))throw new Error(`Cookie has domain set to the public suffix "${topLevelDomain}" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`);let publicSuffix=(0,import_tldts.getDomain)(domain2,{allowIcannDomains:!0,allowPrivateDomains:!0});if(publicSuffix)return publicSuffix}function permuteDomain(domain2,allowSpecialUseDomain){let pubSuf=getPublicSuffix(domain2,{allowSpecialUseDomain});if(!pubSuf)return;if(pubSuf==domain2)return[domain2];domain2.slice(-1)=="."&&(domain2=domain2.slice(0,-1));let parts=domain2.slice(0,-(pubSuf.length+1)).split(".").reverse(),cur=pubSuf,permutations=[cur];for(;parts.length;)cur=`${parts.shift()}.${cur}`,permutations.push(cur);return permutations}var Store=class{constructor(){this.synchronous=!1}findCookie(_domain,_path,_key,_callback){throw new Error("findCookie is not implemented")}findCookies(_domain,_path,_allowSpecialUseDomain=!1,_callback){throw new Error("findCookies is not implemented")}putCookie(_cookie,_callback){throw new Error("putCookie is not implemented")}updateCookie(_oldCookie,_newCookie,_callback){throw new Error("updateCookie is not implemented")}removeCookie(_domain,_path,_key,_callback){throw new Error("removeCookie is not implemented")}removeCookies(_domain,_path,_callback){throw new Error("removeCookies is not implemented")}removeAllCookies(_callback){throw new Error("removeAllCookies is not implemented")}getAllCookies(_callback){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}},objectToString=obj=>Object.prototype.toString.call(obj),safeArrayToString=(arr,seenArrays)=>typeof arr.join!="function"?objectToString(arr):(seenArrays.add(arr),arr.map(val=>val==null||seenArrays.has(val)?"":safeToStringImpl(val,seenArrays)).join()),safeToStringImpl=(val,seenArrays=new WeakSet)=>typeof val!="object"||val===null?String(val):typeof val.toString=="function"?Array.isArray(val)?safeArrayToString(val,seenArrays):String(val):objectToString(val),safeToString=val=>safeToStringImpl(val);function createPromiseCallback(cb){let callback,resolve11,reject,promise2=new Promise((_resolve,_reject)=>{resolve11=_resolve,reject=_reject});return typeof cb=="function"?callback=(err,result)=>{try{err?cb(err):cb(null,result)}catch(e){reject(e instanceof Error?e:new Error)}}:callback=(err,result)=>{try{err?reject(err):resolve11(result)}catch(e){reject(e instanceof Error?e:new Error)}},{promise:promise2,callback,resolve:value=>(callback(null,value),promise2),reject:error48=>(callback(error48),promise2)}}function inOperator(k,o){return k in o}var MemoryCookieStore=class extends Store{constructor(){super(),this.synchronous=!0,this.idx=Object.create(null)}findCookie(domain2,path27,key,callback){let promiseCallback=createPromiseCallback(callback);if(domain2==null||path27==null||key==null)return promiseCallback.resolve(void 0);let result=this.idx[domain2]?.[path27]?.[key];return promiseCallback.resolve(result)}findCookies(domain2,path27,allowSpecialUseDomain=!1,callback){typeof allowSpecialUseDomain=="function"&&(callback=allowSpecialUseDomain,allowSpecialUseDomain=!0);let results=[],promiseCallback=createPromiseCallback(callback);if(!domain2)return promiseCallback.resolve([]);let pathMatcher;path27?pathMatcher=function(domainIndex){for(let cookiePath in domainIndex)if(pathMatch(path27,cookiePath)){let pathIndex=domainIndex[cookiePath];for(let key in pathIndex){let value=pathIndex[key];value&&results.push(value)}}}:pathMatcher=function(domainIndex){for(let curPath in domainIndex){let pathIndex=domainIndex[curPath];for(let key in pathIndex){let value=pathIndex[key];value&&results.push(value)}}};let domains=permuteDomain(domain2,allowSpecialUseDomain)||[domain2],idx=this.idx;return domains.forEach(curDomain=>{let domainIndex=idx[curDomain];domainIndex&&pathMatcher(domainIndex)}),promiseCallback.resolve(results)}putCookie(cookie,callback){let promiseCallback=createPromiseCallback(callback),{domain:domain2,path:path27,key}=cookie;if(domain2==null||path27==null||key==null)return promiseCallback.resolve(void 0);let domainEntry=this.idx[domain2]??Object.create(null);this.idx[domain2]=domainEntry;let pathEntry=domainEntry[path27]??Object.create(null);return domainEntry[path27]=pathEntry,pathEntry[key]=cookie,promiseCallback.resolve(void 0)}updateCookie(_oldCookie,newCookie,callback){if(callback)this.putCookie(newCookie,callback);else return this.putCookie(newCookie)}removeCookie(domain2,path27,key,callback){let promiseCallback=createPromiseCallback(callback);return delete this.idx[domain2]?.[path27]?.[key],promiseCallback.resolve(void 0)}removeCookies(domain2,path27,callback){let promiseCallback=createPromiseCallback(callback),domainEntry=this.idx[domain2];return domainEntry&&(path27?delete domainEntry[path27]:delete this.idx[domain2]),promiseCallback.resolve(void 0)}removeAllCookies(callback){let promiseCallback=createPromiseCallback(callback);return this.idx=Object.create(null),promiseCallback.resolve(void 0)}getAllCookies(callback){let promiseCallback=createPromiseCallback(callback),cookies=[],idx=this.idx;return Object.keys(idx).forEach(domain2=>{let domainEntry=idx[domain2]??{};Object.keys(domainEntry).forEach(path27=>{let pathEntry=domainEntry[path27]??{};Object.keys(pathEntry).forEach(key=>{let keyEntry=pathEntry[key];keyEntry!=null&&cookies.push(keyEntry)})})}),cookies.sort((a,b)=>(a.creationIndex||0)-(b.creationIndex||0)),promiseCallback.resolve(cookies)}};function isNonEmptyString(data){return isString(data)&&data!==""}function isEmptyString(data){return data===""||data instanceof String&&data.toString()===""}function isString(data){return typeof data=="string"||data instanceof String}function isObject3(data){return objectToString(data)==="[object Object]"}function validate(bool,cbOrMessage,message){if(bool)return;let cb=typeof cbOrMessage=="function"?cbOrMessage:void 0,options=typeof cbOrMessage=="function"?message:cbOrMessage;isObject3(options)||(options="[object Object]");let err=new ParameterError(safeToString(options));if(cb)cb(err);else throw err}var ParameterError=class extends Error{},version="6.0.0",PrefixSecurityEnum={SILENT:"silent",STRICT:"strict",DISABLED:"unsafe-disabled"};Object.freeze(PrefixSecurityEnum);var IP_V6_REGEX=`
1744
+ `)),{contentType:`multipart/form-data; boundary=${boundary}`,body:Buffer.concat(chunks)}}function hasMultipartPayload(data){return data.formData!==void 0||data.files!==void 0}async function executeNodeSendRequest(data,cookies=[],onResponseCookies){let{url:url2,method="GET",headers={},params,body,formData,files,responseType="auto",timeout=3e4}=data;if(!url2||typeof url2!="string"||url2.trim()==="")throw new Error("Invalid url: url must be a non-empty string");let normalizedMethod=method.toUpperCase();if(!ALLOWED_METHODS.has(normalizedMethod))throw new Error(`Invalid method: ${method}. Allowed: ${[...ALLOWED_METHODS].join(", ")}`);if(!Number.isFinite(timeout)||timeout<=0)throw new Error("timeout must be a positive number");let targetUrl=new URL(url2);for(let[key,value]of Object.entries(params??{}))targetUrl.searchParams.set(key,String(value));let requestHeaders={Accept:"application/json, text/plain, */*","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",...headers},resolvedSourceHeaders=getSendRequestSourceHeaders(targetUrl,headers);resolvedSourceHeaders.referer?setHeader(requestHeaders,"Referer",resolvedSourceHeaders.referer):removeHeader(requestHeaders,"Referer"),resolvedSourceHeaders.origin?setHeader(requestHeaders,"Origin",resolvedSourceHeaders.origin):removeHeader(requestHeaders,"Origin");let cookieHeader=serializeRequestCookies(cookies);cookieHeader&&setHeader(requestHeaders,"Cookie",cookieHeader);let xsrfToken=cookies.find(cookie=>cookie.name==="XSRF-TOKEN")?.value;xsrfToken&&!findSendRequestHeaderName(requestHeaders,"x-xsrf-token")&&setHeader(requestHeaders,"X-XSRF-TOKEN",xsrfToken);let requestBody,rawBodyFile=getSendRequestBodyFile(data);if(rawBodyFile){let[file2]=await readMultipartFiles([rawBodyFile]);requestBody=file2.content,findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type",file2.contentType),setHeader(requestHeaders,"Content-Length",String(requestBody.byteLength))}else if(hasMultipartPayload(data)){if(body!=null)throw new Error("body cannot be combined with formData or files");if(normalizedMethod==="GET"||normalizedMethod==="HEAD")throw new Error(`${normalizedMethod} requests cannot use formData or files`);if(findSendRequestHeaderName(requestHeaders,"content-type"))throw new Error("Do not set Content-Type when using formData or files; Mearl sets the boundary");let multipart=await buildMultipartBody(formData,files);requestBody=multipart.body,setHeader(requestHeaders,"Content-Type",multipart.contentType),setHeader(requestHeaders,"Content-Length",String(multipart.body.byteLength))}else body!=null&&!["GET","HEAD"].includes(normalizedMethod)&&(typeof body=="string"?(requestBody=body,findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","text/plain")):(requestBody=JSON.stringify(body),findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","application/json")));let result=await nodeFetch(targetUrl.toString(),{method:normalizedMethod,headers:requestHeaders,body:requestBody,timeoutMs:timeout}),cookieSync=data.withCookies!==!1?await onResponseCookies?.(targetUrl.href,result.setCookies):void 0,contentType2=(result.headers["content-type"]??"").split(";")[0].trim().toLowerCase(),responseHeaders=Object.fromEntries(Object.entries(result.headers).filter(([name])=>name.toLowerCase()!=="set-cookie"&&name.toLowerCase()!=="set-cookie2")),responseBody,bodyType;if(responseType==="auto"&&isBinarySendRequestContentType(contentType2))responseBody=result.bodyBuffer.toString("base64"),bodyType="base64";else{let trimmed=result.body.trimStart();if(responseType==="json"||responseType==="auto"&&contentType2.includes("application/json")||responseType==="auto"&&(trimmed.startsWith("{")||trimmed.startsWith("[")))try{responseBody=JSON.parse(result.body),bodyType="json"}catch{if(responseType==="json")throw new Error("send_request expected a JSON response");responseBody=result.body,bodyType="text"}else responseBody=result.body,bodyType="text"}return{success:!0,status:result.status,statusText:result.statusText,headers:responseHeaders,body:responseBody,bodyType,attachedCookieCount:cookies.length,...cookieSync?{cookieSync}:{}}}var import_tldts2=__toESM(require_cjs(),1);function pathMatch(reqPath,cookiePath){return!!(cookiePath===reqPath||reqPath.indexOf(cookiePath)===0&&(cookiePath[cookiePath.length-1]==="/"||reqPath.startsWith(cookiePath)&&reqPath[cookiePath.length]==="/"))}var SPECIAL_USE_DOMAINS=["local","example","invalid","localhost","test"],SPECIAL_TREATMENT_DOMAINS=["localhost","invalid"],defaultGetPublicSuffixOptions={allowSpecialUseDomain:!1,ignoreError:!1};function getPublicSuffix(domain2,options={}){options={...defaultGetPublicSuffixOptions,...options};let domainParts=domain2.split("."),topLevelDomain=domainParts[domainParts.length-1],allowSpecialUseDomain=!!options.allowSpecialUseDomain,ignoreError=!!options.ignoreError;if(allowSpecialUseDomain&&topLevelDomain!==void 0&&SPECIAL_USE_DOMAINS.includes(topLevelDomain)){if(domainParts.length>1)return`${domainParts[domainParts.length-2]}.${topLevelDomain}`;if(SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain))return topLevelDomain}if(!ignoreError&&topLevelDomain!==void 0&&SPECIAL_USE_DOMAINS.includes(topLevelDomain))throw new Error(`Cookie has domain set to the public suffix "${topLevelDomain}" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`);let publicSuffix=(0,import_tldts2.getDomain)(domain2,{allowIcannDomains:!0,allowPrivateDomains:!0});if(publicSuffix)return publicSuffix}function permuteDomain(domain2,allowSpecialUseDomain){let pubSuf=getPublicSuffix(domain2,{allowSpecialUseDomain});if(!pubSuf)return;if(pubSuf==domain2)return[domain2];domain2.slice(-1)=="."&&(domain2=domain2.slice(0,-1));let parts=domain2.slice(0,-(pubSuf.length+1)).split(".").reverse(),cur=pubSuf,permutations=[cur];for(;parts.length;)cur=`${parts.shift()}.${cur}`,permutations.push(cur);return permutations}var Store=class{constructor(){this.synchronous=!1}findCookie(_domain,_path,_key,_callback){throw new Error("findCookie is not implemented")}findCookies(_domain,_path,_allowSpecialUseDomain=!1,_callback){throw new Error("findCookies is not implemented")}putCookie(_cookie,_callback){throw new Error("putCookie is not implemented")}updateCookie(_oldCookie,_newCookie,_callback){throw new Error("updateCookie is not implemented")}removeCookie(_domain,_path,_key,_callback){throw new Error("removeCookie is not implemented")}removeCookies(_domain,_path,_callback){throw new Error("removeCookies is not implemented")}removeAllCookies(_callback){throw new Error("removeAllCookies is not implemented")}getAllCookies(_callback){throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")}},objectToString=obj=>Object.prototype.toString.call(obj),safeArrayToString=(arr,seenArrays)=>typeof arr.join!="function"?objectToString(arr):(seenArrays.add(arr),arr.map(val=>val==null||seenArrays.has(val)?"":safeToStringImpl(val,seenArrays)).join()),safeToStringImpl=(val,seenArrays=new WeakSet)=>typeof val!="object"||val===null?String(val):typeof val.toString=="function"?Array.isArray(val)?safeArrayToString(val,seenArrays):String(val):objectToString(val),safeToString=val=>safeToStringImpl(val);function createPromiseCallback(cb){let callback,resolve11,reject,promise2=new Promise((_resolve,_reject)=>{resolve11=_resolve,reject=_reject});return typeof cb=="function"?callback=(err,result)=>{try{err?cb(err):cb(null,result)}catch(e){reject(e instanceof Error?e:new Error)}}:callback=(err,result)=>{try{err?reject(err):resolve11(result)}catch(e){reject(e instanceof Error?e:new Error)}},{promise:promise2,callback,resolve:value=>(callback(null,value),promise2),reject:error48=>(callback(error48),promise2)}}function inOperator(k,o){return k in o}var MemoryCookieStore=class extends Store{constructor(){super(),this.synchronous=!0,this.idx=Object.create(null)}findCookie(domain2,path27,key,callback){let promiseCallback=createPromiseCallback(callback);if(domain2==null||path27==null||key==null)return promiseCallback.resolve(void 0);let result=this.idx[domain2]?.[path27]?.[key];return promiseCallback.resolve(result)}findCookies(domain2,path27,allowSpecialUseDomain=!1,callback){typeof allowSpecialUseDomain=="function"&&(callback=allowSpecialUseDomain,allowSpecialUseDomain=!0);let results=[],promiseCallback=createPromiseCallback(callback);if(!domain2)return promiseCallback.resolve([]);let pathMatcher;path27?pathMatcher=function(domainIndex){for(let cookiePath in domainIndex)if(pathMatch(path27,cookiePath)){let pathIndex=domainIndex[cookiePath];for(let key in pathIndex){let value=pathIndex[key];value&&results.push(value)}}}:pathMatcher=function(domainIndex){for(let curPath in domainIndex){let pathIndex=domainIndex[curPath];for(let key in pathIndex){let value=pathIndex[key];value&&results.push(value)}}};let domains=permuteDomain(domain2,allowSpecialUseDomain)||[domain2],idx=this.idx;return domains.forEach(curDomain=>{let domainIndex=idx[curDomain];domainIndex&&pathMatcher(domainIndex)}),promiseCallback.resolve(results)}putCookie(cookie,callback){let promiseCallback=createPromiseCallback(callback),{domain:domain2,path:path27,key}=cookie;if(domain2==null||path27==null||key==null)return promiseCallback.resolve(void 0);let domainEntry=this.idx[domain2]??Object.create(null);this.idx[domain2]=domainEntry;let pathEntry=domainEntry[path27]??Object.create(null);return domainEntry[path27]=pathEntry,pathEntry[key]=cookie,promiseCallback.resolve(void 0)}updateCookie(_oldCookie,newCookie,callback){if(callback)this.putCookie(newCookie,callback);else return this.putCookie(newCookie)}removeCookie(domain2,path27,key,callback){let promiseCallback=createPromiseCallback(callback);return delete this.idx[domain2]?.[path27]?.[key],promiseCallback.resolve(void 0)}removeCookies(domain2,path27,callback){let promiseCallback=createPromiseCallback(callback),domainEntry=this.idx[domain2];return domainEntry&&(path27?delete domainEntry[path27]:delete this.idx[domain2]),promiseCallback.resolve(void 0)}removeAllCookies(callback){let promiseCallback=createPromiseCallback(callback);return this.idx=Object.create(null),promiseCallback.resolve(void 0)}getAllCookies(callback){let promiseCallback=createPromiseCallback(callback),cookies=[],idx=this.idx;return Object.keys(idx).forEach(domain2=>{let domainEntry=idx[domain2]??{};Object.keys(domainEntry).forEach(path27=>{let pathEntry=domainEntry[path27]??{};Object.keys(pathEntry).forEach(key=>{let keyEntry=pathEntry[key];keyEntry!=null&&cookies.push(keyEntry)})})}),cookies.sort((a,b)=>(a.creationIndex||0)-(b.creationIndex||0)),promiseCallback.resolve(cookies)}};function isNonEmptyString(data){return isString(data)&&data!==""}function isEmptyString(data){return data===""||data instanceof String&&data.toString()===""}function isString(data){return typeof data=="string"||data instanceof String}function isObject3(data){return objectToString(data)==="[object Object]"}function validate(bool,cbOrMessage,message){if(bool)return;let cb=typeof cbOrMessage=="function"?cbOrMessage:void 0,options=typeof cbOrMessage=="function"?message:cbOrMessage;isObject3(options)||(options="[object Object]");let err=new ParameterError(safeToString(options));if(cb)cb(err);else throw err}var ParameterError=class extends Error{},version="6.0.0",PrefixSecurityEnum={SILENT:"silent",STRICT:"strict",DISABLED:"unsafe-disabled"};Object.freeze(PrefixSecurityEnum);var IP_V6_REGEX=`
1745
1745
  \\[?(?:
1746
1746
  (?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|
1747
1747
  (?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|