likec4 1.22.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/__app__/src/chunks/{-index-overview-B8hfKX1i.js → -index-overview-DHMItP2E.js} +4 -4
- package/__app__/src/chunks/index-B1tnNgDX.js +491 -0
- package/__app__/src/chunks/likec4-Dc_HarGT.js +6124 -0
- package/__app__/src/chunks/{main-BJUkPUKs.js → main-CgCGub6x.js} +15619 -15368
- package/__app__/src/chunks/{mantine-pfC7caNp.js → mantine-Dy50iVbn.js} +3537 -3478
- package/__app__/src/chunks/tanstack-router-htnGPerc.js +2925 -0
- package/__app__/src/main.js +1 -1
- package/__app__/src/style.css +1 -1
- package/dist/cli/index.mjs +851 -126
- package/dist/index.mjs +2 -1
- package/dist/model/index.mjs +2 -1
- package/dist/shared/likec4.D7xos_Vh.mjs +3600 -0
- package/package.json +58 -63
- package/react/index.js +14621 -14383
- package/react/style.css +1 -1
- package/__app__/src/chunks/index-KI-kE60c.js +0 -465
- package/__app__/src/chunks/likec4-B-gfuLMn.js +0 -6106
- package/__app__/src/chunks/tanstack-router-CsfoXGgM.js +0 -3032
- package/dist/cli/index.cjs +0 -476
- package/dist/cli/index.d.cts +0 -1
- package/dist/index.cjs +0 -1
- package/dist/index.d.cts +0 -16112
- package/dist/model/index.cjs +0 -1
- package/dist/model/index.d.cts +0 -10
- package/dist/shared/likec4.CSvz6V2S.cjs +0 -1782
- package/dist/shared/likec4.DIBfXG6W.mjs +0 -1782
|
@@ -1,1782 +0,0 @@
|
|
|
1
|
-
"use strict";const fs$2=require("node:fs"),path=require("node:path"),node_url=require("node:url"),tty=require("tty"),require$$0$4=require("node:util"),require$$0=require("util"),require$$0$1=require("path"),require$$2=require("os"),require$$3=require("crypto"),require$$4=require("net"),require$$0$2=require("url"),require$$0$3=require("fs"),require$$3$1=require("child_process"),core=require("@likec4/core"),types$1=require("@likec4/core/types"),require$$4$1=require("events"),buffer=require("buffer"),wasmGraphviz=require("@hpcc-js/wasm-graphviz"),computeView$1=require("@likec4/core/compute-view"),process$1=require("node:process"),d$8=require("boxen"),node_child_process=require("node:child_process"),node_events=require("node:events"),fsPromises=require("node:fs/promises"),promises=require("node:stream/promises"),os=require("node:os"),require$$1=require("fs/promises"),model=require("@likec4/core/model");function _interopDefaultCompat(tt){return tt&&typeof tt=="object"&&"default"in tt?tt.default:tt}function _interopNamespaceCompat(tt){if(tt&&typeof tt=="object"&&"default"in tt)return tt;const et=Object.create(null);if(tt)for(const nt in tt)et[nt]=tt[nt];return et.default=tt,et}const fs__namespace=_interopNamespaceCompat(fs$2),path__default=_interopDefaultCompat(path),require$$0__default$4=_interopDefaultCompat(require$$0$4),require$$0__default=_interopDefaultCompat(require$$0),require$$0__default$1=_interopDefaultCompat(require$$0$1),require$$2__default=_interopDefaultCompat(require$$2),require$$3__default=_interopDefaultCompat(require$$3),require$$4__default=_interopDefaultCompat(require$$4),require$$0__default$2=_interopDefaultCompat(require$$0$2),require$$0__default$3=_interopDefaultCompat(require$$0$3),require$$3__default$1=_interopDefaultCompat(require$$3$1),process__default=_interopDefaultCompat(process$1),d__default=_interopDefaultCompat(d$8),os__default=_interopDefaultCompat(os),require$$1__default=_interopDefaultCompat(require$$1),dntGlobals={},dntGlobalThis=createMergeProxy(globalThis,dntGlobals);function createMergeProxy(tt,et){return new Proxy(tt,{get(nt,rt,st){return rt in et?et[rt]:tt[rt]},set(nt,rt,st){return rt in et&&delete et[rt],tt[rt]=st,!0},deleteProperty(nt,rt){let st=!1;return rt in et&&(delete et[rt],st=!0),rt in tt&&(delete tt[rt],st=!0),st},ownKeys(nt){const rt=Reflect.ownKeys(tt),st=Reflect.ownKeys(et),ot=new Set(st);return[...rt.filter(en=>!ot.has(en)),...st]},defineProperty(nt,rt,st){return rt in et&&delete et[rt],Reflect.defineProperty(tt,rt,st),!0},getOwnPropertyDescriptor(nt,rt){return rt in et?Reflect.getOwnPropertyDescriptor(et,rt):Reflect.getOwnPropertyDescriptor(tt,rt)},has(nt,rt){return rt in et||rt in tt}})}function toFilter(tt){return typeof tt=="function"?tt:getLevelFilter(tt)}function getLevelFilter(tt){if(tt==null)return()=>!1;if(tt==="fatal")return et=>et.level==="fatal";if(tt==="error")return et=>et.level==="fatal"||et.level==="error";if(tt==="warning")return et=>et.level==="fatal"||et.level==="error"||et.level==="warning";if(tt==="info")return et=>et.level==="fatal"||et.level==="error"||et.level==="warning"||et.level==="info";if(tt==="debug")return()=>!0;throw new TypeError(`Invalid log level: ${tt}.`)}const logLevels=["debug","info","warning","error","fatal"];function compareLogLevel(tt,et){const nt=logLevels.indexOf(tt);if(nt<0)throw new TypeError(`Invalid log level: ${JSON.stringify(tt)}.`);const rt=logLevels.indexOf(et);if(rt<0)throw new TypeError(`Invalid log level: ${JSON.stringify(et)}.`);return nt-rt}function getLogger(tt=[]){return LoggerImpl.getLogger(tt)}const globalRootLoggerSymbol=Symbol.for("logtape.rootLogger");class LoggerImpl{static getLogger(et=[]){let nt=globalRootLoggerSymbol in dntGlobalThis?dntGlobalThis[globalRootLoggerSymbol]??null:null;return nt==null&&(nt=new LoggerImpl(null,[]),dntGlobalThis[globalRootLoggerSymbol]=nt),typeof et=="string"?nt.getChild(et):et.length===0?nt:nt.getChild(et)}constructor(et,nt){Object.defineProperty(this,"parent",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"children",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"category",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sinks",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"parentSinks",{enumerable:!0,configurable:!0,writable:!0,value:"inherit"}),Object.defineProperty(this,"filters",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"lowestLevel",{enumerable:!0,configurable:!0,writable:!0,value:"debug"}),Object.defineProperty(this,"contextLocalStorage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.parent=et,this.children={},this.category=nt,this.sinks=[],this.filters=[]}getChild(et){const nt=typeof et=="string"?et:et[0],rt=this.children[nt];let st=rt instanceof LoggerImpl?rt:rt?.deref();return st==null&&(st=new LoggerImpl(this,[...this.category,nt]),this.children[nt]="WeakRef"in dntGlobalThis?new WeakRef(st):st),typeof et=="string"||et.length===1?st:st.getChild(et.slice(1))}reset(){for(;this.sinks.length>0;)this.sinks.shift();for(this.parentSinks="inherit";this.filters.length>0;)this.filters.shift();this.lowestLevel="debug"}resetDescendants(){for(const et of Object.values(this.children)){const nt=et instanceof LoggerImpl?et:et.deref();nt?.resetDescendants()}this.reset()}with(et){return new LoggerCtx(this,{...et})}filter(et){for(const nt of this.filters)if(!nt(et))return!1;return this.filters.length<1?this.parent?.filter(et)??!0:!0}*getSinks(et){if(!(this.lowestLevel===null||compareLogLevel(et,this.lowestLevel)<0)){if(this.parent!=null&&this.parentSinks==="inherit")for(const nt of this.parent.getSinks(et))yield nt;for(const nt of this.sinks)yield nt}}emit(et,nt){if(!(this.lowestLevel===null||compareLogLevel(et.level,this.lowestLevel)<0||!this.filter(et))){for(const rt of this.getSinks(et.level))if(!nt?.has(rt))try{rt(et)}catch(st){const ot=new Set(nt);ot.add(rt),metaLogger.log("fatal","Failed to emit a log record to sink {sink}: {error}",{sink:rt,error:st,record:et},ot)}}}log(et,nt,rt,st){const ot=LoggerImpl.getLogger().contextLocalStorage?.getStore()??{};let en;const tn=typeof rt=="function"?{category:this.category,level:et,timestamp:Date.now(),get message(){return parseMessageTemplate(nt,this.properties)},rawMessage:nt,get properties(){return en==null&&(en={...ot,...rt()}),en}}:{category:this.category,level:et,timestamp:Date.now(),message:parseMessageTemplate(nt,{...ot,...rt}),rawMessage:nt,properties:{...ot,...rt}};this.emit(tn,st)}logLazily(et,nt,rt={}){const st=LoggerImpl.getLogger().contextLocalStorage?.getStore()??{};let ot,en;function tn(){if((en==null||ot==null)&&(en=nt((nn,...rn)=>(ot=nn,renderMessage(nn,rn))),ot==null))throw new TypeError("No log record was made.");return[en,ot]}this.emit({category:this.category,level:et,get message(){return tn()[0]},get rawMessage(){return tn()[1]},timestamp:Date.now(),properties:{...st,...rt}})}logTemplate(et,nt,rt,st={}){const ot=LoggerImpl.getLogger().contextLocalStorage?.getStore()??{};this.emit({category:this.category,level:et,message:renderMessage(nt,rt),rawMessage:nt,timestamp:Date.now(),properties:{...ot,...st}})}debug(et,...nt){typeof et=="string"?this.log("debug",et,nt[0]??{}):typeof et=="function"?this.logLazily("debug",et):this.logTemplate("debug",et,nt)}info(et,...nt){typeof et=="string"?this.log("info",et,nt[0]??{}):typeof et=="function"?this.logLazily("info",et):this.logTemplate("info",et,nt)}warn(et,...nt){typeof et=="string"?this.log("warning",et,nt[0]??{}):typeof et=="function"?this.logLazily("warning",et):this.logTemplate("warning",et,nt)}error(et,...nt){typeof et=="string"?this.log("error",et,nt[0]??{}):typeof et=="function"?this.logLazily("error",et):this.logTemplate("error",et,nt)}fatal(et,...nt){typeof et=="string"?this.log("fatal",et,nt[0]??{}):typeof et=="function"?this.logLazily("fatal",et):this.logTemplate("fatal",et,nt)}}class LoggerCtx{constructor(et,nt){Object.defineProperty(this,"logger",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"properties",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.logger=et,this.properties=nt}get category(){return this.logger.category}get parent(){return this.logger.parent}getChild(et){return this.logger.getChild(et).with(this.properties)}with(et){return new LoggerCtx(this.logger,{...this.properties,...et})}log(et,nt,rt,st){this.logger.log(et,nt,typeof rt=="function"?()=>({...this.properties,...rt()}):{...this.properties,...rt},st)}logLazily(et,nt){this.logger.logLazily(et,nt,this.properties)}logTemplate(et,nt,rt){this.logger.logTemplate(et,nt,rt,this.properties)}debug(et,...nt){typeof et=="string"?this.log("debug",et,nt[0]??{}):typeof et=="function"?this.logLazily("debug",et):this.logTemplate("debug",et,nt)}info(et,...nt){typeof et=="string"?this.log("info",et,nt[0]??{}):typeof et=="function"?this.logLazily("info",et):this.logTemplate("info",et,nt)}warn(et,...nt){typeof et=="string"?this.log("warning",et,nt[0]??{}):typeof et=="function"?this.logLazily("warning",et):this.logTemplate("warning",et,nt)}error(et,...nt){typeof et=="string"?this.log("error",et,nt[0]??{}):typeof et=="function"?this.logLazily("error",et):this.logTemplate("error",et,nt)}fatal(et,...nt){typeof et=="string"?this.log("fatal",et,nt[0]??{}):typeof et=="function"?this.logLazily("fatal",et):this.logTemplate("fatal",et,nt)}}const metaLogger=LoggerImpl.getLogger(["logtape","meta"]);function parseMessageTemplate(tt,et){const nt=[];let rt="";for(let st=0;st<tt.length;st++){const ot=tt.charAt(st),en=tt.charAt(st+1);if(ot==="{"&&en==="{")rt=rt+ot,st++;else if(ot==="}"&&en==="}")rt=rt+ot,st++;else if(ot==="{")nt.push(rt),rt="";else if(ot==="}"){let tn;rt.match(/^\s|\s$/)?tn=rt in et?et[rt]:et[rt.trim()]:tn=et[rt],nt.push(tn),rt=""}else rt=rt+ot}return nt.push(rt),nt}function renderMessage(tt,et){const nt=[];for(let rt=0;rt<tt.length;rt++)nt.push(tt[rt]),rt<et.length&&nt.push(et[rt]);return nt}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(tt){return tt&&tt.__esModule&&Object.prototype.hasOwnProperty.call(tt,"default")?tt.default:tt}function getAugmentedNamespace(tt){if(tt.__esModule)return tt;var et=tt.default;if(typeof et=="function"){var nt=function rt(){return this instanceof rt?Reflect.construct(et,arguments,this.constructor):et.apply(this,arguments)};nt.prototype=et.prototype}else nt={};return Object.defineProperty(nt,"__esModule",{value:!0}),Object.keys(tt).forEach(function(rt){var st=Object.getOwnPropertyDescriptor(tt,rt);Object.defineProperty(nt,rt,st.get?st:{enumerable:!0,get:function(){return tt[rt]}})}),nt}function commonjsRequire(tt){throw new Error('Could not dynamically require "'+tt+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var nodeUtil$1,hasRequiredNodeUtil;function requireNodeUtil(){if(hasRequiredNodeUtil)return nodeUtil$1;hasRequiredNodeUtil=1;let tt=null;if(typeof window>"u"&&("process"in globalThis&&"versions"in globalThis.process&&"node"in globalThis.process.versions&&typeof globalThis.caches>"u"&&typeof globalThis.addEventListener!="function"||"Bun"in globalThis))try{tt=[commonjsRequire][0](`${["node","util"].join(":")}`)}catch{tt=null}return nodeUtil$1=tt,nodeUtil$1}var nodeUtilExports=requireNodeUtil();const util=getDefaultExportFromCjs(nodeUtilExports),levelAbbreviations={debug:"DBG",info:"INF",warning:"WRN",error:"ERR",fatal:"FTL"},inspect="Deno"in globalThis&&"inspect"in globalThis.Deno&&typeof globalThis.Deno.inspect=="function"?(tt,et)=>globalThis.Deno.inspect(tt,{strAbbreviateSize:1/0,iterableLimit:1/0,...et}):util!=null&&"inspect"in util&&typeof util.inspect=="function"?(tt,et)=>util.inspect(tt,{maxArrayLength:1/0,maxStringLength:1/0,...et}):tt=>JSON.stringify(tt);function getTextFormatter(tt={}){const et=tt.timestamp==null||tt.timestamp==="date-time-timezone"?en=>new Date(en).toISOString().replace("T"," ").replace("Z"," +00:00"):tt.timestamp==="date-time-tz"?en=>new Date(en).toISOString().replace("T"," ").replace("Z"," +00"):tt.timestamp==="date-time"?en=>new Date(en).toISOString().replace("T"," ").replace("Z",""):tt.timestamp==="time-timezone"?en=>new Date(en).toISOString().replace(/.*T/,"").replace("Z"," +00:00"):tt.timestamp==="time-tz"?en=>new Date(en).toISOString().replace(/.*T/,"").replace("Z"," +00"):tt.timestamp==="time"?en=>new Date(en).toISOString().replace(/.*T/,"").replace("Z",""):tt.timestamp==="date"?en=>new Date(en).toISOString().replace(/T.*/,""):tt.timestamp==="rfc3339"?en=>new Date(en).toISOString():tt.timestamp,nt=tt.category??"\xB7",rt=tt.value??inspect,st=tt.level==null||tt.level==="ABBR"?en=>levelAbbreviations[en]:tt.level==="abbr"?en=>levelAbbreviations[en].toLowerCase():tt.level==="FULL"?en=>en.toUpperCase():tt.level==="full"?en=>en:tt.level==="L"?en=>en.charAt(0).toUpperCase():tt.level==="l"?en=>en.charAt(0):tt.level,ot=tt.format??(({timestamp:en,level:tn,category:nn,message:rn})=>`${en} [${tn}] ${nn}: ${rn}`);return en=>{let tn="";for(let on=0;on<en.message.length;on++)on%2===0?tn+=en.message[on]:tn+=rt(en.message[on]);const nn=et(en.timestamp),rn=st(en.level),sn=typeof nt=="function"?nt(en.category):en.category.join(nt);return`${ot({timestamp:nn,level:rn,category:sn,message:tn,record:en})}
|
|
2
|
-
`}}getTextFormatter();const RESET="\x1B[0m",ansiColors={black:"\x1B[30m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m"},ansiStyles={bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",strikethrough:"\x1B[9m"},defaultLevelColors={debug:"blue",info:"green",warning:"yellow",error:"red",fatal:"magenta"};function getAnsiColorFormatter(tt={}){const et=tt.format,nt=typeof tt.timestampStyle>"u"?"dim":tt.timestampStyle,rt=tt.timestampColor??null,st=`${nt==null?"":ansiStyles[nt]}${rt==null?"":ansiColors[rt]}`,ot=nt==null&&rt==null?"":RESET,en=typeof tt.levelStyle>"u"?"bold":tt.levelStyle,tn=tt.levelColors??defaultLevelColors,nn=typeof tt.categoryStyle>"u"?"dim":tt.categoryStyle,rn=tt.categoryColor??null,sn=`${nn==null?"":ansiStyles[nn]}${rn==null?"":ansiColors[rn]}`,an=nn==null&&rn==null?"":RESET;return getTextFormatter({timestamp:"date-time-tz",value(on){return inspect(on,{colors:!0})},...tt,format({timestamp:on,level:cn,category:ln,message:fn,record:gn}){const pn=tn[gn.level];return on=`${st}${on}${ot}`,cn=`${en==null?"":ansiStyles[en]}${pn==null?"":ansiColors[pn]}${cn}${en==null&&pn==null?"":RESET}`,et==null?`${on} ${cn} ${sn}${ln}:${an} ${fn}`:et({timestamp:on,level:cn,category:`${sn}${ln}${an}`,message:fn,record:gn})}})}getAnsiColorFormatter();const logLevelStyles={debug:"background-color: gray; color: white;",info:"background-color: white; color: black;",warning:"background-color: orange; color: black;",error:"background-color: red; color: white;",fatal:"background-color: maroon; color: white;"};function defaultConsoleFormatter(tt){let et="";const nt=[];for(let ot=0;ot<tt.message.length;ot++)ot%2===0?et+=tt.message[ot]:(et+="%o",nt.push(tt.message[ot]));const rt=new Date(tt.timestamp);return[`%c${`${rt.getUTCHours().toString().padStart(2,"0")}:${rt.getUTCMinutes().toString().padStart(2,"0")}:${rt.getUTCSeconds().toString().padStart(2,"0")}.${rt.getUTCMilliseconds().toString().padStart(3,"0")}`} %c${levelAbbreviations[tt.level]}%c %c${tt.category.join("\xB7")} %c${et}`,"color: gray;",logLevelStyles[tt.level],"background-color: default;","color: gray;","color: default;",...nt]}function getConsoleSink(tt={}){const et=tt.formatter??defaultConsoleFormatter,nt=tt.console??globalThis.console;return rt=>{const st=et(rt);if(typeof st=="string"){const ot=st.replace(/\r?\n$/,"");if(rt.level==="debug")nt.debug(ot);else if(rt.level==="info")nt.info(ot);else if(rt.level==="warning")nt.warn(ot);else if(rt.level==="error"||rt.level==="fatal")nt.error(ot);else throw new TypeError(`Invalid log level: ${rt.level}.`)}else if(rt.level==="debug")nt.debug(...st);else if(rt.level==="info")nt.info(...st);else if(rt.level==="warning")nt.warn(...st);else if(rt.level==="error"||rt.level==="fatal")nt.error(...st);else throw new TypeError(`Invalid log level: ${rt.level}.`)}}let currentConfig=null;const strongRefs=new Set,disposables=new Set,asyncDisposables=new Set;async function configure(tt){if(currentConfig!=null&&!tt.reset)throw new ConfigError("Already configured; if you want to reset, turn on the reset flag.");await reset(),currentConfig=tt;let et=!1,nt=!1;for(const st of tt.loggers){(st.category.length===0||st.category.length===1&&st.category[0]==="logtape"||st.category.length===2&&st.category[0]==="logtape"&&st.category[1]==="meta")&&(et=!0);const ot=LoggerImpl.getLogger(st.category);for(const en of st.sinks??[]){const tn=tt.sinks[en];if(!tn)throw await reset(),new ConfigError(`Sink not found: ${en}.`);ot.sinks.push(tn)}ot.parentSinks=st.parentSinks??"inherit",st.lowestLevel!==void 0&&(ot.lowestLevel=st.lowestLevel),st.level!==void 0&&(nt=!0,ot.filters.push(toFilter(st.level)));for(const en of st.filters??[]){const tn=tt.filters?.[en];if(tn===void 0)throw await reset(),new ConfigError(`Filter not found: ${en}.`);ot.filters.push(toFilter(tn))}strongRefs.add(ot)}LoggerImpl.getLogger().contextLocalStorage=tt.contextLocalStorage;for(const st of Object.values(tt.sinks))Symbol.asyncDispose in st&&asyncDisposables.add(st),Symbol.dispose in st&&disposables.add(st);for(const st of Object.values(tt.filters??{}))st==null||typeof st=="string"||(Symbol.asyncDispose in st&&asyncDisposables.add(st),Symbol.dispose in st&&disposables.add(st));"process"in dntGlobalThis&&!("Deno"in dntGlobalThis)?process.on("exit",dispose):addEventListener("unload",dispose);const rt=LoggerImpl.getLogger(["logtape","meta"]);et||rt.sinks.push(getConsoleSink()),rt.info("LogTape loggers are configured. Note that LogTape itself uses the meta logger, which has category {metaLoggerCategory}. The meta logger purposes to log internal errors such as sink exceptions. If you are seeing this message, the meta logger is somehow configured. It's recommended to configure the meta logger with a separate sink so that you can easily notice if logging itself fails or is misconfigured. To turn off this message, configure the meta logger with higher log levels than {dismissLevel}. See also <https://logtape.org/manual/categories#meta-logger>.",{metaLoggerCategory:["logtape","meta"],dismissLevel:"info"}),nt&&rt.warn("The level option is deprecated in favor of lowestLevel option. Please update your configuration. See also <https://logtape.org/manual/levels#configuring-severity-levels>.")}async function reset(){await dispose();const tt=LoggerImpl.getLogger([]);tt.resetDescendants(),delete tt.contextLocalStorage,strongRefs.clear(),currentConfig=null}async function dispose(){for(const et of disposables)et[Symbol.dispose]();disposables.clear();const tt=[];for(const et of asyncDisposables)tt.push(et[Symbol.asyncDispose]()),asyncDisposables.delete(et);await Promise.all(tt)}class ConfigError extends Error{constructor(et){super(et),this.name="ConfigureError"}}var fs_1,hasRequiredFs;function requireFs(){if(hasRequiredFs)return fs_1;hasRequiredFs=1;let tt=null;if(typeof window>"u"&&("process"in globalThis&&"versions"in globalThis.process&&"node"in globalThis.process.versions&&typeof globalThis.caches>"u"&&typeof globalThis.addEventListener!="function"||"Bun"in globalThis))try{tt=[commonjsRequire][0](`${["node","fs"].join(":")}`)}catch{tt=null}return fs_1=tt,fs_1}var fsExports=requireFs();const fs$1=getDefaultExportFromCjs(fsExports),webDriver={},fs=fs$1;fs==null||(fs.writeSync,fs.fsyncSync,fs.closeSync,fs.statSync,fs.renameSync);const ct=tt=>{E$1.forEach(et=>{it(tt,et)})},E$1=["name","message","stack","cause","errors"],it=(tt,et)=>{const nt=p$7(tt,et);if(nt!==void 0){if(at(nt)){f$a(tt,et,tt[et]);return}ft(nt)&&S$2(tt,et,nt)}},p$7=(tt,et)=>{const nt=Object.getOwnPropertyDescriptor(tt,et);if(nt!==void 0)return nt;const rt=Object.getPrototypeOf(tt);return rt===null?void 0:p$7(rt,et)},at=({get:tt,set:et})=>tt!==void 0&&et===void 0,ft=({enumerable:tt,writable:et})=>tt||!et,f$a=(tt,et,nt)=>{S$2(tt,et,{value:nt})},S$2=(tt,et,nt)=>{Object.defineProperty(tt,et,{...nt,..."get"in nt||"set"in nt?{}:{writable:!0},enumerable:!1,configurable:!0})},ut=(tt,et)=>{if(Array.isArray(tt.errors)){const nt=tt.errors.filter(lt).map(et).filter(Boolean);f$a(tt,"errors",nt)}else gt(tt)?f$a(tt,"errors",[]):tt.errors!==void 0&&dt(tt)},lt=tt=>tt!==void 0,gt=tt=>"AggregateError"in globalThis&&(tt.name==="AggregateError"||tt instanceof AggregateError),dt=tt=>{delete tt.errors,tt.errors!==void 0&&f$a(tt,"errors",[])},yt=(tt,et)=>{if(!("cause"in tt))return;const nt=tt.cause===void 0?tt.cause:et(tt.cause);nt===void 0?delete tt.cause:f$a(tt,"cause",nt)},bt=tt=>mt(tt)||Et(tt),mt=tt=>{try{return tt instanceof Error}catch{return!1}},Et=tt=>{try{return pt.has(Object.prototype.toString.call(tt))}catch{return!1}},pt=new Set(["[object Error]","[object DOMException]","[object DOMError]","[object Exception]"]);function g$5(tt){if(typeof tt!="object"||tt===null)return!1;const et=Object.getPrototypeOf(tt);return(et===null||et===Object.prototype||Object.getPrototypeOf(et)===null)&&!(Symbol.toStringTag in tt)&&!(Symbol.iterator in tt)}const Ot=tt=>!Object.isExtensible(tt)||E$1.some(et=>$t(tt,et)||ht(tt,et)),$t=(tt,et)=>{const nt=Object.getOwnPropertyDescriptor(tt,et);return nt!==void 0&&!nt.configurable},ht=(tt,et)=>{try{return tt[et],!1}catch{return!0}},O$1=tt=>{const et=St(tt.message,tt.name);f$a(tt,"stack",et)},St=(tt="",et="Error")=>{const nt=wt(et),{stack:rt}=new nt(tt);return typeof rt=="string"&&rt!==""?rt:`${et}: ${tt}`},wt=tt=>{const et={value:tt,enumerable:!1,writable:!0,configurable:!0},nt=Object.defineProperty(class extends Error{},"name",et);return Object.defineProperty(nt.prototype,"name",et),nt},Pt=tt=>{const et={};for(const nt of jt(tt))try{const rt=tt[nt],{enumerable:st,configurable:ot,writable:en=!0}=p$7(tt,nt);Object.defineProperty(et,nt,{value:rt,enumerable:st,configurable:ot,writable:en})}catch{}return et},jt=tt=>{const et=At(tt);for(const nt of E$1)kt(tt,nt)&&et.push(nt);return et},At=tt=>{try{return Reflect.ownKeys(tt)}catch{return[]}},kt=(tt,et)=>{try{return et in tt&&!Object.hasOwn(tt,et)}catch{return!1}},w$4=tt=>{const{name:et,message:nt,stack:rt,cause:st,errors:ot,...en}=Pt(tt),tn=Rt(nt,en),nn=xt(et,tn);return nt===tn&&_t(nn,en),Object.entries({name:et,stack:rt,cause:st,errors:ot}).forEach(([rn,sn])=>{zt(nn,rn,sn)}),rt===void 0&&O$1(nn),nn},Rt=(tt,et)=>typeof tt=="string"&&tt!==""?tt:It(Ct(et)),Ct=tt=>{try{return JSON.stringify(tt)}catch{return Tt(tt)}},Tt=tt=>{try{return String(tt)}catch{return"Invalid error"}},It=tt=>tt.length<P?tt:`${tt.slice(0,P)}...`,P=1e3,xt=(tt,et)=>tt==="AggregateError"&&"AggregateError"in globalThis?new AggregateError([],et):tt in j$1?new j$1[tt](et):new Error(et),j$1={Error,ReferenceError,TypeError,SyntaxError,RangeError,URIError,EvalError},_t=(tt,et)=>{for(const nt in et)nt in tt||(tt[nt]=et[nt])},zt=(tt,et,nt)=>{nt!==void 0&&f$a(tt,et,nt)},Ft=tt=>{try{const et=new Error(String(tt));return O$1(et),et}catch(et){return et}},{toString:Lt}=Object.prototype,Wt=tt=>Ht(tt)?w$4(tt):bt(tt)?Gt(tt)?w$4(tt):tt:Ft(tt),Ht=tt=>{try{return g$5(tt)}catch{return!1}},Gt=tt=>Bt(tt)||Ot(tt)||Dt(tt),Bt=tt=>{try{return Lt.call(tt)==="[object Object]"}catch{return!0}},Dt=tt=>typeof tt.constructor!="function"||typeof tt.constructor.name!="string"||tt.constructor.name===""||tt.constructor.prototype!==Object.getPrototypeOf(tt),d$7=(tt,{shallow:et=!1}={})=>A$3(tt,[],et),A$3=(tt,et,nt)=>{if(et.includes(tt))return;const rt=nt?Mt:ot=>A$3(ot,[...et,tt],nt),st=Wt(tt);return Nt(st,rt),st},Mt=tt=>tt,Nt=(tt,et)=>{Jt(tt),Kt(tt),Ut(tt),yt(tt,et),ut(tt,et),ct(tt)},Jt=tt=>{if(y$8(tt.name))return;const et=Object.getPrototypeOf(tt).name,nt=y$8(et)?et:tt.constructor.name;f$a(tt,"name",nt)},Kt=tt=>{y$8(tt.message)||f$a(tt,"message","")},Ut=tt=>{y$8(tt.stack)||O$1(tt)},y$8=tt=>typeof tt=="string"&&tt!=="",Xt=(tt,et,nt=tt.name)=>{if(qt(et),typeof nt!="string")throw new TypeError(`currentName must be a string: ${nt}`);return nt},qt=tt=>{if(!vt(tt))throw new TypeError(`ErrorClass must be a class: ${tt}`);if(!k$1(tt.prototype))throw new TypeError(`ErrorClass must inherit from Error: ${tt}`);if(!Vt(tt))throw new TypeError(`ErrorClass must be have a valid constructor: ${tt}`)},vt=tt=>typeof tt=="function"&&typeof tt.prototype=="object"&&tt.prototype!==null,k$1=tt=>tt!==null&&(tt.name==="Error"||k$1(Object.getPrototypeOf(tt))),Vt=tt=>typeof tt.prototype.constructor=="function",R$1=(tt,et,nt)=>{Object.defineProperty(tt,et,{value:nt,enumerable:!1,writable:!0,configurable:!0})},Zt=(tt,et)=>{Object.getPrototypeOf(tt)!==et.prototype&&(Qt(tt,et),I$2(tt,"constructor"),Yt(tt,et))},Qt=(tt,et)=>{Object.setPrototypeOf(tt,et.prototype)},Yt=(tt,et)=>{I$2(tt,"name");const nt=C$2(et.prototype);tt.name!==nt&&R$1(tt,"name",nt)},C$2=tt=>te(tt)??ee$1(tt)??C$2(Object.getPrototypeOf(tt)),te=tt=>Object.hasOwn(tt,"name")&&T$2(tt.name)?tt.name:void 0,ee$1=tt=>typeof tt.constructor=="function"&&T$2(tt.constructor.name)?tt.constructor.name:void 0,T$2=tt=>typeof tt=="string"&&tt!=="",I$2=(tt,et)=>{Object.hasOwn(tt,et)&&delete tt[et]},re=(tt,et)=>{if(!ne(tt,et))return;const nt=se(tt,et);R$1(tt,"stack",nt)},ne=(tt,et)=>et!==tt.name&&et!==""&&tt.stack.includes(et)&&oe(),oe=()=>{class tt extends Error{}const et={value:x$1,enumerable:!1,writable:!0,configurable:!0};Object.defineProperty(tt,"name",et),Object.defineProperty(tt.prototype,"name",et);const{stack:nt}=new tt("");return typeof nt=="string"&&nt.includes(x$1)},x$1="SetErrorClassError",se=({name:tt,stack:et},nt)=>{if(et.startsWith(`${nt}: `))return et.replace(nt,tt);const rt=ce(nt,tt),[st,ot]=rt.find(([en])=>et.includes(en));return et.replace(st,ot)},ce=(tt,et)=>[[`
|
|
3
|
-
${tt}: `,`
|
|
4
|
-
${et}: `],[`${tt}: `,`${et}: `],[`${tt} `,`${et} `],[tt,et]],ie=(tt,et,nt)=>{const rt=d$7(tt),st=Xt(rt,et,nt);return Zt(rt,et),re(rt,st),rt},ae=(tt,et)=>et.configurable===!1?fe(tt,et):ge(tt,et),fe=(tt,et)=>({...et,...ue(tt,et),...le(tt,et)}),ue=(tt,et)=>et.writable===!0&&tt.writable===!1?{writable:!1}:{},le=(tt,et)=>tt.hasValue&&"value"in et&&et.writable===!0?{value:tt.value}:{},ge=(tt,et)=>{const nt=u$9(tt.enumerable,et.enumerable,!0),rt=u$9(tt.writable,et.writable,!0),st=u$9(tt.configurable,et.configurable,!0);return{...de(tt,et,rt),enumerable:nt,configurable:st}},de=(tt,et,nt)=>tt.hasValue?{value:tt.value,writable:nt}:!_$3(tt)&&!_$3(et)?{value:et.value,writable:nt}:{get:u$9(tt.get,et.get),set:u$9(tt.set,et.set)},_$3=({get:tt,set:et})=>tt!==void 0||et!==void 0,u$9=(tt,et,nt)=>tt??et??nt,ye=(tt,et,nt)=>{if(!be(tt))throw new TypeError(`Argument must be an object: ${tt}`);if(!me(et))throw new TypeError(`Property key must be a string, a symbol or an integer: ${et}`);return Ee(nt)},be=tt=>typeof tt=="object"&&tt!==null,me=tt=>{const et=typeof tt;return et==="string"||et==="symbol"||et==="number"},Ee=tt=>{if(!g$5(tt))throw new TypeError(`Descriptor must be a plain object: ${tt}`);const{enumerable:et,writable:nt,configurable:rt,value:st,get:ot,set:en,...tn}=tt,nn="value"in tt;return pe({enumerable:et,writable:nt,configurable:rt,get:ot,set:en,unknownProps:tn,hasValue:nn}),{enumerable:et,writable:nt,configurable:rt,value:st,get:ot,set:en,hasValue:nn}},pe=({enumerable:tt,writable:et,configurable:nt,get:rt,set:st,unknownProps:ot,hasValue:en})=>{z$2(en,rt,"get"),z$2(en,st,"set"),$(tt,"enumerable"),$(et,"writable"),$(nt,"configurable"),$e(ot)},z$2=(tt,et,nt)=>{if(Oe$1(et,nt),tt&&et!==void 0)throw new TypeError(`Descriptor property "value" and "${nt}" must not both be defined: ${et}`)},Oe$1=(tt,et)=>{if(tt!==void 0&&typeof tt!="function")throw new TypeError(`Descriptor property "${et}" must be a function: ${tt}`)},$=(tt,et)=>{if(tt!==void 0&&typeof tt!="boolean")throw new TypeError(`Descriptor property "${et}" must be a boolean: ${tt}`)},$e=tt=>{const[et]=Object.keys(tt);if(et!==void 0)throw new TypeError(`Unknown descriptor property "${et}": ${tt[et]}`)},he=(tt,et,nt)=>{const rt=ye(tt,et,nt),st=F(tt,et),ot=ae(rt,st);return Se(tt,et,ot),tt},F=(tt,et)=>{const nt=Object.getOwnPropertyDescriptor(tt,et);if(nt!==void 0)return nt;const rt=Object.getPrototypeOf(tt);return rt===null?{}:F(rt,et)},Se=(tt,et,nt)=>{try{Object.defineProperty(tt,et,nt)}catch{}},we=(tt,et,nt)=>{if(nt!==void 0)return L$1(tt,et,nt);try{delete tt[et]}catch{}if(tt[et]!==void 0)return L$1(tt,et)},L$1=(tt,et,nt)=>{const rt=Pe(et);he(tt,et,{value:nt,...rt})},Pe=tt=>typeof tt=="string"&&tt.startsWith("_")?{enumerable:!1}:{},je=tt=>Ae(tt)||ke(tt),Ae=tt=>{try{return tt instanceof Error}catch{return!1}},ke=tt=>{try{return Re.has(Object.prototype.toString.call(tt))}catch{return!1}},Re=new Set(["[object Error]","[object DOMException]","[object DOMError]","[object Exception]"]),Ce=(tt,et,nt={})=>{if(W(tt,"First argument"),W(et,"Second argument"),!g$5(nt))throw new TypeError(`Options must be a plain object: ${nt}`);const{soft:rt=!1}=nt;if(typeof rt!="boolean")throw new TypeError(`Option "soft" must be a boolean: ${rt}`);return{soft:rt}},W=(tt,et)=>{if(tt===void 0)throw new TypeError(`${et} is required.`);if(!Te(tt))throw new TypeError(`${et} must be a plain object or an error: ${tt}`)},Te=tt=>g$5(tt)||je(tt),Ie=({error:tt,props:et,propName:nt,soft:rt})=>xe(nt)||!Fe.call(et,nt)||rt&&tt[nt]!==void 0,xe=tt=>tt in _e||ze.has(tt),_e=new Error("check"),ze=new Set(["prototype","errors","cause"]),{propertyIsEnumerable:Fe}=Object.prototype,Le=(tt,et,nt)=>{const{soft:rt}=Ce(tt,et,nt);for(const st of Reflect.ownKeys(et))We({error:tt,props:et,propName:st,soft:rt});return tt},We=({error:tt,props:et,propName:nt,soft:rt})=>{Ie({error:tt,props:et,propName:nt,soft:rt})||we(tt,nt,et[nt])},b$1=(tt,et,nt)=>{Object.defineProperty(tt,et,{value:nt,writable:!0,enumerable:!1,configurable:!0})},He=(tt,et)=>{if(tt.errors===void 0)return;const nt=tt.errors.map(rt=>et(rt).error).filter(Boolean);b$1(tt,"errors",nt)},Ge=({target:tt,source:et,parent:nt,child:rt})=>{if(!H(tt)){Be(tt,et);return}H(et)&&b$1(tt,"errors",[...rt.errors,...nt.errors])},Be=(tt,et)=>{et.errors!==void 0&&b$1(tt,"errors",et.errors)},H=tt=>tt.errors!==void 0&&tt.errors.length!==0,De=(tt,et,nt=tt.message)=>{if(typeof et!="string")throw new TypeError(`newMessage must be a string: ${et}`);if(typeof nt!="string")throw new TypeError(`currentMessage must be a string: ${nt}`);return nt},Me=({name:tt,stack:et},nt,rt)=>rt!==""&&et.includes(rt)?Ne({name:tt,stack:et,newMessage:nt,currentMessage:rt}):Ke(tt,et,nt),Ne=({name:tt,stack:et,newMessage:nt,currentMessage:rt})=>{const st=Je(tt,nt,rt),[ot,en]=st.find(([tn])=>et.includes(tn));return et.replace(ot,en)},Je=(tt,et,nt)=>[[`${tt}: ${nt}`,`${tt}: ${et}`],[`: ${nt}`,`: ${et}`],[`
|
|
5
|
-
${nt}`,`
|
|
6
|
-
${et}`],[` ${nt}`,` ${et}`],[nt,et]],Ke=(tt,et,nt)=>{const rt=`${tt}: `,st=nt.trimEnd();return et===tt||et.startsWith(`${tt}
|
|
7
|
-
`)?et.replace(tt,`${rt}${st}`):et.startsWith(rt)?et.replace(rt,`${rt}${st}
|
|
8
|
-
`):`${rt}${st}
|
|
9
|
-
${et}`},Ue=(tt,et,nt)=>{const rt=d$7(tt),st=De(rt,et,nt);return B$2(rt,"message",et),Xe(rt,et,st),rt},Xe=(tt,et,nt)=>{if(et===nt||!qe())return;const rt=Me(tt,et,nt);B$2(tt,"stack",rt)},qe=()=>{const{stack:tt}=new Error(G$2);return typeof tt=="string"&&tt.includes(G$2)},G$2="set-error-message test message",B$2=(tt,et,nt)=>{Object.defineProperty(tt,et,{value:nt,enumerable:!1,writable:!0,configurable:!0})},ve=(tt,et,nt)=>{if(typeof et!="string")throw new TypeError(`Second argument must be a message string: ${et}`);const rt=d$7(tt),st=Ve(et,rt.message);return Ue(rt,st,nt)},Ve=(tt,et)=>{const nt=tt.trim(),rt=et.trim();return nt===""?rt:rt===""?nt:Ze(nt,rt,tt)},Ze=(tt,et,nt)=>tt.endsWith(Qe)?nt.endsWith(Ye)?`${tt}
|
|
10
|
-
${et}`:`${tt} ${et}`:`${et}
|
|
11
|
-
${tt}`,Qe=":",Ye=`
|
|
12
|
-
`,tr=({parent:tt,child:et,target:nt,stackError:rt})=>{const st=tt.message;return nt.message=et.message,ve(nt,st,rt.message)},er=(tt,et)=>D$1(tt)===et,D$1=tt=>typeof tt=="object"&&tt!==null?tt.stack:void 0,rr=({wrap:tt,target:et,source:nt,childHasStack:rt})=>tt===rt?et:(b$1(et,"stack",nt.stack),nt),nr=tt=>{const{wrap:et,name:nt}=tt;return typeof et!="boolean"?nt==="Error":(Object.hasOwn(tt,"wrap")&&delete tt.wrap,et)},M$2=tt=>N$1(tt,[]).error,N$1=(tt,et)=>{if(et.includes(tt))return{};const nt=nn=>N$1(nn,[...et,tt]),rt=D$1(tt),st=d$7(tt,{shallow:!0}),ot=er(st,rt);He(st,nt);const{parent:en,childHasStack:tn}=or(st,nt);return{error:en,errorHasStack:ot||tn}},or=(tt,et)=>{const nt=nr(tt);if(tt.cause===void 0)return{parent:tt,childHasStack:!1};const{error:rt,errorHasStack:st}=et(tt.cause);return delete tt.cause,{parent:sr({parent:tt,child:rt,childHasStack:st,wrap:nt}),childHasStack:st}},sr=({parent:tt,child:et,childHasStack:nt,wrap:rt})=>{if(et===void 0)return tt;const[st,ot]=rt?[et,tt]:[tt,et],en=rr({wrap:rt,target:st,source:ot,childHasStack:nt}),tn=ie(st,st.constructor,en.name),nn=tr({parent:tt,child:et,target:tn,stackError:en});return Ge({target:nn,source:ot,parent:tt,child:et}),Le(nn,ot,{soft:!rt})};function J(tt){return function(et,nt){if(typeof nt?.toJSON=="function"&&(nt=nt.toJSON()),!(nt!==null&&typeof nt=="object"))return nt;if(tt.has(nt))return"[Circular]";tt.add(nt);const rt=Array.isArray(nt)?[]:{};for(const[st,ot]of Object.entries(nt))rt[st]=J(tt)(st,ot);return tt.delete(nt),rt}}function cr(tt,{indentation:et}={}){return JSON.stringify(tt,J(new WeakSet),et)}const K$2=tt=>tt.split(`
|
|
13
|
-
`).map(et=>et.trim().replace("file://",""));function h$2(tt,et=2){return tt=Array.isArray(tt)?tt:tt.split(`
|
|
14
|
-
`),tt.map(nt=>`${" ".repeat(et)}${nt}`).join(`
|
|
15
|
-
`)}function ir(tt){if(typeof tt=="string")return tt;if(tt instanceof Error){const et=M$2(tt);if(et.stack){const nt=K$2(et.stack);return et.message+`
|
|
16
|
-
`+h$2(nt.slice(1))}return et.message}return cr(tt)}function U(tt){const et=Object.values(tt.properties).filter(nt=>nt instanceof Error).map(nt=>{const rt=M$2(nt);return rt.stack&&(rt.stack=K$2(rt.stack).join(`
|
|
17
|
-
`)),rt});return et.length===0?null:et.length===1?et[0]:new AggregateError(et)}function X(tt,et=!1){const nt=U(tt.record);if(nt){let rt=nt.message;return nt.stack&&(rt=rt+`
|
|
18
|
-
`+h$2(nt.stack.split(`
|
|
19
|
-
`).slice(1))),et&&(rt=`RED: ${lr.red}${rt}${ur}`),{...tt,message:tt.message+`
|
|
20
|
-
`+h$2(rt)}}return tt}const ar={debug:"DEBUG",info:"INFO ",warning:"WARN ",error:"ERROR",fatal:"FATAL"},q$1=tt=>ar[tt],ur="\x1B[0m",lr={red:"\x1B[31m"};function V(tt){const et=({timestamp:nt,level:rt,category:st,message:ot})=>`${nt} ${rt} ${st} ${ot}`;return getAnsiColorFormatter({timestamp:"time",level:q$1,categoryStyle:"bold",categoryColor:"cyan",category:".",...tt,format:nt=>et(X(nt,!0))})}function Z$1(tt){return getConsoleSink({formatter:V(),...tt})}const m$3=getLogger("likec4");function gr(tt){return m$3.getChild(tt)}let Q=!1;async function Y(tt){try{Q=!0;const et=tt?.sinks??{};await configure({...tt,sinks:{...et,console:et.console??Z$1()},loggers:[{category:["logtape","meta"],sinks:["console"],lowestLevel:"warning"},...tt?.loggers??[{category:"likec4",sinks:["console"],lowestLevel:"debug"}]]})}catch(et){console.error(et)}}function dr(){Q||(Y(),console.warn("logger automatically configured with default settings"))}function isPlainObject$1(tt){if(tt===null||typeof tt!="object")return!1;const et=Object.getPrototypeOf(tt);return et!==null&&et!==Object.prototype&&Object.getPrototypeOf(et)!==null||Symbol.iterator in tt?!1:Symbol.toStringTag in tt?Object.prototype.toString.call(tt)==="[object Module]":!0}function _defu(tt,et,nt=".",rt){if(!isPlainObject$1(et))return _defu(tt,{},nt,rt);const st=Object.assign({},et);for(const ot in tt){if(ot==="__proto__"||ot==="constructor")continue;const en=tt[ot];en!=null&&(rt&&rt(st,ot,en,nt)||(Array.isArray(en)&&Array.isArray(st[ot])?st[ot]=[...en,...st[ot]]:isPlainObject$1(en)&&isPlainObject$1(st[ot])?st[ot]=_defu(en,st[ot],(nt?`${nt}.`:"")+ot.toString(),rt):st[ot]=en))}return st}function createDefu(tt){return(...et)=>et.reduce((nt,rt)=>_defu(nt,rt,"",tt),{})}const defu=createDefu();function isAstNode(tt){return typeof tt=="object"&&tt!==null&&typeof tt.$type=="string"}function isReference(tt){return typeof tt=="object"&&tt!==null&&typeof tt.$refText=="string"}function isAstNodeDescription(tt){return typeof tt=="object"&&tt!==null&&typeof tt.name=="string"&&typeof tt.type=="string"&&typeof tt.path=="string"}function isLinkingError(tt){return typeof tt=="object"&&tt!==null&&isAstNode(tt.container)&&isReference(tt.reference)&&typeof tt.message=="string"}class AbstractAstReflection{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(et,nt){return isAstNode(et)&&this.isSubtype(et.$type,nt)}isSubtype(et,nt){if(et===nt)return!0;let rt=this.subtypes[et];rt||(rt=this.subtypes[et]={});const st=rt[nt];if(st!==void 0)return st;{const ot=this.computeIsSubtype(et,nt);return rt[nt]=ot,ot}}getAllSubTypes(et){const nt=this.allSubtypes[et];if(nt)return nt;{const rt=this.getAllTypes(),st=[];for(const ot of rt)this.isSubtype(ot,et)&&st.push(ot);return this.allSubtypes[et]=st,st}}}function isCompositeCstNode(tt){return typeof tt=="object"&&tt!==null&&Array.isArray(tt.content)}function isLeafCstNode(tt){return typeof tt=="object"&&tt!==null&&typeof tt.tokenType=="object"}function isRootCstNode(tt){return isCompositeCstNode(tt)&&typeof tt.fullText=="string"}class StreamImpl{constructor(et,nt){this.startFn=et,this.nextFn=nt}iterator(){const et={state:this.startFn(),next:()=>this.nextFn(et.state),[Symbol.iterator]:()=>et};return et}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){const et=this.iterator();let nt=0,rt=et.next();for(;!rt.done;)nt++,rt=et.next();return nt}toArray(){const et=[],nt=this.iterator();let rt;do rt=nt.next(),rt.value!==void 0&&et.push(rt.value);while(!rt.done);return et}toSet(){return new Set(this)}toMap(et,nt){const rt=this.map(st=>[et?et(st):st,nt?nt(st):st]);return new Map(rt)}toString(){return this.join()}concat(et){return new StreamImpl(()=>({first:this.startFn(),firstDone:!1,iterator:et[Symbol.iterator]()}),nt=>{let rt;if(!nt.firstDone){do if(rt=this.nextFn(nt.first),!rt.done)return rt;while(!rt.done);nt.firstDone=!0}do if(rt=nt.iterator.next(),!rt.done)return rt;while(!rt.done);return DONE_RESULT})}join(et=","){const nt=this.iterator();let rt="",st,ot=!1;do st=nt.next(),st.done||(ot&&(rt+=et),rt+=toString$1(st.value)),ot=!0;while(!st.done);return rt}indexOf(et,nt=0){const rt=this.iterator();let st=0,ot=rt.next();for(;!ot.done;){if(st>=nt&&ot.value===et)return st;ot=rt.next(),st++}return-1}every(et){const nt=this.iterator();let rt=nt.next();for(;!rt.done;){if(!et(rt.value))return!1;rt=nt.next()}return!0}some(et){const nt=this.iterator();let rt=nt.next();for(;!rt.done;){if(et(rt.value))return!0;rt=nt.next()}return!1}forEach(et){const nt=this.iterator();let rt=0,st=nt.next();for(;!st.done;)et(st.value,rt),st=nt.next(),rt++}map(et){return new StreamImpl(this.startFn,nt=>{const{done:rt,value:st}=this.nextFn(nt);return rt?DONE_RESULT:{done:!1,value:et(st)}})}filter(et){return new StreamImpl(this.startFn,nt=>{let rt;do if(rt=this.nextFn(nt),!rt.done&&et(rt.value))return rt;while(!rt.done);return DONE_RESULT})}nonNullable(){return this.filter(et=>et!=null)}reduce(et,nt){const rt=this.iterator();let st=nt,ot=rt.next();for(;!ot.done;)st===void 0?st=ot.value:st=et(st,ot.value),ot=rt.next();return st}reduceRight(et,nt){return this.recursiveReduce(this.iterator(),et,nt)}recursiveReduce(et,nt,rt){const st=et.next();if(st.done)return rt;const ot=this.recursiveReduce(et,nt,rt);return ot===void 0?st.value:nt(ot,st.value)}find(et){const nt=this.iterator();let rt=nt.next();for(;!rt.done;){if(et(rt.value))return rt.value;rt=nt.next()}}findIndex(et){const nt=this.iterator();let rt=0,st=nt.next();for(;!st.done;){if(et(st.value))return rt;st=nt.next(),rt++}return-1}includes(et){const nt=this.iterator();let rt=nt.next();for(;!rt.done;){if(rt.value===et)return!0;rt=nt.next()}return!1}flatMap(et){return new StreamImpl(()=>({this:this.startFn()}),nt=>{do{if(nt.iterator){const ot=nt.iterator.next();if(ot.done)nt.iterator=void 0;else return ot}const{done:rt,value:st}=this.nextFn(nt.this);if(!rt){const ot=et(st);if(isIterable(ot))nt.iterator=ot[Symbol.iterator]();else return{done:!1,value:ot}}}while(nt.iterator);return DONE_RESULT})}flat(et){if(et===void 0&&(et=1),et<=0)return this;const nt=et>1?this.flat(et-1):this;return new StreamImpl(()=>({this:nt.startFn()}),rt=>{do{if(rt.iterator){const en=rt.iterator.next();if(en.done)rt.iterator=void 0;else return en}const{done:st,value:ot}=nt.nextFn(rt.this);if(!st)if(isIterable(ot))rt.iterator=ot[Symbol.iterator]();else return{done:!1,value:ot}}while(rt.iterator);return DONE_RESULT})}head(){const nt=this.iterator().next();if(!nt.done)return nt.value}tail(et=1){return new StreamImpl(()=>{const nt=this.startFn();for(let rt=0;rt<et;rt++)if(this.nextFn(nt).done)return nt;return nt},this.nextFn)}limit(et){return new StreamImpl(()=>({size:0,state:this.startFn()}),nt=>(nt.size++,nt.size>et?DONE_RESULT:this.nextFn(nt.state)))}distinct(et){return new StreamImpl(()=>({set:new Set,internalState:this.startFn()}),nt=>{let rt;do if(rt=this.nextFn(nt.internalState),!rt.done){const st=et?et(rt.value):rt.value;if(!nt.set.has(st))return nt.set.add(st),rt}while(!rt.done);return DONE_RESULT})}exclude(et,nt){const rt=new Set;for(const st of et){const ot=nt?nt(st):st;rt.add(ot)}return this.filter(st=>{const ot=nt?nt(st):st;return!rt.has(ot)})}}function toString$1(tt){return typeof tt=="string"?tt:typeof tt>"u"?"undefined":typeof tt.toString=="function"?tt.toString():Object.prototype.toString.call(tt)}function isIterable(tt){return!!tt&&typeof tt[Symbol.iterator]=="function"}const EMPTY_STREAM=new StreamImpl(()=>{},()=>DONE_RESULT),DONE_RESULT=Object.freeze({done:!0,value:void 0});function stream(...tt){if(tt.length===1){const et=tt[0];if(et instanceof StreamImpl)return et;if(isIterable(et))return new StreamImpl(()=>et[Symbol.iterator](),nt=>nt.next());if(typeof et.length=="number")return new StreamImpl(()=>({index:0}),nt=>nt.index<et.length?{done:!1,value:et[nt.index++]}:DONE_RESULT)}return tt.length>1?new StreamImpl(()=>({collIndex:0,arrIndex:0}),et=>{do{if(et.iterator){const nt=et.iterator.next();if(!nt.done)return nt;et.iterator=void 0}if(et.array){if(et.arrIndex<et.array.length)return{done:!1,value:et.array[et.arrIndex++]};et.array=void 0,et.arrIndex=0}if(et.collIndex<tt.length){const nt=tt[et.collIndex++];isIterable(nt)?et.iterator=nt[Symbol.iterator]():nt&&typeof nt.length=="number"&&(et.array=nt)}}while(et.iterator||et.array||et.collIndex<tt.length);return DONE_RESULT}):EMPTY_STREAM}class TreeStreamImpl extends StreamImpl{constructor(et,nt,rt){super(()=>({iterators:rt?.includeRoot?[[et][Symbol.iterator]()]:[nt(et)[Symbol.iterator]()],pruned:!1}),st=>{for(st.pruned&&(st.iterators.pop(),st.pruned=!1);st.iterators.length>0;){const en=st.iterators[st.iterators.length-1].next();if(en.done)st.iterators.pop();else return st.iterators.push(nt(en.value)[Symbol.iterator]()),en}return DONE_RESULT})}iterator(){const et={state:this.startFn(),next:()=>this.nextFn(et.state),prune:()=>{et.state.pruned=!0},[Symbol.iterator]:()=>et};return et}}var Reduction;(function(tt){function et(ot){return ot.reduce((en,tn)=>en+tn,0)}tt.sum=et;function nt(ot){return ot.reduce((en,tn)=>en*tn,0)}tt.product=nt;function rt(ot){return ot.reduce((en,tn)=>Math.min(en,tn))}tt.min=rt;function st(ot){return ot.reduce((en,tn)=>Math.max(en,tn))}tt.max=st})(Reduction||(Reduction={}));function streamCst(tt){return new TreeStreamImpl(tt,et=>isCompositeCstNode(et)?et.content:[],{includeRoot:!0})}function flattenCst(tt){return streamCst(tt).filter(isLeafCstNode)}function isChildNode(tt,et){for(;tt.container;)if(tt=tt.container,tt===et)return!0;return!1}function tokenToRange(tt){return{start:{character:tt.startColumn-1,line:tt.startLine-1},end:{character:tt.endColumn,line:tt.endLine-1}}}function toDocumentSegment(tt){if(!tt)return;const{offset:et,end:nt,range:rt}=tt;return{range:rt,offset:et,end:nt,length:nt-et}}var RangeComparison;(function(tt){tt[tt.Before=0]="Before",tt[tt.After=1]="After",tt[tt.OverlapFront=2]="OverlapFront",tt[tt.OverlapBack=3]="OverlapBack",tt[tt.Inside=4]="Inside",tt[tt.Outside=5]="Outside"})(RangeComparison||(RangeComparison={}));function compareRange(tt,et){if(tt.end.line<et.start.line||tt.end.line===et.start.line&&tt.end.character<=et.start.character)return RangeComparison.Before;if(tt.start.line>et.end.line||tt.start.line===et.end.line&&tt.start.character>=et.end.character)return RangeComparison.After;const nt=tt.start.line>et.start.line||tt.start.line===et.start.line&&tt.start.character>=et.start.character,rt=tt.end.line<et.end.line||tt.end.line===et.end.line&&tt.end.character<=et.end.character;return nt&&rt?RangeComparison.Inside:nt?RangeComparison.OverlapBack:rt?RangeComparison.OverlapFront:RangeComparison.Outside}function inRange(tt,et){return compareRange(tt,et)>RangeComparison.After}const DefaultNameRegexp=/^[\w\p{L}]$/u;function findDeclarationNodeAtOffset(tt,et,nt=DefaultNameRegexp){if(tt){if(et>0){const rt=et-tt.offset,st=tt.text.charAt(rt);nt.test(st)||et--}return findLeafNodeAtOffset(tt,et)}}function findCommentNode(tt,et){if(tt){const nt=getPreviousNode(tt,!0);if(nt&&isCommentNode(nt,et))return nt;if(isRootCstNode(tt)){const rt=tt.content.findIndex(st=>!st.hidden);for(let st=rt-1;st>=0;st--){const ot=tt.content[st];if(isCommentNode(ot,et))return ot}}}}function isCommentNode(tt,et){return isLeafCstNode(tt)&&et.includes(tt.tokenType.name)}function findLeafNodeAtOffset(tt,et){if(isLeafCstNode(tt))return tt;if(isCompositeCstNode(tt)){const nt=binarySearch(tt,et,!1);if(nt)return findLeafNodeAtOffset(nt,et)}}function findLeafNodeBeforeOffset(tt,et){if(isLeafCstNode(tt))return tt;if(isCompositeCstNode(tt)){const nt=binarySearch(tt,et,!0);if(nt)return findLeafNodeBeforeOffset(nt,et)}}function binarySearch(tt,et,nt){let rt=0,st=tt.content.length-1,ot;for(;rt<=st;){const en=Math.floor((rt+st)/2),tn=tt.content[en];if(tn.offset<=et&&tn.end>et)return tn;tn.end<=et?(ot=nt?tn:void 0,rt=en+1):st=en-1}return ot}function getPreviousNode(tt,et=!0){for(;tt.container;){const nt=tt.container;let rt=nt.content.indexOf(tt);for(;rt>0;){rt--;const st=nt.content[rt];if(et||!st.hidden)return st}tt=nt}}function getNextNode(tt,et=!0){for(;tt.container;){const nt=tt.container;let rt=nt.content.indexOf(tt);const st=nt.content.length-1;for(;rt<st;){rt++;const ot=nt.content[rt];if(et||!ot.hidden)return ot}tt=nt}}function getStartlineNode(tt){if(tt.range.start.character===0)return tt;const et=tt.range.start.line;let nt=tt,rt;for(;tt.container;){const st=tt.container,ot=rt??st.content.indexOf(tt);if(ot===0?(tt=st,rt=void 0):(rt=ot-1,tt=st.content[rt]),tt.range.start.line!==et)break;nt=tt}return nt}function getInteriorNodes(tt,et){const nt=getCommonParent(tt,et);return nt?nt.parent.content.slice(nt.a+1,nt.b):[]}function getCommonParent(tt,et){const nt=getParentChain(tt),rt=getParentChain(et);let st;for(let ot=0;ot<nt.length&&ot<rt.length;ot++){const en=nt[ot],tn=rt[ot];if(en.parent===tn.parent)st={parent:en.parent,a:en.index,b:tn.index};else break}return st}function getParentChain(tt){const et=[];for(;tt.container;){const nt=tt.container,rt=nt.content.indexOf(tt);et.push({parent:nt,index:rt}),tt=nt}return et.reverse()}const q={__proto__:null,DefaultNameRegexp,get RangeComparison(){return RangeComparison},compareRange,findCommentNode,findDeclarationNodeAtOffset,findLeafNodeAtOffset,findLeafNodeBeforeOffset,flattenCst,getInteriorNodes,getNextNode,getPreviousNode,getStartlineNode,inRange,isChildNode,isCommentNode,streamCst,toDocumentSegment,tokenToRange};class ErrorWithLocation extends Error{constructor(et,nt){super(et?`${nt} at ${et.range.start.line}:${et.range.start.character}`:nt)}}function assertUnreachable(tt){throw new Error("Error! The input value was not handled.")}const AbstractRule="AbstractRule",AbstractType="AbstractType",Condition="Condition",TypeDefinition="TypeDefinition",ValueLiteral="ValueLiteral",AbstractElement="AbstractElement";function isAbstractElement(tt){return reflection$1.isInstance(tt,AbstractElement)}const ArrayLiteral="ArrayLiteral",ArrayType="ArrayType";function isArrayType(tt){return reflection$1.isInstance(tt,ArrayType)}const BooleanLiteral="BooleanLiteral";function isBooleanLiteral(tt){return reflection$1.isInstance(tt,BooleanLiteral)}const Conjunction="Conjunction";function isConjunction(tt){return reflection$1.isInstance(tt,Conjunction)}const Disjunction="Disjunction";function isDisjunction(tt){return reflection$1.isInstance(tt,Disjunction)}const Grammar="Grammar",GrammarImport="GrammarImport",InferredType="InferredType";function isInferredType(tt){return reflection$1.isInstance(tt,InferredType)}const Interface="Interface";function isInterface(tt){return reflection$1.isInstance(tt,Interface)}const NamedArgument="NamedArgument",Negation="Negation";function isNegation(tt){return reflection$1.isInstance(tt,Negation)}const NumberLiteral="NumberLiteral",Parameter="Parameter",ParameterReference="ParameterReference";function isParameterReference(tt){return reflection$1.isInstance(tt,ParameterReference)}const ParserRule="ParserRule";function isParserRule(tt){return reflection$1.isInstance(tt,ParserRule)}const ReferenceType="ReferenceType";function isReferenceType(tt){return reflection$1.isInstance(tt,ReferenceType)}const ReturnType="ReturnType";function isReturnType(tt){return reflection$1.isInstance(tt,ReturnType)}const SimpleType="SimpleType";function isSimpleType(tt){return reflection$1.isInstance(tt,SimpleType)}const StringLiteral="StringLiteral",TerminalRule="TerminalRule";function isTerminalRule(tt){return reflection$1.isInstance(tt,TerminalRule)}const Type$1="Type";function isType(tt){return reflection$1.isInstance(tt,Type$1)}const TypeAttribute="TypeAttribute",UnionType="UnionType";function isUnionType(tt){return reflection$1.isInstance(tt,UnionType)}const Action="Action";function isAction(tt){return reflection$1.isInstance(tt,Action)}const Alternatives="Alternatives";function isAlternatives(tt){return reflection$1.isInstance(tt,Alternatives)}const Assignment="Assignment";function isAssignment(tt){return reflection$1.isInstance(tt,Assignment)}const CharacterRange="CharacterRange";function isCharacterRange(tt){return reflection$1.isInstance(tt,CharacterRange)}const CrossReference="CrossReference";function isCrossReference(tt){return reflection$1.isInstance(tt,CrossReference)}const EndOfFile="EndOfFile";function isEndOfFile(tt){return reflection$1.isInstance(tt,EndOfFile)}const Group="Group";function isGroup(tt){return reflection$1.isInstance(tt,Group)}const Keyword$1="Keyword";function isKeyword(tt){return reflection$1.isInstance(tt,Keyword$1)}const NegatedToken="NegatedToken";function isNegatedToken(tt){return reflection$1.isInstance(tt,NegatedToken)}const RegexToken="RegexToken";function isRegexToken(tt){return reflection$1.isInstance(tt,RegexToken)}const RuleCall="RuleCall";function isRuleCall(tt){return reflection$1.isInstance(tt,RuleCall)}const TerminalAlternatives="TerminalAlternatives";function isTerminalAlternatives(tt){return reflection$1.isInstance(tt,TerminalAlternatives)}const TerminalGroup="TerminalGroup";function isTerminalGroup(tt){return reflection$1.isInstance(tt,TerminalGroup)}const TerminalRuleCall="TerminalRuleCall";function isTerminalRuleCall(tt){return reflection$1.isInstance(tt,TerminalRuleCall)}const UnorderedGroup="UnorderedGroup";function isUnorderedGroup(tt){return reflection$1.isInstance(tt,UnorderedGroup)}const UntilToken="UntilToken";function isUntilToken(tt){return reflection$1.isInstance(tt,UntilToken)}const Wildcard="Wildcard";function isWildcard(tt){return reflection$1.isInstance(tt,Wildcard)}class LangiumGrammarAstReflection extends AbstractAstReflection{getAllTypes(){return[AbstractElement,AbstractRule,AbstractType,Action,Alternatives,ArrayLiteral,ArrayType,Assignment,BooleanLiteral,CharacterRange,Condition,Conjunction,CrossReference,Disjunction,EndOfFile,Grammar,GrammarImport,Group,InferredType,Interface,Keyword$1,NamedArgument,NegatedToken,Negation,NumberLiteral,Parameter,ParameterReference,ParserRule,ReferenceType,RegexToken,ReturnType,RuleCall,SimpleType,StringLiteral,TerminalAlternatives,TerminalGroup,TerminalRule,TerminalRuleCall,Type$1,TypeAttribute,TypeDefinition,UnionType,UnorderedGroup,UntilToken,ValueLiteral,Wildcard]}computeIsSubtype(et,nt){switch(et){case Action:case Alternatives:case Assignment:case CharacterRange:case CrossReference:case EndOfFile:case Group:case Keyword$1:case NegatedToken:case RegexToken:case RuleCall:case TerminalAlternatives:case TerminalGroup:case TerminalRuleCall:case UnorderedGroup:case UntilToken:case Wildcard:return this.isSubtype(AbstractElement,nt);case ArrayLiteral:case NumberLiteral:case StringLiteral:return this.isSubtype(ValueLiteral,nt);case ArrayType:case ReferenceType:case SimpleType:case UnionType:return this.isSubtype(TypeDefinition,nt);case BooleanLiteral:return this.isSubtype(Condition,nt)||this.isSubtype(ValueLiteral,nt);case Conjunction:case Disjunction:case Negation:case ParameterReference:return this.isSubtype(Condition,nt);case InferredType:case Interface:case Type$1:return this.isSubtype(AbstractType,nt);case ParserRule:return this.isSubtype(AbstractRule,nt)||this.isSubtype(AbstractType,nt);case TerminalRule:return this.isSubtype(AbstractRule,nt);default:return!1}}getReferenceType(et){const nt=`${et.container.$type}:${et.property}`;switch(nt){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return AbstractType;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return AbstractRule;case"Grammar:usedGrammars":return Grammar;case"NamedArgument:parameter":case"ParameterReference:parameter":return Parameter;case"TerminalRuleCall:rule":return TerminalRule;default:throw new Error(`${nt} is not a valid reference id.`)}}getTypeMetaData(et){switch(et){case AbstractElement:return{name:AbstractElement,properties:[{name:"cardinality"},{name:"lookahead"}]};case ArrayLiteral:return{name:ArrayLiteral,properties:[{name:"elements",defaultValue:[]}]};case ArrayType:return{name:ArrayType,properties:[{name:"elementType"}]};case BooleanLiteral:return{name:BooleanLiteral,properties:[{name:"true",defaultValue:!1}]};case Conjunction:return{name:Conjunction,properties:[{name:"left"},{name:"right"}]};case Disjunction:return{name:Disjunction,properties:[{name:"left"},{name:"right"}]};case Grammar:return{name:Grammar,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case GrammarImport:return{name:GrammarImport,properties:[{name:"path"}]};case InferredType:return{name:InferredType,properties:[{name:"name"}]};case Interface:return{name:Interface,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case NamedArgument:return{name:NamedArgument,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Negation:return{name:Negation,properties:[{name:"value"}]};case NumberLiteral:return{name:NumberLiteral,properties:[{name:"value"}]};case Parameter:return{name:Parameter,properties:[{name:"name"}]};case ParameterReference:return{name:ParameterReference,properties:[{name:"parameter"}]};case ParserRule:return{name:ParserRule,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case ReferenceType:return{name:ReferenceType,properties:[{name:"referenceType"}]};case ReturnType:return{name:ReturnType,properties:[{name:"name"}]};case SimpleType:return{name:SimpleType,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case StringLiteral:return{name:StringLiteral,properties:[{name:"value"}]};case TerminalRule:return{name:TerminalRule,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case Type$1:return{name:Type$1,properties:[{name:"name"},{name:"type"}]};case TypeAttribute:return{name:TypeAttribute,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case UnionType:return{name:UnionType,properties:[{name:"types",defaultValue:[]}]};case Action:return{name:Action,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Alternatives:return{name:Alternatives,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Assignment:return{name:Assignment,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case CharacterRange:return{name:CharacterRange,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case CrossReference:return{name:CrossReference,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case EndOfFile:return{name:EndOfFile,properties:[{name:"cardinality"},{name:"lookahead"}]};case Group:return{name:Group,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case Keyword$1:return{name:Keyword$1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case NegatedToken:return{name:NegatedToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case RegexToken:return{name:RegexToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case RuleCall:return{name:RuleCall,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case TerminalAlternatives:return{name:TerminalAlternatives,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case TerminalGroup:return{name:TerminalGroup,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case TerminalRuleCall:return{name:TerminalRuleCall,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case UnorderedGroup:return{name:UnorderedGroup,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case UntilToken:return{name:UntilToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Wildcard:return{name:Wildcard,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:et,properties:[]}}}}const reflection$1=new LangiumGrammarAstReflection;function linkContentToContainer(tt){for(const[et,nt]of Object.entries(tt))et.startsWith("$")||(Array.isArray(nt)?nt.forEach((rt,st)=>{isAstNode(rt)&&(rt.$container=tt,rt.$containerProperty=et,rt.$containerIndex=st)}):isAstNode(nt)&&(nt.$container=tt,nt.$containerProperty=et))}function getContainerOfType(tt,et){let nt=tt;for(;nt;){if(et(nt))return nt;nt=nt.$container}}function hasContainerOfType(tt,et){let nt=tt;for(;nt;){if(et(nt))return!0;nt=nt.$container}return!1}function getDocument(tt){const nt=findRootNode(tt).$document;if(!nt)throw new Error("AST node has no document.");return nt}function findRootNode(tt){for(;tt.$container;)tt=tt.$container;return tt}function streamContents(tt,et){if(!tt)throw new Error("Node must be an AstNode.");const nt=et?.range;return new StreamImpl(()=>({keys:Object.keys(tt),keyIndex:0,arrayIndex:0}),rt=>{for(;rt.keyIndex<rt.keys.length;){const st=rt.keys[rt.keyIndex];if(!st.startsWith("$")){const ot=tt[st];if(isAstNode(ot)){if(rt.keyIndex++,isAstNodeInRange(ot,nt))return{done:!1,value:ot}}else if(Array.isArray(ot)){for(;rt.arrayIndex<ot.length;){const en=rt.arrayIndex++,tn=ot[en];if(isAstNode(tn)&&isAstNodeInRange(tn,nt))return{done:!1,value:tn}}rt.arrayIndex=0}}rt.keyIndex++}return DONE_RESULT})}function streamAllContents(tt,et){if(!tt)throw new Error("Root node must be an AstNode.");return new TreeStreamImpl(tt,nt=>streamContents(nt,et))}function streamAst(tt,et){if(tt){if(et?.range&&!isAstNodeInRange(tt,et.range))return new TreeStreamImpl(tt,()=>[])}else throw new Error("Root node must be an AstNode.");return new TreeStreamImpl(tt,nt=>streamContents(nt,et),{includeRoot:!0})}function isAstNodeInRange(tt,et){var nt;if(!et)return!0;const rt=(nt=tt.$cstNode)===null||nt===void 0?void 0:nt.range;return rt?inRange(rt,et):!1}function streamReferences(tt){return new StreamImpl(()=>({keys:Object.keys(tt),keyIndex:0,arrayIndex:0}),et=>{for(;et.keyIndex<et.keys.length;){const nt=et.keys[et.keyIndex];if(!nt.startsWith("$")){const rt=tt[nt];if(isReference(rt))return et.keyIndex++,{done:!1,value:{reference:rt,container:tt,property:nt}};if(Array.isArray(rt)){for(;et.arrayIndex<rt.length;){const st=et.arrayIndex++,ot=rt[st];if(isReference(ot))return{done:!1,value:{reference:ot,container:tt,property:nt,index:st}}}et.arrayIndex=0}}et.keyIndex++}return DONE_RESULT})}function findLocalReferences(tt,et=getDocument(tt).parseResult.value){const nt=[];return streamAst(et).forEach(rt=>{streamReferences(rt).forEach(st=>{st.reference.ref===tt&&nt.push(st.reference)})}),stream(nt)}function assignMandatoryProperties(tt,et){const nt=tt.getTypeMetaData(et.$type),rt=et;for(const st of nt.properties)st.defaultValue!==void 0&&rt[st.name]===void 0&&(rt[st.name]=copyDefaultValue(st.defaultValue))}function copyDefaultValue(tt){return Array.isArray(tt)?[...tt.map(copyDefaultValue)]:tt}function copyAstNode(tt,et){const nt={$type:tt.$type};for(const[rt,st]of Object.entries(tt))if(!rt.startsWith("$"))if(isAstNode(st))nt[rt]=copyAstNode(st,et);else if(isReference(st))nt[rt]=et(nt,rt,st.$refNode,st.$refText);else if(Array.isArray(st)){const ot=[];for(const en of st)isAstNode(en)?ot.push(copyAstNode(en,et)):isReference(en)?ot.push(et(nt,rt,en.$refNode,en.$refText)):ot.push(en);nt[rt]=ot}else nt[rt]=st;return linkContentToContainer(nt),nt}const f$9={__proto__:null,assignMandatoryProperties,copyAstNode,findLocalReferences,findRootNode,getContainerOfType,getDocument,hasContainerOfType,linkContentToContainer,streamAllContents,streamAst,streamContents,streamReferences};function cc(tt){return tt.charCodeAt(0)}function insertToSet(tt,et){Array.isArray(tt)?tt.forEach(function(nt){et.push(nt)}):et.push(tt)}function addFlag(tt,et){if(tt[et]===!0)throw"duplicate flag "+et;tt[et],tt[et]=!0}function ASSERT_EXISTS(tt){if(tt===void 0)throw Error("Internal Error - Should never get here!");return!0}function ASSERT_NEVER_REACH_HERE(){throw Error("Internal Error - Should never get here!")}function isCharacter(tt){return tt.type==="Character"}const digitsCharCodes=[];for(let tt=cc("0");tt<=cc("9");tt++)digitsCharCodes.push(tt);const wordCharCodes=[cc("_")].concat(digitsCharCodes);for(let tt=cc("a");tt<=cc("z");tt++)wordCharCodes.push(tt);for(let tt=cc("A");tt<=cc("Z");tt++)wordCharCodes.push(tt);const whitespaceCodes=[cc(" "),cc("\f"),cc(`
|
|
21
|
-
`),cc("\r"),cc(" "),cc("\v"),cc(" "),cc("\xA0"),cc("\u1680"),cc("\u2000"),cc("\u2001"),cc("\u2002"),cc("\u2003"),cc("\u2004"),cc("\u2005"),cc("\u2006"),cc("\u2007"),cc("\u2008"),cc("\u2009"),cc("\u200A"),cc("\u2028"),cc("\u2029"),cc("\u202F"),cc("\u205F"),cc("\u3000"),cc("\uFEFF")],hexDigitPattern=/[0-9a-fA-F]/,decimalPattern=/[0-9]/,decimalPatternNoZero=/[1-9]/;class RegExpParser{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(et){this.idx=et.idx,this.input=et.input,this.groupIdx=et.groupIdx}pattern(et){this.idx=0,this.input=et,this.groupIdx=0,this.consumeChar("/");const nt=this.disjunction();this.consumeChar("/");const rt={type:"Flags",loc:{begin:this.idx,end:et.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":addFlag(rt,"global");break;case"i":addFlag(rt,"ignoreCase");break;case"m":addFlag(rt,"multiLine");break;case"u":addFlag(rt,"unicode");break;case"y":addFlag(rt,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:rt,value:nt,loc:this.loc(0)}}disjunction(){const et=[],nt=this.idx;for(et.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),et.push(this.alternative());return{type:"Disjunction",value:et,loc:this.loc(nt)}}alternative(){const et=[],nt=this.idx;for(;this.isTerm();)et.push(this.term());return{type:"Alternative",value:et,loc:this.loc(nt)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const et=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(et)};case"$":return{type:"EndAnchor",loc:this.loc(et)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(et)};case"B":return{type:"NonWordBoundary",loc:this.loc(et)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let nt;switch(this.popChar()){case"=":nt="Lookahead";break;case"!":nt="NegativeLookahead";break}ASSERT_EXISTS(nt);const rt=this.disjunction();return this.consumeChar(")"),{type:nt,value:rt,loc:this.loc(et)}}return ASSERT_NEVER_REACH_HERE()}quantifier(et=!1){let nt;const rt=this.idx;switch(this.popChar()){case"*":nt={atLeast:0,atMost:1/0};break;case"+":nt={atLeast:1,atMost:1/0};break;case"?":nt={atLeast:0,atMost:1};break;case"{":const st=this.integerIncludingZero();switch(this.popChar()){case"}":nt={atLeast:st,atMost:st};break;case",":let ot;this.isDigit()?(ot=this.integerIncludingZero(),nt={atLeast:st,atMost:ot}):nt={atLeast:st,atMost:1/0},this.consumeChar("}");break}if(et===!0&&nt===void 0)return;ASSERT_EXISTS(nt);break}if(!(et===!0&&nt===void 0)&&ASSERT_EXISTS(nt))return this.peekChar(0)==="?"?(this.consumeChar("?"),nt.greedy=!1):nt.greedy=!0,nt.type="Quantifier",nt.loc=this.loc(rt),nt}atom(){let et;const nt=this.idx;switch(this.peekChar()){case".":et=this.dotAll();break;case"\\":et=this.atomEscape();break;case"[":et=this.characterClass();break;case"(":et=this.group();break}if(et===void 0&&this.isPatternCharacter()&&(et=this.patternCharacter()),ASSERT_EXISTS(et))return et.loc=this.loc(nt),this.isQuantifier()&&(et.quantifier=this.quantifier()),et}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[cc(`
|
|
22
|
-
`),cc("\r"),cc("\u2028"),cc("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let et,nt=!1;switch(this.popChar()){case"d":et=digitsCharCodes;break;case"D":et=digitsCharCodes,nt=!0;break;case"s":et=whitespaceCodes;break;case"S":et=whitespaceCodes,nt=!0;break;case"w":et=wordCharCodes;break;case"W":et=wordCharCodes,nt=!0;break}if(ASSERT_EXISTS(et))return{type:"Set",value:et,complement:nt}}controlEscapeAtom(){let et;switch(this.popChar()){case"f":et=cc("\f");break;case"n":et=cc(`
|
|
23
|
-
`);break;case"r":et=cc("\r");break;case"t":et=cc(" ");break;case"v":et=cc("\v");break}if(ASSERT_EXISTS(et))return{type:"Character",value:et}}controlLetterEscapeAtom(){this.consumeChar("c");const et=this.popChar();if(/[a-zA-Z]/.test(et)===!1)throw Error("Invalid ");return{type:"Character",value:et.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:cc("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){const et=this.popChar();return{type:"Character",value:cc(et)}}classPatternCharacterAtom(){switch(this.peekChar()){case`
|
|
24
|
-
`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:const et=this.popChar();return{type:"Character",value:cc(et)}}}characterClass(){const et=[];let nt=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),nt=!0);this.isClassAtom();){const rt=this.classAtom();if(rt.type,isCharacter(rt)&&this.isRangeDash()){this.consumeChar("-");const st=this.classAtom();if(st.type,isCharacter(st)){if(st.value<rt.value)throw Error("Range out of order in character class");et.push({from:rt.value,to:st.value})}else insertToSet(rt.value,et),et.push(cc("-")),insertToSet(st.value,et)}else insertToSet(rt.value,et)}return this.consumeChar("]"),{type:"Set",complement:nt,value:et}}classAtom(){switch(this.peekChar()){case"]":case`
|
|
25
|
-
`:case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:cc("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}group(){let et=!0;switch(this.consumeChar("("),this.peekChar(0)){case"?":this.consumeChar("?"),this.consumeChar(":"),et=!1;break;default:this.groupIdx++;break}const nt=this.disjunction();this.consumeChar(")");const rt={type:"Group",capturing:et,value:nt};return et&&(rt.idx=this.groupIdx),rt}positiveInteger(){let et=this.popChar();if(decimalPatternNoZero.test(et)===!1)throw Error("Expecting a positive integer");for(;decimalPattern.test(this.peekChar(0));)et+=this.popChar();return parseInt(et,10)}integerIncludingZero(){let et=this.popChar();if(decimalPattern.test(et)===!1)throw Error("Expecting an integer");for(;decimalPattern.test(this.peekChar(0));)et+=this.popChar();return parseInt(et,10)}patternCharacter(){const et=this.popChar();switch(et){case`
|
|
26
|
-
`:case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:cc(et)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return this.peekChar()==="-"&&this.isClassAtom(1)}isDigit(){return decimalPattern.test(this.peekChar(0))}isClassAtom(et=0){switch(this.peekChar(et)){case"]":case`
|
|
27
|
-
`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}isTerm(){return this.isAtom()||this.isAssertion()}isAtom(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}}isAssertion(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return this.peekChar(1)==="?"&&(this.peekChar(2)==="="||this.peekChar(2)==="!");default:return!1}}isQuantifier(){const et=this.saveState();try{return this.quantifier(!0)!==void 0}catch{return!1}finally{this.restoreState(et)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case`
|
|
28
|
-
`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(et){let nt="";for(let st=0;st<et;st++){const ot=this.popChar();if(hexDigitPattern.test(ot)===!1)throw Error("Expecting a HexDecimal digits");nt+=ot}return{type:"Character",value:parseInt(nt,16)}}peekChar(et=0){return this.input[this.idx+et]}popChar(){const et=this.peekChar(0);return this.consumeChar(void 0),et}consumeChar(et){if(et!==void 0&&this.input[this.idx]!==et)throw Error("Expected: '"+et+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(et){return{begin:et,end:this.idx}}}class BaseRegExpVisitor{visitChildren(et){for(const nt in et){const rt=et[nt];et.hasOwnProperty(nt)&&(rt.type!==void 0?this.visit(rt):Array.isArray(rt)&&rt.forEach(st=>{this.visit(st)},this))}}visit(et){switch(et.type){case"Pattern":this.visitPattern(et);break;case"Flags":this.visitFlags(et);break;case"Disjunction":this.visitDisjunction(et);break;case"Alternative":this.visitAlternative(et);break;case"StartAnchor":this.visitStartAnchor(et);break;case"EndAnchor":this.visitEndAnchor(et);break;case"WordBoundary":this.visitWordBoundary(et);break;case"NonWordBoundary":this.visitNonWordBoundary(et);break;case"Lookahead":this.visitLookahead(et);break;case"NegativeLookahead":this.visitNegativeLookahead(et);break;case"Character":this.visitCharacter(et);break;case"Set":this.visitSet(et);break;case"Group":this.visitGroup(et);break;case"GroupBackReference":this.visitGroupBackReference(et);break;case"Quantifier":this.visitQuantifier(et);break}this.visitChildren(et)}visitPattern(et){}visitFlags(et){}visitDisjunction(et){}visitAlternative(et){}visitStartAnchor(et){}visitEndAnchor(et){}visitWordBoundary(et){}visitNonWordBoundary(et){}visitLookahead(et){}visitNegativeLookahead(et){}visitCharacter(et){}visitSet(et){}visitGroup(et){}visitGroupBackReference(et){}visitQuantifier(et){}}const NEWLINE_REGEXP=/\r?\n/gm,regexpParser=new RegExpParser;class TerminalRegExpVisitor extends BaseRegExpVisitor{constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(et){this.multiline=!1,this.regex=et,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(et){et.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(et){const nt=String.fromCharCode(et.value);if(!this.multiline&&nt===`
|
|
29
|
-
`&&(this.multiline=!0),et.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const rt=escapeRegExp(nt);this.endRegexpStack.push(rt),this.isStarting&&(this.startRegexp+=rt)}}visitSet(et){if(!this.multiline){const nt=this.regex.substring(et.loc.begin,et.loc.end),rt=new RegExp(nt);this.multiline=!!`
|
|
30
|
-
`.match(rt)}if(et.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const nt=this.regex.substring(et.loc.begin,et.loc.end);this.endRegexpStack.push(nt),this.isStarting&&(this.startRegexp+=nt)}}visitChildren(et){et.type==="Group"&&et.quantifier||super.visitChildren(et)}}const visitor=new TerminalRegExpVisitor;function isMultilineComment(tt){try{return typeof tt=="string"&&(tt=new RegExp(tt)),tt=tt.toString(),visitor.reset(tt),visitor.visit(regexpParser.pattern(tt)),visitor.multiline}catch{return!1}}const whitespaceCharacters=`\f
|
|
31
|
-
\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");function isWhitespace(tt){const et=typeof tt=="string"?new RegExp(tt):tt;return whitespaceCharacters.some(nt=>et.test(nt))}function escapeRegExp(tt){return tt.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function getCaseInsensitivePattern(tt){return Array.prototype.map.call(tt,et=>/\w/.test(et)?`[${et.toLowerCase()}${et.toUpperCase()}]`:escapeRegExp(et)).join("")}function partialMatches(tt,et){const nt=partialRegExp(tt),rt=et.match(nt);return!!rt&&rt[0].length>0}function partialRegExp(tt){typeof tt=="string"&&(tt=new RegExp(tt));const et=tt,nt=tt.source;let rt=0;function st(){let ot="",en;function tn(rn){ot+=nt.substr(rt,rn),rt+=rn}function nn(rn){ot+="(?:"+nt.substr(rt,rn)+"|$)",rt+=rn}for(;rt<nt.length;)switch(nt[rt]){case"\\":switch(nt[rt+1]){case"c":nn(3);break;case"x":nn(4);break;case"u":et.unicode?nt[rt+2]==="{"?nn(nt.indexOf("}",rt)-rt+1):nn(6):nn(2);break;case"p":case"P":et.unicode?nn(nt.indexOf("}",rt)-rt+1):nn(2);break;case"k":nn(nt.indexOf(">",rt)-rt+1);break;default:nn(2);break}break;case"[":en=/\[(?:\\.|.)*?\]/g,en.lastIndex=rt,en=en.exec(nt)||[],nn(en[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":tn(1);break;case"{":en=/\{\d+,?\d*\}/g,en.lastIndex=rt,en=en.exec(nt),en?tn(en[0].length):nn(1);break;case"(":if(nt[rt+1]==="?")switch(nt[rt+2]){case":":ot+="(?:",rt+=3,ot+=st()+"|$)";break;case"=":ot+="(?=",rt+=3,ot+=st()+")";break;case"!":en=rt,rt+=3,st(),ot+=nt.substr(en,rt-en);break;case"<":switch(nt[rt+3]){case"=":case"!":en=rt,rt+=4,st(),ot+=nt.substr(en,rt-en);break;default:tn(nt.indexOf(">",rt)-rt+1),ot+=st()+"|$)";break}break}else tn(1),ot+=st()+"|$)";break;case")":return++rt,ot;default:nn(1);break}return ot}return new RegExp(st(),tt.flags)}function getEntryRule(tt){return tt.rules.find(et=>isParserRule(et)&&et.entry)}function getHiddenRules(tt){return tt.rules.filter(et=>isTerminalRule(et)&&et.hidden)}function getAllReachableRules(tt,et){const nt=new Set,rt=getEntryRule(tt);if(!rt)return new Set(tt.rules);const st=[rt].concat(getHiddenRules(tt));for(const en of st)ruleDfs(en,nt,et);const ot=new Set;for(const en of tt.rules)(nt.has(en.name)||isTerminalRule(en)&&en.hidden)&&ot.add(en);return ot}function ruleDfs(tt,et,nt){et.add(tt.name),streamAllContents(tt).forEach(rt=>{if(isRuleCall(rt)||nt&&isTerminalRuleCall(rt)){const st=rt.rule.ref;st&&!et.has(st.name)&&ruleDfs(st,et,nt)}})}function getCrossReferenceTerminal(tt){if(tt.terminal)return tt.terminal;if(tt.type.ref){const et=findNameAssignment(tt.type.ref);return et?.terminal}}function isCommentTerminal(tt){return tt.hidden&&!isWhitespace(terminalRegex(tt))}function findNodesForProperty(tt,et){return!tt||!et?[]:findNodesForPropertyInternal(tt,et,tt.astNode,!0)}function findNodeForProperty(tt,et,nt){if(!tt||!et)return;const rt=findNodesForPropertyInternal(tt,et,tt.astNode,!0);if(rt.length!==0)return nt!==void 0?nt=Math.max(0,Math.min(nt,rt.length-1)):nt=0,rt[nt]}function findNodesForPropertyInternal(tt,et,nt,rt){if(!rt){const st=getContainerOfType(tt.grammarSource,isAssignment);if(st&&st.feature===et)return[tt]}return isCompositeCstNode(tt)&&tt.astNode===nt?tt.content.flatMap(st=>findNodesForPropertyInternal(st,et,nt,!1)):[]}function findNodesForKeyword(tt,et){return tt?findNodesForKeywordInternal(tt,et,tt?.astNode):[]}function findNodeForKeyword(tt,et,nt){if(!tt)return;const rt=findNodesForKeywordInternal(tt,et,tt?.astNode);if(rt.length!==0)return nt!==void 0?nt=Math.max(0,Math.min(nt,rt.length-1)):nt=0,rt[nt]}function findNodesForKeywordInternal(tt,et,nt){if(tt.astNode!==nt)return[];if(isKeyword(tt.grammarSource)&&tt.grammarSource.value===et)return[tt];const rt=streamCst(tt).iterator();let st;const ot=[];do if(st=rt.next(),!st.done){const en=st.value;en.astNode===nt?isKeyword(en.grammarSource)&&en.grammarSource.value===et&&ot.push(en):rt.prune()}while(!st.done);return ot}function findAssignment(tt){var et;const nt=tt.astNode;for(;nt===((et=tt.container)===null||et===void 0?void 0:et.astNode);){const rt=getContainerOfType(tt.grammarSource,isAssignment);if(rt)return rt;tt=tt.container}}function findNameAssignment(tt){let et=tt;return isInferredType(et)&&(isAction(et.$container)?et=et.$container.$container:isParserRule(et.$container)?et=et.$container:assertUnreachable(et.$container)),findNameAssignmentInternal(tt,et,new Map)}function findNameAssignmentInternal(tt,et,nt){var rt;function st(ot,en){let tn;return getContainerOfType(ot,isAssignment)||(tn=findNameAssignmentInternal(en,en,nt)),nt.set(tt,tn),tn}if(nt.has(tt))return nt.get(tt);nt.set(tt,void 0);for(const ot of streamAllContents(et)){if(isAssignment(ot)&&ot.feature.toLowerCase()==="name")return nt.set(tt,ot),ot;if(isRuleCall(ot)&&isParserRule(ot.rule.ref))return st(ot,ot.rule.ref);if(isSimpleType(ot)&&(!((rt=ot.typeRef)===null||rt===void 0)&&rt.ref))return st(ot,ot.typeRef.ref)}}function getActionAtElement(tt){const et=tt.$container;if(isGroup(et)){const nt=et.elements,rt=nt.indexOf(tt);for(let st=rt-1;st>=0;st--){const ot=nt[st];if(isAction(ot))return ot;{const en=streamAllContents(nt[st]).find(isAction);if(en)return en}}}if(isAbstractElement(et))return getActionAtElement(et)}function isOptionalCardinality(tt,et){return tt==="?"||tt==="*"||isGroup(et)&&!!et.guardCondition}function isArrayCardinality(tt){return tt==="*"||tt==="+"}function isArrayOperator(tt){return tt==="+="}function isDataTypeRule(tt){return isDataTypeRuleInternal(tt,new Set)}function isDataTypeRuleInternal(tt,et){if(et.has(tt))return!0;et.add(tt);for(const nt of streamAllContents(tt))if(isRuleCall(nt)){if(!nt.rule.ref||isParserRule(nt.rule.ref)&&!isDataTypeRuleInternal(nt.rule.ref,et))return!1}else{if(isAssignment(nt))return!1;if(isAction(nt))return!1}return!!tt.definition}function isDataType(tt){return isDataTypeInternal(tt.type,new Set)}function isDataTypeInternal(tt,et){if(et.has(tt))return!0;if(et.add(tt),isArrayType(tt))return!1;if(isReferenceType(tt))return!1;if(isUnionType(tt))return tt.types.every(nt=>isDataTypeInternal(nt,et));if(isSimpleType(tt)){if(tt.primitiveType!==void 0)return!0;if(tt.stringType!==void 0)return!0;if(tt.typeRef!==void 0){const nt=tt.typeRef.ref;return isType(nt)?isDataTypeInternal(nt.type,et):!1}else return!1}else return!1}function getExplicitRuleType(tt){if(tt.inferredType)return tt.inferredType.name;if(tt.dataType)return tt.dataType;if(tt.returnType){const et=tt.returnType.ref;if(et){if(isParserRule(et))return et.name;if(isInterface(et)||isType(et))return et.name}}}function getTypeName(tt){var et;if(isParserRule(tt))return isDataTypeRule(tt)?tt.name:(et=getExplicitRuleType(tt))!==null&&et!==void 0?et:tt.name;if(isInterface(tt)||isType(tt)||isReturnType(tt))return tt.name;if(isAction(tt)){const nt=getActionType(tt);if(nt)return nt}else if(isInferredType(tt))return tt.name;throw new Error("Cannot get name of Unknown Type")}function getActionType(tt){var et;if(tt.inferredType)return tt.inferredType.name;if(!((et=tt.type)===null||et===void 0)&&et.ref)return getTypeName(tt.type.ref)}function getRuleTypeName(tt){var et,nt,rt;return isTerminalRule(tt)?(nt=(et=tt.type)===null||et===void 0?void 0:et.name)!==null&&nt!==void 0?nt:"string":isDataTypeRule(tt)?tt.name:(rt=getExplicitRuleType(tt))!==null&&rt!==void 0?rt:tt.name}function getRuleType(tt){var et,nt,rt;return isTerminalRule(tt)?(nt=(et=tt.type)===null||et===void 0?void 0:et.name)!==null&&nt!==void 0?nt:"string":(rt=getExplicitRuleType(tt))!==null&&rt!==void 0?rt:tt.name}function terminalRegex(tt){const et={s:!1,i:!1,u:!1},nt=abstractElementToRegex(tt.definition,et),rt=Object.entries(et).filter(([,st])=>st).map(([st])=>st).join("");return new RegExp(nt,rt)}const WILDCARD=/[\s\S]/.source;function abstractElementToRegex(tt,et){if(isTerminalAlternatives(tt))return terminalAlternativesToRegex(tt);if(isTerminalGroup(tt))return terminalGroupToRegex(tt);if(isCharacterRange(tt))return characterRangeToRegex(tt);if(isTerminalRuleCall(tt)){const nt=tt.rule.ref;if(!nt)throw new Error("Missing rule reference.");return withCardinality(abstractElementToRegex(nt.definition),{cardinality:tt.cardinality,lookahead:tt.lookahead})}else{if(isNegatedToken(tt))return negateTokenToRegex(tt);if(isUntilToken(tt))return untilTokenToRegex(tt);if(isRegexToken(tt)){const nt=tt.regex.lastIndexOf("/"),rt=tt.regex.substring(1,nt),st=tt.regex.substring(nt+1);return et&&(et.i=st.includes("i"),et.s=st.includes("s"),et.u=st.includes("u")),withCardinality(rt,{cardinality:tt.cardinality,lookahead:tt.lookahead,wrap:!1})}else{if(isWildcard(tt))return withCardinality(WILDCARD,{cardinality:tt.cardinality,lookahead:tt.lookahead});throw new Error(`Invalid terminal element: ${tt?.$type}`)}}}function terminalAlternativesToRegex(tt){return withCardinality(tt.elements.map(et=>abstractElementToRegex(et)).join("|"),{cardinality:tt.cardinality,lookahead:tt.lookahead})}function terminalGroupToRegex(tt){return withCardinality(tt.elements.map(et=>abstractElementToRegex(et)).join(""),{cardinality:tt.cardinality,lookahead:tt.lookahead})}function untilTokenToRegex(tt){return withCardinality(`${WILDCARD}*?${abstractElementToRegex(tt.terminal)}`,{cardinality:tt.cardinality,lookahead:tt.lookahead})}function negateTokenToRegex(tt){return withCardinality(`(?!${abstractElementToRegex(tt.terminal)})${WILDCARD}*?`,{cardinality:tt.cardinality,lookahead:tt.lookahead})}function characterRangeToRegex(tt){return tt.right?withCardinality(`[${keywordToRegex(tt.left)}-${keywordToRegex(tt.right)}]`,{cardinality:tt.cardinality,lookahead:tt.lookahead,wrap:!1}):withCardinality(keywordToRegex(tt.left),{cardinality:tt.cardinality,lookahead:tt.lookahead,wrap:!1})}function keywordToRegex(tt){return escapeRegExp(tt.value)}function withCardinality(tt,et){var nt;return(et.wrap!==!1||et.lookahead)&&(tt=`(${(nt=et.lookahead)!==null&&nt!==void 0?nt:""}${tt})`),et.cardinality?`${tt}${et.cardinality}`:tt}const c$2={__proto__:null,findAssignment,findNameAssignment,findNodeForKeyword,findNodeForProperty,findNodesForKeyword,findNodesForKeywordInternal,findNodesForProperty,getActionAtElement,getActionType,getAllReachableRules,getCrossReferenceTerminal,getEntryRule,getExplicitRuleType,getHiddenRules,getRuleType,getRuleTypeName,getTypeName,isArrayCardinality,isArrayOperator,isCommentTerminal,isDataType,isDataTypeRule,isOptionalCardinality,terminalRegex};function createGrammarConfig(tt){const et=[],nt=tt.Grammar;for(const rt of nt.rules)isTerminalRule(rt)&&isCommentTerminal(rt)&&isMultilineComment(terminalRegex(rt))&&et.push(rt.name);return{multilineCommentRules:et,nameRegexp:DefaultNameRegexp}}var freeGlobal=typeof global=="object"&&global&&global.Object===Object&&global,freeSelf=typeof self=="object"&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol$1=root.Symbol,objectProto$j=Object.prototype,hasOwnProperty$h=objectProto$j.hasOwnProperty,nativeObjectToString$1=objectProto$j.toString,symToStringTag$1=Symbol$1?Symbol$1.toStringTag:void 0;function getRawTag(tt){var et=hasOwnProperty$h.call(tt,symToStringTag$1),nt=tt[symToStringTag$1];try{tt[symToStringTag$1]=void 0;var rt=!0}catch{}var st=nativeObjectToString$1.call(tt);return rt&&(et?tt[symToStringTag$1]=nt:delete tt[symToStringTag$1]),st}var objectProto$i=Object.prototype,nativeObjectToString=objectProto$i.toString;function objectToString(tt){return nativeObjectToString.call(tt)}var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag=Symbol$1?Symbol$1.toStringTag:void 0;function baseGetTag(tt){return tt==null?tt===void 0?undefinedTag:nullTag:symToStringTag&&symToStringTag in Object(tt)?getRawTag(tt):objectToString(tt)}function isObjectLike(tt){return tt!=null&&typeof tt=="object"}var symbolTag$3="[object Symbol]";function isSymbol(tt){return typeof tt=="symbol"||isObjectLike(tt)&&baseGetTag(tt)==symbolTag$3}function arrayMap(tt,et){for(var nt=-1,rt=tt==null?0:tt.length,st=Array(rt);++nt<rt;)st[nt]=et(tt[nt],nt,tt);return st}var isArray$1=Array.isArray,symbolProto$2=Symbol$1?Symbol$1.prototype:void 0,symbolToString=symbolProto$2?symbolProto$2.toString:void 0;function baseToString(tt){if(typeof tt=="string")return tt;if(isArray$1(tt))return arrayMap(tt,baseToString)+"";if(isSymbol(tt))return symbolToString?symbolToString.call(tt):"";var et=tt+"";return et=="0"&&1/tt==-1/0?"-0":et}var reWhitespace=/\s/;function trimmedEndIndex(tt){for(var et=tt.length;et--&&reWhitespace.test(tt.charAt(et)););return et}var reTrimStart=/^\s+/;function baseTrim(tt){return tt&&tt.slice(0,trimmedEndIndex(tt)+1).replace(reTrimStart,"")}function isObject(tt){var et=typeof tt;return tt!=null&&(et=="object"||et=="function")}var NAN=NaN,reIsBadHex=/^[-+]0x[0-9a-f]+$/i,reIsBinary=/^0b[01]+$/i,reIsOctal=/^0o[0-7]+$/i,freeParseInt=parseInt;function toNumber(tt){if(typeof tt=="number")return tt;if(isSymbol(tt))return NAN;if(isObject(tt)){var et=typeof tt.valueOf=="function"?tt.valueOf():tt;tt=isObject(et)?et+"":et}if(typeof tt!="string")return tt===0?tt:+tt;tt=baseTrim(tt);var nt=reIsBinary.test(tt);return nt||reIsOctal.test(tt)?freeParseInt(tt.slice(2),nt?2:8):reIsBadHex.test(tt)?NAN:+tt}var INFINITY$1=1/0,MAX_INTEGER=17976931348623157e292;function toFinite(tt){if(!tt)return tt===0?tt:0;if(tt=toNumber(tt),tt===INFINITY$1||tt===-1/0){var et=tt<0?-1:1;return et*MAX_INTEGER}return tt===tt?tt:0}function toInteger(tt){var et=toFinite(tt),nt=et%1;return et===et?nt?et-nt:et:0}function identity(tt){return tt}var asyncTag="[object AsyncFunction]",funcTag$2="[object Function]",genTag$1="[object GeneratorFunction]",proxyTag="[object Proxy]";function isFunction(tt){if(!isObject(tt))return!1;var et=baseGetTag(tt);return et==funcTag$2||et==genTag$1||et==asyncTag||et==proxyTag}var coreJsData=root["__core-js_shared__"],maskSrcKey=function(){var tt=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||"");return tt?"Symbol(src)_1."+tt:""}();function isMasked(tt){return!!maskSrcKey&&maskSrcKey in tt}var funcProto$1=Function.prototype,funcToString$1=funcProto$1.toString;function toSource(tt){if(tt!=null){try{return funcToString$1.call(tt)}catch{}try{return tt+""}catch{}}return""}var reRegExpChar=/[\\^$.*+?()[\]{}|]/g,reIsHostCtor=/^\[object .+?Constructor\]$/,funcProto=Function.prototype,objectProto$h=Object.prototype,funcToString=funcProto.toString,hasOwnProperty$g=objectProto$h.hasOwnProperty,reIsNative=RegExp("^"+funcToString.call(hasOwnProperty$g).replace(reRegExpChar,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function baseIsNative(tt){if(!isObject(tt)||isMasked(tt))return!1;var et=isFunction(tt)?reIsNative:reIsHostCtor;return et.test(toSource(tt))}function getValue(tt,et){return tt?.[et]}function getNative(tt,et){var nt=getValue(tt,et);return baseIsNative(nt)?nt:void 0}var WeakMap$1=getNative(root,"WeakMap"),objectCreate=Object.create,baseCreate=function(){function tt(){}return function(et){if(!isObject(et))return{};if(objectCreate)return objectCreate(et);tt.prototype=et;var nt=new tt;return tt.prototype=void 0,nt}}();function apply(tt,et,nt){switch(nt.length){case 0:return tt.call(et);case 1:return tt.call(et,nt[0]);case 2:return tt.call(et,nt[0],nt[1]);case 3:return tt.call(et,nt[0],nt[1],nt[2])}return tt.apply(et,nt)}function noop(){}function copyArray(tt,et){var nt=-1,rt=tt.length;for(et||(et=Array(rt));++nt<rt;)et[nt]=tt[nt];return et}var HOT_COUNT=800,HOT_SPAN=16,nativeNow=Date.now;function shortOut(tt){var et=0,nt=0;return function(){var rt=nativeNow(),st=HOT_SPAN-(rt-nt);if(nt=rt,st>0){if(++et>=HOT_COUNT)return arguments[0]}else et=0;return tt.apply(void 0,arguments)}}function constant(tt){return function(){return tt}}var defineProperty=function(){try{var tt=getNative(Object,"defineProperty");return tt({},"",{}),tt}catch{}}(),baseSetToString=defineProperty?function(tt,et){return defineProperty(tt,"toString",{configurable:!0,enumerable:!1,value:constant(et),writable:!0})}:identity,setToString=shortOut(baseSetToString);function arrayEach(tt,et){for(var nt=-1,rt=tt==null?0:tt.length;++nt<rt&&et(tt[nt],nt,tt)!==!1;);return tt}function baseFindIndex(tt,et,nt,rt){for(var st=tt.length,ot=nt+-1;++ot<st;)if(et(tt[ot],ot,tt))return ot;return-1}function baseIsNaN(tt){return tt!==tt}function strictIndexOf(tt,et,nt){for(var rt=nt-1,st=tt.length;++rt<st;)if(tt[rt]===et)return rt;return-1}function baseIndexOf(tt,et,nt){return et===et?strictIndexOf(tt,et,nt):baseFindIndex(tt,baseIsNaN,nt)}function arrayIncludes(tt,et){var nt=tt==null?0:tt.length;return!!nt&&baseIndexOf(tt,et,0)>-1}var MAX_SAFE_INTEGER$1=9007199254740991,reIsUint=/^(?:0|[1-9]\d*)$/;function isIndex(tt,et){var nt=typeof tt;return et=et??MAX_SAFE_INTEGER$1,!!et&&(nt=="number"||nt!="symbol"&&reIsUint.test(tt))&&tt>-1&&tt%1==0&&tt<et}function baseAssignValue(tt,et,nt){et=="__proto__"&&defineProperty?defineProperty(tt,et,{configurable:!0,enumerable:!0,value:nt,writable:!0}):tt[et]=nt}function eq(tt,et){return tt===et||tt!==tt&&et!==et}var objectProto$g=Object.prototype,hasOwnProperty$f=objectProto$g.hasOwnProperty;function assignValue(tt,et,nt){var rt=tt[et];(!(hasOwnProperty$f.call(tt,et)&&eq(rt,nt))||nt===void 0&&!(et in tt))&&baseAssignValue(tt,et,nt)}function copyObject(tt,et,nt,rt){var st=!nt;nt||(nt={});for(var ot=-1,en=et.length;++ot<en;){var tn=et[ot],nn=void 0;nn===void 0&&(nn=tt[tn]),st?baseAssignValue(nt,tn,nn):assignValue(nt,tn,nn)}return nt}var nativeMax$2=Math.max;function overRest(tt,et,nt){return et=nativeMax$2(et===void 0?tt.length-1:et,0),function(){for(var rt=arguments,st=-1,ot=nativeMax$2(rt.length-et,0),en=Array(ot);++st<ot;)en[st]=rt[et+st];st=-1;for(var tn=Array(et+1);++st<et;)tn[st]=rt[st];return tn[et]=nt(en),apply(tt,this,tn)}}function baseRest(tt,et){return setToString(overRest(tt,et,identity),tt+"")}var MAX_SAFE_INTEGER=9007199254740991;function isLength(tt){return typeof tt=="number"&&tt>-1&&tt%1==0&&tt<=MAX_SAFE_INTEGER}function isArrayLike(tt){return tt!=null&&isLength(tt.length)&&!isFunction(tt)}function isIterateeCall(tt,et,nt){if(!isObject(nt))return!1;var rt=typeof et;return(rt=="number"?isArrayLike(nt)&&isIndex(et,nt.length):rt=="string"&&et in nt)?eq(nt[et],tt):!1}function createAssigner(tt){return baseRest(function(et,nt){var rt=-1,st=nt.length,ot=st>1?nt[st-1]:void 0,en=st>2?nt[2]:void 0;for(ot=tt.length>3&&typeof ot=="function"?(st--,ot):void 0,en&&isIterateeCall(nt[0],nt[1],en)&&(ot=st<3?void 0:ot,st=1),et=Object(et);++rt<st;){var tn=nt[rt];tn&&tt(et,tn,rt,ot)}return et})}var objectProto$f=Object.prototype;function isPrototype(tt){var et=tt&&tt.constructor,nt=typeof et=="function"&&et.prototype||objectProto$f;return tt===nt}function baseTimes(tt,et){for(var nt=-1,rt=Array(tt);++nt<tt;)rt[nt]=et(nt);return rt}var argsTag$3="[object Arguments]";function baseIsArguments(tt){return isObjectLike(tt)&&baseGetTag(tt)==argsTag$3}var objectProto$e=Object.prototype,hasOwnProperty$e=objectProto$e.hasOwnProperty,propertyIsEnumerable$1=objectProto$e.propertyIsEnumerable,isArguments=baseIsArguments(function(){return arguments}())?baseIsArguments:function(tt){return isObjectLike(tt)&&hasOwnProperty$e.call(tt,"callee")&&!propertyIsEnumerable$1.call(tt,"callee")};function stubFalse(){return!1}var freeExports$2=typeof exports=="object"&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&typeof module=="object"&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,Buffer$2=moduleExports$2?root.Buffer:void 0,nativeIsBuffer=Buffer$2?Buffer$2.isBuffer:void 0,isBuffer=nativeIsBuffer||stubFalse,argsTag$2="[object Arguments]",arrayTag$2="[object Array]",boolTag$3="[object Boolean]",dateTag$3="[object Date]",errorTag$2="[object Error]",funcTag$1="[object Function]",mapTag$6="[object Map]",numberTag$3="[object Number]",objectTag$3="[object Object]",regexpTag$4="[object RegExp]",setTag$6="[object Set]",stringTag$4="[object String]",weakMapTag$2="[object WeakMap]",arrayBufferTag$3="[object ArrayBuffer]",dataViewTag$4="[object DataView]",float32Tag$2="[object Float32Array]",float64Tag$2="[object Float64Array]",int8Tag$2="[object Int8Array]",int16Tag$2="[object Int16Array]",int32Tag$2="[object Int32Array]",uint8Tag$2="[object Uint8Array]",uint8ClampedTag$2="[object Uint8ClampedArray]",uint16Tag$2="[object Uint16Array]",uint32Tag$2="[object Uint32Array]",typedArrayTags={};typedArrayTags[float32Tag$2]=typedArrayTags[float64Tag$2]=typedArrayTags[int8Tag$2]=typedArrayTags[int16Tag$2]=typedArrayTags[int32Tag$2]=typedArrayTags[uint8Tag$2]=typedArrayTags[uint8ClampedTag$2]=typedArrayTags[uint16Tag$2]=typedArrayTags[uint32Tag$2]=!0,typedArrayTags[argsTag$2]=typedArrayTags[arrayTag$2]=typedArrayTags[arrayBufferTag$3]=typedArrayTags[boolTag$3]=typedArrayTags[dataViewTag$4]=typedArrayTags[dateTag$3]=typedArrayTags[errorTag$2]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag$6]=typedArrayTags[numberTag$3]=typedArrayTags[objectTag$3]=typedArrayTags[regexpTag$4]=typedArrayTags[setTag$6]=typedArrayTags[stringTag$4]=typedArrayTags[weakMapTag$2]=!1;function baseIsTypedArray(tt){return isObjectLike(tt)&&isLength(tt.length)&&!!typedArrayTags[baseGetTag(tt)]}function baseUnary(tt){return function(et){return tt(et)}}var freeExports$1=typeof exports=="object"&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&typeof module=="object"&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,freeProcess=moduleExports$1&&freeGlobal.process,nodeUtil=function(){try{var tt=freeModule$1&&freeModule$1.require&&freeModule$1.require("util").types;return tt||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch{}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray$1=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray,objectProto$d=Object.prototype,hasOwnProperty$d=objectProto$d.hasOwnProperty;function arrayLikeKeys(tt,et){var nt=isArray$1(tt),rt=!nt&&isArguments(tt),st=!nt&&!rt&&isBuffer(tt),ot=!nt&&!rt&&!st&&isTypedArray$1(tt),en=nt||rt||st||ot,tn=en?baseTimes(tt.length,String):[],nn=tn.length;for(var rn in tt)(et||hasOwnProperty$d.call(tt,rn))&&!(en&&(rn=="length"||st&&(rn=="offset"||rn=="parent")||ot&&(rn=="buffer"||rn=="byteLength"||rn=="byteOffset")||isIndex(rn,nn)))&&tn.push(rn);return tn}function overArg(tt,et){return function(nt){return tt(et(nt))}}var nativeKeys=overArg(Object.keys,Object),objectProto$c=Object.prototype,hasOwnProperty$c=objectProto$c.hasOwnProperty;function baseKeys(tt){if(!isPrototype(tt))return nativeKeys(tt);var et=[];for(var nt in Object(tt))hasOwnProperty$c.call(tt,nt)&&nt!="constructor"&&et.push(nt);return et}function keys$1(tt){return isArrayLike(tt)?arrayLikeKeys(tt):baseKeys(tt)}var objectProto$b=Object.prototype,hasOwnProperty$b=objectProto$b.hasOwnProperty,assign$2=createAssigner(function(tt,et){if(isPrototype(et)||isArrayLike(et)){copyObject(et,keys$1(et),tt);return}for(var nt in et)hasOwnProperty$b.call(et,nt)&&assignValue(tt,nt,et[nt])});function nativeKeysIn(tt){var et=[];if(tt!=null)for(var nt in Object(tt))et.push(nt);return et}var objectProto$a=Object.prototype,hasOwnProperty$a=objectProto$a.hasOwnProperty;function baseKeysIn(tt){if(!isObject(tt))return nativeKeysIn(tt);var et=isPrototype(tt),nt=[];for(var rt in tt)rt=="constructor"&&(et||!hasOwnProperty$a.call(tt,rt))||nt.push(rt);return nt}function keysIn(tt){return isArrayLike(tt)?arrayLikeKeys(tt,!0):baseKeysIn(tt)}var reIsDeepProp=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,reIsPlainProp=/^\w*$/;function isKey(tt,et){if(isArray$1(tt))return!1;var nt=typeof tt;return nt=="number"||nt=="symbol"||nt=="boolean"||tt==null||isSymbol(tt)?!0:reIsPlainProp.test(tt)||!reIsDeepProp.test(tt)||et!=null&&tt in Object(et)}var nativeCreate=getNative(Object,"create");function hashClear(){this.__data__=nativeCreate?nativeCreate(null):{},this.size=0}function hashDelete(tt){var et=this.has(tt)&&delete this.__data__[tt];return this.size-=et?1:0,et}var HASH_UNDEFINED$2="__lodash_hash_undefined__",objectProto$9=Object.prototype,hasOwnProperty$9=objectProto$9.hasOwnProperty;function hashGet(tt){var et=this.__data__;if(nativeCreate){var nt=et[tt];return nt===HASH_UNDEFINED$2?void 0:nt}return hasOwnProperty$9.call(et,tt)?et[tt]:void 0}var objectProto$8=Object.prototype,hasOwnProperty$8=objectProto$8.hasOwnProperty;function hashHas(tt){var et=this.__data__;return nativeCreate?et[tt]!==void 0:hasOwnProperty$8.call(et,tt)}var HASH_UNDEFINED$1="__lodash_hash_undefined__";function hashSet(tt,et){var nt=this.__data__;return this.size+=this.has(tt)?0:1,nt[tt]=nativeCreate&&et===void 0?HASH_UNDEFINED$1:et,this}function Hash(tt){var et=-1,nt=tt==null?0:tt.length;for(this.clear();++et<nt;){var rt=tt[et];this.set(rt[0],rt[1])}}Hash.prototype.clear=hashClear,Hash.prototype.delete=hashDelete,Hash.prototype.get=hashGet,Hash.prototype.has=hashHas,Hash.prototype.set=hashSet;function listCacheClear(){this.__data__=[],this.size=0}function assocIndexOf(tt,et){for(var nt=tt.length;nt--;)if(eq(tt[nt][0],et))return nt;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(tt){var et=this.__data__,nt=assocIndexOf(et,tt);if(nt<0)return!1;var rt=et.length-1;return nt==rt?et.pop():splice.call(et,nt,1),--this.size,!0}function listCacheGet(tt){var et=this.__data__,nt=assocIndexOf(et,tt);return nt<0?void 0:et[nt][1]}function listCacheHas(tt){return assocIndexOf(this.__data__,tt)>-1}function listCacheSet(tt,et){var nt=this.__data__,rt=assocIndexOf(nt,tt);return rt<0?(++this.size,nt.push([tt,et])):nt[rt][1]=et,this}function ListCache(tt){var et=-1,nt=tt==null?0:tt.length;for(this.clear();++et<nt;){var rt=tt[et];this.set(rt[0],rt[1])}}ListCache.prototype.clear=listCacheClear,ListCache.prototype.delete=listCacheDelete,ListCache.prototype.get=listCacheGet,ListCache.prototype.has=listCacheHas,ListCache.prototype.set=listCacheSet;var Map$1=getNative(root,"Map");function mapCacheClear(){this.size=0,this.__data__={hash:new Hash,map:new(Map$1||ListCache),string:new Hash}}function isKeyable(tt){var et=typeof tt;return et=="string"||et=="number"||et=="symbol"||et=="boolean"?tt!=="__proto__":tt===null}function getMapData(tt,et){var nt=tt.__data__;return isKeyable(et)?nt[typeof et=="string"?"string":"hash"]:nt.map}function mapCacheDelete(tt){var et=getMapData(this,tt).delete(tt);return this.size-=et?1:0,et}function mapCacheGet(tt){return getMapData(this,tt).get(tt)}function mapCacheHas(tt){return getMapData(this,tt).has(tt)}function mapCacheSet(tt,et){var nt=getMapData(this,tt),rt=nt.size;return nt.set(tt,et),this.size+=nt.size==rt?0:1,this}function MapCache(tt){var et=-1,nt=tt==null?0:tt.length;for(this.clear();++et<nt;){var rt=tt[et];this.set(rt[0],rt[1])}}MapCache.prototype.clear=mapCacheClear,MapCache.prototype.delete=mapCacheDelete,MapCache.prototype.get=mapCacheGet,MapCache.prototype.has=mapCacheHas,MapCache.prototype.set=mapCacheSet;var FUNC_ERROR_TEXT$1="Expected a function";function memoize(tt,et){if(typeof tt!="function"||et!=null&&typeof et!="function")throw new TypeError(FUNC_ERROR_TEXT$1);var nt=function(){var rt=arguments,st=et?et.apply(this,rt):rt[0],ot=nt.cache;if(ot.has(st))return ot.get(st);var en=tt.apply(this,rt);return nt.cache=ot.set(st,en)||ot,en};return nt.cache=new(memoize.Cache||MapCache),nt}memoize.Cache=MapCache;var MAX_MEMOIZE_SIZE=500;function memoizeCapped(tt){var et=memoize(tt,function(rt){return nt.size===MAX_MEMOIZE_SIZE&&nt.clear(),rt}),nt=et.cache;return et}var rePropName=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=memoizeCapped(function(tt){var et=[];return tt.charCodeAt(0)===46&&et.push(""),tt.replace(rePropName,function(nt,rt,st,ot){et.push(st?ot.replace(reEscapeChar,"$1"):rt||nt)}),et});function toString(tt){return tt==null?"":baseToString(tt)}function castPath(tt,et){return isArray$1(tt)?tt:isKey(tt,et)?[tt]:stringToPath(toString(tt))}function toKey(tt){if(typeof tt=="string"||isSymbol(tt))return tt;var et=tt+"";return et=="0"&&1/tt==-1/0?"-0":et}function baseGet(tt,et){et=castPath(et,tt);for(var nt=0,rt=et.length;tt!=null&&nt<rt;)tt=tt[toKey(et[nt++])];return nt&&nt==rt?tt:void 0}function get(tt,et,nt){var rt=tt==null?void 0:baseGet(tt,et);return rt===void 0?nt:rt}function arrayPush(tt,et){for(var nt=-1,rt=et.length,st=tt.length;++nt<rt;)tt[st+nt]=et[nt];return tt}var spreadableSymbol=Symbol$1?Symbol$1.isConcatSpreadable:void 0;function isFlattenable(tt){return isArray$1(tt)||isArguments(tt)||!!(spreadableSymbol&&tt&&tt[spreadableSymbol])}function baseFlatten(tt,et,nt,rt,st){var ot=-1,en=tt.length;for(nt||(nt=isFlattenable),st||(st=[]);++ot<en;){var tn=tt[ot];nt(tn)?arrayPush(st,tn):rt||(st[st.length]=tn)}return st}function flatten(tt){var et=tt==null?0:tt.length;return et?baseFlatten(tt):[]}var getPrototype=overArg(Object.getPrototypeOf,Object);function baseSlice(tt,et,nt){var rt=-1,st=tt.length;et<0&&(et=-et>st?0:st+et),nt=nt>st?st:nt,nt<0&&(nt+=st),st=et>nt?0:nt-et>>>0,et>>>=0;for(var ot=Array(st);++rt<st;)ot[rt]=tt[rt+et];return ot}function arrayReduce(tt,et,nt,rt){var st=-1,ot=tt==null?0:tt.length;for(rt&&ot&&(nt=tt[++st]);++st<ot;)nt=et(nt,tt[st],st,tt);return nt}function stackClear(){this.__data__=new ListCache,this.size=0}function stackDelete(tt){var et=this.__data__,nt=et.delete(tt);return this.size=et.size,nt}function stackGet(tt){return this.__data__.get(tt)}function stackHas(tt){return this.__data__.has(tt)}var LARGE_ARRAY_SIZE$2=200;function stackSet(tt,et){var nt=this.__data__;if(nt instanceof ListCache){var rt=nt.__data__;if(!Map$1||rt.length<LARGE_ARRAY_SIZE$2-1)return rt.push([tt,et]),this.size=++nt.size,this;nt=this.__data__=new MapCache(rt)}return nt.set(tt,et),this.size=nt.size,this}function Stack(tt){var et=this.__data__=new ListCache(tt);this.size=et.size}Stack.prototype.clear=stackClear,Stack.prototype.delete=stackDelete,Stack.prototype.get=stackGet,Stack.prototype.has=stackHas,Stack.prototype.set=stackSet;function baseAssign(tt,et){return tt&©Object(et,keys$1(et),tt)}function baseAssignIn(tt,et){return tt&©Object(et,keysIn(et),tt)}var freeExports=typeof exports=="object"&&exports&&!exports.nodeType&&exports,freeModule=freeExports&&typeof module=="object"&&module&&!module.nodeType&&module,moduleExports=freeModule&&freeModule.exports===freeExports,Buffer$1=moduleExports?root.Buffer:void 0,allocUnsafe=Buffer$1?Buffer$1.allocUnsafe:void 0;function cloneBuffer(tt,et){var nt=tt.length,rt=allocUnsafe?allocUnsafe(nt):new tt.constructor(nt);return tt.copy(rt),rt}function arrayFilter(tt,et){for(var nt=-1,rt=tt==null?0:tt.length,st=0,ot=[];++nt<rt;){var en=tt[nt];et(en,nt,tt)&&(ot[st++]=en)}return ot}function stubArray(){return[]}var objectProto$7=Object.prototype,propertyIsEnumerable=objectProto$7.propertyIsEnumerable,nativeGetSymbols$1=Object.getOwnPropertySymbols,getSymbols=nativeGetSymbols$1?function(tt){return tt==null?[]:(tt=Object(tt),arrayFilter(nativeGetSymbols$1(tt),function(et){return propertyIsEnumerable.call(tt,et)}))}:stubArray;function copySymbols(tt,et){return copyObject(tt,getSymbols(tt),et)}var nativeGetSymbols=Object.getOwnPropertySymbols,getSymbolsIn=nativeGetSymbols?function(tt){for(var et=[];tt;)arrayPush(et,getSymbols(tt)),tt=getPrototype(tt);return et}:stubArray;function copySymbolsIn(tt,et){return copyObject(tt,getSymbolsIn(tt),et)}function baseGetAllKeys(tt,et,nt){var rt=et(tt);return isArray$1(tt)?rt:arrayPush(rt,nt(tt))}function getAllKeys(tt){return baseGetAllKeys(tt,keys$1,getSymbols)}function getAllKeysIn(tt){return baseGetAllKeys(tt,keysIn,getSymbolsIn)}var DataView$1=getNative(root,"DataView"),Promise$1=getNative(root,"Promise"),Set$1=getNative(root,"Set"),mapTag$5="[object Map]",objectTag$2="[object Object]",promiseTag="[object Promise]",setTag$5="[object Set]",weakMapTag$1="[object WeakMap]",dataViewTag$3="[object DataView]",dataViewCtorString=toSource(DataView$1),mapCtorString=toSource(Map$1),promiseCtorString=toSource(Promise$1),setCtorString=toSource(Set$1),weakMapCtorString=toSource(WeakMap$1),getTag$1=baseGetTag;(DataView$1&&getTag$1(new DataView$1(new ArrayBuffer(1)))!=dataViewTag$3||Map$1&&getTag$1(new Map$1)!=mapTag$5||Promise$1&&getTag$1(Promise$1.resolve())!=promiseTag||Set$1&&getTag$1(new Set$1)!=setTag$5||WeakMap$1&&getTag$1(new WeakMap$1)!=weakMapTag$1)&&(getTag$1=function(tt){var et=baseGetTag(tt),nt=et==objectTag$2?tt.constructor:void 0,rt=nt?toSource(nt):"";if(rt)switch(rt){case dataViewCtorString:return dataViewTag$3;case mapCtorString:return mapTag$5;case promiseCtorString:return promiseTag;case setCtorString:return setTag$5;case weakMapCtorString:return weakMapTag$1}return et});var objectProto$6=Object.prototype,hasOwnProperty$7=objectProto$6.hasOwnProperty;function initCloneArray(tt){var et=tt.length,nt=new tt.constructor(et);return et&&typeof tt[0]=="string"&&hasOwnProperty$7.call(tt,"index")&&(nt.index=tt.index,nt.input=tt.input),nt}var Uint8Array$1=root.Uint8Array;function cloneArrayBuffer(tt){var et=new tt.constructor(tt.byteLength);return new Uint8Array$1(et).set(new Uint8Array$1(tt)),et}function cloneDataView(tt,et){var nt=tt.buffer;return new tt.constructor(nt,tt.byteOffset,tt.byteLength)}var reFlags=/\w*$/;function cloneRegExp(tt){var et=new tt.constructor(tt.source,reFlags.exec(tt));return et.lastIndex=tt.lastIndex,et}var symbolProto$1=Symbol$1?Symbol$1.prototype:void 0,symbolValueOf$1=symbolProto$1?symbolProto$1.valueOf:void 0;function cloneSymbol(tt){return symbolValueOf$1?Object(symbolValueOf$1.call(tt)):{}}function cloneTypedArray(tt,et){var nt=tt.buffer;return new tt.constructor(nt,tt.byteOffset,tt.length)}var boolTag$2="[object Boolean]",dateTag$2="[object Date]",mapTag$4="[object Map]",numberTag$2="[object Number]",regexpTag$3="[object RegExp]",setTag$4="[object Set]",stringTag$3="[object String]",symbolTag$2="[object Symbol]",arrayBufferTag$2="[object ArrayBuffer]",dataViewTag$2="[object DataView]",float32Tag$1="[object Float32Array]",float64Tag$1="[object Float64Array]",int8Tag$1="[object Int8Array]",int16Tag$1="[object Int16Array]",int32Tag$1="[object Int32Array]",uint8Tag$1="[object Uint8Array]",uint8ClampedTag$1="[object Uint8ClampedArray]",uint16Tag$1="[object Uint16Array]",uint32Tag$1="[object Uint32Array]";function initCloneByTag(tt,et,nt){var rt=tt.constructor;switch(et){case arrayBufferTag$2:return cloneArrayBuffer(tt);case boolTag$2:case dateTag$2:return new rt(+tt);case dataViewTag$2:return cloneDataView(tt);case float32Tag$1:case float64Tag$1:case int8Tag$1:case int16Tag$1:case int32Tag$1:case uint8Tag$1:case uint8ClampedTag$1:case uint16Tag$1:case uint32Tag$1:return cloneTypedArray(tt);case mapTag$4:return new rt;case numberTag$2:case stringTag$3:return new rt(tt);case regexpTag$3:return cloneRegExp(tt);case setTag$4:return new rt;case symbolTag$2:return cloneSymbol(tt)}}function initCloneObject(tt){return typeof tt.constructor=="function"&&!isPrototype(tt)?baseCreate(getPrototype(tt)):{}}var mapTag$3="[object Map]";function baseIsMap(tt){return isObjectLike(tt)&&getTag$1(tt)==mapTag$3}var nodeIsMap=nodeUtil&&nodeUtil.isMap,isMap=nodeIsMap?baseUnary(nodeIsMap):baseIsMap,setTag$3="[object Set]";function baseIsSet(tt){return isObjectLike(tt)&&getTag$1(tt)==setTag$3}var nodeIsSet=nodeUtil&&nodeUtil.isSet,isSet=nodeIsSet?baseUnary(nodeIsSet):baseIsSet,CLONE_FLAT_FLAG=2,argsTag$1="[object Arguments]",arrayTag$1="[object Array]",boolTag$1="[object Boolean]",dateTag$1="[object Date]",errorTag$1="[object Error]",funcTag="[object Function]",genTag="[object GeneratorFunction]",mapTag$2="[object Map]",numberTag$1="[object Number]",objectTag$1="[object Object]",regexpTag$2="[object RegExp]",setTag$2="[object Set]",stringTag$2="[object String]",symbolTag$1="[object Symbol]",weakMapTag="[object WeakMap]",arrayBufferTag$1="[object ArrayBuffer]",dataViewTag$1="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",cloneableTags={};cloneableTags[argsTag$1]=cloneableTags[arrayTag$1]=cloneableTags[arrayBufferTag$1]=cloneableTags[dataViewTag$1]=cloneableTags[boolTag$1]=cloneableTags[dateTag$1]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[mapTag$2]=cloneableTags[numberTag$1]=cloneableTags[objectTag$1]=cloneableTags[regexpTag$2]=cloneableTags[setTag$2]=cloneableTags[stringTag$2]=cloneableTags[symbolTag$1]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=!0,cloneableTags[errorTag$1]=cloneableTags[funcTag]=cloneableTags[weakMapTag]=!1;function baseClone(tt,et,nt,rt,st,ot){var en,tn=et&CLONE_FLAT_FLAG;if(en!==void 0)return en;if(!isObject(tt))return tt;var nn=isArray$1(tt);if(nn)return en=initCloneArray(tt),copyArray(tt,en);var rn=getTag$1(tt),sn=rn==funcTag||rn==genTag;if(isBuffer(tt))return cloneBuffer(tt);if(rn==objectTag$1||rn==argsTag$1||sn&&!st)return en=sn?{}:initCloneObject(tt),tn?copySymbolsIn(tt,baseAssignIn(en,tt)):copySymbols(tt,baseAssign(en,tt));if(!cloneableTags[rn])return st?tt:{};en=initCloneByTag(tt,rn),ot||(ot=new Stack);var an=ot.get(tt);if(an)return an;ot.set(tt,en),isSet(tt)?tt.forEach(function(ln){en.add(baseClone(ln,et,nt,ln,tt,ot))}):isMap(tt)&&tt.forEach(function(ln,fn){en.set(fn,baseClone(ln,et,nt,fn,tt,ot))});var on=getAllKeys,cn=nn?void 0:on(tt);return arrayEach(cn||tt,function(ln,fn){cn&&(fn=ln,ln=tt[fn]),assignValue(en,fn,baseClone(ln,et,nt,fn,tt,ot))}),en}var CLONE_SYMBOLS_FLAG=4;function clone(tt){return baseClone(tt,CLONE_SYMBOLS_FLAG)}function compact(tt){for(var et=-1,nt=tt==null?0:tt.length,rt=0,st=[];++et<nt;){var ot=tt[et];ot&&(st[rt++]=ot)}return st}var HASH_UNDEFINED="__lodash_hash_undefined__";function setCacheAdd(tt){return this.__data__.set(tt,HASH_UNDEFINED),this}function setCacheHas(tt){return this.__data__.has(tt)}function SetCache(tt){var et=-1,nt=tt==null?0:tt.length;for(this.__data__=new MapCache;++et<nt;)this.add(tt[et])}SetCache.prototype.add=SetCache.prototype.push=setCacheAdd,SetCache.prototype.has=setCacheHas;function arraySome(tt,et){for(var nt=-1,rt=tt==null?0:tt.length;++nt<rt;)if(et(tt[nt],nt,tt))return!0;return!1}function cacheHas(tt,et){return tt.has(et)}var COMPARE_PARTIAL_FLAG$5=1,COMPARE_UNORDERED_FLAG$3=2;function equalArrays(tt,et,nt,rt,st,ot){var en=nt&COMPARE_PARTIAL_FLAG$5,tn=tt.length,nn=et.length;if(tn!=nn&&!(en&&nn>tn))return!1;var rn=ot.get(tt),sn=ot.get(et);if(rn&&sn)return rn==et&&sn==tt;var an=-1,on=!0,cn=nt&COMPARE_UNORDERED_FLAG$3?new SetCache:void 0;for(ot.set(tt,et),ot.set(et,tt);++an<tn;){var ln=tt[an],fn=et[an];if(rt)var gn=en?rt(fn,ln,an,et,tt,ot):rt(ln,fn,an,tt,et,ot);if(gn!==void 0){if(gn)continue;on=!1;break}if(cn){if(!arraySome(et,function(pn,vn){if(!cacheHas(cn,vn)&&(ln===pn||st(ln,pn,nt,rt,ot)))return cn.push(vn)})){on=!1;break}}else if(!(ln===fn||st(ln,fn,nt,rt,ot))){on=!1;break}}return ot.delete(tt),ot.delete(et),on}function mapToArray(tt){var et=-1,nt=Array(tt.size);return tt.forEach(function(rt,st){nt[++et]=[st,rt]}),nt}function setToArray(tt){var et=-1,nt=Array(tt.size);return tt.forEach(function(rt){nt[++et]=rt}),nt}var COMPARE_PARTIAL_FLAG$4=1,COMPARE_UNORDERED_FLAG$2=2,boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",mapTag$1="[object Map]",numberTag="[object Number]",regexpTag$1="[object RegExp]",setTag$1="[object Set]",stringTag$1="[object String]",symbolTag="[object Symbol]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",symbolProto=Symbol$1?Symbol$1.prototype:void 0,symbolValueOf=symbolProto?symbolProto.valueOf:void 0;function equalByTag(tt,et,nt,rt,st,ot,en){switch(nt){case dataViewTag:if(tt.byteLength!=et.byteLength||tt.byteOffset!=et.byteOffset)return!1;tt=tt.buffer,et=et.buffer;case arrayBufferTag:return!(tt.byteLength!=et.byteLength||!ot(new Uint8Array$1(tt),new Uint8Array$1(et)));case boolTag:case dateTag:case numberTag:return eq(+tt,+et);case errorTag:return tt.name==et.name&&tt.message==et.message;case regexpTag$1:case stringTag$1:return tt==et+"";case mapTag$1:var tn=mapToArray;case setTag$1:var nn=rt&COMPARE_PARTIAL_FLAG$4;if(tn||(tn=setToArray),tt.size!=et.size&&!nn)return!1;var rn=en.get(tt);if(rn)return rn==et;rt|=COMPARE_UNORDERED_FLAG$2,en.set(tt,et);var sn=equalArrays(tn(tt),tn(et),rt,st,ot,en);return en.delete(tt),sn;case symbolTag:if(symbolValueOf)return symbolValueOf.call(tt)==symbolValueOf.call(et)}return!1}var COMPARE_PARTIAL_FLAG$3=1,objectProto$5=Object.prototype,hasOwnProperty$6=objectProto$5.hasOwnProperty;function equalObjects(tt,et,nt,rt,st,ot){var en=nt&COMPARE_PARTIAL_FLAG$3,tn=getAllKeys(tt),nn=tn.length,rn=getAllKeys(et),sn=rn.length;if(nn!=sn&&!en)return!1;for(var an=nn;an--;){var on=tn[an];if(!(en?on in et:hasOwnProperty$6.call(et,on)))return!1}var cn=ot.get(tt),ln=ot.get(et);if(cn&&ln)return cn==et&&ln==tt;var fn=!0;ot.set(tt,et),ot.set(et,tt);for(var gn=en;++an<nn;){on=tn[an];var pn=tt[on],vn=et[on];if(rt)var bn=en?rt(vn,pn,on,et,tt,ot):rt(pn,vn,on,tt,et,ot);if(!(bn===void 0?pn===vn||st(pn,vn,nt,rt,ot):bn)){fn=!1;break}gn||(gn=on=="constructor")}if(fn&&!gn){var $n=tt.constructor,Tn=et.constructor;$n!=Tn&&"constructor"in tt&&"constructor"in et&&!(typeof $n=="function"&&$n instanceof $n&&typeof Tn=="function"&&Tn instanceof Tn)&&(fn=!1)}return ot.delete(tt),ot.delete(et),fn}var COMPARE_PARTIAL_FLAG$2=1,argsTag="[object Arguments]",arrayTag="[object Array]",objectTag="[object Object]",objectProto$4=Object.prototype,hasOwnProperty$5=objectProto$4.hasOwnProperty;function baseIsEqualDeep(tt,et,nt,rt,st,ot){var en=isArray$1(tt),tn=isArray$1(et),nn=en?arrayTag:getTag$1(tt),rn=tn?arrayTag:getTag$1(et);nn=nn==argsTag?objectTag:nn,rn=rn==argsTag?objectTag:rn;var sn=nn==objectTag,an=rn==objectTag,on=nn==rn;if(on&&isBuffer(tt)){if(!isBuffer(et))return!1;en=!0,sn=!1}if(on&&!sn)return ot||(ot=new Stack),en||isTypedArray$1(tt)?equalArrays(tt,et,nt,rt,st,ot):equalByTag(tt,et,nn,nt,rt,st,ot);if(!(nt&COMPARE_PARTIAL_FLAG$2)){var cn=sn&&hasOwnProperty$5.call(tt,"__wrapped__"),ln=an&&hasOwnProperty$5.call(et,"__wrapped__");if(cn||ln){var fn=cn?tt.value():tt,gn=ln?et.value():et;return ot||(ot=new Stack),st(fn,gn,nt,rt,ot)}}return on?(ot||(ot=new Stack),equalObjects(tt,et,nt,rt,st,ot)):!1}function baseIsEqual(tt,et,nt,rt,st){return tt===et?!0:tt==null||et==null||!isObjectLike(tt)&&!isObjectLike(et)?tt!==tt&&et!==et:baseIsEqualDeep(tt,et,nt,rt,baseIsEqual,st)}var COMPARE_PARTIAL_FLAG$1=1,COMPARE_UNORDERED_FLAG$1=2;function baseIsMatch(tt,et,nt,rt){var st=nt.length,ot=st;if(tt==null)return!ot;for(tt=Object(tt);st--;){var en=nt[st];if(en[2]?en[1]!==tt[en[0]]:!(en[0]in tt))return!1}for(;++st<ot;){en=nt[st];var tn=en[0],nn=tt[tn],rn=en[1];if(en[2]){if(nn===void 0&&!(tn in tt))return!1}else{var sn=new Stack,an;if(!(an===void 0?baseIsEqual(rn,nn,COMPARE_PARTIAL_FLAG$1|COMPARE_UNORDERED_FLAG$1,rt,sn):an))return!1}}return!0}function isStrictComparable(tt){return tt===tt&&!isObject(tt)}function getMatchData(tt){for(var et=keys$1(tt),nt=et.length;nt--;){var rt=et[nt],st=tt[rt];et[nt]=[rt,st,isStrictComparable(st)]}return et}function matchesStrictComparable(tt,et){return function(nt){return nt==null?!1:nt[tt]===et&&(et!==void 0||tt in Object(nt))}}function baseMatches(tt){var et=getMatchData(tt);return et.length==1&&et[0][2]?matchesStrictComparable(et[0][0],et[0][1]):function(nt){return nt===tt||baseIsMatch(nt,tt,et)}}function baseHasIn(tt,et){return tt!=null&&et in Object(tt)}function hasPath(tt,et,nt){et=castPath(et,tt);for(var rt=-1,st=et.length,ot=!1;++rt<st;){var en=toKey(et[rt]);if(!(ot=tt!=null&&nt(tt,en)))break;tt=tt[en]}return ot||++rt!=st?ot:(st=tt==null?0:tt.length,!!st&&isLength(st)&&isIndex(en,st)&&(isArray$1(tt)||isArguments(tt)))}function hasIn(tt,et){return tt!=null&&hasPath(tt,et,baseHasIn)}var COMPARE_PARTIAL_FLAG=1,COMPARE_UNORDERED_FLAG=2;function baseMatchesProperty(tt,et){return isKey(tt)&&isStrictComparable(et)?matchesStrictComparable(toKey(tt),et):function(nt){var rt=get(nt,tt);return rt===void 0&&rt===et?hasIn(nt,tt):baseIsEqual(et,rt,COMPARE_PARTIAL_FLAG|COMPARE_UNORDERED_FLAG)}}function baseProperty(tt){return function(et){return et?.[tt]}}function basePropertyDeep(tt){return function(et){return baseGet(et,tt)}}function property(tt){return isKey(tt)?baseProperty(toKey(tt)):basePropertyDeep(tt)}function baseIteratee(tt){return typeof tt=="function"?tt:tt==null?identity:typeof tt=="object"?isArray$1(tt)?baseMatchesProperty(tt[0],tt[1]):baseMatches(tt):property(tt)}function arrayAggregator(tt,et,nt,rt){for(var st=-1,ot=tt==null?0:tt.length;++st<ot;){var en=tt[st];et(rt,en,nt(en),tt)}return rt}function createBaseFor(tt){return function(et,nt,rt){for(var st=-1,ot=Object(et),en=rt(et),tn=en.length;tn--;){var nn=en[++st];if(nt(ot[nn],nn,ot)===!1)break}return et}}var baseFor=createBaseFor();function baseForOwn(tt,et){return tt&&baseFor(tt,et,keys$1)}function createBaseEach(tt,et){return function(nt,rt){if(nt==null)return nt;if(!isArrayLike(nt))return tt(nt,rt);for(var st=nt.length,ot=-1,en=Object(nt);++ot<st&&rt(en[ot],ot,en)!==!1;);return nt}}var baseEach=createBaseEach(baseForOwn);function baseAggregator(tt,et,nt,rt){return baseEach(tt,function(st,ot,en){et(rt,st,nt(st),en)}),rt}function createAggregator(tt,et){return function(nt,rt){var st=isArray$1(nt)?arrayAggregator:baseAggregator,ot=et?et():{};return st(nt,tt,baseIteratee(rt),ot)}}var objectProto$3=Object.prototype,hasOwnProperty$4=objectProto$3.hasOwnProperty,defaults=baseRest(function(tt,et){tt=Object(tt);var nt=-1,rt=et.length,st=rt>2?et[2]:void 0;for(st&&isIterateeCall(et[0],et[1],st)&&(rt=1);++nt<rt;)for(var ot=et[nt],en=keysIn(ot),tn=-1,nn=en.length;++tn<nn;){var rn=en[tn],sn=tt[rn];(sn===void 0||eq(sn,objectProto$3[rn])&&!hasOwnProperty$4.call(tt,rn))&&(tt[rn]=ot[rn])}return tt});function isArrayLikeObject(tt){return isObjectLike(tt)&&isArrayLike(tt)}var LARGE_ARRAY_SIZE$1=200;function baseDifference(tt,et,nt,rt){var st=-1,ot=arrayIncludes,en=!0,tn=tt.length,nn=[],rn=et.length;if(!tn)return nn;et.length>=LARGE_ARRAY_SIZE$1&&(ot=cacheHas,en=!1,et=new SetCache(et));e:for(;++st<tn;){var sn=tt[st],an=sn;if(sn=sn!==0?sn:0,en&&an===an){for(var on=rn;on--;)if(et[on]===an)continue e;nn.push(sn)}else ot(et,an,rt)||nn.push(sn)}return nn}var difference=baseRest(function(tt,et){return isArrayLikeObject(tt)?baseDifference(tt,baseFlatten(et,1,isArrayLikeObject,!0)):[]});function last(tt){var et=tt==null?0:tt.length;return et?tt[et-1]:void 0}function drop(tt,et,nt){var rt=tt==null?0:tt.length;return rt?(et=et===void 0?1:toInteger(et),baseSlice(tt,et<0?0:et,rt)):[]}function dropRight(tt,et,nt){var rt=tt==null?0:tt.length;return rt?(et=et===void 0?1:toInteger(et),et=rt-et,baseSlice(tt,0,et<0?0:et)):[]}function castFunction(tt){return typeof tt=="function"?tt:identity}function forEach(tt,et){var nt=isArray$1(tt)?arrayEach:baseEach;return nt(tt,castFunction(et))}function arrayEvery(tt,et){for(var nt=-1,rt=tt==null?0:tt.length;++nt<rt;)if(!et(tt[nt],nt,tt))return!1;return!0}function baseEvery(tt,et){var nt=!0;return baseEach(tt,function(rt,st,ot){return nt=!!et(rt,st,ot),nt}),nt}function every(tt,et,nt){var rt=isArray$1(tt)?arrayEvery:baseEvery;return rt(tt,baseIteratee(et))}function baseFilter(tt,et){var nt=[];return baseEach(tt,function(rt,st,ot){et(rt,st,ot)&&nt.push(rt)}),nt}function filter(tt,et){var nt=isArray$1(tt)?arrayFilter:baseFilter;return nt(tt,baseIteratee(et))}function createFind(tt){return function(et,nt,rt){var st=Object(et);if(!isArrayLike(et)){var ot=baseIteratee(nt);et=keys$1(et),nt=function(tn){return ot(st[tn],tn,st)}}var en=tt(et,nt,rt);return en>-1?st[ot?et[en]:en]:void 0}}var nativeMax$1=Math.max;function findIndex(tt,et,nt){var rt=tt==null?0:tt.length;if(!rt)return-1;var st=nt==null?0:toInteger(nt);return st<0&&(st=nativeMax$1(rt+st,0)),baseFindIndex(tt,baseIteratee(et),st)}var find=createFind(findIndex);function head(tt){return tt&&tt.length?tt[0]:void 0}function baseMap(tt,et){var nt=-1,rt=isArrayLike(tt)?Array(tt.length):[];return baseEach(tt,function(st,ot,en){rt[++nt]=et(st,ot,en)}),rt}function map$1(tt,et){var nt=isArray$1(tt)?arrayMap:baseMap;return nt(tt,baseIteratee(et))}function flatMap(tt,et){return baseFlatten(map$1(tt,et))}var objectProto$2=Object.prototype,hasOwnProperty$3=objectProto$2.hasOwnProperty,groupBy=createAggregator(function(tt,et,nt){hasOwnProperty$3.call(tt,nt)?tt[nt].push(et):baseAssignValue(tt,nt,[et])}),objectProto$1=Object.prototype,hasOwnProperty$2=objectProto$1.hasOwnProperty;function baseHas(tt,et){return tt!=null&&hasOwnProperty$2.call(tt,et)}function has(tt,et){return tt!=null&&hasPath(tt,et,baseHas)}var stringTag="[object String]";function isString(tt){return typeof tt=="string"||!isArray$1(tt)&&isObjectLike(tt)&&baseGetTag(tt)==stringTag}function baseValues(tt,et){return arrayMap(et,function(nt){return tt[nt]})}function values(tt){return tt==null?[]:baseValues(tt,keys$1(tt))}var nativeMax=Math.max;function includes(tt,et,nt,rt){tt=isArrayLike(tt)?tt:values(tt),nt=nt?toInteger(nt):0;var st=tt.length;return nt<0&&(nt=nativeMax(st+nt,0)),isString(tt)?nt<=st&&tt.indexOf(et,nt)>-1:!!st&&baseIndexOf(tt,et,nt)>-1}function indexOf(tt,et,nt){var rt=tt==null?0:tt.length;if(!rt)return-1;var st=0;return baseIndexOf(tt,et,st)}var mapTag="[object Map]",setTag="[object Set]",objectProto=Object.prototype,hasOwnProperty$1=objectProto.hasOwnProperty;function isEmpty$1(tt){if(tt==null)return!0;if(isArrayLike(tt)&&(isArray$1(tt)||typeof tt=="string"||typeof tt.splice=="function"||isBuffer(tt)||isTypedArray$1(tt)||isArguments(tt)))return!tt.length;var et=getTag$1(tt);if(et==mapTag||et==setTag)return!tt.size;if(isPrototype(tt))return!baseKeys(tt).length;for(var nt in tt)if(hasOwnProperty$1.call(tt,nt))return!1;return!0}var regexpTag="[object RegExp]";function baseIsRegExp(tt){return isObjectLike(tt)&&baseGetTag(tt)==regexpTag}var nodeIsRegExp=nodeUtil&&nodeUtil.isRegExp,isRegExp=nodeIsRegExp?baseUnary(nodeIsRegExp):baseIsRegExp;function isUndefined(tt){return tt===void 0}function baseLt(tt,et){return tt<et}function baseExtremum(tt,et,nt){for(var rt=-1,st=tt.length;++rt<st;){var ot=tt[rt],en=et(ot);if(en!=null&&(tn===void 0?en===en&&!isSymbol(en):nt(en,tn)))var tn=en,nn=ot}return nn}function min(tt){return tt&&tt.length?baseExtremum(tt,identity,baseLt):void 0}var FUNC_ERROR_TEXT="Expected a function";function negate(tt){if(typeof tt!="function")throw new TypeError(FUNC_ERROR_TEXT);return function(){var et=arguments;switch(et.length){case 0:return!tt.call(this);case 1:return!tt.call(this,et[0]);case 2:return!tt.call(this,et[0],et[1]);case 3:return!tt.call(this,et[0],et[1],et[2])}return!tt.apply(this,et)}}function baseSet(tt,et,nt,rt){if(!isObject(tt))return tt;et=castPath(et,tt);for(var st=-1,ot=et.length,en=ot-1,tn=tt;tn!=null&&++st<ot;){var nn=toKey(et[st]),rn=nt;if(nn==="__proto__"||nn==="constructor"||nn==="prototype")return tt;if(st!=en){var sn=tn[nn];rn=void 0,rn===void 0&&(rn=isObject(sn)?sn:isIndex(et[st+1])?[]:{})}assignValue(tn,nn,rn),tn=tn[nn]}return tt}function basePickBy(tt,et,nt){for(var rt=-1,st=et.length,ot={};++rt<st;){var en=et[rt],tn=baseGet(tt,en);nt(tn,en)&&baseSet(ot,castPath(en,tt),tn)}return ot}function pickBy(tt,et){if(tt==null)return{};var nt=arrayMap(getAllKeysIn(tt),function(rt){return[rt]});return et=baseIteratee(et),basePickBy(tt,nt,function(rt,st){return et(rt,st[0])})}function baseReduce(tt,et,nt,rt,st){return st(tt,function(ot,en,tn){nt=rt?(rt=!1,ot):et(nt,ot,en,tn)}),nt}function reduce(tt,et,nt){var rt=isArray$1(tt)?arrayReduce:baseReduce,st=arguments.length<3;return rt(tt,baseIteratee(et),nt,st,baseEach)}function reject(tt,et){var nt=isArray$1(tt)?arrayFilter:baseFilter;return nt(tt,negate(baseIteratee(et)))}function baseSome(tt,et){var nt;return baseEach(tt,function(rt,st,ot){return nt=et(rt,st,ot),!nt}),!!nt}function some(tt,et,nt){var rt=isArray$1(tt)?arraySome:baseSome;return rt(tt,baseIteratee(et))}var INFINITY=1/0,createSet=Set$1&&1/setToArray(new Set$1([,-0]))[1]==INFINITY?function(tt){return new Set$1(tt)}:noop,LARGE_ARRAY_SIZE=200;function baseUniq(tt,et,nt){var rt=-1,st=arrayIncludes,ot=tt.length,en=!0,tn=[],nn=tn;if(ot>=LARGE_ARRAY_SIZE){var rn=et?null:createSet(tt);if(rn)return setToArray(rn);en=!1,st=cacheHas,nn=new SetCache}else nn=et?[]:tn;e:for(;++rt<ot;){var sn=tt[rt],an=et?et(sn):sn;if(sn=sn!==0?sn:0,en&&an===an){for(var on=nn.length;on--;)if(nn[on]===an)continue e;et&&nn.push(an),tn.push(sn)}else st(nn,an,nt)||(nn!==tn&&nn.push(an),tn.push(sn))}return tn}function uniq(tt){return tt&&tt.length?baseUniq(tt):[]}function uniqBy(tt,et){return tt&&tt.length?baseUniq(tt,baseIteratee(et)):[]}function PRINT_ERROR(tt){console&&console.error&&console.error(`Error: ${tt}`)}function PRINT_WARNING(tt){console&&console.warn&&console.warn(`Warning: ${tt}`)}function timer(tt){const et=new Date().getTime(),nt=tt();return{time:new Date().getTime()-et,value:nt}}function toFastProperties(tt){function et(){}et.prototype=tt;const nt=new et;function rt(){return typeof nt.bar}return rt(),rt(),tt}function tokenLabel$1(tt){return hasTokenLabel$1(tt)?tt.LABEL:tt.name}function hasTokenLabel$1(tt){return isString(tt.LABEL)&&tt.LABEL!==""}class AbstractProduction{get definition(){return this._definition}set definition(et){this._definition=et}constructor(et){this._definition=et}accept(et){et.visit(this),forEach(this.definition,nt=>{nt.accept(et)})}}class NonTerminal extends AbstractProduction{constructor(et){super([]),this.idx=1,assign$2(this,pickBy(et,nt=>nt!==void 0))}set definition(et){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(et){et.visit(this)}}class Rule extends AbstractProduction{constructor(et){super(et.definition),this.orgText="",assign$2(this,pickBy(et,nt=>nt!==void 0))}}class Alternative extends AbstractProduction{constructor(et){super(et.definition),this.ignoreAmbiguities=!1,assign$2(this,pickBy(et,nt=>nt!==void 0))}}class Option extends AbstractProduction{constructor(et){super(et.definition),this.idx=1,assign$2(this,pickBy(et,nt=>nt!==void 0))}}class RepetitionMandatory extends AbstractProduction{constructor(et){super(et.definition),this.idx=1,assign$2(this,pickBy(et,nt=>nt!==void 0))}}class RepetitionMandatoryWithSeparator extends AbstractProduction{constructor(et){super(et.definition),this.idx=1,assign$2(this,pickBy(et,nt=>nt!==void 0))}}class Repetition extends AbstractProduction{constructor(et){super(et.definition),this.idx=1,assign$2(this,pickBy(et,nt=>nt!==void 0))}}class RepetitionWithSeparator extends AbstractProduction{constructor(et){super(et.definition),this.idx=1,assign$2(this,pickBy(et,nt=>nt!==void 0))}}class Alternation extends AbstractProduction{get definition(){return this._definition}set definition(et){this._definition=et}constructor(et){super(et.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,assign$2(this,pickBy(et,nt=>nt!==void 0))}}class Terminal{constructor(et){this.idx=1,assign$2(this,pickBy(et,nt=>nt!==void 0))}accept(et){et.visit(this)}}function serializeGrammar(tt){return map$1(tt,serializeProduction)}function serializeProduction(tt){function et(nt){return map$1(nt,serializeProduction)}if(tt instanceof NonTerminal){const nt={type:"NonTerminal",name:tt.nonTerminalName,idx:tt.idx};return isString(tt.label)&&(nt.label=tt.label),nt}else{if(tt instanceof Alternative)return{type:"Alternative",definition:et(tt.definition)};if(tt instanceof Option)return{type:"Option",idx:tt.idx,definition:et(tt.definition)};if(tt instanceof RepetitionMandatory)return{type:"RepetitionMandatory",idx:tt.idx,definition:et(tt.definition)};if(tt instanceof RepetitionMandatoryWithSeparator)return{type:"RepetitionMandatoryWithSeparator",idx:tt.idx,separator:serializeProduction(new Terminal({terminalType:tt.separator})),definition:et(tt.definition)};if(tt instanceof RepetitionWithSeparator)return{type:"RepetitionWithSeparator",idx:tt.idx,separator:serializeProduction(new Terminal({terminalType:tt.separator})),definition:et(tt.definition)};if(tt instanceof Repetition)return{type:"Repetition",idx:tt.idx,definition:et(tt.definition)};if(tt instanceof Alternation)return{type:"Alternation",idx:tt.idx,definition:et(tt.definition)};if(tt instanceof Terminal){const nt={type:"Terminal",name:tt.terminalType.name,label:tokenLabel$1(tt.terminalType),idx:tt.idx};isString(tt.label)&&(nt.terminalLabel=tt.label);const rt=tt.terminalType.PATTERN;return tt.terminalType.PATTERN&&(nt.pattern=isRegExp(rt)?rt.source:rt),nt}else{if(tt instanceof Rule)return{type:"Rule",name:tt.name,orgText:tt.orgText,definition:et(tt.definition)};throw Error("non exhaustive match")}}}class GAstVisitor{visit(et){const nt=et;switch(nt.constructor){case NonTerminal:return this.visitNonTerminal(nt);case Alternative:return this.visitAlternative(nt);case Option:return this.visitOption(nt);case RepetitionMandatory:return this.visitRepetitionMandatory(nt);case RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(nt);case RepetitionWithSeparator:return this.visitRepetitionWithSeparator(nt);case Repetition:return this.visitRepetition(nt);case Alternation:return this.visitAlternation(nt);case Terminal:return this.visitTerminal(nt);case Rule:return this.visitRule(nt);default:throw Error("non exhaustive match")}}visitNonTerminal(et){}visitAlternative(et){}visitOption(et){}visitRepetition(et){}visitRepetitionMandatory(et){}visitRepetitionMandatoryWithSeparator(et){}visitRepetitionWithSeparator(et){}visitAlternation(et){}visitTerminal(et){}visitRule(et){}}function isSequenceProd(tt){return tt instanceof Alternative||tt instanceof Option||tt instanceof Repetition||tt instanceof RepetitionMandatory||tt instanceof RepetitionMandatoryWithSeparator||tt instanceof RepetitionWithSeparator||tt instanceof Terminal||tt instanceof Rule}function isOptionalProd(tt,et=[]){return tt instanceof Option||tt instanceof Repetition||tt instanceof RepetitionWithSeparator?!0:tt instanceof Alternation?some(tt.definition,rt=>isOptionalProd(rt,et)):tt instanceof NonTerminal&&includes(et,tt)?!1:tt instanceof AbstractProduction?(tt instanceof NonTerminal&&et.push(tt),every(tt.definition,rt=>isOptionalProd(rt,et))):!1}function isBranchingProd(tt){return tt instanceof Alternation}function getProductionDslName$1(tt){if(tt instanceof NonTerminal)return"SUBRULE";if(tt instanceof Option)return"OPTION";if(tt instanceof Alternation)return"OR";if(tt instanceof RepetitionMandatory)return"AT_LEAST_ONE";if(tt instanceof RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(tt instanceof RepetitionWithSeparator)return"MANY_SEP";if(tt instanceof Repetition)return"MANY";if(tt instanceof Terminal)return"CONSUME";throw Error("non exhaustive match")}class RestWalker{walk(et,nt=[]){forEach(et.definition,(rt,st)=>{const ot=drop(et.definition,st+1);if(rt instanceof NonTerminal)this.walkProdRef(rt,ot,nt);else if(rt instanceof Terminal)this.walkTerminal(rt,ot,nt);else if(rt instanceof Alternative)this.walkFlat(rt,ot,nt);else if(rt instanceof Option)this.walkOption(rt,ot,nt);else if(rt instanceof RepetitionMandatory)this.walkAtLeastOne(rt,ot,nt);else if(rt instanceof RepetitionMandatoryWithSeparator)this.walkAtLeastOneSep(rt,ot,nt);else if(rt instanceof RepetitionWithSeparator)this.walkManySep(rt,ot,nt);else if(rt instanceof Repetition)this.walkMany(rt,ot,nt);else if(rt instanceof Alternation)this.walkOr(rt,ot,nt);else throw Error("non exhaustive match")})}walkTerminal(et,nt,rt){}walkProdRef(et,nt,rt){}walkFlat(et,nt,rt){const st=nt.concat(rt);this.walk(et,st)}walkOption(et,nt,rt){const st=nt.concat(rt);this.walk(et,st)}walkAtLeastOne(et,nt,rt){const st=[new Option({definition:et.definition})].concat(nt,rt);this.walk(et,st)}walkAtLeastOneSep(et,nt,rt){const st=restForRepetitionWithSeparator(et,nt,rt);this.walk(et,st)}walkMany(et,nt,rt){const st=[new Option({definition:et.definition})].concat(nt,rt);this.walk(et,st)}walkManySep(et,nt,rt){const st=restForRepetitionWithSeparator(et,nt,rt);this.walk(et,st)}walkOr(et,nt,rt){const st=nt.concat(rt);forEach(et.definition,ot=>{const en=new Alternative({definition:[ot]});this.walk(en,st)})}}function restForRepetitionWithSeparator(tt,et,nt){return[new Option({definition:[new Terminal({terminalType:tt.separator})].concat(tt.definition)})].concat(et,nt)}function first(tt){if(tt instanceof NonTerminal)return first(tt.referencedRule);if(tt instanceof Terminal)return firstForTerminal(tt);if(isSequenceProd(tt))return firstForSequence(tt);if(isBranchingProd(tt))return firstForBranching(tt);throw Error("non exhaustive match")}function firstForSequence(tt){let et=[];const nt=tt.definition;let rt=0,st=nt.length>rt,ot,en=!0;for(;st&&en;)ot=nt[rt],en=isOptionalProd(ot),et=et.concat(first(ot)),rt=rt+1,st=nt.length>rt;return uniq(et)}function firstForBranching(tt){const et=map$1(tt.definition,nt=>first(nt));return uniq(flatten(et))}function firstForTerminal(tt){return[tt.terminalType]}const IN="_~IN~_";class ResyncFollowsWalker extends RestWalker{constructor(et){super(),this.topProd=et,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(et,nt,rt){}walkProdRef(et,nt,rt){const st=buildBetweenProdsFollowPrefix(et.referencedRule,et.idx)+this.topProd.name,ot=nt.concat(rt),en=new Alternative({definition:ot}),tn=first(en);this.follows[st]=tn}}function computeAllProdsFollows(tt){const et={};return forEach(tt,nt=>{const rt=new ResyncFollowsWalker(nt).startWalking();assign$2(et,rt)}),et}function buildBetweenProdsFollowPrefix(tt,et){return tt.name+et+IN}let regExpAstCache={};const regExpParser=new RegExpParser;function getRegExpAst(tt){const et=tt.toString();if(regExpAstCache.hasOwnProperty(et))return regExpAstCache[et];{const nt=regExpParser.pattern(et);return regExpAstCache[et]=nt,nt}}function clearRegExpParserCache(){regExpAstCache={}}const complementErrorMessage="Complement Sets are not supported for first char optimization",failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations:
|
|
32
|
-
`;function getOptimizedStartCodesIndices(tt,et=!1){try{const nt=getRegExpAst(tt);return firstCharOptimizedIndices(nt.value,{},nt.flags.ignoreCase)}catch(nt){if(nt.message===complementErrorMessage)et&&PRINT_WARNING(`${failedOptimizationPrefixMsg} Unable to optimize: < ${tt.toString()} >
|
|
33
|
-
Complement Sets cannot be automatically optimized.
|
|
34
|
-
This will disable the lexer's first char optimizations.
|
|
35
|
-
See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let rt="";et&&(rt=`
|
|
36
|
-
This will disable the lexer's first char optimizations.
|
|
37
|
-
See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),PRINT_ERROR(`${failedOptimizationPrefixMsg}
|
|
38
|
-
Failed parsing: < ${tt.toString()} >
|
|
39
|
-
Using the @chevrotain/regexp-to-ast library
|
|
40
|
-
Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+rt)}}return[]}function firstCharOptimizedIndices(tt,et,nt){switch(tt.type){case"Disjunction":for(let st=0;st<tt.value.length;st++)firstCharOptimizedIndices(tt.value[st],et,nt);break;case"Alternative":const rt=tt.value;for(let st=0;st<rt.length;st++){const ot=rt[st];switch(ot.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}const en=ot;switch(en.type){case"Character":addOptimizedIdxToResult(en.value,et,nt);break;case"Set":if(en.complement===!0)throw Error(complementErrorMessage);forEach(en.value,nn=>{if(typeof nn=="number")addOptimizedIdxToResult(nn,et,nt);else{const rn=nn;if(nt===!0)for(let sn=rn.from;sn<=rn.to;sn++)addOptimizedIdxToResult(sn,et,nt);else{for(let sn=rn.from;sn<=rn.to&&sn<minOptimizationVal;sn++)addOptimizedIdxToResult(sn,et,nt);if(rn.to>=minOptimizationVal){const sn=rn.from>=minOptimizationVal?rn.from:minOptimizationVal,an=rn.to,on=charCodeToOptimizedIndex(sn),cn=charCodeToOptimizedIndex(an);for(let ln=on;ln<=cn;ln++)et[ln]=ln}}}});break;case"Group":firstCharOptimizedIndices(en.value,et,nt);break;default:throw Error("Non Exhaustive Match")}const tn=en.quantifier!==void 0&&en.quantifier.atLeast===0;if(en.type==="Group"&&isWholeOptional(en)===!1||en.type!=="Group"&&tn===!1)break}break;default:throw Error("non exhaustive match!")}return values(et)}function addOptimizedIdxToResult(tt,et,nt){const rt=charCodeToOptimizedIndex(tt);et[rt]=rt,nt===!0&&handleIgnoreCase(tt,et)}function handleIgnoreCase(tt,et){const nt=String.fromCharCode(tt),rt=nt.toUpperCase();if(rt!==nt){const st=charCodeToOptimizedIndex(rt.charCodeAt(0));et[st]=st}else{const st=nt.toLowerCase();if(st!==nt){const ot=charCodeToOptimizedIndex(st.charCodeAt(0));et[ot]=ot}}}function findCode(tt,et){return find(tt.value,nt=>{if(typeof nt=="number")return includes(et,nt);{const rt=nt;return find(et,st=>rt.from<=st&&st<=rt.to)!==void 0}})}function isWholeOptional(tt){const et=tt.quantifier;return et&&et.atLeast===0?!0:tt.value?isArray$1(tt.value)?every(tt.value,isWholeOptional):isWholeOptional(tt.value):!1}class CharCodeFinder extends BaseRegExpVisitor{constructor(et){super(),this.targetCharCodes=et,this.found=!1}visitChildren(et){if(this.found!==!0){switch(et.type){case"Lookahead":this.visitLookahead(et);return;case"NegativeLookahead":this.visitNegativeLookahead(et);return}super.visitChildren(et)}}visitCharacter(et){includes(this.targetCharCodes,et.value)&&(this.found=!0)}visitSet(et){et.complement?findCode(et,this.targetCharCodes)===void 0&&(this.found=!0):findCode(et,this.targetCharCodes)!==void 0&&(this.found=!0)}}function canMatchCharCode(tt,et){if(et instanceof RegExp){const nt=getRegExpAst(et),rt=new CharCodeFinder(tt);return rt.visit(nt),rt.found}else return find(et,nt=>includes(tt,nt.charCodeAt(0)))!==void 0}const PATTERN="PATTERN",DEFAULT_MODE="defaultMode",MODES="modes";let SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function analyzeTokenTypes(tt,et){et=defaults(et,{useSticky:SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",`
|
|
41
|
-
`],tracer:(vn,bn)=>bn()});const nt=et.tracer;nt("initCharCodeToOptimizedIndexMap",()=>{initCharCodeToOptimizedIndexMap()});let rt;nt("Reject Lexer.NA",()=>{rt=reject(tt,vn=>vn[PATTERN]===Lexer.NA)});let st=!1,ot;nt("Transform Patterns",()=>{st=!1,ot=map$1(rt,vn=>{const bn=vn[PATTERN];if(isRegExp(bn)){const $n=bn.source;return $n.length===1&&$n!=="^"&&$n!=="$"&&$n!=="."&&!bn.ignoreCase?$n:$n.length===2&&$n[0]==="\\"&&!includes(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],$n[1])?$n[1]:et.useSticky?addStickyFlag(bn):addStartOfInput(bn)}else{if(isFunction(bn))return st=!0,{exec:bn};if(typeof bn=="object")return st=!0,bn;if(typeof bn=="string"){if(bn.length===1)return bn;{const $n=bn.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),Tn=new RegExp($n);return et.useSticky?addStickyFlag(Tn):addStartOfInput(Tn)}}else throw Error("non exhaustive match")}})});let en,tn,nn,rn,sn;nt("misc mapping",()=>{en=map$1(rt,vn=>vn.tokenTypeIdx),tn=map$1(rt,vn=>{const bn=vn.GROUP;if(bn!==Lexer.SKIPPED){if(isString(bn))return bn;if(isUndefined(bn))return!1;throw Error("non exhaustive match")}}),nn=map$1(rt,vn=>{const bn=vn.LONGER_ALT;if(bn)return isArray$1(bn)?map$1(bn,Tn=>indexOf(rt,Tn)):[indexOf(rt,bn)]}),rn=map$1(rt,vn=>vn.PUSH_MODE),sn=map$1(rt,vn=>has(vn,"POP_MODE"))});let an;nt("Line Terminator Handling",()=>{const vn=getCharCodes(et.lineTerminatorCharacters);an=map$1(rt,bn=>!1),et.positionTracking!=="onlyOffset"&&(an=map$1(rt,bn=>has(bn,"LINE_BREAKS")?!!bn.LINE_BREAKS:checkLineBreaksIssues(bn,vn)===!1&&canMatchCharCode(vn,bn.PATTERN)))});let on,cn,ln,fn;nt("Misc Mapping #2",()=>{on=map$1(rt,isCustomPattern),cn=map$1(ot,isShortPattern),ln=reduce(rt,(vn,bn)=>{const $n=bn.GROUP;return isString($n)&&$n!==Lexer.SKIPPED&&(vn[$n]=[]),vn},{}),fn=map$1(ot,(vn,bn)=>({pattern:ot[bn],longerAlt:nn[bn],canLineTerminator:an[bn],isCustom:on[bn],short:cn[bn],group:tn[bn],push:rn[bn],pop:sn[bn],tokenTypeIdx:en[bn],tokenType:rt[bn]}))});let gn=!0,pn=[];return et.safeMode||nt("First Char Optimization",()=>{pn=reduce(rt,(vn,bn,$n)=>{if(typeof bn.PATTERN=="string"){const Tn=bn.PATTERN.charCodeAt(0),An=charCodeToOptimizedIndex(Tn);addToMapOfArrays(vn,An,fn[$n])}else if(isArray$1(bn.START_CHARS_HINT)){let Tn;forEach(bn.START_CHARS_HINT,An=>{const On=typeof An=="string"?An.charCodeAt(0):An,Bn=charCodeToOptimizedIndex(On);Tn!==Bn&&(Tn=Bn,addToMapOfArrays(vn,Bn,fn[$n]))})}else if(isRegExp(bn.PATTERN))if(bn.PATTERN.unicode)gn=!1,et.ensureOptimizations&&PRINT_ERROR(`${failedOptimizationPrefixMsg} Unable to analyze < ${bn.PATTERN.toString()} > pattern.
|
|
42
|
-
The regexp unicode flag is not currently supported by the regexp-to-ast library.
|
|
43
|
-
This will disable the lexer's first char optimizations.
|
|
44
|
-
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const Tn=getOptimizedStartCodesIndices(bn.PATTERN,et.ensureOptimizations);isEmpty$1(Tn)&&(gn=!1),forEach(Tn,An=>{addToMapOfArrays(vn,An,fn[$n])})}else et.ensureOptimizations&&PRINT_ERROR(`${failedOptimizationPrefixMsg} TokenType: <${bn.name}> is using a custom token pattern without providing <start_chars_hint> parameter.
|
|
45
|
-
This will disable the lexer's first char optimizations.
|
|
46
|
-
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),gn=!1;return vn},[])}),{emptyGroups:ln,patternIdxToConfig:fn,charCodeToPatternIdxToConfig:pn,hasCustom:st,canBeOptimized:gn}}function validatePatterns(tt,et){let nt=[];const rt=findMissingPatterns(tt);nt=nt.concat(rt.errors);const st=findInvalidPatterns(rt.valid),ot=st.valid;return nt=nt.concat(st.errors),nt=nt.concat(validateRegExpPattern(ot)),nt=nt.concat(findInvalidGroupType(ot)),nt=nt.concat(findModesThatDoNotExist(ot,et)),nt=nt.concat(findUnreachablePatterns(ot)),nt}function validateRegExpPattern(tt){let et=[];const nt=filter(tt,rt=>isRegExp(rt[PATTERN]));return et=et.concat(findEndOfInputAnchor(nt)),et=et.concat(findStartOfInputAnchor(nt)),et=et.concat(findUnsupportedFlags(nt)),et=et.concat(findDuplicatePatterns(nt)),et=et.concat(findEmptyMatchRegExps(nt)),et}function findMissingPatterns(tt){const et=filter(tt,st=>!has(st,PATTERN)),nt=map$1(et,st=>({message:"Token Type: ->"+st.name+"<- missing static 'PATTERN' property",type:LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[st]})),rt=difference(tt,et);return{errors:nt,valid:rt}}function findInvalidPatterns(tt){const et=filter(tt,st=>{const ot=st[PATTERN];return!isRegExp(ot)&&!isFunction(ot)&&!has(ot,"exec")&&!isString(ot)}),nt=map$1(et,st=>({message:"Token Type: ->"+st.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[st]})),rt=difference(tt,et);return{errors:nt,valid:rt}}const end_of_input=/[^\\][$]/;function findEndOfInputAnchor(tt){class et extends BaseRegExpVisitor{constructor(){super(...arguments),this.found=!1}visitEndAnchor(ot){this.found=!0}}const nt=filter(tt,st=>{const ot=st.PATTERN;try{const en=getRegExpAst(ot),tn=new et;return tn.visit(en),tn.found}catch{return end_of_input.test(ot.source)}});return map$1(nt,st=>({message:`Unexpected RegExp Anchor Error:
|
|
47
|
-
Token Type: ->`+st.name+`<- static 'PATTERN' cannot contain end of input anchor '$'
|
|
48
|
-
See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[st]}))}function findEmptyMatchRegExps(tt){const et=filter(tt,rt=>rt.PATTERN.test(""));return map$1(et,rt=>({message:"Token Type: ->"+rt.name+"<- static 'PATTERN' must not match an empty string",type:LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[rt]}))}const start_of_input=/[^\\[][\^]|^\^/;function findStartOfInputAnchor(tt){class et extends BaseRegExpVisitor{constructor(){super(...arguments),this.found=!1}visitStartAnchor(ot){this.found=!0}}const nt=filter(tt,st=>{const ot=st.PATTERN;try{const en=getRegExpAst(ot),tn=new et;return tn.visit(en),tn.found}catch{return start_of_input.test(ot.source)}});return map$1(nt,st=>({message:`Unexpected RegExp Anchor Error:
|
|
49
|
-
Token Type: ->`+st.name+`<- static 'PATTERN' cannot contain start of input anchor '^'
|
|
50
|
-
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[st]}))}function findUnsupportedFlags(tt){const et=filter(tt,rt=>{const st=rt[PATTERN];return st instanceof RegExp&&(st.multiline||st.global)});return map$1(et,rt=>({message:"Token Type: ->"+rt.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[rt]}))}function findDuplicatePatterns(tt){const et=[];let nt=map$1(tt,ot=>reduce(tt,(en,tn)=>(ot.PATTERN.source===tn.PATTERN.source&&!includes(et,tn)&&tn.PATTERN!==Lexer.NA&&(et.push(tn),en.push(tn)),en),[]));nt=compact(nt);const rt=filter(nt,ot=>ot.length>1);return map$1(rt,ot=>{const en=map$1(ot,nn=>nn.name);return{message:`The same RegExp pattern ->${head(ot).PATTERN}<-has been used in all of the following Token Types: ${en.join(", ")} <-`,type:LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:ot}})}function findInvalidGroupType(tt){const et=filter(tt,rt=>{if(!has(rt,"GROUP"))return!1;const st=rt.GROUP;return st!==Lexer.SKIPPED&&st!==Lexer.NA&&!isString(st)});return map$1(et,rt=>({message:"Token Type: ->"+rt.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[rt]}))}function findModesThatDoNotExist(tt,et){const nt=filter(tt,st=>st.PUSH_MODE!==void 0&&!includes(et,st.PUSH_MODE));return map$1(nt,st=>({message:`Token Type: ->${st.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${st.PUSH_MODE}<-which does not exist`,type:LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[st]}))}function findUnreachablePatterns(tt){const et=[],nt=reduce(tt,(rt,st,ot)=>{const en=st.PATTERN;return en===Lexer.NA||(isString(en)?rt.push({str:en,idx:ot,tokenType:st}):isRegExp(en)&&noMetaChar(en)&&rt.push({str:en.source,idx:ot,tokenType:st})),rt},[]);return forEach(tt,(rt,st)=>{forEach(nt,({str:ot,idx:en,tokenType:tn})=>{if(st<en&&testTokenType(ot,rt.PATTERN)){const nn=`Token: ->${tn.name}<- can never be matched.
|
|
51
|
-
Because it appears AFTER the Token Type ->${rt.name}<-in the lexer's definition.
|
|
52
|
-
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;et.push({message:nn,type:LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[rt,tn]})}})}),et}function testTokenType(tt,et){if(isRegExp(et)){const nt=et.exec(tt);return nt!==null&&nt.index===0}else{if(isFunction(et))return et(tt,0,[],{});if(has(et,"exec"))return et.exec(tt,0,[],{});if(typeof et=="string")return et===tt;throw Error("non exhaustive match")}}function noMetaChar(tt){return find([".","\\","[","]","|","^","$","(",")","?","*","+","{"],nt=>tt.source.indexOf(nt)!==-1)===void 0}function addStartOfInput(tt){const et=tt.ignoreCase?"i":"";return new RegExp(`^(?:${tt.source})`,et)}function addStickyFlag(tt){const et=tt.ignoreCase?"iy":"y";return new RegExp(`${tt.source}`,et)}function performRuntimeChecks(tt,et,nt){const rt=[];return has(tt,DEFAULT_MODE)||rt.push({message:"A MultiMode Lexer cannot be initialized without a <"+DEFAULT_MODE+`> property in its definition
|
|
53
|
-
`,type:LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),has(tt,MODES)||rt.push({message:"A MultiMode Lexer cannot be initialized without a <"+MODES+`> property in its definition
|
|
54
|
-
`,type:LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),has(tt,MODES)&&has(tt,DEFAULT_MODE)&&!has(tt.modes,tt.defaultMode)&&rt.push({message:`A MultiMode Lexer cannot be initialized with a ${DEFAULT_MODE}: <${tt.defaultMode}>which does not exist
|
|
55
|
-
`,type:LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),has(tt,MODES)&&forEach(tt.modes,(st,ot)=>{forEach(st,(en,tn)=>{if(isUndefined(en))rt.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${ot}> at index: <${tn}>
|
|
56
|
-
`,type:LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(has(en,"LONGER_ALT")){const nn=isArray$1(en.LONGER_ALT)?en.LONGER_ALT:[en.LONGER_ALT];forEach(nn,rn=>{!isUndefined(rn)&&!includes(st,rn)&&rt.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${rn.name}> on token <${en.name}> outside of mode <${ot}>
|
|
57
|
-
`,type:LexerDefinitionErrorType.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),rt}function performWarningRuntimeChecks(tt,et,nt){const rt=[];let st=!1;const ot=compact(flatten(values(tt.modes))),en=reject(ot,nn=>nn[PATTERN]===Lexer.NA),tn=getCharCodes(nt);return et&&forEach(en,nn=>{const rn=checkLineBreaksIssues(nn,tn);if(rn!==!1){const an={message:buildLineBreakIssueMessage(nn,rn),type:rn.issue,tokenType:nn};rt.push(an)}else has(nn,"LINE_BREAKS")?nn.LINE_BREAKS===!0&&(st=!0):canMatchCharCode(tn,nn.PATTERN)&&(st=!0)}),et&&!st&&rt.push({message:`Warning: No LINE_BREAKS Found.
|
|
58
|
-
This Lexer has been defined to track line and column information,
|
|
59
|
-
But none of the Token Types can be identified as matching a line terminator.
|
|
60
|
-
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS
|
|
61
|
-
for details.`,type:LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),rt}function cloneEmptyGroups(tt){const et={},nt=keys$1(tt);return forEach(nt,rt=>{const st=tt[rt];if(isArray$1(st))et[rt]=[];else throw Error("non exhaustive match")}),et}function isCustomPattern(tt){const et=tt.PATTERN;if(isRegExp(et))return!1;if(isFunction(et))return!0;if(has(et,"exec"))return!0;if(isString(et))return!1;throw Error("non exhaustive match")}function isShortPattern(tt){return isString(tt)&&tt.length===1?tt.charCodeAt(0):!1}const LineTerminatorOptimizedTester={test:function(tt){const et=tt.length;for(let nt=this.lastIndex;nt<et;nt++){const rt=tt.charCodeAt(nt);if(rt===10)return this.lastIndex=nt+1,!0;if(rt===13)return tt.charCodeAt(nt+1)===10?this.lastIndex=nt+2:this.lastIndex=nt+1,!0}return!1},lastIndex:0};function checkLineBreaksIssues(tt,et){if(has(tt,"LINE_BREAKS"))return!1;if(isRegExp(tt.PATTERN)){try{canMatchCharCode(et,tt.PATTERN)}catch(nt){return{issue:LexerDefinitionErrorType.IDENTIFY_TERMINATOR,errMsg:nt.message}}return!1}else{if(isString(tt.PATTERN))return!1;if(isCustomPattern(tt))return{issue:LexerDefinitionErrorType.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function buildLineBreakIssueMessage(tt,et){if(et.issue===LexerDefinitionErrorType.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.
|
|
62
|
-
The problem is in the <${tt.name}> Token Type
|
|
63
|
-
Root cause: ${et.errMsg}.
|
|
64
|
-
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(et.issue===LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.
|
|
65
|
-
The problem is in the <${tt.name}> Token Type
|
|
66
|
-
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function getCharCodes(tt){return map$1(tt,nt=>isString(nt)?nt.charCodeAt(0):nt)}function addToMapOfArrays(tt,et,nt){tt[et]===void 0?tt[et]=[nt]:tt[et].push(nt)}const minOptimizationVal=256;let charCodeToOptimizedIdxMap=[];function charCodeToOptimizedIndex(tt){return tt<minOptimizationVal?tt:charCodeToOptimizedIdxMap[tt]}function initCharCodeToOptimizedIndexMap(){if(isEmpty$1(charCodeToOptimizedIdxMap)){charCodeToOptimizedIdxMap=new Array(65536);for(let tt=0;tt<65536;tt++)charCodeToOptimizedIdxMap[tt]=tt>255?255+~~(tt/255):tt}}function tokenStructuredMatcher(tt,et){const nt=tt.tokenTypeIdx;return nt===et.tokenTypeIdx?!0:et.isParent===!0&&et.categoryMatchesMap[nt]===!0}function tokenStructuredMatcherNoCategories(tt,et){return tt.tokenTypeIdx===et.tokenTypeIdx}let tokenShortNameIdx=1;const tokenIdxToClass={};function augmentTokenTypes(tt){const et=expandCategories(tt);assignTokenDefaultProps(et),assignCategoriesMapProp(et),assignCategoriesTokensProp(et),forEach(et,nt=>{nt.isParent=nt.categoryMatches.length>0})}function expandCategories(tt){let et=clone(tt),nt=tt,rt=!0;for(;rt;){nt=compact(flatten(map$1(nt,ot=>ot.CATEGORIES)));const st=difference(nt,et);et=et.concat(st),isEmpty$1(st)?rt=!1:nt=st}return et}function assignTokenDefaultProps(tt){forEach(tt,et=>{hasShortKeyProperty(et)||(tokenIdxToClass[tokenShortNameIdx]=et,et.tokenTypeIdx=tokenShortNameIdx++),hasCategoriesProperty(et)&&!isArray$1(et.CATEGORIES)&&(et.CATEGORIES=[et.CATEGORIES]),hasCategoriesProperty(et)||(et.CATEGORIES=[]),hasExtendingTokensTypesProperty(et)||(et.categoryMatches=[]),hasExtendingTokensTypesMapProperty(et)||(et.categoryMatchesMap={})})}function assignCategoriesTokensProp(tt){forEach(tt,et=>{et.categoryMatches=[],forEach(et.categoryMatchesMap,(nt,rt)=>{et.categoryMatches.push(tokenIdxToClass[rt].tokenTypeIdx)})})}function assignCategoriesMapProp(tt){forEach(tt,et=>{singleAssignCategoriesToksMap([],et)})}function singleAssignCategoriesToksMap(tt,et){forEach(tt,nt=>{et.categoryMatchesMap[nt.tokenTypeIdx]=!0}),forEach(et.CATEGORIES,nt=>{const rt=tt.concat(et);includes(rt,nt)||singleAssignCategoriesToksMap(rt,nt)})}function hasShortKeyProperty(tt){return has(tt,"tokenTypeIdx")}function hasCategoriesProperty(tt){return has(tt,"CATEGORIES")}function hasExtendingTokensTypesProperty(tt){return has(tt,"categoryMatches")}function hasExtendingTokensTypesMapProperty(tt){return has(tt,"categoryMatchesMap")}function isTokenType(tt){return has(tt,"tokenTypeIdx")}const defaultLexerErrorProvider={buildUnableToPopLexerModeMessage(tt){return`Unable to pop Lexer Mode after encountering Token ->${tt.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(tt,et,nt,rt,st){return`unexpected character: ->${tt.charAt(et)}<- at offset: ${et}, skipped ${nt} characters.`}};var LexerDefinitionErrorType;(function(tt){tt[tt.MISSING_PATTERN=0]="MISSING_PATTERN",tt[tt.INVALID_PATTERN=1]="INVALID_PATTERN",tt[tt.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",tt[tt.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",tt[tt.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",tt[tt.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",tt[tt.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",tt[tt.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",tt[tt.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",tt[tt.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",tt[tt.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",tt[tt.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",tt[tt.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",tt[tt.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",tt[tt.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",tt[tt.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",tt[tt.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",tt[tt.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(LexerDefinitionErrorType||(LexerDefinitionErrorType={}));const DEFAULT_LEXER_CONFIG={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[`
|
|
67
|
-
`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(DEFAULT_LEXER_CONFIG);class Lexer{constructor(et,nt=DEFAULT_LEXER_CONFIG){if(this.lexerDefinition=et,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(st,ot)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;const en=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${en}--> <${st}>`);const{time:tn,value:nn}=timer(ot),rn=tn>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&rn(`${en}<-- <${st}> time: ${tn}ms`),this.traceInitIndent--,nn}else return ot()},typeof nt=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
|
|
68
|
-
a boolean 2nd argument is no longer supported`);this.config=assign$2({},DEFAULT_LEXER_CONFIG,nt);const rt=this.config.traceInitPerf;rt===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof rt=="number"&&(this.traceInitMaxIdent=rt,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let st,ot=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===DEFAULT_LEXER_CONFIG.lineTerminatorsPattern)this.config.lineTerminatorsPattern=LineTerminatorOptimizedTester;else if(this.config.lineTerminatorCharacters===DEFAULT_LEXER_CONFIG.lineTerminatorCharacters)throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.
|
|
69
|
-
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(nt.safeMode&&nt.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),isArray$1(et)?st={modes:{defaultMode:clone(et)},defaultMode:DEFAULT_MODE}:(ot=!1,st=clone(et))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(performRuntimeChecks(st,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(st,this.trackStartLines,this.config.lineTerminatorCharacters))})),st.modes=st.modes?st.modes:{},forEach(st.modes,(tn,nn)=>{st.modes[nn]=reject(tn,rn=>isUndefined(rn))});const en=keys$1(st.modes);if(forEach(st.modes,(tn,nn)=>{this.TRACE_INIT(`Mode: <${nn}> processing`,()=>{if(this.modes.push(nn),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(validatePatterns(tn,en))}),isEmpty$1(this.lexerDefinitionErrors)){augmentTokenTypes(tn);let rn;this.TRACE_INIT("analyzeTokenTypes",()=>{rn=analyzeTokenTypes(tn,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:nt.positionTracking,ensureOptimizations:nt.ensureOptimizations,safeMode:nt.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[nn]=rn.patternIdxToConfig,this.charCodeToPatternIdxToConfig[nn]=rn.charCodeToPatternIdxToConfig,this.emptyGroups=assign$2({},this.emptyGroups,rn.emptyGroups),this.hasCustom=rn.hasCustom||this.hasCustom,this.canModeBeOptimized[nn]=rn.canBeOptimized}})}),this.defaultMode=st.defaultMode,!isEmpty$1(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const nn=map$1(this.lexerDefinitionErrors,rn=>rn.message).join(`-----------------------
|
|
70
|
-
`);throw new Error(`Errors detected in definition of Lexer:
|
|
71
|
-
`+nn)}forEach(this.lexerDefinitionWarning,tn=>{PRINT_WARNING(tn.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(SUPPORT_STICKY?(this.chopInput=identity,this.match=this.matchWithTest):(this.updateLastIndex=noop,this.match=this.matchWithExec),ot&&(this.handleModes=noop),this.trackStartLines===!1&&(this.computeNewColumn=identity),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=noop),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{const tn=reduce(this.canModeBeOptimized,(nn,rn,sn)=>(rn===!1&&nn.push(sn),nn),[]);if(nt.ensureOptimizations&&!isEmpty$1(tn))throw Error(`Lexer Modes: < ${tn.join(", ")} > cannot be optimized.
|
|
72
|
-
Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.
|
|
73
|
-
Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{clearRegExpParserCache()}),this.TRACE_INIT("toFastProperties",()=>{toFastProperties(this)})})}tokenize(et,nt=this.defaultMode){if(!isEmpty$1(this.lexerDefinitionErrors)){const st=map$1(this.lexerDefinitionErrors,ot=>ot.message).join(`-----------------------
|
|
74
|
-
`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer:
|
|
75
|
-
`+st)}return this.tokenizeInternal(et,nt)}tokenizeInternal(et,nt){let rt,st,ot,en,tn,nn,rn,sn,an,on,cn,ln,fn,gn,pn;const vn=et,bn=vn.length;let $n=0,Tn=0;const An=this.hasCustom?0:Math.floor(et.length/10),On=new Array(An),Bn=[];let Un=this.trackStartLines?1:void 0,Yn=this.trackStartLines?1:void 0;const xn=cloneEmptyGroups(this.emptyGroups),Rn=this.trackStartLines,yn=this.config.lineTerminatorsPattern;let Cn=0,Fn=[],Mn=[];const zn=[],wr=[];Object.freeze(wr);let Hn;function kn(){return Fn}function pr(Tr){const Jn=charCodeToOptimizedIndex(Tr),yr=Mn[Jn];return yr===void 0?wr:yr}const br=Tr=>{if(zn.length===1&&Tr.tokenType.PUSH_MODE===void 0){const Jn=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(Tr);Bn.push({offset:Tr.startOffset,line:Tr.startLine,column:Tr.startColumn,length:Tr.image.length,message:Jn})}else{zn.pop();const Jn=last(zn);Fn=this.patternIdxToConfig[Jn],Mn=this.charCodeToPatternIdxToConfig[Jn],Cn=Fn.length;const yr=this.canModeBeOptimized[Jn]&&this.config.safeMode===!1;Mn&&yr?Hn=pr:Hn=kn}};function Ir(Tr){zn.push(Tr),Mn=this.charCodeToPatternIdxToConfig[Tr],Fn=this.patternIdxToConfig[Tr],Cn=Fn.length,Cn=Fn.length;const Jn=this.canModeBeOptimized[Tr]&&this.config.safeMode===!1;Mn&&Jn?Hn=pr:Hn=kn}Ir.call(this,nt);let Ln;const qn=this.config.recoveryEnabled;for(;$n<bn;){nn=null;const Tr=vn.charCodeAt($n),Jn=Hn(Tr),yr=Jn.length;for(rt=0;rt<yr;rt++){Ln=Jn[rt];const Rr=Ln.pattern;rn=null;const Qn=Ln.short;if(Qn!==!1?Tr===Qn&&(nn=Rr):Ln.isCustom===!0?(pn=Rr.exec(vn,$n,On,xn),pn!==null?(nn=pn[0],pn.payload!==void 0&&(rn=pn.payload)):nn=null):(this.updateLastIndex(Rr,$n),nn=this.match(Rr,et,$n)),nn!==null){if(tn=Ln.longerAlt,tn!==void 0){const _n=tn.length;for(ot=0;ot<_n;ot++){const Nn=Fn[tn[ot]],fr=Nn.pattern;if(sn=null,Nn.isCustom===!0?(pn=fr.exec(vn,$n,On,xn),pn!==null?(en=pn[0],pn.payload!==void 0&&(sn=pn.payload)):en=null):(this.updateLastIndex(fr,$n),en=this.match(fr,et,$n)),en&&en.length>nn.length){nn=en,rn=sn,Ln=Nn;break}}}break}}if(nn!==null){if(an=nn.length,on=Ln.group,on!==void 0&&(cn=Ln.tokenTypeIdx,ln=this.createTokenInstance(nn,$n,cn,Ln.tokenType,Un,Yn,an),this.handlePayload(ln,rn),on===!1?Tn=this.addToken(On,Tn,ln):xn[on].push(ln)),et=this.chopInput(et,an),$n=$n+an,Yn=this.computeNewColumn(Yn,an),Rn===!0&&Ln.canLineTerminator===!0){let Rr=0,Qn,_n;yn.lastIndex=0;do Qn=yn.test(nn),Qn===!0&&(_n=yn.lastIndex-1,Rr++);while(Qn===!0);Rr!==0&&(Un=Un+Rr,Yn=an-_n,this.updateTokenEndLineColumnLocation(ln,on,_n,Rr,Un,Yn,an))}this.handleModes(Ln,br,Ir,ln)}else{const Rr=$n,Qn=Un,_n=Yn;let Nn=qn===!1;for(;Nn===!1&&$n<bn;)for(et=this.chopInput(et,1),$n++,st=0;st<Cn;st++){const fr=Fn[st],Dn=fr.pattern,Zn=fr.short;if(Zn!==!1?vn.charCodeAt($n)===Zn&&(Nn=!0):fr.isCustom===!0?Nn=Dn.exec(vn,$n,On,xn)!==null:(this.updateLastIndex(Dn,$n),Nn=Dn.exec(et)!==null),Nn===!0)break}if(fn=$n-Rr,Yn=this.computeNewColumn(Yn,fn),gn=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(vn,Rr,fn,Qn,_n),Bn.push({offset:Rr,line:Qn,column:_n,length:fn,message:gn}),qn===!1)break}}return this.hasCustom||(On.length=Tn),{tokens:On,groups:xn,errors:Bn}}handleModes(et,nt,rt,st){if(et.pop===!0){const ot=et.push;nt(st),ot!==void 0&&rt.call(this,ot)}else et.push!==void 0&&rt.call(this,et.push)}chopInput(et,nt){return et.substring(nt)}updateLastIndex(et,nt){et.lastIndex=nt}updateTokenEndLineColumnLocation(et,nt,rt,st,ot,en,tn){let nn,rn;nt!==void 0&&(nn=rt===tn-1,rn=nn?-1:0,st===1&&nn===!0||(et.endLine=ot+rn,et.endColumn=en-1+-rn))}computeNewColumn(et,nt){return et+nt}createOffsetOnlyToken(et,nt,rt,st){return{image:et,startOffset:nt,tokenTypeIdx:rt,tokenType:st}}createStartOnlyToken(et,nt,rt,st,ot,en){return{image:et,startOffset:nt,startLine:ot,startColumn:en,tokenTypeIdx:rt,tokenType:st}}createFullToken(et,nt,rt,st,ot,en,tn){return{image:et,startOffset:nt,endOffset:nt+tn-1,startLine:ot,endLine:ot,startColumn:en,endColumn:en+tn-1,tokenTypeIdx:rt,tokenType:st}}addTokenUsingPush(et,nt,rt){return et.push(rt),nt}addTokenUsingMemberAccess(et,nt,rt){return et[nt]=rt,nt++,nt}handlePayloadNoCustom(et,nt){}handlePayloadWithCustom(et,nt){nt!==null&&(et.payload=nt)}matchWithTest(et,nt,rt){return et.test(nt)===!0?nt.substring(rt,et.lastIndex):null}matchWithExec(et,nt){const rt=et.exec(nt);return rt!==null?rt[0]:null}}Lexer.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",Lexer.NA=/NOT_APPLICABLE/;function tokenLabel(tt){return hasTokenLabel(tt)?tt.LABEL:tt.name}function hasTokenLabel(tt){return isString(tt.LABEL)&&tt.LABEL!==""}const PARENT="parent",CATEGORIES="categories",LABEL="label",GROUP="group",PUSH_MODE="push_mode",POP_MODE="pop_mode",LONGER_ALT="longer_alt",LINE_BREAKS="line_breaks",START_CHARS_HINT="start_chars_hint";function createToken(tt){return createTokenInternal(tt)}function createTokenInternal(tt){const et=tt.pattern,nt={};if(nt.name=tt.name,isUndefined(et)||(nt.PATTERN=et),has(tt,PARENT))throw`The parent property is no longer supported.
|
|
76
|
-
See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return has(tt,CATEGORIES)&&(nt.CATEGORIES=tt[CATEGORIES]),augmentTokenTypes([nt]),has(tt,LABEL)&&(nt.LABEL=tt[LABEL]),has(tt,GROUP)&&(nt.GROUP=tt[GROUP]),has(tt,POP_MODE)&&(nt.POP_MODE=tt[POP_MODE]),has(tt,PUSH_MODE)&&(nt.PUSH_MODE=tt[PUSH_MODE]),has(tt,LONGER_ALT)&&(nt.LONGER_ALT=tt[LONGER_ALT]),has(tt,LINE_BREAKS)&&(nt.LINE_BREAKS=tt[LINE_BREAKS]),has(tt,START_CHARS_HINT)&&(nt.START_CHARS_HINT=tt[START_CHARS_HINT]),nt}const EOF=createToken({name:"EOF",pattern:Lexer.NA});augmentTokenTypes([EOF]);function createTokenInstance(tt,et,nt,rt,st,ot,en,tn){return{image:et,startOffset:nt,endOffset:rt,startLine:st,endLine:ot,startColumn:en,endColumn:tn,tokenTypeIdx:tt.tokenTypeIdx,tokenType:tt}}function tokenMatcher(tt,et){return tokenStructuredMatcher(tt,et)}const defaultParserErrorProvider={buildMismatchTokenMessage({expected:tt,actual:et,previous:nt,ruleName:rt}){return`Expecting ${hasTokenLabel(tt)?`--> ${tokenLabel(tt)} <--`:`token of type --> ${tt.name} <--`} but found --> '${et.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:tt,ruleName:et}){return"Redundant input, expecting EOF but found: "+tt.image},buildNoViableAltMessage({expectedPathsPerAlt:tt,actual:et,previous:nt,customUserDescription:rt,ruleName:st}){const ot="Expecting: ",tn=`
|
|
77
|
-
but found: '`+head(et).image+"'";if(rt)return ot+rt+tn;{const nn=reduce(tt,(on,cn)=>on.concat(cn),[]),rn=map$1(nn,on=>`[${map$1(on,cn=>tokenLabel(cn)).join(", ")}]`),an=`one of these possible Token sequences:
|
|
78
|
-
${map$1(rn,(on,cn)=>` ${cn+1}. ${on}`).join(`
|
|
79
|
-
`)}`;return ot+an+tn}},buildEarlyExitMessage({expectedIterationPaths:tt,actual:et,customUserDescription:nt,ruleName:rt}){const st="Expecting: ",en=`
|
|
80
|
-
but found: '`+head(et).image+"'";if(nt)return st+nt+en;{const nn=`expecting at least one iteration which starts with one of these possible Token sequences::
|
|
81
|
-
<${map$1(tt,rn=>`[${map$1(rn,sn=>tokenLabel(sn)).join(",")}]`).join(" ,")}>`;return st+nn+en}}};Object.freeze(defaultParserErrorProvider);const defaultGrammarResolverErrorProvider={buildRuleNotFoundError(tt,et){return"Invalid grammar, reference to a rule which is not defined: ->"+et.nonTerminalName+`<-
|
|
82
|
-
inside top level rule: ->`+tt.name+"<-"}},defaultGrammarValidatorErrorProvider={buildDuplicateFoundError(tt,et){function nt(sn){return sn instanceof Terminal?sn.terminalType.name:sn instanceof NonTerminal?sn.nonTerminalName:""}const rt=tt.name,st=head(et),ot=st.idx,en=getProductionDslName$1(st),tn=nt(st),nn=ot>0;let rn=`->${en}${nn?ot:""}<- ${tn?`with argument: ->${tn}<-`:""}
|
|
83
|
-
appears more than once (${et.length} times) in the top level rule: ->${rt}<-.
|
|
84
|
-
For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES
|
|
85
|
-
`;return rn=rn.replace(/[ \t]+/g," "),rn=rn.replace(/\s\s+/g,`
|
|
86
|
-
`),rn},buildNamespaceConflictError(tt){return`Namespace conflict found in grammar.
|
|
87
|
-
The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${tt.name}>.
|
|
88
|
-
To resolve this make sure each Terminal and Non-Terminal names are unique
|
|
89
|
-
This is easy to accomplish by using the convention that Terminal names start with an uppercase letter
|
|
90
|
-
and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(tt){const et=map$1(tt.prefixPath,st=>tokenLabel(st)).join(", "),nt=tt.alternation.idx===0?"":tt.alternation.idx;return`Ambiguous alternatives: <${tt.ambiguityIndices.join(" ,")}> due to common lookahead prefix
|
|
91
|
-
in <OR${nt}> inside <${tt.topLevelRule.name}> Rule,
|
|
92
|
-
<${et}> may appears as a prefix path in all these alternatives.
|
|
93
|
-
See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX
|
|
94
|
-
For Further details.`},buildAlternationAmbiguityError(tt){const et=map$1(tt.prefixPath,st=>tokenLabel(st)).join(", "),nt=tt.alternation.idx===0?"":tt.alternation.idx;let rt=`Ambiguous Alternatives Detected: <${tt.ambiguityIndices.join(" ,")}> in <OR${nt}> inside <${tt.topLevelRule.name}> Rule,
|
|
95
|
-
<${et}> may appears as a prefix path in all these alternatives.
|
|
96
|
-
`;return rt=rt+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
|
|
97
|
-
For Further details.`,rt},buildEmptyRepetitionError(tt){let et=getProductionDslName$1(tt.repetition);return tt.repetition.idx!==0&&(et+=tt.repetition.idx),`The repetition <${et}> within Rule <${tt.topLevelRule.name}> can never consume any tokens.
|
|
98
|
-
This could lead to an infinite loop.`},buildTokenNameError(tt){return"deprecated"},buildEmptyAlternationError(tt){return`Ambiguous empty alternative: <${tt.emptyChoiceIdx+1}> in <OR${tt.alternation.idx}> inside <${tt.topLevelRule.name}> Rule.
|
|
99
|
-
Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(tt){return`An Alternation cannot have more than 256 alternatives:
|
|
100
|
-
<OR${tt.alternation.idx}> inside <${tt.topLevelRule.name}> Rule.
|
|
101
|
-
has ${tt.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(tt){const et=tt.topLevelRule.name,nt=map$1(tt.leftRecursionPath,ot=>ot.name),rt=`${et} --> ${nt.concat([et]).join(" --> ")}`;return`Left Recursion found in grammar.
|
|
102
|
-
rule: <${et}> can be invoked from itself (directly or indirectly)
|
|
103
|
-
without consuming any Tokens. The grammar path that causes this is:
|
|
104
|
-
${rt}
|
|
105
|
-
To fix this refactor your grammar to remove the left recursion.
|
|
106
|
-
see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(tt){return"deprecated"},buildDuplicateRuleNameError(tt){let et;return tt.topLevelRule instanceof Rule?et=tt.topLevelRule.name:et=tt.topLevelRule,`Duplicate definition, rule: ->${et}<- is already defined in the grammar: ->${tt.grammarName}<-`}};function resolveGrammar$1(tt,et){const nt=new GastRefResolverVisitor(tt,et);return nt.resolveRefs(),nt.errors}class GastRefResolverVisitor extends GAstVisitor{constructor(et,nt){super(),this.nameToTopRule=et,this.errMsgProvider=nt,this.errors=[]}resolveRefs(){forEach(values(this.nameToTopRule),et=>{this.currTopLevel=et,et.accept(this)})}visitNonTerminal(et){const nt=this.nameToTopRule[et.nonTerminalName];if(nt)et.referencedRule=nt;else{const rt=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,et);this.errors.push({message:rt,type:ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:et.nonTerminalName})}}}class AbstractNextPossibleTokensWalker extends RestWalker{constructor(et,nt){super(),this.topProd=et,this.path=nt,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=clone(this.path.ruleStack).reverse(),this.occurrenceStack=clone(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(et,nt=[]){this.found||super.walk(et,nt)}walkProdRef(et,nt,rt){if(et.referencedRule.name===this.nextProductionName&&et.idx===this.nextProductionOccurrence){const st=nt.concat(rt);this.updateExpectedNext(),this.walk(et.referencedRule,st)}}updateExpectedNext(){isEmpty$1(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}}class NextAfterTokenWalker extends AbstractNextPossibleTokensWalker{constructor(et,nt){super(et,nt),this.path=nt,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(et,nt,rt){if(this.isAtEndOfPath&&et.terminalType.name===this.nextTerminalName&&et.idx===this.nextTerminalOccurrence&&!this.found){const st=nt.concat(rt),ot=new Alternative({definition:st});this.possibleTokTypes=first(ot),this.found=!0}}}class AbstractNextTerminalAfterProductionWalker extends RestWalker{constructor(et,nt){super(),this.topRule=et,this.occurrence=nt,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}}class NextTerminalAfterManyWalker extends AbstractNextTerminalAfterProductionWalker{walkMany(et,nt,rt){if(et.idx===this.occurrence){const st=head(nt.concat(rt));this.result.isEndOfRule=st===void 0,st instanceof Terminal&&(this.result.token=st.terminalType,this.result.occurrence=st.idx)}else super.walkMany(et,nt,rt)}}class NextTerminalAfterManySepWalker extends AbstractNextTerminalAfterProductionWalker{walkManySep(et,nt,rt){if(et.idx===this.occurrence){const st=head(nt.concat(rt));this.result.isEndOfRule=st===void 0,st instanceof Terminal&&(this.result.token=st.terminalType,this.result.occurrence=st.idx)}else super.walkManySep(et,nt,rt)}}class NextTerminalAfterAtLeastOneWalker extends AbstractNextTerminalAfterProductionWalker{walkAtLeastOne(et,nt,rt){if(et.idx===this.occurrence){const st=head(nt.concat(rt));this.result.isEndOfRule=st===void 0,st instanceof Terminal&&(this.result.token=st.terminalType,this.result.occurrence=st.idx)}else super.walkAtLeastOne(et,nt,rt)}}class NextTerminalAfterAtLeastOneSepWalker extends AbstractNextTerminalAfterProductionWalker{walkAtLeastOneSep(et,nt,rt){if(et.idx===this.occurrence){const st=head(nt.concat(rt));this.result.isEndOfRule=st===void 0,st instanceof Terminal&&(this.result.token=st.terminalType,this.result.occurrence=st.idx)}else super.walkAtLeastOneSep(et,nt,rt)}}function possiblePathsFrom(tt,et,nt=[]){nt=clone(nt);let rt=[],st=0;function ot(tn){return tn.concat(drop(tt,st+1))}function en(tn){const nn=possiblePathsFrom(ot(tn),et,nt);return rt.concat(nn)}for(;nt.length<et&&st<tt.length;){const tn=tt[st];if(tn instanceof Alternative)return en(tn.definition);if(tn instanceof NonTerminal)return en(tn.definition);if(tn instanceof Option)rt=en(tn.definition);else if(tn instanceof RepetitionMandatory){const nn=tn.definition.concat([new Repetition({definition:tn.definition})]);return en(nn)}else if(tn instanceof RepetitionMandatoryWithSeparator){const nn=[new Alternative({definition:tn.definition}),new Repetition({definition:[new Terminal({terminalType:tn.separator})].concat(tn.definition)})];return en(nn)}else if(tn instanceof RepetitionWithSeparator){const nn=tn.definition.concat([new Repetition({definition:[new Terminal({terminalType:tn.separator})].concat(tn.definition)})]);rt=en(nn)}else if(tn instanceof Repetition){const nn=tn.definition.concat([new Repetition({definition:tn.definition})]);rt=en(nn)}else{if(tn instanceof Alternation)return forEach(tn.definition,nn=>{isEmpty$1(nn.definition)===!1&&(rt=en(nn.definition))}),rt;if(tn instanceof Terminal)nt.push(tn.terminalType);else throw Error("non exhaustive match")}st++}return rt.push({partialPath:nt,suffixDef:drop(tt,st)}),rt}function nextPossibleTokensAfter(tt,et,nt,rt){const st="EXIT_NONE_TERMINAL",ot=[st],en="EXIT_ALTERNATIVE";let tn=!1;const nn=et.length,rn=nn-rt-1,sn=[],an=[];for(an.push({idx:-1,def:tt,ruleStack:[],occurrenceStack:[]});!isEmpty$1(an);){const on=an.pop();if(on===en){tn&&last(an).idx<=rn&&an.pop();continue}const cn=on.def,ln=on.idx,fn=on.ruleStack,gn=on.occurrenceStack;if(isEmpty$1(cn))continue;const pn=cn[0];if(pn===st){const vn={idx:ln,def:drop(cn),ruleStack:dropRight(fn),occurrenceStack:dropRight(gn)};an.push(vn)}else if(pn instanceof Terminal)if(ln<nn-1){const vn=ln+1,bn=et[vn];if(nt(bn,pn.terminalType)){const $n={idx:vn,def:drop(cn),ruleStack:fn,occurrenceStack:gn};an.push($n)}}else if(ln===nn-1)sn.push({nextTokenType:pn.terminalType,nextTokenOccurrence:pn.idx,ruleStack:fn,occurrenceStack:gn}),tn=!0;else throw Error("non exhaustive match");else if(pn instanceof NonTerminal){const vn=clone(fn);vn.push(pn.nonTerminalName);const bn=clone(gn);bn.push(pn.idx);const $n={idx:ln,def:pn.definition.concat(ot,drop(cn)),ruleStack:vn,occurrenceStack:bn};an.push($n)}else if(pn instanceof Option){const vn={idx:ln,def:drop(cn),ruleStack:fn,occurrenceStack:gn};an.push(vn),an.push(en);const bn={idx:ln,def:pn.definition.concat(drop(cn)),ruleStack:fn,occurrenceStack:gn};an.push(bn)}else if(pn instanceof RepetitionMandatory){const vn=new Repetition({definition:pn.definition,idx:pn.idx}),bn=pn.definition.concat([vn],drop(cn)),$n={idx:ln,def:bn,ruleStack:fn,occurrenceStack:gn};an.push($n)}else if(pn instanceof RepetitionMandatoryWithSeparator){const vn=new Terminal({terminalType:pn.separator}),bn=new Repetition({definition:[vn].concat(pn.definition),idx:pn.idx}),$n=pn.definition.concat([bn],drop(cn)),Tn={idx:ln,def:$n,ruleStack:fn,occurrenceStack:gn};an.push(Tn)}else if(pn instanceof RepetitionWithSeparator){const vn={idx:ln,def:drop(cn),ruleStack:fn,occurrenceStack:gn};an.push(vn),an.push(en);const bn=new Terminal({terminalType:pn.separator}),$n=new Repetition({definition:[bn].concat(pn.definition),idx:pn.idx}),Tn=pn.definition.concat([$n],drop(cn)),An={idx:ln,def:Tn,ruleStack:fn,occurrenceStack:gn};an.push(An)}else if(pn instanceof Repetition){const vn={idx:ln,def:drop(cn),ruleStack:fn,occurrenceStack:gn};an.push(vn),an.push(en);const bn=new Repetition({definition:pn.definition,idx:pn.idx}),$n=pn.definition.concat([bn],drop(cn)),Tn={idx:ln,def:$n,ruleStack:fn,occurrenceStack:gn};an.push(Tn)}else if(pn instanceof Alternation)for(let vn=pn.definition.length-1;vn>=0;vn--){const bn=pn.definition[vn],$n={idx:ln,def:bn.definition.concat(drop(cn)),ruleStack:fn,occurrenceStack:gn};an.push($n),an.push(en)}else if(pn instanceof Alternative)an.push({idx:ln,def:pn.definition.concat(drop(cn)),ruleStack:fn,occurrenceStack:gn});else if(pn instanceof Rule)an.push(expandTopLevelRule(pn,ln,fn,gn));else throw Error("non exhaustive match")}return sn}function expandTopLevelRule(tt,et,nt,rt){const st=clone(nt);st.push(tt.name);const ot=clone(rt);return ot.push(1),{idx:et,def:tt.definition,ruleStack:st,occurrenceStack:ot}}var PROD_TYPE;(function(tt){tt[tt.OPTION=0]="OPTION",tt[tt.REPETITION=1]="REPETITION",tt[tt.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",tt[tt.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",tt[tt.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",tt[tt.ALTERNATION=5]="ALTERNATION"})(PROD_TYPE||(PROD_TYPE={}));function getProdType$1(tt){if(tt instanceof Option||tt==="Option")return PROD_TYPE.OPTION;if(tt instanceof Repetition||tt==="Repetition")return PROD_TYPE.REPETITION;if(tt instanceof RepetitionMandatory||tt==="RepetitionMandatory")return PROD_TYPE.REPETITION_MANDATORY;if(tt instanceof RepetitionMandatoryWithSeparator||tt==="RepetitionMandatoryWithSeparator")return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR;if(tt instanceof RepetitionWithSeparator||tt==="RepetitionWithSeparator")return PROD_TYPE.REPETITION_WITH_SEPARATOR;if(tt instanceof Alternation||tt==="Alternation")return PROD_TYPE.ALTERNATION;throw Error("non exhaustive match")}function getLookaheadPaths(tt){const{occurrence:et,rule:nt,prodType:rt,maxLookahead:st}=tt,ot=getProdType$1(rt);return ot===PROD_TYPE.ALTERNATION?getLookaheadPathsForOr(et,nt,st):getLookaheadPathsForOptionalProd(et,nt,ot,st)}function buildLookaheadFuncForOr(tt,et,nt,rt,st,ot){const en=getLookaheadPathsForOr(tt,et,nt),tn=areTokenCategoriesNotUsed(en)?tokenStructuredMatcherNoCategories:tokenStructuredMatcher;return ot(en,rt,tn,st)}function buildLookaheadFuncForOptionalProd(tt,et,nt,rt,st,ot){const en=getLookaheadPathsForOptionalProd(tt,et,st,nt),tn=areTokenCategoriesNotUsed(en)?tokenStructuredMatcherNoCategories:tokenStructuredMatcher;return ot(en[0],tn,rt)}function buildAlternativesLookAheadFunc(tt,et,nt,rt){const st=tt.length,ot=every(tt,en=>every(en,tn=>tn.length===1));if(et)return function(en){const tn=map$1(en,nn=>nn.GATE);for(let nn=0;nn<st;nn++){const rn=tt[nn],sn=rn.length,an=tn[nn];if(!(an!==void 0&&an.call(this)===!1))e:for(let on=0;on<sn;on++){const cn=rn[on],ln=cn.length;for(let fn=0;fn<ln;fn++){const gn=this.LA(fn+1);if(nt(gn,cn[fn])===!1)continue e}return nn}}};if(ot&&!rt){const en=map$1(tt,nn=>flatten(nn)),tn=reduce(en,(nn,rn,sn)=>(forEach(rn,an=>{has(nn,an.tokenTypeIdx)||(nn[an.tokenTypeIdx]=sn),forEach(an.categoryMatches,on=>{has(nn,on)||(nn[on]=sn)})}),nn),{});return function(){const nn=this.LA(1);return tn[nn.tokenTypeIdx]}}else return function(){for(let en=0;en<st;en++){const tn=tt[en],nn=tn.length;e:for(let rn=0;rn<nn;rn++){const sn=tn[rn],an=sn.length;for(let on=0;on<an;on++){const cn=this.LA(on+1);if(nt(cn,sn[on])===!1)continue e}return en}}}}function buildSingleAlternativeLookaheadFunction(tt,et,nt){const rt=every(tt,ot=>ot.length===1),st=tt.length;if(rt&&!nt){const ot=flatten(tt);if(ot.length===1&&isEmpty$1(ot[0].categoryMatches)){const tn=ot[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===tn}}else{const en=reduce(ot,(tn,nn,rn)=>(tn[nn.tokenTypeIdx]=!0,forEach(nn.categoryMatches,sn=>{tn[sn]=!0}),tn),[]);return function(){const tn=this.LA(1);return en[tn.tokenTypeIdx]===!0}}}else return function(){e:for(let ot=0;ot<st;ot++){const en=tt[ot],tn=en.length;for(let nn=0;nn<tn;nn++){const rn=this.LA(nn+1);if(et(rn,en[nn])===!1)continue e}return!0}return!1}}class RestDefinitionFinderWalker extends RestWalker{constructor(et,nt,rt){super(),this.topProd=et,this.targetOccurrence=nt,this.targetProdType=rt}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(et,nt,rt,st){return et.idx===this.targetOccurrence&&this.targetProdType===nt?(this.restDef=rt.concat(st),!0):!1}walkOption(et,nt,rt){this.checkIsTarget(et,PROD_TYPE.OPTION,nt,rt)||super.walkOption(et,nt,rt)}walkAtLeastOne(et,nt,rt){this.checkIsTarget(et,PROD_TYPE.REPETITION_MANDATORY,nt,rt)||super.walkOption(et,nt,rt)}walkAtLeastOneSep(et,nt,rt){this.checkIsTarget(et,PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,nt,rt)||super.walkOption(et,nt,rt)}walkMany(et,nt,rt){this.checkIsTarget(et,PROD_TYPE.REPETITION,nt,rt)||super.walkOption(et,nt,rt)}walkManySep(et,nt,rt){this.checkIsTarget(et,PROD_TYPE.REPETITION_WITH_SEPARATOR,nt,rt)||super.walkOption(et,nt,rt)}}class InsideDefinitionFinderVisitor extends GAstVisitor{constructor(et,nt,rt){super(),this.targetOccurrence=et,this.targetProdType=nt,this.targetRef=rt,this.result=[]}checkIsTarget(et,nt){et.idx===this.targetOccurrence&&this.targetProdType===nt&&(this.targetRef===void 0||et===this.targetRef)&&(this.result=et.definition)}visitOption(et){this.checkIsTarget(et,PROD_TYPE.OPTION)}visitRepetition(et){this.checkIsTarget(et,PROD_TYPE.REPETITION)}visitRepetitionMandatory(et){this.checkIsTarget(et,PROD_TYPE.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(et){this.checkIsTarget(et,PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(et){this.checkIsTarget(et,PROD_TYPE.REPETITION_WITH_SEPARATOR)}visitAlternation(et){this.checkIsTarget(et,PROD_TYPE.ALTERNATION)}}function initializeArrayOfArrays(tt){const et=new Array(tt);for(let nt=0;nt<tt;nt++)et[nt]=[];return et}function pathToHashKeys(tt){let et=[""];for(let nt=0;nt<tt.length;nt++){const rt=tt[nt],st=[];for(let ot=0;ot<et.length;ot++){const en=et[ot];st.push(en+"_"+rt.tokenTypeIdx);for(let tn=0;tn<rt.categoryMatches.length;tn++){const nn="_"+rt.categoryMatches[tn];st.push(en+nn)}}et=st}return et}function isUniquePrefixHash(tt,et,nt){for(let rt=0;rt<tt.length;rt++){if(rt===nt)continue;const st=tt[rt];for(let ot=0;ot<et.length;ot++){const en=et[ot];if(st[en]===!0)return!1}}return!0}function lookAheadSequenceFromAlternatives(tt,et){const nt=map$1(tt,en=>possiblePathsFrom([en],1)),rt=initializeArrayOfArrays(nt.length),st=map$1(nt,en=>{const tn={};return forEach(en,nn=>{const rn=pathToHashKeys(nn.partialPath);forEach(rn,sn=>{tn[sn]=!0})}),tn});let ot=nt;for(let en=1;en<=et;en++){const tn=ot;ot=initializeArrayOfArrays(tn.length);for(let nn=0;nn<tn.length;nn++){const rn=tn[nn];for(let sn=0;sn<rn.length;sn++){const an=rn[sn].partialPath,on=rn[sn].suffixDef,cn=pathToHashKeys(an);if(isUniquePrefixHash(st,cn,nn)||isEmpty$1(on)||an.length===et){const fn=rt[nn];if(containsPath(fn,an)===!1){fn.push(an);for(let gn=0;gn<cn.length;gn++){const pn=cn[gn];st[nn][pn]=!0}}}else{const fn=possiblePathsFrom(on,en+1,an);ot[nn]=ot[nn].concat(fn),forEach(fn,gn=>{const pn=pathToHashKeys(gn.partialPath);forEach(pn,vn=>{st[nn][vn]=!0})})}}}}return rt}function getLookaheadPathsForOr(tt,et,nt,rt){const st=new InsideDefinitionFinderVisitor(tt,PROD_TYPE.ALTERNATION,rt);return et.accept(st),lookAheadSequenceFromAlternatives(st.result,nt)}function getLookaheadPathsForOptionalProd(tt,et,nt,rt){const st=new InsideDefinitionFinderVisitor(tt,nt);et.accept(st);const ot=st.result,tn=new RestDefinitionFinderWalker(et,tt,nt).startWalking(),nn=new Alternative({definition:ot}),rn=new Alternative({definition:tn});return lookAheadSequenceFromAlternatives([nn,rn],rt)}function containsPath(tt,et){e:for(let nt=0;nt<tt.length;nt++){const rt=tt[nt];if(rt.length===et.length){for(let st=0;st<rt.length;st++){const ot=et[st],en=rt[st];if((ot===en||en.categoryMatchesMap[ot.tokenTypeIdx]!==void 0)===!1)continue e}return!0}}return!1}function isStrictPrefixOfPath(tt,et){return tt.length<et.length&&every(tt,(nt,rt)=>{const st=et[rt];return nt===st||st.categoryMatchesMap[nt.tokenTypeIdx]})}function areTokenCategoriesNotUsed(tt){return every(tt,et=>every(et,nt=>every(nt,rt=>isEmpty$1(rt.categoryMatches))))}function validateLookahead(tt){const et=tt.lookaheadStrategy.validate({rules:tt.rules,tokenTypes:tt.tokenTypes,grammarName:tt.grammarName});return map$1(et,nt=>Object.assign({type:ParserDefinitionErrorType.CUSTOM_LOOKAHEAD_VALIDATION},nt))}function validateGrammar$1(tt,et,nt,rt){const st=flatMap(tt,nn=>validateDuplicateProductions(nn,nt)),ot=checkTerminalAndNoneTerminalsNameSpace(tt,et,nt),en=flatMap(tt,nn=>validateTooManyAlts(nn,nt)),tn=flatMap(tt,nn=>validateRuleDoesNotAlreadyExist(nn,tt,rt,nt));return st.concat(ot,en,tn)}function validateDuplicateProductions(tt,et){const nt=new OccurrenceValidationCollector;tt.accept(nt);const rt=nt.allProductions,st=groupBy(rt,identifyProductionForDuplicates),ot=pickBy(st,tn=>tn.length>1);return map$1(values(ot),tn=>{const nn=head(tn),rn=et.buildDuplicateFoundError(tt,tn),sn=getProductionDslName$1(nn),an={message:rn,type:ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:tt.name,dslName:sn,occurrence:nn.idx},on=getExtraProductionArgument(nn);return on&&(an.parameter=on),an})}function identifyProductionForDuplicates(tt){return`${getProductionDslName$1(tt)}_#_${tt.idx}_#_${getExtraProductionArgument(tt)}`}function getExtraProductionArgument(tt){return tt instanceof Terminal?tt.terminalType.name:tt instanceof NonTerminal?tt.nonTerminalName:""}class OccurrenceValidationCollector extends GAstVisitor{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(et){this.allProductions.push(et)}visitOption(et){this.allProductions.push(et)}visitRepetitionWithSeparator(et){this.allProductions.push(et)}visitRepetitionMandatory(et){this.allProductions.push(et)}visitRepetitionMandatoryWithSeparator(et){this.allProductions.push(et)}visitRepetition(et){this.allProductions.push(et)}visitAlternation(et){this.allProductions.push(et)}visitTerminal(et){this.allProductions.push(et)}}function validateRuleDoesNotAlreadyExist(tt,et,nt,rt){const st=[];if(reduce(et,(en,tn)=>tn.name===tt.name?en+1:en,0)>1){const en=rt.buildDuplicateRuleNameError({topLevelRule:tt,grammarName:nt});st.push({message:en,type:ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:tt.name})}return st}function validateRuleIsOverridden(tt,et,nt){const rt=[];let st;return includes(et,tt)||(st=`Invalid rule override, rule: ->${tt}<- cannot be overridden in the grammar: ->${nt}<-as it is not defined in any of the super grammars `,rt.push({message:st,type:ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:tt})),rt}function validateNoLeftRecursion(tt,et,nt,rt=[]){const st=[],ot=getFirstNoneTerminal(et.definition);if(isEmpty$1(ot))return[];{const en=tt.name;includes(ot,tt)&&st.push({message:nt.buildLeftRecursionError({topLevelRule:tt,leftRecursionPath:rt}),type:ParserDefinitionErrorType.LEFT_RECURSION,ruleName:en});const nn=difference(ot,rt.concat([tt])),rn=flatMap(nn,sn=>{const an=clone(rt);return an.push(sn),validateNoLeftRecursion(tt,sn,nt,an)});return st.concat(rn)}}function getFirstNoneTerminal(tt){let et=[];if(isEmpty$1(tt))return et;const nt=head(tt);if(nt instanceof NonTerminal)et.push(nt.referencedRule);else if(nt instanceof Alternative||nt instanceof Option||nt instanceof RepetitionMandatory||nt instanceof RepetitionMandatoryWithSeparator||nt instanceof RepetitionWithSeparator||nt instanceof Repetition)et=et.concat(getFirstNoneTerminal(nt.definition));else if(nt instanceof Alternation)et=flatten(map$1(nt.definition,ot=>getFirstNoneTerminal(ot.definition)));else if(!(nt instanceof Terminal))throw Error("non exhaustive match");const rt=isOptionalProd(nt),st=tt.length>1;if(rt&&st){const ot=drop(tt);return et.concat(getFirstNoneTerminal(ot))}else return et}class OrCollector extends GAstVisitor{constructor(){super(...arguments),this.alternations=[]}visitAlternation(et){this.alternations.push(et)}}function validateEmptyOrAlternative(tt,et){const nt=new OrCollector;tt.accept(nt);const rt=nt.alternations;return flatMap(rt,ot=>{const en=dropRight(ot.definition);return flatMap(en,(tn,nn)=>{const rn=nextPossibleTokensAfter([tn],[],tokenStructuredMatcher,1);return isEmpty$1(rn)?[{message:et.buildEmptyAlternationError({topLevelRule:tt,alternation:ot,emptyChoiceIdx:nn}),type:ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:tt.name,occurrence:ot.idx,alternative:nn+1}]:[]})})}function validateAmbiguousAlternationAlternatives(tt,et,nt){const rt=new OrCollector;tt.accept(rt);let st=rt.alternations;return st=reject(st,en=>en.ignoreAmbiguities===!0),flatMap(st,en=>{const tn=en.idx,nn=en.maxLookahead||et,rn=getLookaheadPathsForOr(tn,tt,nn,en),sn=checkAlternativesAmbiguities(rn,en,tt,nt),an=checkPrefixAlternativesAmbiguities(rn,en,tt,nt);return sn.concat(an)})}class RepetitionCollector extends GAstVisitor{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(et){this.allProductions.push(et)}visitRepetitionMandatory(et){this.allProductions.push(et)}visitRepetitionMandatoryWithSeparator(et){this.allProductions.push(et)}visitRepetition(et){this.allProductions.push(et)}}function validateTooManyAlts(tt,et){const nt=new OrCollector;tt.accept(nt);const rt=nt.alternations;return flatMap(rt,ot=>ot.definition.length>255?[{message:et.buildTooManyAlternativesError({topLevelRule:tt,alternation:ot}),type:ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:tt.name,occurrence:ot.idx}]:[])}function validateSomeNonEmptyLookaheadPath(tt,et,nt){const rt=[];return forEach(tt,st=>{const ot=new RepetitionCollector;st.accept(ot);const en=ot.allProductions;forEach(en,tn=>{const nn=getProdType$1(tn),rn=tn.maxLookahead||et,sn=tn.idx,on=getLookaheadPathsForOptionalProd(sn,st,nn,rn)[0];if(isEmpty$1(flatten(on))){const cn=nt.buildEmptyRepetitionError({topLevelRule:st,repetition:tn});rt.push({message:cn,type:ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:st.name})}})}),rt}function checkAlternativesAmbiguities(tt,et,nt,rt){const st=[],ot=reduce(tt,(tn,nn,rn)=>(et.definition[rn].ignoreAmbiguities===!0||forEach(nn,sn=>{const an=[rn];forEach(tt,(on,cn)=>{rn!==cn&&containsPath(on,sn)&&et.definition[cn].ignoreAmbiguities!==!0&&an.push(cn)}),an.length>1&&!containsPath(st,sn)&&(st.push(sn),tn.push({alts:an,path:sn}))}),tn),[]);return map$1(ot,tn=>{const nn=map$1(tn.alts,sn=>sn+1);return{message:rt.buildAlternationAmbiguityError({topLevelRule:nt,alternation:et,ambiguityIndices:nn,prefixPath:tn.path}),type:ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:nt.name,occurrence:et.idx,alternatives:tn.alts}})}function checkPrefixAlternativesAmbiguities(tt,et,nt,rt){const st=reduce(tt,(en,tn,nn)=>{const rn=map$1(tn,sn=>({idx:nn,path:sn}));return en.concat(rn)},[]);return compact(flatMap(st,en=>{if(et.definition[en.idx].ignoreAmbiguities===!0)return[];const nn=en.idx,rn=en.path,sn=filter(st,on=>et.definition[on.idx].ignoreAmbiguities!==!0&&on.idx<nn&&isStrictPrefixOfPath(on.path,rn));return map$1(sn,on=>{const cn=[on.idx+1,nn+1],ln=et.idx===0?"":et.idx;return{message:rt.buildAlternationPrefixAmbiguityError({topLevelRule:nt,alternation:et,ambiguityIndices:cn,prefixPath:on.path}),type:ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,ruleName:nt.name,occurrence:ln,alternatives:cn}})}))}function checkTerminalAndNoneTerminalsNameSpace(tt,et,nt){const rt=[],st=map$1(et,ot=>ot.name);return forEach(tt,ot=>{const en=ot.name;if(includes(st,en)){const tn=nt.buildNamespaceConflictError(ot);rt.push({message:tn,type:ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:en})}}),rt}function resolveGrammar(tt){const et=defaults(tt,{errMsgProvider:defaultGrammarResolverErrorProvider}),nt={};return forEach(tt.rules,rt=>{nt[rt.name]=rt}),resolveGrammar$1(nt,et.errMsgProvider)}function validateGrammar(tt){return tt=defaults(tt,{errMsgProvider:defaultGrammarValidatorErrorProvider}),validateGrammar$1(tt.rules,tt.tokenTypes,tt.errMsgProvider,tt.grammarName)}const MISMATCHED_TOKEN_EXCEPTION="MismatchedTokenException",NO_VIABLE_ALT_EXCEPTION="NoViableAltException",EARLY_EXIT_EXCEPTION="EarlyExitException",NOT_ALL_INPUT_PARSED_EXCEPTION="NotAllInputParsedException",RECOGNITION_EXCEPTION_NAMES=[MISMATCHED_TOKEN_EXCEPTION,NO_VIABLE_ALT_EXCEPTION,EARLY_EXIT_EXCEPTION,NOT_ALL_INPUT_PARSED_EXCEPTION];Object.freeze(RECOGNITION_EXCEPTION_NAMES);function isRecognitionException(tt){return includes(RECOGNITION_EXCEPTION_NAMES,tt.name)}class RecognitionException extends Error{constructor(et,nt){super(et),this.token=nt,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class MismatchedTokenException extends RecognitionException{constructor(et,nt,rt){super(et,nt),this.previousToken=rt,this.name=MISMATCHED_TOKEN_EXCEPTION}}class NoViableAltException extends RecognitionException{constructor(et,nt,rt){super(et,nt),this.previousToken=rt,this.name=NO_VIABLE_ALT_EXCEPTION}}class NotAllInputParsedException extends RecognitionException{constructor(et,nt){super(et,nt),this.name=NOT_ALL_INPUT_PARSED_EXCEPTION}}class EarlyExitException extends RecognitionException{constructor(et,nt,rt){super(et,nt),this.previousToken=rt,this.name=EARLY_EXIT_EXCEPTION}}const EOF_FOLLOW_KEY={},IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";class InRuleRecoveryException extends Error{constructor(et){super(et),this.name=IN_RULE_RECOVERY_EXCEPTION}}class Recoverable{initRecoverable(et){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=has(et,"recoveryEnabled")?et.recoveryEnabled:DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=attemptInRepetitionRecovery)}getTokenToInsert(et){const nt=createTokenInstance(et,"",NaN,NaN,NaN,NaN,NaN,NaN);return nt.isInsertedInRecovery=!0,nt}canTokenTypeBeInsertedInRecovery(et){return!0}canTokenTypeBeDeletedInRecovery(et){return!0}tryInRepetitionRecovery(et,nt,rt,st){const ot=this.findReSyncTokenType(),en=this.exportLexerState(),tn=[];let nn=!1;const rn=this.LA(1);let sn=this.LA(1);const an=()=>{const on=this.LA(0),cn=this.errorMessageProvider.buildMismatchTokenMessage({expected:st,actual:rn,previous:on,ruleName:this.getCurrRuleFullName()}),ln=new MismatchedTokenException(cn,rn,this.LA(0));ln.resyncedTokens=dropRight(tn),this.SAVE_ERROR(ln)};for(;!nn;)if(this.tokenMatcher(sn,st)){an();return}else if(rt.call(this)){an(),et.apply(this,nt);return}else this.tokenMatcher(sn,ot)?nn=!0:(sn=this.SKIP_TOKEN(),this.addToResyncTokens(sn,tn));this.importLexerState(en)}shouldInRepetitionRecoveryBeTried(et,nt,rt){return!(rt===!1||this.tokenMatcher(this.LA(1),et)||this.isBackTracking()||this.canPerformInRuleRecovery(et,this.getFollowsForInRuleRecovery(et,nt)))}getFollowsForInRuleRecovery(et,nt){const rt=this.getCurrentGrammarPath(et,nt);return this.getNextPossibleTokenTypes(rt)}tryInRuleRecovery(et,nt){if(this.canRecoverWithSingleTokenInsertion(et,nt))return this.getTokenToInsert(et);if(this.canRecoverWithSingleTokenDeletion(et)){const rt=this.SKIP_TOKEN();return this.consumeToken(),rt}throw new InRuleRecoveryException("sad sad panda")}canPerformInRuleRecovery(et,nt){return this.canRecoverWithSingleTokenInsertion(et,nt)||this.canRecoverWithSingleTokenDeletion(et)}canRecoverWithSingleTokenInsertion(et,nt){if(!this.canTokenTypeBeInsertedInRecovery(et)||isEmpty$1(nt))return!1;const rt=this.LA(1);return find(nt,ot=>this.tokenMatcher(rt,ot))!==void 0}canRecoverWithSingleTokenDeletion(et){return this.canTokenTypeBeDeletedInRecovery(et)?this.tokenMatcher(this.LA(2),et):!1}isInCurrentRuleReSyncSet(et){const nt=this.getCurrFollowKey(),rt=this.getFollowSetFromFollowKey(nt);return includes(rt,et)}findReSyncTokenType(){const et=this.flattenFollowSet();let nt=this.LA(1),rt=2;for(;;){const st=find(et,ot=>tokenMatcher(nt,ot));if(st!==void 0)return st;nt=this.LA(rt),rt++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return EOF_FOLLOW_KEY;const et=this.getLastExplicitRuleShortName(),nt=this.getLastExplicitRuleOccurrenceIndex(),rt=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(et),idxInCallingRule:nt,inRule:this.shortRuleNameToFullName(rt)}}buildFullFollowKeyStack(){const et=this.RULE_STACK,nt=this.RULE_OCCURRENCE_STACK;return map$1(et,(rt,st)=>st===0?EOF_FOLLOW_KEY:{ruleName:this.shortRuleNameToFullName(rt),idxInCallingRule:nt[st],inRule:this.shortRuleNameToFullName(et[st-1])})}flattenFollowSet(){const et=map$1(this.buildFullFollowKeyStack(),nt=>this.getFollowSetFromFollowKey(nt));return flatten(et)}getFollowSetFromFollowKey(et){if(et===EOF_FOLLOW_KEY)return[EOF];const nt=et.ruleName+et.idxInCallingRule+IN+et.inRule;return this.resyncFollows[nt]}addToResyncTokens(et,nt){return this.tokenMatcher(et,EOF)||nt.push(et),nt}reSyncTo(et){const nt=[];let rt=this.LA(1);for(;this.tokenMatcher(rt,et)===!1;)rt=this.SKIP_TOKEN(),this.addToResyncTokens(rt,nt);return dropRight(nt)}attemptInRepetitionRecovery(et,nt,rt,st,ot,en,tn){}getCurrentGrammarPath(et,nt){const rt=this.getHumanReadableRuleStack(),st=clone(this.RULE_OCCURRENCE_STACK);return{ruleStack:rt,occurrenceStack:st,lastTok:et,lastTokOccurrence:nt}}getHumanReadableRuleStack(){return map$1(this.RULE_STACK,et=>this.shortRuleNameToFullName(et))}}function attemptInRepetitionRecovery(tt,et,nt,rt,st,ot,en){const tn=this.getKeyForAutomaticLookahead(rt,st);let nn=this.firstAfterRepMap[tn];if(nn===void 0){const on=this.getCurrRuleFullName(),cn=this.getGAstProductions()[on];nn=new ot(cn,st).startWalking(),this.firstAfterRepMap[tn]=nn}let rn=nn.token,sn=nn.occurrence;const an=nn.isEndOfRule;this.RULE_STACK.length===1&&an&&rn===void 0&&(rn=EOF,sn=1),!(rn===void 0||sn===void 0)&&this.shouldInRepetitionRecoveryBeTried(rn,sn,en)&&this.tryInRepetitionRecovery(tt,et,nt,rn)}const BITS_FOR_METHOD_TYPE=4,BITS_FOR_OCCURRENCE_IDX=8,OR_IDX=1<<BITS_FOR_OCCURRENCE_IDX,OPTION_IDX=2<<BITS_FOR_OCCURRENCE_IDX,MANY_IDX=3<<BITS_FOR_OCCURRENCE_IDX,AT_LEAST_ONE_IDX=4<<BITS_FOR_OCCURRENCE_IDX,MANY_SEP_IDX=5<<BITS_FOR_OCCURRENCE_IDX,AT_LEAST_ONE_SEP_IDX=6<<BITS_FOR_OCCURRENCE_IDX;function getKeyForAutomaticLookahead(tt,et,nt){return nt|et|tt}class LLkLookaheadStrategy{constructor(et){var nt;this.maxLookahead=(nt=et?.maxLookahead)!==null&&nt!==void 0?nt:DEFAULT_PARSER_CONFIG.maxLookahead}validate(et){const nt=this.validateNoLeftRecursion(et.rules);if(isEmpty$1(nt)){const rt=this.validateEmptyOrAlternatives(et.rules),st=this.validateAmbiguousAlternationAlternatives(et.rules,this.maxLookahead),ot=this.validateSomeNonEmptyLookaheadPath(et.rules,this.maxLookahead);return[...nt,...rt,...st,...ot]}return nt}validateNoLeftRecursion(et){return flatMap(et,nt=>validateNoLeftRecursion(nt,nt,defaultGrammarValidatorErrorProvider))}validateEmptyOrAlternatives(et){return flatMap(et,nt=>validateEmptyOrAlternative(nt,defaultGrammarValidatorErrorProvider))}validateAmbiguousAlternationAlternatives(et,nt){return flatMap(et,rt=>validateAmbiguousAlternationAlternatives(rt,nt,defaultGrammarValidatorErrorProvider))}validateSomeNonEmptyLookaheadPath(et,nt){return validateSomeNonEmptyLookaheadPath(et,nt,defaultGrammarValidatorErrorProvider)}buildLookaheadForAlternation(et){return buildLookaheadFuncForOr(et.prodOccurrence,et.rule,et.maxLookahead,et.hasPredicates,et.dynamicTokensEnabled,buildAlternativesLookAheadFunc)}buildLookaheadForOptional(et){return buildLookaheadFuncForOptionalProd(et.prodOccurrence,et.rule,et.maxLookahead,et.dynamicTokensEnabled,getProdType$1(et.prodType),buildSingleAlternativeLookaheadFunction)}}class LooksAhead{initLooksAhead(et){this.dynamicTokensEnabled=has(et,"dynamicTokensEnabled")?et.dynamicTokensEnabled:DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=has(et,"maxLookahead")?et.maxLookahead:DEFAULT_PARSER_CONFIG.maxLookahead,this.lookaheadStrategy=has(et,"lookaheadStrategy")?et.lookaheadStrategy:new LLkLookaheadStrategy({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(et){forEach(et,nt=>{this.TRACE_INIT(`${nt.name} Rule Lookahead`,()=>{const{alternation:rt,repetition:st,option:ot,repetitionMandatory:en,repetitionMandatoryWithSeparator:tn,repetitionWithSeparator:nn}=collectMethods(nt);forEach(rt,rn=>{const sn=rn.idx===0?"":rn.idx;this.TRACE_INIT(`${getProductionDslName$1(rn)}${sn}`,()=>{const an=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:rn.idx,rule:nt,maxLookahead:rn.maxLookahead||this.maxLookahead,hasPredicates:rn.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),on=getKeyForAutomaticLookahead(this.fullRuleNameToShort[nt.name],OR_IDX,rn.idx);this.setLaFuncCache(on,an)})}),forEach(st,rn=>{this.computeLookaheadFunc(nt,rn.idx,MANY_IDX,"Repetition",rn.maxLookahead,getProductionDslName$1(rn))}),forEach(ot,rn=>{this.computeLookaheadFunc(nt,rn.idx,OPTION_IDX,"Option",rn.maxLookahead,getProductionDslName$1(rn))}),forEach(en,rn=>{this.computeLookaheadFunc(nt,rn.idx,AT_LEAST_ONE_IDX,"RepetitionMandatory",rn.maxLookahead,getProductionDslName$1(rn))}),forEach(tn,rn=>{this.computeLookaheadFunc(nt,rn.idx,AT_LEAST_ONE_SEP_IDX,"RepetitionMandatoryWithSeparator",rn.maxLookahead,getProductionDslName$1(rn))}),forEach(nn,rn=>{this.computeLookaheadFunc(nt,rn.idx,MANY_SEP_IDX,"RepetitionWithSeparator",rn.maxLookahead,getProductionDslName$1(rn))})})})}computeLookaheadFunc(et,nt,rt,st,ot,en){this.TRACE_INIT(`${en}${nt===0?"":nt}`,()=>{const tn=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:nt,rule:et,maxLookahead:ot||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:st}),nn=getKeyForAutomaticLookahead(this.fullRuleNameToShort[et.name],rt,nt);this.setLaFuncCache(nn,tn)})}getKeyForAutomaticLookahead(et,nt){const rt=this.getLastExplicitRuleShortName();return getKeyForAutomaticLookahead(rt,et,nt)}getLaFuncFromCache(et){return this.lookAheadFuncsCache.get(et)}setLaFuncCache(et,nt){this.lookAheadFuncsCache.set(et,nt)}}class DslMethodsCollectorVisitor extends GAstVisitor{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(et){this.dslMethods.option.push(et)}visitRepetitionWithSeparator(et){this.dslMethods.repetitionWithSeparator.push(et)}visitRepetitionMandatory(et){this.dslMethods.repetitionMandatory.push(et)}visitRepetitionMandatoryWithSeparator(et){this.dslMethods.repetitionMandatoryWithSeparator.push(et)}visitRepetition(et){this.dslMethods.repetition.push(et)}visitAlternation(et){this.dslMethods.alternation.push(et)}}const collectorVisitor=new DslMethodsCollectorVisitor;function collectMethods(tt){collectorVisitor.reset(),tt.accept(collectorVisitor);const et=collectorVisitor.dslMethods;return collectorVisitor.reset(),et}function setNodeLocationOnlyOffset(tt,et){isNaN(tt.startOffset)===!0?(tt.startOffset=et.startOffset,tt.endOffset=et.endOffset):tt.endOffset<et.endOffset&&(tt.endOffset=et.endOffset)}function setNodeLocationFull(tt,et){isNaN(tt.startOffset)===!0?(tt.startOffset=et.startOffset,tt.startColumn=et.startColumn,tt.startLine=et.startLine,tt.endOffset=et.endOffset,tt.endColumn=et.endColumn,tt.endLine=et.endLine):tt.endOffset<et.endOffset&&(tt.endOffset=et.endOffset,tt.endColumn=et.endColumn,tt.endLine=et.endLine)}function addTerminalToCst(tt,et,nt){tt.children[nt]===void 0?tt.children[nt]=[et]:tt.children[nt].push(et)}function addNoneTerminalToCst(tt,et,nt){tt.children[et]===void 0?tt.children[et]=[nt]:tt.children[et].push(nt)}const NAME="name";function defineNameProp(tt,et){Object.defineProperty(tt,NAME,{enumerable:!1,configurable:!0,writable:!1,value:et})}function defaultVisit(tt,et){const nt=keys$1(tt),rt=nt.length;for(let st=0;st<rt;st++){const ot=nt[st],en=tt[ot],tn=en.length;for(let nn=0;nn<tn;nn++){const rn=en[nn];rn.tokenTypeIdx===void 0&&this[rn.name](rn.children,et)}}}function createBaseSemanticVisitorConstructor(tt,et){const nt=function(){};defineNameProp(nt,tt+"BaseSemantics");const rt={visit:function(st,ot){if(isArray$1(st)&&(st=st[0]),!isUndefined(st))return this[st.name](st.children,ot)},validateVisitor:function(){const st=validateVisitor(this,et);if(!isEmpty$1(st)){const ot=map$1(st,en=>en.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:
|
|
107
|
-
${ot.join(`
|
|
108
|
-
|
|
109
|
-
`).replace(/\n/g,`
|
|
110
|
-
`)}`)}}};return nt.prototype=rt,nt.prototype.constructor=nt,nt._RULE_NAMES=et,nt}function createBaseVisitorConstructorWithDefaults(tt,et,nt){const rt=function(){};defineNameProp(rt,tt+"BaseSemanticsWithDefaults");const st=Object.create(nt.prototype);return forEach(et,ot=>{st[ot]=defaultVisit}),rt.prototype=st,rt.prototype.constructor=rt,rt}var CstVisitorDefinitionError;(function(tt){tt[tt.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",tt[tt.MISSING_METHOD=1]="MISSING_METHOD"})(CstVisitorDefinitionError||(CstVisitorDefinitionError={}));function validateVisitor(tt,et){return validateMissingCstMethods(tt,et)}function validateMissingCstMethods(tt,et){const nt=filter(et,st=>isFunction(tt[st])===!1),rt=map$1(nt,st=>({msg:`Missing visitor method: <${st}> on ${tt.constructor.name} CST Visitor.`,type:CstVisitorDefinitionError.MISSING_METHOD,methodName:st}));return compact(rt)}class TreeBuilder{initTreeBuilder(et){if(this.CST_STACK=[],this.outputCst=et.outputCst,this.nodeLocationTracking=has(et,"nodeLocationTracking")?et.nodeLocationTracking:DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=noop,this.cstFinallyStateUpdate=noop,this.cstPostTerminal=noop,this.cstPostNonTerminal=noop,this.cstPostRule=noop;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=setNodeLocationFull,this.setNodeLocationFromNode=setNodeLocationFull,this.cstPostRule=noop,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=noop,this.setNodeLocationFromNode=noop,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=setNodeLocationOnlyOffset,this.setNodeLocationFromNode=setNodeLocationOnlyOffset,this.cstPostRule=noop,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=noop,this.setNodeLocationFromNode=noop,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=noop,this.setNodeLocationFromNode=noop,this.cstPostRule=noop,this.setInitialNodeLocation=noop;else throw Error(`Invalid <nodeLocationTracking> config option: "${et.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(et){et.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(et){et.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(et){et.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(et){const nt=this.LA(1);et.location={startOffset:nt.startOffset,startLine:nt.startLine,startColumn:nt.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(et){const nt={name:et,children:Object.create(null)};this.setInitialNodeLocation(nt),this.CST_STACK.push(nt)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(et){const nt=this.LA(0),rt=et.location;rt.startOffset<=nt.startOffset?(rt.endOffset=nt.endOffset,rt.endLine=nt.endLine,rt.endColumn=nt.endColumn):(rt.startOffset=NaN,rt.startLine=NaN,rt.startColumn=NaN)}cstPostRuleOnlyOffset(et){const nt=this.LA(0),rt=et.location;rt.startOffset<=nt.startOffset?rt.endOffset=nt.endOffset:rt.startOffset=NaN}cstPostTerminal(et,nt){const rt=this.CST_STACK[this.CST_STACK.length-1];addTerminalToCst(rt,nt,et),this.setNodeLocationFromToken(rt.location,nt)}cstPostNonTerminal(et,nt){const rt=this.CST_STACK[this.CST_STACK.length-1];addNoneTerminalToCst(rt,nt,et),this.setNodeLocationFromNode(rt.location,et.location)}getBaseCstVisitorConstructor(){if(isUndefined(this.baseCstVisitorConstructor)){const et=createBaseSemanticVisitorConstructor(this.className,keys$1(this.gastProductionsCache));return this.baseCstVisitorConstructor=et,et}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(isUndefined(this.baseCstVisitorWithDefaultsConstructor)){const et=createBaseVisitorConstructorWithDefaults(this.className,keys$1(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=et,et}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){const et=this.RULE_STACK;return et[et.length-1]}getPreviousExplicitRuleShortName(){const et=this.RULE_STACK;return et[et.length-2]}getLastExplicitRuleOccurrenceIndex(){const et=this.RULE_OCCURRENCE_STACK;return et[et.length-1]}}class LexerAdapter{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(et){if(this.selfAnalysisDone!==!0)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=et,this.tokVectorLength=et.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):END_OF_FILE}LA(et){const nt=this.currIdx+et;return nt<0||this.tokVectorLength<=nt?END_OF_FILE:this.tokVector[nt]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(et){this.currIdx=et}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}class RecognizerApi{ACTION(et){return et.call(this)}consume(et,nt,rt){return this.consumeInternal(nt,et,rt)}subrule(et,nt,rt){return this.subruleInternal(nt,et,rt)}option(et,nt){return this.optionInternal(nt,et)}or(et,nt){return this.orInternal(nt,et)}many(et,nt){return this.manyInternal(et,nt)}atLeastOne(et,nt){return this.atLeastOneInternal(et,nt)}CONSUME(et,nt){return this.consumeInternal(et,0,nt)}CONSUME1(et,nt){return this.consumeInternal(et,1,nt)}CONSUME2(et,nt){return this.consumeInternal(et,2,nt)}CONSUME3(et,nt){return this.consumeInternal(et,3,nt)}CONSUME4(et,nt){return this.consumeInternal(et,4,nt)}CONSUME5(et,nt){return this.consumeInternal(et,5,nt)}CONSUME6(et,nt){return this.consumeInternal(et,6,nt)}CONSUME7(et,nt){return this.consumeInternal(et,7,nt)}CONSUME8(et,nt){return this.consumeInternal(et,8,nt)}CONSUME9(et,nt){return this.consumeInternal(et,9,nt)}SUBRULE(et,nt){return this.subruleInternal(et,0,nt)}SUBRULE1(et,nt){return this.subruleInternal(et,1,nt)}SUBRULE2(et,nt){return this.subruleInternal(et,2,nt)}SUBRULE3(et,nt){return this.subruleInternal(et,3,nt)}SUBRULE4(et,nt){return this.subruleInternal(et,4,nt)}SUBRULE5(et,nt){return this.subruleInternal(et,5,nt)}SUBRULE6(et,nt){return this.subruleInternal(et,6,nt)}SUBRULE7(et,nt){return this.subruleInternal(et,7,nt)}SUBRULE8(et,nt){return this.subruleInternal(et,8,nt)}SUBRULE9(et,nt){return this.subruleInternal(et,9,nt)}OPTION(et){return this.optionInternal(et,0)}OPTION1(et){return this.optionInternal(et,1)}OPTION2(et){return this.optionInternal(et,2)}OPTION3(et){return this.optionInternal(et,3)}OPTION4(et){return this.optionInternal(et,4)}OPTION5(et){return this.optionInternal(et,5)}OPTION6(et){return this.optionInternal(et,6)}OPTION7(et){return this.optionInternal(et,7)}OPTION8(et){return this.optionInternal(et,8)}OPTION9(et){return this.optionInternal(et,9)}OR(et){return this.orInternal(et,0)}OR1(et){return this.orInternal(et,1)}OR2(et){return this.orInternal(et,2)}OR3(et){return this.orInternal(et,3)}OR4(et){return this.orInternal(et,4)}OR5(et){return this.orInternal(et,5)}OR6(et){return this.orInternal(et,6)}OR7(et){return this.orInternal(et,7)}OR8(et){return this.orInternal(et,8)}OR9(et){return this.orInternal(et,9)}MANY(et){this.manyInternal(0,et)}MANY1(et){this.manyInternal(1,et)}MANY2(et){this.manyInternal(2,et)}MANY3(et){this.manyInternal(3,et)}MANY4(et){this.manyInternal(4,et)}MANY5(et){this.manyInternal(5,et)}MANY6(et){this.manyInternal(6,et)}MANY7(et){this.manyInternal(7,et)}MANY8(et){this.manyInternal(8,et)}MANY9(et){this.manyInternal(9,et)}MANY_SEP(et){this.manySepFirstInternal(0,et)}MANY_SEP1(et){this.manySepFirstInternal(1,et)}MANY_SEP2(et){this.manySepFirstInternal(2,et)}MANY_SEP3(et){this.manySepFirstInternal(3,et)}MANY_SEP4(et){this.manySepFirstInternal(4,et)}MANY_SEP5(et){this.manySepFirstInternal(5,et)}MANY_SEP6(et){this.manySepFirstInternal(6,et)}MANY_SEP7(et){this.manySepFirstInternal(7,et)}MANY_SEP8(et){this.manySepFirstInternal(8,et)}MANY_SEP9(et){this.manySepFirstInternal(9,et)}AT_LEAST_ONE(et){this.atLeastOneInternal(0,et)}AT_LEAST_ONE1(et){return this.atLeastOneInternal(1,et)}AT_LEAST_ONE2(et){this.atLeastOneInternal(2,et)}AT_LEAST_ONE3(et){this.atLeastOneInternal(3,et)}AT_LEAST_ONE4(et){this.atLeastOneInternal(4,et)}AT_LEAST_ONE5(et){this.atLeastOneInternal(5,et)}AT_LEAST_ONE6(et){this.atLeastOneInternal(6,et)}AT_LEAST_ONE7(et){this.atLeastOneInternal(7,et)}AT_LEAST_ONE8(et){this.atLeastOneInternal(8,et)}AT_LEAST_ONE9(et){this.atLeastOneInternal(9,et)}AT_LEAST_ONE_SEP(et){this.atLeastOneSepFirstInternal(0,et)}AT_LEAST_ONE_SEP1(et){this.atLeastOneSepFirstInternal(1,et)}AT_LEAST_ONE_SEP2(et){this.atLeastOneSepFirstInternal(2,et)}AT_LEAST_ONE_SEP3(et){this.atLeastOneSepFirstInternal(3,et)}AT_LEAST_ONE_SEP4(et){this.atLeastOneSepFirstInternal(4,et)}AT_LEAST_ONE_SEP5(et){this.atLeastOneSepFirstInternal(5,et)}AT_LEAST_ONE_SEP6(et){this.atLeastOneSepFirstInternal(6,et)}AT_LEAST_ONE_SEP7(et){this.atLeastOneSepFirstInternal(7,et)}AT_LEAST_ONE_SEP8(et){this.atLeastOneSepFirstInternal(8,et)}AT_LEAST_ONE_SEP9(et){this.atLeastOneSepFirstInternal(9,et)}RULE(et,nt,rt=DEFAULT_RULE_CONFIG){if(includes(this.definedRulesNames,et)){const en={message:defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:et,grammarName:this.className}),type:ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:et};this.definitionErrors.push(en)}this.definedRulesNames.push(et);const st=this.defineRule(et,nt,rt);return this[et]=st,st}OVERRIDE_RULE(et,nt,rt=DEFAULT_RULE_CONFIG){const st=validateRuleIsOverridden(et,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(st);const ot=this.defineRule(et,nt,rt);return this[et]=ot,ot}BACKTRACK(et,nt){return function(){this.isBackTrackingStack.push(1);const rt=this.saveRecogState();try{return et.apply(this,nt),!0}catch(st){if(isRecognitionException(st))return!1;throw st}finally{this.reloadRecogState(rt),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return serializeGrammar(values(this.gastProductionsCache))}}class RecognizerEngine{initRecognizerEngine(et,nt){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=tokenStructuredMatcherNoCategories,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},has(nt,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a <serializedGrammar> property.
|
|
111
|
-
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0
|
|
112
|
-
For Further details.`);if(isArray$1(et)){if(isEmpty$1(et))throw Error(`A Token Vocabulary cannot be empty.
|
|
113
|
-
Note that the first argument for the parser constructor
|
|
114
|
-
is no longer a Token vector (since v4.0).`);if(typeof et[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument.
|
|
115
|
-
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0
|
|
116
|
-
For Further details.`)}if(isArray$1(et))this.tokensMap=reduce(et,(ot,en)=>(ot[en.name]=en,ot),{});else if(has(et,"modes")&&every(flatten(values(et.modes)),isTokenType)){const ot=flatten(values(et.modes)),en=uniq(ot);this.tokensMap=reduce(en,(tn,nn)=>(tn[nn.name]=nn,tn),{})}else if(isObject(et))this.tokensMap=clone(et);else throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=EOF;const rt=has(et,"modes")?flatten(values(et.modes)):values(et),st=every(rt,ot=>isEmpty$1(ot.categoryMatches));this.tokenMatcher=st?tokenStructuredMatcherNoCategories:tokenStructuredMatcher,augmentTokenTypes(values(this.tokensMap))}defineRule(et,nt,rt){if(this.selfAnalysisDone)throw Error(`Grammar rule <${et}> may not be defined after the 'performSelfAnalysis' method has been called'
|
|
117
|
-
Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const st=has(rt,"resyncEnabled")?rt.resyncEnabled:DEFAULT_RULE_CONFIG.resyncEnabled,ot=has(rt,"recoveryValueFunc")?rt.recoveryValueFunc:DEFAULT_RULE_CONFIG.recoveryValueFunc,en=this.ruleShortNameIdx<<BITS_FOR_METHOD_TYPE+BITS_FOR_OCCURRENCE_IDX;this.ruleShortNameIdx++,this.shortRuleNameToFull[en]=et,this.fullRuleNameToShort[et]=en;let tn;return this.outputCst===!0?tn=function(...sn){try{this.ruleInvocationStateUpdate(en,et,this.subruleIdx),nt.apply(this,sn);const an=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(an),an}catch(an){return this.invokeRuleCatch(an,st,ot)}finally{this.ruleFinallyStateUpdate()}}:tn=function(...sn){try{return this.ruleInvocationStateUpdate(en,et,this.subruleIdx),nt.apply(this,sn)}catch(an){return this.invokeRuleCatch(an,st,ot)}finally{this.ruleFinallyStateUpdate()}},Object.assign(tn,{ruleName:et,originalGrammarAction:nt})}invokeRuleCatch(et,nt,rt){const st=this.RULE_STACK.length===1,ot=nt&&!this.isBackTracking()&&this.recoveryEnabled;if(isRecognitionException(et)){const en=et;if(ot){const tn=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(tn))if(en.resyncedTokens=this.reSyncTo(tn),this.outputCst){const nn=this.CST_STACK[this.CST_STACK.length-1];return nn.recoveredNode=!0,nn}else return rt(et);else{if(this.outputCst){const nn=this.CST_STACK[this.CST_STACK.length-1];nn.recoveredNode=!0,en.partialCstResult=nn}throw en}}else{if(st)return this.moveToTerminatedState(),rt(et);throw en}}else throw et}optionInternal(et,nt){const rt=this.getKeyForAutomaticLookahead(OPTION_IDX,nt);return this.optionInternalLogic(et,nt,rt)}optionInternalLogic(et,nt,rt){let st=this.getLaFuncFromCache(rt),ot;if(typeof et!="function"){ot=et.DEF;const en=et.GATE;if(en!==void 0){const tn=st;st=()=>en.call(this)&&tn.call(this)}}else ot=et;if(st.call(this)===!0)return ot.call(this)}atLeastOneInternal(et,nt){const rt=this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX,et);return this.atLeastOneInternalLogic(et,nt,rt)}atLeastOneInternalLogic(et,nt,rt){let st=this.getLaFuncFromCache(rt),ot;if(typeof nt!="function"){ot=nt.DEF;const en=nt.GATE;if(en!==void 0){const tn=st;st=()=>en.call(this)&&tn.call(this)}}else ot=nt;if(st.call(this)===!0){let en=this.doSingleRepetition(ot);for(;st.call(this)===!0&&en===!0;)en=this.doSingleRepetition(ot)}else throw this.raiseEarlyExitException(et,PROD_TYPE.REPETITION_MANDATORY,nt.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[et,nt],st,AT_LEAST_ONE_IDX,et,NextTerminalAfterAtLeastOneWalker)}atLeastOneSepFirstInternal(et,nt){const rt=this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX,et);this.atLeastOneSepFirstInternalLogic(et,nt,rt)}atLeastOneSepFirstInternalLogic(et,nt,rt){const st=nt.DEF,ot=nt.SEP;if(this.getLaFuncFromCache(rt).call(this)===!0){st.call(this);const tn=()=>this.tokenMatcher(this.LA(1),ot);for(;this.tokenMatcher(this.LA(1),ot)===!0;)this.CONSUME(ot),st.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[et,ot,tn,st,NextTerminalAfterAtLeastOneSepWalker],tn,AT_LEAST_ONE_SEP_IDX,et,NextTerminalAfterAtLeastOneSepWalker)}else throw this.raiseEarlyExitException(et,PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,nt.ERR_MSG)}manyInternal(et,nt){const rt=this.getKeyForAutomaticLookahead(MANY_IDX,et);return this.manyInternalLogic(et,nt,rt)}manyInternalLogic(et,nt,rt){let st=this.getLaFuncFromCache(rt),ot;if(typeof nt!="function"){ot=nt.DEF;const tn=nt.GATE;if(tn!==void 0){const nn=st;st=()=>tn.call(this)&&nn.call(this)}}else ot=nt;let en=!0;for(;st.call(this)===!0&&en===!0;)en=this.doSingleRepetition(ot);this.attemptInRepetitionRecovery(this.manyInternal,[et,nt],st,MANY_IDX,et,NextTerminalAfterManyWalker,en)}manySepFirstInternal(et,nt){const rt=this.getKeyForAutomaticLookahead(MANY_SEP_IDX,et);this.manySepFirstInternalLogic(et,nt,rt)}manySepFirstInternalLogic(et,nt,rt){const st=nt.DEF,ot=nt.SEP;if(this.getLaFuncFromCache(rt).call(this)===!0){st.call(this);const tn=()=>this.tokenMatcher(this.LA(1),ot);for(;this.tokenMatcher(this.LA(1),ot)===!0;)this.CONSUME(ot),st.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[et,ot,tn,st,NextTerminalAfterManySepWalker],tn,MANY_SEP_IDX,et,NextTerminalAfterManySepWalker)}}repetitionSepSecondInternal(et,nt,rt,st,ot){for(;rt();)this.CONSUME(nt),st.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[et,nt,rt,st,ot],rt,AT_LEAST_ONE_SEP_IDX,et,ot)}doSingleRepetition(et){const nt=this.getLexerPosition();return et.call(this),this.getLexerPosition()>nt}orInternal(et,nt){const rt=this.getKeyForAutomaticLookahead(OR_IDX,nt),st=isArray$1(et)?et:et.DEF,en=this.getLaFuncFromCache(rt).call(this,st);if(en!==void 0)return st[en].ALT.call(this);this.raiseNoAltException(nt,et.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){const et=this.LA(1),nt=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:et,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NotAllInputParsedException(nt,et))}}subruleInternal(et,nt,rt){let st;try{const ot=rt!==void 0?rt.ARGS:void 0;return this.subruleIdx=nt,st=et.apply(this,ot),this.cstPostNonTerminal(st,rt!==void 0&&rt.LABEL!==void 0?rt.LABEL:et.ruleName),st}catch(ot){throw this.subruleInternalError(ot,rt,et.ruleName)}}subruleInternalError(et,nt,rt){throw isRecognitionException(et)&&et.partialCstResult!==void 0&&(this.cstPostNonTerminal(et.partialCstResult,nt!==void 0&&nt.LABEL!==void 0?nt.LABEL:rt),delete et.partialCstResult),et}consumeInternal(et,nt,rt){let st;try{const ot=this.LA(1);this.tokenMatcher(ot,et)===!0?(this.consumeToken(),st=ot):this.consumeInternalError(et,ot,rt)}catch(ot){st=this.consumeInternalRecovery(et,nt,ot)}return this.cstPostTerminal(rt!==void 0&&rt.LABEL!==void 0?rt.LABEL:et.name,st),st}consumeInternalError(et,nt,rt){let st;const ot=this.LA(0);throw rt!==void 0&&rt.ERR_MSG?st=rt.ERR_MSG:st=this.errorMessageProvider.buildMismatchTokenMessage({expected:et,actual:nt,previous:ot,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new MismatchedTokenException(st,nt,ot))}consumeInternalRecovery(et,nt,rt){if(this.recoveryEnabled&&rt.name==="MismatchedTokenException"&&!this.isBackTracking()){const st=this.getFollowsForInRuleRecovery(et,nt);try{return this.tryInRuleRecovery(et,st)}catch(ot){throw ot.name===IN_RULE_RECOVERY_EXCEPTION?rt:ot}}else throw rt}saveRecogState(){const et=this.errors,nt=clone(this.RULE_STACK);return{errors:et,lexerState:this.exportLexerState(),RULE_STACK:nt,CST_STACK:this.CST_STACK}}reloadRecogState(et){this.errors=et.errors,this.importLexerState(et.lexerState),this.RULE_STACK=et.RULE_STACK}ruleInvocationStateUpdate(et,nt,rt){this.RULE_OCCURRENCE_STACK.push(rt),this.RULE_STACK.push(et),this.cstInvocationStateUpdate(nt)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){const et=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[et]}shortRuleNameToFullName(et){return this.shortRuleNameToFull[et]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),EOF)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}class ErrorHandler{initErrorHandler(et){this._errors=[],this.errorMessageProvider=has(et,"errorMessageProvider")?et.errorMessageProvider:DEFAULT_PARSER_CONFIG.errorMessageProvider}SAVE_ERROR(et){if(isRecognitionException(et))return et.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:clone(this.RULE_OCCURRENCE_STACK)},this._errors.push(et),et;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return clone(this._errors)}set errors(et){this._errors=et}raiseEarlyExitException(et,nt,rt){const st=this.getCurrRuleFullName(),ot=this.getGAstProductions()[st],tn=getLookaheadPathsForOptionalProd(et,ot,nt,this.maxLookahead)[0],nn=[];for(let sn=1;sn<=this.maxLookahead;sn++)nn.push(this.LA(sn));const rn=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:tn,actual:nn,previous:this.LA(0),customUserDescription:rt,ruleName:st});throw this.SAVE_ERROR(new EarlyExitException(rn,this.LA(1),this.LA(0)))}raiseNoAltException(et,nt){const rt=this.getCurrRuleFullName(),st=this.getGAstProductions()[rt],ot=getLookaheadPathsForOr(et,st,this.maxLookahead),en=[];for(let rn=1;rn<=this.maxLookahead;rn++)en.push(this.LA(rn));const tn=this.LA(0),nn=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:ot,actual:en,previous:tn,customUserDescription:nt,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new NoViableAltException(nn,this.LA(1),tn))}}class ContentAssist{initContentAssist(){}computeContentAssist(et,nt){const rt=this.gastProductionsCache[et];if(isUndefined(rt))throw Error(`Rule ->${et}<- does not exist in this grammar.`);return nextPossibleTokensAfter([rt],nt,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(et){const nt=head(et.ruleStack),st=this.getGAstProductions()[nt];return new NextAfterTokenWalker(st,et).startWalking()}}const RECORDING_NULL_OBJECT={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(RECORDING_NULL_OBJECT);const HANDLE_SEPARATOR=!0,MAX_METHOD_IDX=Math.pow(2,BITS_FOR_OCCURRENCE_IDX)-1,RFT=createToken({name:"RECORDING_PHASE_TOKEN",pattern:Lexer.NA});augmentTokenTypes([RFT]);const RECORDING_PHASE_TOKEN=createTokenInstance(RFT,`This IToken indicates the Parser is in Recording Phase
|
|
118
|
-
See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(RECORDING_PHASE_TOKEN);const RECORDING_PHASE_CSTNODE={name:`This CSTNode indicates the Parser is in Recording Phase
|
|
119
|
-
See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}};class GastRecorder{initGastRecorder(et){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let et=0;et<10;et++){const nt=et>0?et:"";this[`CONSUME${nt}`]=function(rt,st){return this.consumeInternalRecord(rt,et,st)},this[`SUBRULE${nt}`]=function(rt,st){return this.subruleInternalRecord(rt,et,st)},this[`OPTION${nt}`]=function(rt){return this.optionInternalRecord(rt,et)},this[`OR${nt}`]=function(rt){return this.orInternalRecord(rt,et)},this[`MANY${nt}`]=function(rt){this.manyInternalRecord(et,rt)},this[`MANY_SEP${nt}`]=function(rt){this.manySepFirstInternalRecord(et,rt)},this[`AT_LEAST_ONE${nt}`]=function(rt){this.atLeastOneInternalRecord(et,rt)},this[`AT_LEAST_ONE_SEP${nt}`]=function(rt){this.atLeastOneSepFirstInternalRecord(et,rt)}}this.consume=function(et,nt,rt){return this.consumeInternalRecord(nt,et,rt)},this.subrule=function(et,nt,rt){return this.subruleInternalRecord(nt,et,rt)},this.option=function(et,nt){return this.optionInternalRecord(nt,et)},this.or=function(et,nt){return this.orInternalRecord(nt,et)},this.many=function(et,nt){this.manyInternalRecord(et,nt)},this.atLeastOne=function(et,nt){this.atLeastOneInternalRecord(et,nt)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{const et=this;for(let nt=0;nt<10;nt++){const rt=nt>0?nt:"";delete et[`CONSUME${rt}`],delete et[`SUBRULE${rt}`],delete et[`OPTION${rt}`],delete et[`OR${rt}`],delete et[`MANY${rt}`],delete et[`MANY_SEP${rt}`],delete et[`AT_LEAST_ONE${rt}`],delete et[`AT_LEAST_ONE_SEP${rt}`]}delete et.consume,delete et.subrule,delete et.option,delete et.or,delete et.many,delete et.atLeastOne,delete et.ACTION,delete et.BACKTRACK,delete et.LA})}ACTION_RECORD(et){}BACKTRACK_RECORD(et,nt){return()=>!0}LA_RECORD(et){return END_OF_FILE}topLevelRuleRecord(et,nt){try{const rt=new Rule({definition:[],name:et});return rt.name=et,this.recordingProdStack.push(rt),nt.call(this),this.recordingProdStack.pop(),rt}catch(rt){if(rt.KNOWN_RECORDER_ERROR!==!0)try{rt.message=rt.message+`
|
|
120
|
-
This error was thrown during the "grammar recording phase" For more info see:
|
|
121
|
-
https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw rt}throw rt}}optionInternalRecord(et,nt){return recordProd.call(this,Option,et,nt)}atLeastOneInternalRecord(et,nt){recordProd.call(this,RepetitionMandatory,nt,et)}atLeastOneSepFirstInternalRecord(et,nt){recordProd.call(this,RepetitionMandatoryWithSeparator,nt,et,HANDLE_SEPARATOR)}manyInternalRecord(et,nt){recordProd.call(this,Repetition,nt,et)}manySepFirstInternalRecord(et,nt){recordProd.call(this,RepetitionWithSeparator,nt,et,HANDLE_SEPARATOR)}orInternalRecord(et,nt){return recordOrProd.call(this,et,nt)}subruleInternalRecord(et,nt,rt){if(assertMethodIdxIsValid(nt),!et||has(et,"ruleName")===!1){const tn=new Error(`<SUBRULE${getIdxSuffix(nt)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(et)}>
|
|
122
|
-
inside top level rule: <${this.recordingProdStack[0].name}>`);throw tn.KNOWN_RECORDER_ERROR=!0,tn}const st=last(this.recordingProdStack),ot=et.ruleName,en=new NonTerminal({idx:nt,nonTerminalName:ot,label:rt?.LABEL,referencedRule:void 0});return st.definition.push(en),this.outputCst?RECORDING_PHASE_CSTNODE:RECORDING_NULL_OBJECT}consumeInternalRecord(et,nt,rt){if(assertMethodIdxIsValid(nt),!hasShortKeyProperty(et)){const en=new Error(`<CONSUME${getIdxSuffix(nt)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(et)}>
|
|
123
|
-
inside top level rule: <${this.recordingProdStack[0].name}>`);throw en.KNOWN_RECORDER_ERROR=!0,en}const st=last(this.recordingProdStack),ot=new Terminal({idx:nt,terminalType:et,label:rt?.LABEL});return st.definition.push(ot),RECORDING_PHASE_TOKEN}}function recordProd(tt,et,nt,rt=!1){assertMethodIdxIsValid(nt);const st=last(this.recordingProdStack),ot=isFunction(et)?et:et.DEF,en=new tt({definition:[],idx:nt});return rt&&(en.separator=et.SEP),has(et,"MAX_LOOKAHEAD")&&(en.maxLookahead=et.MAX_LOOKAHEAD),this.recordingProdStack.push(en),ot.call(this),st.definition.push(en),this.recordingProdStack.pop(),RECORDING_NULL_OBJECT}function recordOrProd(tt,et){assertMethodIdxIsValid(et);const nt=last(this.recordingProdStack),rt=isArray$1(tt)===!1,st=rt===!1?tt:tt.DEF,ot=new Alternation({definition:[],idx:et,ignoreAmbiguities:rt&&tt.IGNORE_AMBIGUITIES===!0});has(tt,"MAX_LOOKAHEAD")&&(ot.maxLookahead=tt.MAX_LOOKAHEAD);const en=some(st,tn=>isFunction(tn.GATE));return ot.hasPredicates=en,nt.definition.push(ot),forEach(st,tn=>{const nn=new Alternative({definition:[]});ot.definition.push(nn),has(tn,"IGNORE_AMBIGUITIES")?nn.ignoreAmbiguities=tn.IGNORE_AMBIGUITIES:has(tn,"GATE")&&(nn.ignoreAmbiguities=!0),this.recordingProdStack.push(nn),tn.ALT.call(this),this.recordingProdStack.pop()}),RECORDING_NULL_OBJECT}function getIdxSuffix(tt){return tt===0?"":`${tt}`}function assertMethodIdxIsValid(tt){if(tt<0||tt>MAX_METHOD_IDX){const et=new Error(`Invalid DSL Method idx value: <${tt}>
|
|
124
|
-
Idx value must be a none negative value smaller than ${MAX_METHOD_IDX+1}`);throw et.KNOWN_RECORDER_ERROR=!0,et}}class PerformanceTracer{initPerformanceTracer(et){if(has(et,"traceInitPerf")){const nt=et.traceInitPerf,rt=typeof nt=="number";this.traceInitMaxIdent=rt?nt:1/0,this.traceInitPerf=rt?nt>0:nt}else this.traceInitMaxIdent=0,this.traceInitPerf=DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(et,nt){if(this.traceInitPerf===!0){this.traceInitIndent++;const rt=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${rt}--> <${et}>`);const{time:st,value:ot}=timer(nt),en=st>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&en(`${rt}<-- <${et}> time: ${st}ms`),this.traceInitIndent--,ot}else return nt()}}function applyMixins(tt,et){et.forEach(nt=>{const rt=nt.prototype;Object.getOwnPropertyNames(rt).forEach(st=>{if(st==="constructor")return;const ot=Object.getOwnPropertyDescriptor(rt,st);ot&&(ot.get||ot.set)?Object.defineProperty(tt.prototype,st,ot):tt.prototype[st]=nt.prototype[st]})})}const END_OF_FILE=createTokenInstance(EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(END_OF_FILE);const DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var ParserDefinitionErrorType;(function(tt){tt[tt.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",tt[tt.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",tt[tt.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",tt[tt.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",tt[tt.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",tt[tt.LEFT_RECURSION=5]="LEFT_RECURSION",tt[tt.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",tt[tt.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",tt[tt.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",tt[tt.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",tt[tt.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",tt[tt.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",tt[tt.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",tt[tt.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(ParserDefinitionErrorType||(ParserDefinitionErrorType={}));function EMPTY_ALT(tt=void 0){return function(){return tt}}class Parser{static performSelfAnalysis(et){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let et;this.selfAnalysisDone=!0;const nt=this.className;this.TRACE_INIT("toFastProps",()=>{toFastProperties(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),forEach(this.definedRulesNames,st=>{const en=this[st].originalGrammarAction;let tn;this.TRACE_INIT(`${st} Rule`,()=>{tn=this.topLevelRuleRecord(st,en)}),this.gastProductionsCache[st]=tn})}finally{this.disableRecording()}});let rt=[];if(this.TRACE_INIT("Grammar Resolving",()=>{rt=resolveGrammar({rules:values(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(rt)}),this.TRACE_INIT("Grammar Validations",()=>{if(isEmpty$1(rt)&&this.skipValidations===!1){const st=validateGrammar({rules:values(this.gastProductionsCache),tokenTypes:values(this.tokensMap),errMsgProvider:defaultGrammarValidatorErrorProvider,grammarName:nt}),ot=validateLookahead({lookaheadStrategy:this.lookaheadStrategy,rules:values(this.gastProductionsCache),tokenTypes:values(this.tokensMap),grammarName:nt});this.definitionErrors=this.definitionErrors.concat(st,ot)}}),isEmpty$1(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const st=computeAllProdsFollows(values(this.gastProductionsCache));this.resyncFollows=st}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var st,ot;(ot=(st=this.lookaheadStrategy).initialize)===null||ot===void 0||ot.call(st,{rules:values(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(values(this.gastProductionsCache))})),!Parser.DEFER_DEFINITION_ERRORS_HANDLING&&!isEmpty$1(this.definitionErrors))throw et=map$1(this.definitionErrors,st=>st.message),new Error(`Parser Definition Errors detected:
|
|
125
|
-
${et.join(`
|
|
126
|
-
-------------------------------
|
|
127
|
-
`)}`)})}constructor(et,nt){this.definitionErrors=[],this.selfAnalysisDone=!1;const rt=this;if(rt.initErrorHandler(nt),rt.initLexerAdapter(),rt.initLooksAhead(nt),rt.initRecognizerEngine(et,nt),rt.initRecoverable(nt),rt.initTreeBuilder(nt),rt.initContentAssist(),rt.initGastRecorder(nt),rt.initPerformanceTracer(nt),has(nt,"ignoredIssues"))throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.
|
|
128
|
-
Please use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.
|
|
129
|
-
See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES
|
|
130
|
-
For further details.`);this.skipValidations=has(nt,"skipValidations")?nt.skipValidations:DEFAULT_PARSER_CONFIG.skipValidations}}Parser.DEFER_DEFINITION_ERRORS_HANDLING=!1,applyMixins(Parser,[Recoverable,LooksAhead,TreeBuilder,LexerAdapter,RecognizerEngine,RecognizerApi,ErrorHandler,ContentAssist,GastRecorder,PerformanceTracer]);class EmbeddedActionsParser extends Parser{constructor(et,nt=DEFAULT_PARSER_CONFIG){const rt=clone(nt);rt.outputCst=!1,super(et,rt)}}function buildATNKey(tt,et,nt){return`${tt.name}_${et}_${nt}`}const ATN_BASIC=1,ATN_RULE_START=2,ATN_PLUS_BLOCK_START=4,ATN_STAR_BLOCK_START=5,ATN_RULE_STOP=7,ATN_BLOCK_END=8,ATN_STAR_LOOP_BACK=9,ATN_STAR_LOOP_ENTRY=10,ATN_PLUS_LOOP_BACK=11,ATN_LOOP_END=12;class AbstractTransition{constructor(et){this.target=et}isEpsilon(){return!1}}class AtomTransition extends AbstractTransition{constructor(et,nt){super(et),this.tokenType=nt}}class EpsilonTransition extends AbstractTransition{constructor(et){super(et)}isEpsilon(){return!0}}class RuleTransition extends AbstractTransition{constructor(et,nt,rt){super(et),this.rule=nt,this.followState=rt}isEpsilon(){return!0}}function createATN(tt){const et={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};createRuleStartAndStopATNStates(et,tt);const nt=tt.length;for(let rt=0;rt<nt;rt++){const st=tt[rt],ot=block(et,st,st);ot!==void 0&&buildRuleHandle(et,st,ot)}return et}function createRuleStartAndStopATNStates(tt,et){const nt=et.length;for(let rt=0;rt<nt;rt++){const st=et[rt],ot=newState(tt,st,void 0,{type:ATN_RULE_START}),en=newState(tt,st,void 0,{type:ATN_RULE_STOP});ot.stop=en,tt.ruleToStartState.set(st,ot),tt.ruleToStopState.set(st,en)}}function atom(tt,et,nt){return nt instanceof Terminal?tokenRef(tt,et,nt.terminalType,nt):nt instanceof NonTerminal?ruleRef(tt,et,nt):nt instanceof Alternation?alternation(tt,et,nt):nt instanceof Option?option(tt,et,nt):nt instanceof Repetition?repetition(tt,et,nt):nt instanceof RepetitionWithSeparator?repetitionSep(tt,et,nt):nt instanceof RepetitionMandatory?repetitionMandatory(tt,et,nt):nt instanceof RepetitionMandatoryWithSeparator?repetitionMandatorySep(tt,et,nt):block(tt,et,nt)}function repetition(tt,et,nt){const rt=newState(tt,et,nt,{type:ATN_STAR_BLOCK_START});defineDecisionState(tt,rt);const st=makeAlts(tt,et,rt,nt,block(tt,et,nt));return star(tt,et,nt,st)}function repetitionSep(tt,et,nt){const rt=newState(tt,et,nt,{type:ATN_STAR_BLOCK_START});defineDecisionState(tt,rt);const st=makeAlts(tt,et,rt,nt,block(tt,et,nt)),ot=tokenRef(tt,et,nt.separator,nt);return star(tt,et,nt,st,ot)}function repetitionMandatory(tt,et,nt){const rt=newState(tt,et,nt,{type:ATN_PLUS_BLOCK_START});defineDecisionState(tt,rt);const st=makeAlts(tt,et,rt,nt,block(tt,et,nt));return plus(tt,et,nt,st)}function repetitionMandatorySep(tt,et,nt){const rt=newState(tt,et,nt,{type:ATN_PLUS_BLOCK_START});defineDecisionState(tt,rt);const st=makeAlts(tt,et,rt,nt,block(tt,et,nt)),ot=tokenRef(tt,et,nt.separator,nt);return plus(tt,et,nt,st,ot)}function alternation(tt,et,nt){const rt=newState(tt,et,nt,{type:ATN_BASIC});defineDecisionState(tt,rt);const st=map$1(nt.definition,en=>atom(tt,et,en));return makeAlts(tt,et,rt,nt,...st)}function option(tt,et,nt){const rt=newState(tt,et,nt,{type:ATN_BASIC});defineDecisionState(tt,rt);const st=makeAlts(tt,et,rt,nt,block(tt,et,nt));return optional(tt,et,nt,st)}function block(tt,et,nt){const rt=filter(map$1(nt.definition,st=>atom(tt,et,st)),st=>st!==void 0);return rt.length===1?rt[0]:rt.length===0?void 0:makeBlock(tt,rt)}function plus(tt,et,nt,rt,st){const ot=rt.left,en=rt.right,tn=newState(tt,et,nt,{type:ATN_PLUS_LOOP_BACK});defineDecisionState(tt,tn);const nn=newState(tt,et,nt,{type:ATN_LOOP_END});return ot.loopback=tn,nn.loopback=tn,tt.decisionMap[buildATNKey(et,st?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",nt.idx)]=tn,epsilon(en,tn),st===void 0?(epsilon(tn,ot),epsilon(tn,nn)):(epsilon(tn,nn),epsilon(tn,st.left),epsilon(st.right,ot)),{left:ot,right:nn}}function star(tt,et,nt,rt,st){const ot=rt.left,en=rt.right,tn=newState(tt,et,nt,{type:ATN_STAR_LOOP_ENTRY});defineDecisionState(tt,tn);const nn=newState(tt,et,nt,{type:ATN_LOOP_END}),rn=newState(tt,et,nt,{type:ATN_STAR_LOOP_BACK});return tn.loopback=rn,nn.loopback=rn,epsilon(tn,ot),epsilon(tn,nn),epsilon(en,rn),st!==void 0?(epsilon(rn,nn),epsilon(rn,st.left),epsilon(st.right,ot)):epsilon(rn,tn),tt.decisionMap[buildATNKey(et,st?"RepetitionWithSeparator":"Repetition",nt.idx)]=tn,{left:tn,right:nn}}function optional(tt,et,nt,rt){const st=rt.left,ot=rt.right;return epsilon(st,ot),tt.decisionMap[buildATNKey(et,"Option",nt.idx)]=st,rt}function defineDecisionState(tt,et){return tt.decisionStates.push(et),et.decision=tt.decisionStates.length-1,et.decision}function makeAlts(tt,et,nt,rt,...st){const ot=newState(tt,et,rt,{type:ATN_BLOCK_END,start:nt});nt.end=ot;for(const tn of st)tn!==void 0?(epsilon(nt,tn.left),epsilon(tn.right,ot)):epsilon(nt,ot);const en={left:nt,right:ot};return tt.decisionMap[buildATNKey(et,getProdType(rt),rt.idx)]=nt,en}function getProdType(tt){if(tt instanceof Alternation)return"Alternation";if(tt instanceof Option)return"Option";if(tt instanceof Repetition)return"Repetition";if(tt instanceof RepetitionWithSeparator)return"RepetitionWithSeparator";if(tt instanceof RepetitionMandatory)return"RepetitionMandatory";if(tt instanceof RepetitionMandatoryWithSeparator)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function makeBlock(tt,et){const nt=et.length;for(let ot=0;ot<nt-1;ot++){const en=et[ot];let tn;en.left.transitions.length===1&&(tn=en.left.transitions[0]);const nn=tn instanceof RuleTransition,rn=tn,sn=et[ot+1].left;en.left.type===ATN_BASIC&&en.right.type===ATN_BASIC&&tn!==void 0&&(nn&&rn.followState===en.right||tn.target===en.right)?(nn?rn.followState=sn:tn.target=sn,removeState(tt,en.right)):epsilon(en.right,sn)}const rt=et[0],st=et[nt-1];return{left:rt.left,right:st.right}}function tokenRef(tt,et,nt,rt){const st=newState(tt,et,rt,{type:ATN_BASIC}),ot=newState(tt,et,rt,{type:ATN_BASIC});return addTransition(st,new AtomTransition(ot,nt)),{left:st,right:ot}}function ruleRef(tt,et,nt){const rt=nt.referencedRule,st=tt.ruleToStartState.get(rt),ot=newState(tt,et,nt,{type:ATN_BASIC}),en=newState(tt,et,nt,{type:ATN_BASIC}),tn=new RuleTransition(st,rt,en);return addTransition(ot,tn),{left:ot,right:en}}function buildRuleHandle(tt,et,nt){const rt=tt.ruleToStartState.get(et);epsilon(rt,nt.left);const st=tt.ruleToStopState.get(et);return epsilon(nt.right,st),{left:rt,right:st}}function epsilon(tt,et){const nt=new EpsilonTransition(et);addTransition(tt,nt)}function newState(tt,et,nt,rt){const st=Object.assign({atn:tt,production:nt,epsilonOnlyTransitions:!1,rule:et,transitions:[],nextTokenWithinRule:[],stateNumber:tt.states.length},rt);return tt.states.push(st),st}function addTransition(tt,et){tt.transitions.length===0&&(tt.epsilonOnlyTransitions=et.isEpsilon()),tt.transitions.push(et)}function removeState(tt,et){tt.states.splice(tt.states.indexOf(et),1)}const DFA_ERROR={};class ATNConfigSet{constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(et){const nt=getATNConfigKey(et);nt in this.map||(this.map[nt]=this.configs.length,this.configs.push(et))}get elements(){return this.configs}get alts(){return map$1(this.configs,et=>et.alt)}get key(){let et="";for(const nt in this.map)et+=nt+":";return et}}function getATNConfigKey(tt,et=!0){return`${et?`a${tt.alt}`:""}s${tt.state.stateNumber}:${tt.stack.map(nt=>nt.stateNumber.toString()).join("_")}`}function createDFACache(tt,et){const nt={};return rt=>{const st=rt.toString();let ot=nt[st];return ot!==void 0||(ot={atnStartState:tt,decision:et,states:{}},nt[st]=ot),ot}}class PredicateSet{constructor(){this.predicates=[]}is(et){return et>=this.predicates.length||this.predicates[et]}set(et,nt){this.predicates[et]=nt}toString(){let et="";const nt=this.predicates.length;for(let rt=0;rt<nt;rt++)et+=this.predicates[rt]===!0?"1":"0";return et}}const EMPTY_PREDICATES=new PredicateSet;class LLStarLookaheadStrategy extends LLkLookaheadStrategy{constructor(et){var nt;super(),this.logging=(nt=et?.logging)!==null&&nt!==void 0?nt:rt=>console.log(rt)}initialize(et){this.atn=createATN(et.rules),this.dfas=initATNSimulator(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(et){const{prodOccurrence:nt,rule:rt,hasPredicates:st,dynamicTokensEnabled:ot}=et,en=this.dfas,tn=this.logging,nn=buildATNKey(rt,"Alternation",nt),sn=this.atn.decisionMap[nn].decision,an=map$1(getLookaheadPaths({maxLookahead:1,occurrence:nt,prodType:"Alternation",rule:rt}),on=>map$1(on,cn=>cn[0]));if(isLL1Sequence(an,!1)&&!ot){const on=reduce(an,(cn,ln,fn)=>(forEach(ln,gn=>{gn&&(cn[gn.tokenTypeIdx]=fn,forEach(gn.categoryMatches,pn=>{cn[pn]=fn}))}),cn),{});return st?function(cn){var ln;const fn=this.LA(1),gn=on[fn.tokenTypeIdx];if(cn!==void 0&&gn!==void 0){const pn=(ln=cn[gn])===null||ln===void 0?void 0:ln.GATE;if(pn!==void 0&&pn.call(this)===!1)return}return gn}:function(){const cn=this.LA(1);return on[cn.tokenTypeIdx]}}else return st?function(on){const cn=new PredicateSet,ln=on===void 0?0:on.length;for(let gn=0;gn<ln;gn++){const pn=on?.[gn].GATE;cn.set(gn,pn===void 0||pn.call(this))}const fn=adaptivePredict.call(this,en,sn,cn,tn);return typeof fn=="number"?fn:void 0}:function(){const on=adaptivePredict.call(this,en,sn,EMPTY_PREDICATES,tn);return typeof on=="number"?on:void 0}}buildLookaheadForOptional(et){const{prodOccurrence:nt,rule:rt,prodType:st,dynamicTokensEnabled:ot}=et,en=this.dfas,tn=this.logging,nn=buildATNKey(rt,st,nt),sn=this.atn.decisionMap[nn].decision,an=map$1(getLookaheadPaths({maxLookahead:1,occurrence:nt,prodType:st,rule:rt}),on=>map$1(on,cn=>cn[0]));if(isLL1Sequence(an)&&an[0][0]&&!ot){const on=an[0],cn=flatten(on);if(cn.length===1&&isEmpty$1(cn[0].categoryMatches)){const fn=cn[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===fn}}else{const ln=reduce(cn,(fn,gn)=>(gn!==void 0&&(fn[gn.tokenTypeIdx]=!0,forEach(gn.categoryMatches,pn=>{fn[pn]=!0})),fn),{});return function(){const fn=this.LA(1);return ln[fn.tokenTypeIdx]===!0}}}return function(){const on=adaptivePredict.call(this,en,sn,EMPTY_PREDICATES,tn);return typeof on=="object"?!1:on===0}}}function isLL1Sequence(tt,et=!0){const nt=new Set;for(const rt of tt){const st=new Set;for(const ot of rt){if(ot===void 0){if(et)break;return!1}const en=[ot.tokenTypeIdx].concat(ot.categoryMatches);for(const tn of en)if(nt.has(tn)){if(!st.has(tn))return!1}else nt.add(tn),st.add(tn)}}return!0}function initATNSimulator(tt){const et=tt.decisionStates.length,nt=Array(et);for(let rt=0;rt<et;rt++)nt[rt]=createDFACache(tt.decisionStates[rt],rt);return nt}function adaptivePredict(tt,et,nt,rt){const st=tt[et](nt);let ot=st.start;if(ot===void 0){const tn=computeStartState(st.atnStartState);ot=addDFAState(st,newDFAState(tn)),st.start=ot}return performLookahead.apply(this,[st,ot,nt,rt])}function performLookahead(tt,et,nt,rt){let st=et,ot=1;const en=[];let tn=this.LA(ot++);for(;;){let nn=getExistingTargetState(st,tn);if(nn===void 0&&(nn=computeLookaheadTarget.apply(this,[tt,st,tn,ot,nt,rt])),nn===DFA_ERROR)return buildAdaptivePredictError(en,st,tn);if(nn.isAcceptState===!0)return nn.prediction;st=nn,en.push(tn),tn=this.LA(ot++)}}function computeLookaheadTarget(tt,et,nt,rt,st,ot){const en=computeReachSet(et.configs,nt,st);if(en.size===0)return addDFAEdge(tt,et,nt,DFA_ERROR),DFA_ERROR;let tn=newDFAState(en);const nn=getUniqueAlt(en,st);if(nn!==void 0)tn.isAcceptState=!0,tn.prediction=nn,tn.configs.uniqueAlt=nn;else if(hasConflictTerminatingPrediction(en)){const rn=min(en.alts);tn.isAcceptState=!0,tn.prediction=rn,tn.configs.uniqueAlt=rn,reportLookaheadAmbiguity.apply(this,[tt,rt,en.alts,ot])}return tn=addDFAEdge(tt,et,nt,tn),tn}function reportLookaheadAmbiguity(tt,et,nt,rt){const st=[];for(let rn=1;rn<=et;rn++)st.push(this.LA(rn).tokenType);const ot=tt.atnStartState,en=ot.rule,tn=ot.production,nn=buildAmbiguityError({topLevelRule:en,ambiguityIndices:nt,production:tn,prefixPath:st});rt(nn)}function buildAmbiguityError(tt){const et=map$1(tt.prefixPath,st=>tokenLabel(st)).join(", "),nt=tt.production.idx===0?"":tt.production.idx;let rt=`Ambiguous Alternatives Detected: <${tt.ambiguityIndices.join(", ")}> in <${getProductionDslName(tt.production)}${nt}> inside <${tt.topLevelRule.name}> Rule,
|
|
131
|
-
<${et}> may appears as a prefix path in all these alternatives.
|
|
132
|
-
`;return rt=rt+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
|
|
133
|
-
For Further details.`,rt}function getProductionDslName(tt){if(tt instanceof NonTerminal)return"SUBRULE";if(tt instanceof Option)return"OPTION";if(tt instanceof Alternation)return"OR";if(tt instanceof RepetitionMandatory)return"AT_LEAST_ONE";if(tt instanceof RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(tt instanceof RepetitionWithSeparator)return"MANY_SEP";if(tt instanceof Repetition)return"MANY";if(tt instanceof Terminal)return"CONSUME";throw Error("non exhaustive match")}function buildAdaptivePredictError(tt,et,nt){const rt=flatMap(et.configs.elements,ot=>ot.state.transitions),st=uniqBy(rt.filter(ot=>ot instanceof AtomTransition).map(ot=>ot.tokenType),ot=>ot.tokenTypeIdx);return{actualToken:nt,possibleTokenTypes:st,tokenPath:tt}}function getExistingTargetState(tt,et){return tt.edges[et.tokenTypeIdx]}function computeReachSet(tt,et,nt){const rt=new ATNConfigSet,st=[];for(const en of tt.elements){if(nt.is(en.alt)===!1)continue;if(en.state.type===ATN_RULE_STOP){st.push(en);continue}const tn=en.state.transitions.length;for(let nn=0;nn<tn;nn++){const rn=en.state.transitions[nn],sn=getReachableTarget(rn,et);sn!==void 0&&rt.add({state:sn,alt:en.alt,stack:en.stack})}}let ot;if(st.length===0&&rt.size===1&&(ot=rt),ot===void 0){ot=new ATNConfigSet;for(const en of rt.elements)closure(en,ot)}if(st.length>0&&!hasConfigInRuleStopState(ot))for(const en of st)ot.add(en);return ot}function getReachableTarget(tt,et){if(tt instanceof AtomTransition&&tokenMatcher(et,tt.tokenType))return tt.target}function getUniqueAlt(tt,et){let nt;for(const rt of tt.elements)if(et.is(rt.alt)===!0){if(nt===void 0)nt=rt.alt;else if(nt!==rt.alt)return}return nt}function newDFAState(tt){return{configs:tt,edges:{},isAcceptState:!1,prediction:-1}}function addDFAEdge(tt,et,nt,rt){return rt=addDFAState(tt,rt),et.edges[nt.tokenTypeIdx]=rt,rt}function addDFAState(tt,et){if(et===DFA_ERROR)return et;const nt=et.configs.key,rt=tt.states[nt];return rt!==void 0?rt:(et.configs.finalize(),tt.states[nt]=et,et)}function computeStartState(tt){const et=new ATNConfigSet,nt=tt.transitions.length;for(let rt=0;rt<nt;rt++){const ot={state:tt.transitions[rt].target,alt:rt,stack:[]};closure(ot,et)}return et}function closure(tt,et){const nt=tt.state;if(nt.type===ATN_RULE_STOP){if(tt.stack.length>0){const st=[...tt.stack],en={state:st.pop(),alt:tt.alt,stack:st};closure(en,et)}else et.add(tt);return}nt.epsilonOnlyTransitions||et.add(tt);const rt=nt.transitions.length;for(let st=0;st<rt;st++){const ot=nt.transitions[st],en=getEpsilonTarget(tt,ot);en!==void 0&&closure(en,et)}}function getEpsilonTarget(tt,et){if(et instanceof EpsilonTransition)return{state:et.target,alt:tt.alt,stack:tt.stack};if(et instanceof RuleTransition){const nt=[...tt.stack,et.followState];return{state:et.target,alt:tt.alt,stack:nt}}}function hasConfigInRuleStopState(tt){for(const et of tt.elements)if(et.state.type===ATN_RULE_STOP)return!0;return!1}function allConfigsInRuleStopStates(tt){for(const et of tt.elements)if(et.state.type!==ATN_RULE_STOP)return!1;return!0}function hasConflictTerminatingPrediction(tt){if(allConfigsInRuleStopStates(tt))return!0;const et=getConflictingAltSets(tt.elements);return hasConflictingAltSet(et)&&!hasStateAssociatedWithOneAlt(et)}function getConflictingAltSets(tt){const et=new Map;for(const nt of tt){const rt=getATNConfigKey(nt,!1);let st=et.get(rt);st===void 0&&(st={},et.set(rt,st)),st[nt.alt]=!0}return et}function hasConflictingAltSet(tt){for(const et of Array.from(tt.values()))if(Object.keys(et).length>1)return!0;return!1}function hasStateAssociatedWithOneAlt(tt){for(const et of Array.from(tt.values()))if(Object.keys(et).length===1)return!0;return!1}var DocumentUri;(function(tt){function et(nt){return typeof nt=="string"}tt.is=et})(DocumentUri||(DocumentUri={}));var URI$1;(function(tt){function et(nt){return typeof nt=="string"}tt.is=et})(URI$1||(URI$1={}));var integer;(function(tt){tt.MIN_VALUE=-2147483648,tt.MAX_VALUE=2147483647;function et(nt){return typeof nt=="number"&&tt.MIN_VALUE<=nt&&nt<=tt.MAX_VALUE}tt.is=et})(integer||(integer={}));var uinteger;(function(tt){tt.MIN_VALUE=0,tt.MAX_VALUE=2147483647;function et(nt){return typeof nt=="number"&&tt.MIN_VALUE<=nt&&nt<=tt.MAX_VALUE}tt.is=et})(uinteger||(uinteger={}));var Position;(function(tt){function et(rt,st){return rt===Number.MAX_VALUE&&(rt=uinteger.MAX_VALUE),st===Number.MAX_VALUE&&(st=uinteger.MAX_VALUE),{line:rt,character:st}}tt.create=et;function nt(rt){let st=rt;return Is.objectLiteral(st)&&Is.uinteger(st.line)&&Is.uinteger(st.character)}tt.is=nt})(Position||(Position={}));var Range;(function(tt){function et(rt,st,ot,en){if(Is.uinteger(rt)&&Is.uinteger(st)&&Is.uinteger(ot)&&Is.uinteger(en))return{start:Position.create(rt,st),end:Position.create(ot,en)};if(Position.is(rt)&&Position.is(st))return{start:rt,end:st};throw new Error(`Range#create called with invalid arguments[${rt}, ${st}, ${ot}, ${en}]`)}tt.create=et;function nt(rt){let st=rt;return Is.objectLiteral(st)&&Position.is(st.start)&&Position.is(st.end)}tt.is=nt})(Range||(Range={}));var Location;(function(tt){function et(rt,st){return{uri:rt,range:st}}tt.create=et;function nt(rt){let st=rt;return Is.objectLiteral(st)&&Range.is(st.range)&&(Is.string(st.uri)||Is.undefined(st.uri))}tt.is=nt})(Location||(Location={}));var LocationLink;(function(tt){function et(rt,st,ot,en){return{targetUri:rt,targetRange:st,targetSelectionRange:ot,originSelectionRange:en}}tt.create=et;function nt(rt){let st=rt;return Is.objectLiteral(st)&&Range.is(st.targetRange)&&Is.string(st.targetUri)&&Range.is(st.targetSelectionRange)&&(Range.is(st.originSelectionRange)||Is.undefined(st.originSelectionRange))}tt.is=nt})(LocationLink||(LocationLink={}));var Color$1;(function(tt){function et(rt,st,ot,en){return{red:rt,green:st,blue:ot,alpha:en}}tt.create=et;function nt(rt){const st=rt;return Is.objectLiteral(st)&&Is.numberRange(st.red,0,1)&&Is.numberRange(st.green,0,1)&&Is.numberRange(st.blue,0,1)&&Is.numberRange(st.alpha,0,1)}tt.is=nt})(Color$1||(Color$1={}));var ColorInformation;(function(tt){function et(rt,st){return{range:rt,color:st}}tt.create=et;function nt(rt){const st=rt;return Is.objectLiteral(st)&&Range.is(st.range)&&Color$1.is(st.color)}tt.is=nt})(ColorInformation||(ColorInformation={}));var ColorPresentation;(function(tt){function et(rt,st,ot){return{label:rt,textEdit:st,additionalTextEdits:ot}}tt.create=et;function nt(rt){const st=rt;return Is.objectLiteral(st)&&Is.string(st.label)&&(Is.undefined(st.textEdit)||TextEdit.is(st))&&(Is.undefined(st.additionalTextEdits)||Is.typedArray(st.additionalTextEdits,TextEdit.is))}tt.is=nt})(ColorPresentation||(ColorPresentation={}));var FoldingRangeKind;(function(tt){tt.Comment="comment",tt.Imports="imports",tt.Region="region"})(FoldingRangeKind||(FoldingRangeKind={}));var FoldingRange;(function(tt){function et(rt,st,ot,en,tn,nn){const rn={startLine:rt,endLine:st};return Is.defined(ot)&&(rn.startCharacter=ot),Is.defined(en)&&(rn.endCharacter=en),Is.defined(tn)&&(rn.kind=tn),Is.defined(nn)&&(rn.collapsedText=nn),rn}tt.create=et;function nt(rt){const st=rt;return Is.objectLiteral(st)&&Is.uinteger(st.startLine)&&Is.uinteger(st.startLine)&&(Is.undefined(st.startCharacter)||Is.uinteger(st.startCharacter))&&(Is.undefined(st.endCharacter)||Is.uinteger(st.endCharacter))&&(Is.undefined(st.kind)||Is.string(st.kind))}tt.is=nt})(FoldingRange||(FoldingRange={}));var DiagnosticRelatedInformation;(function(tt){function et(rt,st){return{location:rt,message:st}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Location.is(st.location)&&Is.string(st.message)}tt.is=nt})(DiagnosticRelatedInformation||(DiagnosticRelatedInformation={}));var DiagnosticSeverity;(function(tt){tt.Error=1,tt.Warning=2,tt.Information=3,tt.Hint=4})(DiagnosticSeverity||(DiagnosticSeverity={}));var DiagnosticTag;(function(tt){tt.Unnecessary=1,tt.Deprecated=2})(DiagnosticTag||(DiagnosticTag={}));var CodeDescription;(function(tt){function et(nt){const rt=nt;return Is.objectLiteral(rt)&&Is.string(rt.href)}tt.is=et})(CodeDescription||(CodeDescription={}));var Diagnostic;(function(tt){function et(rt,st,ot,en,tn,nn){let rn={range:rt,message:st};return Is.defined(ot)&&(rn.severity=ot),Is.defined(en)&&(rn.code=en),Is.defined(tn)&&(rn.source=tn),Is.defined(nn)&&(rn.relatedInformation=nn),rn}tt.create=et;function nt(rt){var st;let ot=rt;return Is.defined(ot)&&Range.is(ot.range)&&Is.string(ot.message)&&(Is.number(ot.severity)||Is.undefined(ot.severity))&&(Is.integer(ot.code)||Is.string(ot.code)||Is.undefined(ot.code))&&(Is.undefined(ot.codeDescription)||Is.string((st=ot.codeDescription)===null||st===void 0?void 0:st.href))&&(Is.string(ot.source)||Is.undefined(ot.source))&&(Is.undefined(ot.relatedInformation)||Is.typedArray(ot.relatedInformation,DiagnosticRelatedInformation.is))}tt.is=nt})(Diagnostic||(Diagnostic={}));var Command;(function(tt){function et(rt,st,...ot){let en={title:rt,command:st};return Is.defined(ot)&&ot.length>0&&(en.arguments=ot),en}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Is.string(st.title)&&Is.string(st.command)}tt.is=nt})(Command||(Command={}));var TextEdit;(function(tt){function et(ot,en){return{range:ot,newText:en}}tt.replace=et;function nt(ot,en){return{range:{start:ot,end:ot},newText:en}}tt.insert=nt;function rt(ot){return{range:ot,newText:""}}tt.del=rt;function st(ot){const en=ot;return Is.objectLiteral(en)&&Is.string(en.newText)&&Range.is(en.range)}tt.is=st})(TextEdit||(TextEdit={}));var ChangeAnnotation;(function(tt){function et(rt,st,ot){const en={label:rt};return st!==void 0&&(en.needsConfirmation=st),ot!==void 0&&(en.description=ot),en}tt.create=et;function nt(rt){const st=rt;return Is.objectLiteral(st)&&Is.string(st.label)&&(Is.boolean(st.needsConfirmation)||st.needsConfirmation===void 0)&&(Is.string(st.description)||st.description===void 0)}tt.is=nt})(ChangeAnnotation||(ChangeAnnotation={}));var ChangeAnnotationIdentifier;(function(tt){function et(nt){const rt=nt;return Is.string(rt)}tt.is=et})(ChangeAnnotationIdentifier||(ChangeAnnotationIdentifier={}));var AnnotatedTextEdit;(function(tt){function et(ot,en,tn){return{range:ot,newText:en,annotationId:tn}}tt.replace=et;function nt(ot,en,tn){return{range:{start:ot,end:ot},newText:en,annotationId:tn}}tt.insert=nt;function rt(ot,en){return{range:ot,newText:"",annotationId:en}}tt.del=rt;function st(ot){const en=ot;return TextEdit.is(en)&&(ChangeAnnotation.is(en.annotationId)||ChangeAnnotationIdentifier.is(en.annotationId))}tt.is=st})(AnnotatedTextEdit||(AnnotatedTextEdit={}));var TextDocumentEdit;(function(tt){function et(rt,st){return{textDocument:rt,edits:st}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&OptionalVersionedTextDocumentIdentifier.is(st.textDocument)&&Array.isArray(st.edits)}tt.is=nt})(TextDocumentEdit||(TextDocumentEdit={}));var CreateFile;(function(tt){function et(rt,st,ot){let en={kind:"create",uri:rt};return st!==void 0&&(st.overwrite!==void 0||st.ignoreIfExists!==void 0)&&(en.options=st),ot!==void 0&&(en.annotationId=ot),en}tt.create=et;function nt(rt){let st=rt;return st&&st.kind==="create"&&Is.string(st.uri)&&(st.options===void 0||(st.options.overwrite===void 0||Is.boolean(st.options.overwrite))&&(st.options.ignoreIfExists===void 0||Is.boolean(st.options.ignoreIfExists)))&&(st.annotationId===void 0||ChangeAnnotationIdentifier.is(st.annotationId))}tt.is=nt})(CreateFile||(CreateFile={}));var RenameFile;(function(tt){function et(rt,st,ot,en){let tn={kind:"rename",oldUri:rt,newUri:st};return ot!==void 0&&(ot.overwrite!==void 0||ot.ignoreIfExists!==void 0)&&(tn.options=ot),en!==void 0&&(tn.annotationId=en),tn}tt.create=et;function nt(rt){let st=rt;return st&&st.kind==="rename"&&Is.string(st.oldUri)&&Is.string(st.newUri)&&(st.options===void 0||(st.options.overwrite===void 0||Is.boolean(st.options.overwrite))&&(st.options.ignoreIfExists===void 0||Is.boolean(st.options.ignoreIfExists)))&&(st.annotationId===void 0||ChangeAnnotationIdentifier.is(st.annotationId))}tt.is=nt})(RenameFile||(RenameFile={}));var DeleteFile;(function(tt){function et(rt,st,ot){let en={kind:"delete",uri:rt};return st!==void 0&&(st.recursive!==void 0||st.ignoreIfNotExists!==void 0)&&(en.options=st),ot!==void 0&&(en.annotationId=ot),en}tt.create=et;function nt(rt){let st=rt;return st&&st.kind==="delete"&&Is.string(st.uri)&&(st.options===void 0||(st.options.recursive===void 0||Is.boolean(st.options.recursive))&&(st.options.ignoreIfNotExists===void 0||Is.boolean(st.options.ignoreIfNotExists)))&&(st.annotationId===void 0||ChangeAnnotationIdentifier.is(st.annotationId))}tt.is=nt})(DeleteFile||(DeleteFile={}));var WorkspaceEdit;(function(tt){function et(nt){let rt=nt;return rt&&(rt.changes!==void 0||rt.documentChanges!==void 0)&&(rt.documentChanges===void 0||rt.documentChanges.every(st=>Is.string(st.kind)?CreateFile.is(st)||RenameFile.is(st)||DeleteFile.is(st):TextDocumentEdit.is(st)))}tt.is=et})(WorkspaceEdit||(WorkspaceEdit={}));var TextDocumentIdentifier;(function(tt){function et(rt){return{uri:rt}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Is.string(st.uri)}tt.is=nt})(TextDocumentIdentifier||(TextDocumentIdentifier={}));var VersionedTextDocumentIdentifier;(function(tt){function et(rt,st){return{uri:rt,version:st}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Is.string(st.uri)&&Is.integer(st.version)}tt.is=nt})(VersionedTextDocumentIdentifier||(VersionedTextDocumentIdentifier={}));var OptionalVersionedTextDocumentIdentifier;(function(tt){function et(rt,st){return{uri:rt,version:st}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Is.string(st.uri)&&(st.version===null||Is.integer(st.version))}tt.is=nt})(OptionalVersionedTextDocumentIdentifier||(OptionalVersionedTextDocumentIdentifier={}));var TextDocumentItem;(function(tt){function et(rt,st,ot,en){return{uri:rt,languageId:st,version:ot,text:en}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Is.string(st.uri)&&Is.string(st.languageId)&&Is.integer(st.version)&&Is.string(st.text)}tt.is=nt})(TextDocumentItem||(TextDocumentItem={}));var MarkupKind;(function(tt){tt.PlainText="plaintext",tt.Markdown="markdown";function et(nt){const rt=nt;return rt===tt.PlainText||rt===tt.Markdown}tt.is=et})(MarkupKind||(MarkupKind={}));var MarkupContent;(function(tt){function et(nt){const rt=nt;return Is.objectLiteral(nt)&&MarkupKind.is(rt.kind)&&Is.string(rt.value)}tt.is=et})(MarkupContent||(MarkupContent={}));var CompletionItemKind;(function(tt){tt.Text=1,tt.Method=2,tt.Function=3,tt.Constructor=4,tt.Field=5,tt.Variable=6,tt.Class=7,tt.Interface=8,tt.Module=9,tt.Property=10,tt.Unit=11,tt.Value=12,tt.Enum=13,tt.Keyword=14,tt.Snippet=15,tt.Color=16,tt.File=17,tt.Reference=18,tt.Folder=19,tt.EnumMember=20,tt.Constant=21,tt.Struct=22,tt.Event=23,tt.Operator=24,tt.TypeParameter=25})(CompletionItemKind||(CompletionItemKind={}));var InsertTextFormat;(function(tt){tt.PlainText=1,tt.Snippet=2})(InsertTextFormat||(InsertTextFormat={}));var CompletionItemTag;(function(tt){tt.Deprecated=1})(CompletionItemTag||(CompletionItemTag={}));var InsertReplaceEdit;(function(tt){function et(rt,st,ot){return{newText:rt,insert:st,replace:ot}}tt.create=et;function nt(rt){const st=rt;return st&&Is.string(st.newText)&&Range.is(st.insert)&&Range.is(st.replace)}tt.is=nt})(InsertReplaceEdit||(InsertReplaceEdit={}));var InsertTextMode;(function(tt){tt.asIs=1,tt.adjustIndentation=2})(InsertTextMode||(InsertTextMode={}));var CompletionItemLabelDetails;(function(tt){function et(nt){const rt=nt;return rt&&(Is.string(rt.detail)||rt.detail===void 0)&&(Is.string(rt.description)||rt.description===void 0)}tt.is=et})(CompletionItemLabelDetails||(CompletionItemLabelDetails={}));var CompletionItem;(function(tt){function et(nt){return{label:nt}}tt.create=et})(CompletionItem||(CompletionItem={}));var CompletionList;(function(tt){function et(nt,rt){return{items:nt||[],isIncomplete:!!rt}}tt.create=et})(CompletionList||(CompletionList={}));var MarkedString;(function(tt){function et(rt){return rt.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}tt.fromPlainText=et;function nt(rt){const st=rt;return Is.string(st)||Is.objectLiteral(st)&&Is.string(st.language)&&Is.string(st.value)}tt.is=nt})(MarkedString||(MarkedString={}));var Hover;(function(tt){function et(nt){let rt=nt;return!!rt&&Is.objectLiteral(rt)&&(MarkupContent.is(rt.contents)||MarkedString.is(rt.contents)||Is.typedArray(rt.contents,MarkedString.is))&&(nt.range===void 0||Range.is(nt.range))}tt.is=et})(Hover||(Hover={}));var ParameterInformation;(function(tt){function et(nt,rt){return rt?{label:nt,documentation:rt}:{label:nt}}tt.create=et})(ParameterInformation||(ParameterInformation={}));var SignatureInformation;(function(tt){function et(nt,rt,...st){let ot={label:nt};return Is.defined(rt)&&(ot.documentation=rt),Is.defined(st)?ot.parameters=st:ot.parameters=[],ot}tt.create=et})(SignatureInformation||(SignatureInformation={}));var DocumentHighlightKind;(function(tt){tt.Text=1,tt.Read=2,tt.Write=3})(DocumentHighlightKind||(DocumentHighlightKind={}));var DocumentHighlight;(function(tt){function et(nt,rt){let st={range:nt};return Is.number(rt)&&(st.kind=rt),st}tt.create=et})(DocumentHighlight||(DocumentHighlight={}));var SymbolKind;(function(tt){tt.File=1,tt.Module=2,tt.Namespace=3,tt.Package=4,tt.Class=5,tt.Method=6,tt.Property=7,tt.Field=8,tt.Constructor=9,tt.Enum=10,tt.Interface=11,tt.Function=12,tt.Variable=13,tt.Constant=14,tt.String=15,tt.Number=16,tt.Boolean=17,tt.Array=18,tt.Object=19,tt.Key=20,tt.Null=21,tt.EnumMember=22,tt.Struct=23,tt.Event=24,tt.Operator=25,tt.TypeParameter=26})(SymbolKind||(SymbolKind={}));var SymbolTag;(function(tt){tt.Deprecated=1})(SymbolTag||(SymbolTag={}));var SymbolInformation;(function(tt){function et(nt,rt,st,ot,en){let tn={name:nt,kind:rt,location:{uri:ot,range:st}};return en&&(tn.containerName=en),tn}tt.create=et})(SymbolInformation||(SymbolInformation={}));var WorkspaceSymbol;(function(tt){function et(nt,rt,st,ot){return ot!==void 0?{name:nt,kind:rt,location:{uri:st,range:ot}}:{name:nt,kind:rt,location:{uri:st}}}tt.create=et})(WorkspaceSymbol||(WorkspaceSymbol={}));var DocumentSymbol;(function(tt){function et(rt,st,ot,en,tn,nn){let rn={name:rt,detail:st,kind:ot,range:en,selectionRange:tn};return nn!==void 0&&(rn.children=nn),rn}tt.create=et;function nt(rt){let st=rt;return st&&Is.string(st.name)&&Is.number(st.kind)&&Range.is(st.range)&&Range.is(st.selectionRange)&&(st.detail===void 0||Is.string(st.detail))&&(st.deprecated===void 0||Is.boolean(st.deprecated))&&(st.children===void 0||Array.isArray(st.children))&&(st.tags===void 0||Array.isArray(st.tags))}tt.is=nt})(DocumentSymbol||(DocumentSymbol={}));var CodeActionKind;(function(tt){tt.Empty="",tt.QuickFix="quickfix",tt.Refactor="refactor",tt.RefactorExtract="refactor.extract",tt.RefactorInline="refactor.inline",tt.RefactorRewrite="refactor.rewrite",tt.Source="source",tt.SourceOrganizeImports="source.organizeImports",tt.SourceFixAll="source.fixAll"})(CodeActionKind||(CodeActionKind={}));var CodeActionTriggerKind;(function(tt){tt.Invoked=1,tt.Automatic=2})(CodeActionTriggerKind||(CodeActionTriggerKind={}));var CodeActionContext;(function(tt){function et(rt,st,ot){let en={diagnostics:rt};return st!=null&&(en.only=st),ot!=null&&(en.triggerKind=ot),en}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Is.typedArray(st.diagnostics,Diagnostic.is)&&(st.only===void 0||Is.typedArray(st.only,Is.string))&&(st.triggerKind===void 0||st.triggerKind===CodeActionTriggerKind.Invoked||st.triggerKind===CodeActionTriggerKind.Automatic)}tt.is=nt})(CodeActionContext||(CodeActionContext={}));var CodeAction;(function(tt){function et(rt,st,ot){let en={title:rt},tn=!0;return typeof st=="string"?(tn=!1,en.kind=st):Command.is(st)?en.command=st:en.edit=st,tn&&ot!==void 0&&(en.kind=ot),en}tt.create=et;function nt(rt){let st=rt;return st&&Is.string(st.title)&&(st.diagnostics===void 0||Is.typedArray(st.diagnostics,Diagnostic.is))&&(st.kind===void 0||Is.string(st.kind))&&(st.edit!==void 0||st.command!==void 0)&&(st.command===void 0||Command.is(st.command))&&(st.isPreferred===void 0||Is.boolean(st.isPreferred))&&(st.edit===void 0||WorkspaceEdit.is(st.edit))}tt.is=nt})(CodeAction||(CodeAction={}));var CodeLens;(function(tt){function et(rt,st){let ot={range:rt};return Is.defined(st)&&(ot.data=st),ot}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Range.is(st.range)&&(Is.undefined(st.command)||Command.is(st.command))}tt.is=nt})(CodeLens||(CodeLens={}));var FormattingOptions;(function(tt){function et(rt,st){return{tabSize:rt,insertSpaces:st}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Is.uinteger(st.tabSize)&&Is.boolean(st.insertSpaces)}tt.is=nt})(FormattingOptions||(FormattingOptions={}));var DocumentLink;(function(tt){function et(rt,st,ot){return{range:rt,target:st,data:ot}}tt.create=et;function nt(rt){let st=rt;return Is.defined(st)&&Range.is(st.range)&&(Is.undefined(st.target)||Is.string(st.target))}tt.is=nt})(DocumentLink||(DocumentLink={}));var SelectionRange;(function(tt){function et(rt,st){return{range:rt,parent:st}}tt.create=et;function nt(rt){let st=rt;return Is.objectLiteral(st)&&Range.is(st.range)&&(st.parent===void 0||tt.is(st.parent))}tt.is=nt})(SelectionRange||(SelectionRange={}));var SemanticTokenTypes;(function(tt){tt.namespace="namespace",tt.type="type",tt.class="class",tt.enum="enum",tt.interface="interface",tt.struct="struct",tt.typeParameter="typeParameter",tt.parameter="parameter",tt.variable="variable",tt.property="property",tt.enumMember="enumMember",tt.event="event",tt.function="function",tt.method="method",tt.macro="macro",tt.keyword="keyword",tt.modifier="modifier",tt.comment="comment",tt.string="string",tt.number="number",tt.regexp="regexp",tt.operator="operator",tt.decorator="decorator"})(SemanticTokenTypes||(SemanticTokenTypes={}));var SemanticTokenModifiers;(function(tt){tt.declaration="declaration",tt.definition="definition",tt.readonly="readonly",tt.static="static",tt.deprecated="deprecated",tt.abstract="abstract",tt.async="async",tt.modification="modification",tt.documentation="documentation",tt.defaultLibrary="defaultLibrary"})(SemanticTokenModifiers||(SemanticTokenModifiers={}));var SemanticTokens;(function(tt){function et(nt){const rt=nt;return Is.objectLiteral(rt)&&(rt.resultId===void 0||typeof rt.resultId=="string")&&Array.isArray(rt.data)&&(rt.data.length===0||typeof rt.data[0]=="number")}tt.is=et})(SemanticTokens||(SemanticTokens={}));var InlineValueText;(function(tt){function et(rt,st){return{range:rt,text:st}}tt.create=et;function nt(rt){const st=rt;return st!=null&&Range.is(st.range)&&Is.string(st.text)}tt.is=nt})(InlineValueText||(InlineValueText={}));var InlineValueVariableLookup;(function(tt){function et(rt,st,ot){return{range:rt,variableName:st,caseSensitiveLookup:ot}}tt.create=et;function nt(rt){const st=rt;return st!=null&&Range.is(st.range)&&Is.boolean(st.caseSensitiveLookup)&&(Is.string(st.variableName)||st.variableName===void 0)}tt.is=nt})(InlineValueVariableLookup||(InlineValueVariableLookup={}));var InlineValueEvaluatableExpression;(function(tt){function et(rt,st){return{range:rt,expression:st}}tt.create=et;function nt(rt){const st=rt;return st!=null&&Range.is(st.range)&&(Is.string(st.expression)||st.expression===void 0)}tt.is=nt})(InlineValueEvaluatableExpression||(InlineValueEvaluatableExpression={}));var InlineValueContext;(function(tt){function et(rt,st){return{frameId:rt,stoppedLocation:st}}tt.create=et;function nt(rt){const st=rt;return Is.defined(st)&&Range.is(rt.stoppedLocation)}tt.is=nt})(InlineValueContext||(InlineValueContext={}));var InlayHintKind;(function(tt){tt.Type=1,tt.Parameter=2;function et(nt){return nt===1||nt===2}tt.is=et})(InlayHintKind||(InlayHintKind={}));var InlayHintLabelPart;(function(tt){function et(rt){return{value:rt}}tt.create=et;function nt(rt){const st=rt;return Is.objectLiteral(st)&&(st.tooltip===void 0||Is.string(st.tooltip)||MarkupContent.is(st.tooltip))&&(st.location===void 0||Location.is(st.location))&&(st.command===void 0||Command.is(st.command))}tt.is=nt})(InlayHintLabelPart||(InlayHintLabelPart={}));var InlayHint;(function(tt){function et(rt,st,ot){const en={position:rt,label:st};return ot!==void 0&&(en.kind=ot),en}tt.create=et;function nt(rt){const st=rt;return Is.objectLiteral(st)&&Position.is(st.position)&&(Is.string(st.label)||Is.typedArray(st.label,InlayHintLabelPart.is))&&(st.kind===void 0||InlayHintKind.is(st.kind))&&st.textEdits===void 0||Is.typedArray(st.textEdits,TextEdit.is)&&(st.tooltip===void 0||Is.string(st.tooltip)||MarkupContent.is(st.tooltip))&&(st.paddingLeft===void 0||Is.boolean(st.paddingLeft))&&(st.paddingRight===void 0||Is.boolean(st.paddingRight))}tt.is=nt})(InlayHint||(InlayHint={}));var StringValue;(function(tt){function et(nt){return{kind:"snippet",value:nt}}tt.createSnippet=et})(StringValue||(StringValue={}));var InlineCompletionItem;(function(tt){function et(nt,rt,st,ot){return{insertText:nt,filterText:rt,range:st,command:ot}}tt.create=et})(InlineCompletionItem||(InlineCompletionItem={}));var InlineCompletionList;(function(tt){function et(nt){return{items:nt}}tt.create=et})(InlineCompletionList||(InlineCompletionList={}));var InlineCompletionTriggerKind;(function(tt){tt.Invoked=0,tt.Automatic=1})(InlineCompletionTriggerKind||(InlineCompletionTriggerKind={}));var SelectedCompletionInfo;(function(tt){function et(nt,rt){return{range:nt,text:rt}}tt.create=et})(SelectedCompletionInfo||(SelectedCompletionInfo={}));var InlineCompletionContext;(function(tt){function et(nt,rt){return{triggerKind:nt,selectedCompletionInfo:rt}}tt.create=et})(InlineCompletionContext||(InlineCompletionContext={}));var WorkspaceFolder;(function(tt){function et(nt){const rt=nt;return Is.objectLiteral(rt)&&URI$1.is(rt.uri)&&Is.string(rt.name)}tt.is=et})(WorkspaceFolder||(WorkspaceFolder={}));var TextDocument$1;(function(tt){function et(ot,en,tn,nn){return new FullTextDocument$1(ot,en,tn,nn)}tt.create=et;function nt(ot){let en=ot;return!!(Is.defined(en)&&Is.string(en.uri)&&(Is.undefined(en.languageId)||Is.string(en.languageId))&&Is.uinteger(en.lineCount)&&Is.func(en.getText)&&Is.func(en.positionAt)&&Is.func(en.offsetAt))}tt.is=nt;function rt(ot,en){let tn=ot.getText(),nn=st(en,(sn,an)=>{let on=sn.range.start.line-an.range.start.line;return on===0?sn.range.start.character-an.range.start.character:on}),rn=tn.length;for(let sn=nn.length-1;sn>=0;sn--){let an=nn[sn],on=ot.offsetAt(an.range.start),cn=ot.offsetAt(an.range.end);if(cn<=rn)tn=tn.substring(0,on)+an.newText+tn.substring(cn,tn.length);else throw new Error("Overlapping edit");rn=on}return tn}tt.applyEdits=rt;function st(ot,en){if(ot.length<=1)return ot;const tn=ot.length/2|0,nn=ot.slice(0,tn),rn=ot.slice(tn);st(nn,en),st(rn,en);let sn=0,an=0,on=0;for(;sn<nn.length&&an<rn.length;)en(nn[sn],rn[an])<=0?ot[on++]=nn[sn++]:ot[on++]=rn[an++];for(;sn<nn.length;)ot[on++]=nn[sn++];for(;an<rn.length;)ot[on++]=rn[an++];return ot}})(TextDocument$1||(TextDocument$1={}));let FullTextDocument$1=class{constructor(et,nt,rt,st){this._uri=et,this._languageId=nt,this._version=rt,this._content=st,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(et){if(et){let nt=this.offsetAt(et.start),rt=this.offsetAt(et.end);return this._content.substring(nt,rt)}return this._content}update(et,nt){this._content=et.text,this._version=nt,this._lineOffsets=void 0}getLineOffsets(){if(this._lineOffsets===void 0){let et=[],nt=this._content,rt=!0;for(let st=0;st<nt.length;st++){rt&&(et.push(st),rt=!1);let ot=nt.charAt(st);rt=ot==="\r"||ot===`
|
|
134
|
-
`,ot==="\r"&&st+1<nt.length&&nt.charAt(st+1)===`
|
|
135
|
-
`&&st++}rt&&nt.length>0&&et.push(nt.length),this._lineOffsets=et}return this._lineOffsets}positionAt(et){et=Math.max(Math.min(et,this._content.length),0);let nt=this.getLineOffsets(),rt=0,st=nt.length;if(st===0)return Position.create(0,et);for(;rt<st;){let en=Math.floor((rt+st)/2);nt[en]>et?st=en:rt=en+1}let ot=rt-1;return Position.create(ot,et-nt[ot])}offsetAt(et){let nt=this.getLineOffsets();if(et.line>=nt.length)return this._content.length;if(et.line<0)return 0;let rt=nt[et.line],st=et.line+1<nt.length?nt[et.line+1]:this._content.length;return Math.max(Math.min(rt+et.character,st),rt)}get lineCount(){return this.getLineOffsets().length}};var Is;(function(tt){const et=Object.prototype.toString;function nt(cn){return typeof cn<"u"}tt.defined=nt;function rt(cn){return typeof cn>"u"}tt.undefined=rt;function st(cn){return cn===!0||cn===!1}tt.boolean=st;function ot(cn){return et.call(cn)==="[object String]"}tt.string=ot;function en(cn){return et.call(cn)==="[object Number]"}tt.number=en;function tn(cn,ln,fn){return et.call(cn)==="[object Number]"&&ln<=cn&&cn<=fn}tt.numberRange=tn;function nn(cn){return et.call(cn)==="[object Number]"&&-2147483648<=cn&&cn<=2147483647}tt.integer=nn;function rn(cn){return et.call(cn)==="[object Number]"&&0<=cn&&cn<=2147483647}tt.uinteger=rn;function sn(cn){return et.call(cn)==="[object Function]"}tt.func=sn;function an(cn){return cn!==null&&typeof cn=="object"}tt.objectLiteral=an;function on(cn,ln){return Array.isArray(cn)&&cn.every(ln)}tt.typedArray=on})(Is||(Is={}));class CstNodeBuilder{constructor(){this.nodeStack=[]}get current(){var et;return(et=this.nodeStack[this.nodeStack.length-1])!==null&&et!==void 0?et:this.rootNode}buildRootNode(et){return this.rootNode=new RootCstNodeImpl(et),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(et){const nt=new CompositeCstNodeImpl;return nt.grammarSource=et,nt.root=this.rootNode,this.current.content.push(nt),this.nodeStack.push(nt),nt}buildLeafNode(et,nt){const rt=new LeafCstNodeImpl(et.startOffset,et.image.length,tokenToRange(et),et.tokenType,!nt);return rt.grammarSource=nt,rt.root=this.rootNode,this.current.content.push(rt),rt}removeNode(et){const nt=et.container;if(nt){const rt=nt.content.indexOf(et);rt>=0&&nt.content.splice(rt,1)}}addHiddenNodes(et){const nt=[];for(const ot of et){const en=new LeafCstNodeImpl(ot.startOffset,ot.image.length,tokenToRange(ot),ot.tokenType,!0);en.root=this.rootNode,nt.push(en)}let rt=this.current,st=!1;if(rt.content.length>0){rt.content.push(...nt);return}for(;rt.container;){const ot=rt.container.content.indexOf(rt);if(ot>0){rt.container.content.splice(ot,0,...nt),st=!0;break}rt=rt.container}st||this.rootNode.content.unshift(...nt)}construct(et){const nt=this.current;typeof et.$type=="string"&&(this.current.astNode=et),et.$cstNode=nt;const rt=this.nodeStack.pop();rt?.content.length===0&&this.removeNode(rt)}}class AbstractCstNode{get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var et,nt;const rt=typeof((et=this._astNode)===null||et===void 0?void 0:et.$type)=="string"?this._astNode:(nt=this.container)===null||nt===void 0?void 0:nt.astNode;if(!rt)throw new Error("This node has no associated AST element");return rt}set astNode(et){this._astNode=et}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}}class LeafCstNodeImpl extends AbstractCstNode{get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(et,nt,rt,st,ot=!1){super(),this._hidden=ot,this._offset=et,this._tokenType=st,this._length=nt,this._range=rt}}class CompositeCstNodeImpl extends AbstractCstNode{constructor(){super(...arguments),this.content=new CstNodeContainer(this)}get children(){return this.content}get offset(){var et,nt;return(nt=(et=this.firstNonHiddenNode)===null||et===void 0?void 0:et.offset)!==null&&nt!==void 0?nt:0}get length(){return this.end-this.offset}get end(){var et,nt;return(nt=(et=this.lastNonHiddenNode)===null||et===void 0?void 0:et.end)!==null&&nt!==void 0?nt:0}get range(){const et=this.firstNonHiddenNode,nt=this.lastNonHiddenNode;if(et&&nt){if(this._rangeCache===void 0){const{range:rt}=et,{range:st}=nt;this._rangeCache={start:rt.start,end:st.end.line<rt.start.line?rt.start:st.end}}return this._rangeCache}else return{start:Position.create(0,0),end:Position.create(0,0)}}get firstNonHiddenNode(){for(const et of this.content)if(!et.hidden)return et;return this.content[0]}get lastNonHiddenNode(){for(let et=this.content.length-1;et>=0;et--){const nt=this.content[et];if(!nt.hidden)return nt}return this.content[this.content.length-1]}}class CstNodeContainer extends Array{constructor(et){super(),this.parent=et,Object.setPrototypeOf(this,CstNodeContainer.prototype)}push(...et){return this.addParents(et),super.push(...et)}unshift(...et){return this.addParents(et),super.unshift(...et)}splice(et,nt,...rt){return this.addParents(rt),super.splice(et,nt,...rt)}addParents(et){for(const nt of et)nt.container=this.parent}}class RootCstNodeImpl extends CompositeCstNodeImpl{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(et){super(),this._text="",this._text=et??""}}const DatatypeSymbol=Symbol("Datatype");function isDataTypeNode(tt){return tt.$type===DatatypeSymbol}const ruleSuffix="\u200B",withRuleSuffix=tt=>tt.endsWith(ruleSuffix)?tt:tt+ruleSuffix;class AbstractLangiumParser{constructor(et){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=et.parser.Lexer;const nt=this.lexer.definition,rt=et.LanguageMetaData.mode==="production";this.wrapper=new ChevrotainWrapper(nt,Object.assign(Object.assign({},et.parser.ParserConfig),{skipValidations:rt,errorMessageProvider:et.parser.ParserErrorMessageProvider}))}alternatives(et,nt){this.wrapper.wrapOr(et,nt)}optional(et,nt){this.wrapper.wrapOption(et,nt)}many(et,nt){this.wrapper.wrapMany(et,nt)}atLeastOne(et,nt){this.wrapper.wrapAtLeastOne(et,nt)}getRule(et){return this.allRules.get(et)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}}class LangiumParser extends AbstractLangiumParser{get current(){return this.stack[this.stack.length-1]}constructor(et){super(et),this.nodeBuilder=new CstNodeBuilder,this.stack=[],this.assignmentMap=new Map,this.linker=et.references.Linker,this.converter=et.parser.ValueConverter,this.astReflection=et.shared.AstReflection}rule(et,nt){const rt=this.computeRuleType(et),st=this.wrapper.DEFINE_RULE(withRuleSuffix(et.name),this.startImplementation(rt,nt).bind(this));return this.allRules.set(et.name,st),et.entry&&(this.mainRule=st),st}computeRuleType(et){if(!et.fragment){if(isDataTypeRule(et))return DatatypeSymbol;{const nt=getExplicitRuleType(et);return nt??et.name}}}parse(et,nt={}){this.nodeBuilder.buildRootNode(et);const rt=this.lexerResult=this.lexer.tokenize(et);this.wrapper.input=rt.tokens;const st=nt.rule?this.allRules.get(nt.rule):this.mainRule;if(!st)throw new Error(nt.rule?`No rule found with name '${nt.rule}'`:"No main rule available.");const ot=st.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(rt.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:ot,lexerErrors:rt.errors,lexerReport:rt.report,parserErrors:this.wrapper.errors}}startImplementation(et,nt){return rt=>{const st=!this.isRecording()&&et!==void 0;if(st){const en={$type:et};this.stack.push(en),et===DatatypeSymbol&&(en.value="")}let ot;try{ot=nt(rt)}catch{ot=void 0}return ot===void 0&&st&&(ot=this.construct()),ot}}extractHiddenTokens(et){const nt=this.lexerResult.hidden;if(!nt.length)return[];const rt=et.startOffset;for(let st=0;st<nt.length;st++)if(nt[st].startOffset>rt)return nt.splice(0,st);return nt.splice(0,nt.length)}consume(et,nt,rt){const st=this.wrapper.wrapConsume(et,nt);if(!this.isRecording()&&this.isValidToken(st)){const ot=this.extractHiddenTokens(st);this.nodeBuilder.addHiddenNodes(ot);const en=this.nodeBuilder.buildLeafNode(st,rt),{assignment:tn,isCrossRef:nn}=this.getAssignment(rt),rn=this.current;if(tn){const sn=isKeyword(rt)?st.image:this.converter.convert(st.image,en);this.assign(tn.operator,tn.feature,sn,en,nn)}else if(isDataTypeNode(rn)){let sn=st.image;isKeyword(rt)||(sn=this.converter.convert(sn,en).toString()),rn.value+=sn}}}isValidToken(et){return!et.isInsertedInRecovery&&!isNaN(et.startOffset)&&typeof et.endOffset=="number"&&!isNaN(et.endOffset)}subrule(et,nt,rt,st,ot){let en;!this.isRecording()&&!rt&&(en=this.nodeBuilder.buildCompositeNode(st));const tn=this.wrapper.wrapSubrule(et,nt,ot);!this.isRecording()&&en&&en.length>0&&this.performSubruleAssignment(tn,st,en)}performSubruleAssignment(et,nt,rt){const{assignment:st,isCrossRef:ot}=this.getAssignment(nt);if(st)this.assign(st.operator,st.feature,et,rt,ot);else if(!st){const en=this.current;if(isDataTypeNode(en))en.value+=et.toString();else if(typeof et=="object"&&et){const nn=this.assignWithoutOverride(et,en);this.stack.pop(),this.stack.push(nn)}}}action(et,nt){if(!this.isRecording()){let rt=this.current;if(nt.feature&&nt.operator){rt=this.construct(),this.nodeBuilder.removeNode(rt.$cstNode),this.nodeBuilder.buildCompositeNode(nt).content.push(rt.$cstNode);const ot={$type:et};this.stack.push(ot),this.assign(nt.operator,nt.feature,rt,rt.$cstNode,!1)}else rt.$type=et}}construct(){if(this.isRecording())return;const et=this.current;return linkContentToContainer(et),this.nodeBuilder.construct(et),this.stack.pop(),isDataTypeNode(et)?this.converter.convert(et.value,et.$cstNode):(assignMandatoryProperties(this.astReflection,et),et)}getAssignment(et){if(!this.assignmentMap.has(et)){const nt=getContainerOfType(et,isAssignment);this.assignmentMap.set(et,{assignment:nt,isCrossRef:nt?isCrossReference(nt.terminal):!1})}return this.assignmentMap.get(et)}assign(et,nt,rt,st,ot){const en=this.current;let tn;switch(ot&&typeof rt=="string"?tn=this.linker.buildReference(en,nt,st,rt):tn=rt,et){case"=":{en[nt]=tn;break}case"?=":{en[nt]=!0;break}case"+=":Array.isArray(en[nt])||(en[nt]=[]),en[nt].push(tn)}}assignWithoutOverride(et,nt){for(const[st,ot]of Object.entries(nt)){const en=et[st];en===void 0?et[st]=ot:Array.isArray(en)&&Array.isArray(ot)&&(ot.push(...en),et[st]=ot)}const rt=et.$cstNode;return rt&&(rt.astNode=void 0,et.$cstNode=void 0),et}get definitionErrors(){return this.wrapper.definitionErrors}}class AbstractParserErrorMessageProvider{buildMismatchTokenMessage(et){return defaultParserErrorProvider.buildMismatchTokenMessage(et)}buildNotAllInputParsedMessage(et){return defaultParserErrorProvider.buildNotAllInputParsedMessage(et)}buildNoViableAltMessage(et){return defaultParserErrorProvider.buildNoViableAltMessage(et)}buildEarlyExitMessage(et){return defaultParserErrorProvider.buildEarlyExitMessage(et)}}class LangiumParserErrorMessageProvider extends AbstractParserErrorMessageProvider{buildMismatchTokenMessage({expected:et,actual:nt}){return`Expecting ${et.LABEL?"`"+et.LABEL+"`":et.name.endsWith(":KW")?`keyword '${et.name.substring(0,et.name.length-3)}'`:`token of type '${et.name}'`} but found \`${nt.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:et}){return`Expecting end of file but found \`${et.image}\`.`}}class LangiumCompletionParser extends AbstractLangiumParser{constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(et){this.resetState();const nt=this.lexer.tokenize(et,{mode:"partial"});return this.tokens=nt.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(et,nt){const rt=this.wrapper.DEFINE_RULE(withRuleSuffix(et.name),this.startImplementation(nt).bind(this));return this.allRules.set(et.name,rt),et.entry&&(this.mainRule=rt),rt}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(et){return nt=>{const rt=this.keepStackSize();try{et(nt)}finally{this.resetStackSize(rt)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){const et=this.elementStack.length;return this.stackSize=et,et}resetStackSize(et){this.removeUnexpectedElements(),this.stackSize=et}consume(et,nt,rt){this.wrapper.wrapConsume(et,nt),this.isRecording()||(this.lastElementStack=[...this.elementStack,rt],this.nextTokenIndex=this.currIdx+1)}subrule(et,nt,rt,st,ot){this.before(st),this.wrapper.wrapSubrule(et,nt,ot),this.after(st)}before(et){this.isRecording()||this.elementStack.push(et)}after(et){if(!this.isRecording()){const nt=this.elementStack.lastIndexOf(et);nt>=0&&this.elementStack.splice(nt)}}get currIdx(){return this.wrapper.currIdx}}const defaultConfig={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new LangiumParserErrorMessageProvider};class ChevrotainWrapper extends EmbeddedActionsParser{constructor(et,nt){const rt=nt&&"maxLookahead"in nt;super(et,Object.assign(Object.assign(Object.assign({},defaultConfig),{lookaheadStrategy:rt?new LLkLookaheadStrategy({maxLookahead:nt.maxLookahead}):new LLStarLookaheadStrategy({logging:nt.skipValidations?()=>{}:void 0})}),nt))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(et,nt){return this.RULE(et,nt)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(et,nt){return this.consume(et,nt)}wrapSubrule(et,nt,rt){return this.subrule(et,nt,{ARGS:[rt]})}wrapOr(et,nt){this.or(et,nt)}wrapOption(et,nt){this.option(et,nt)}wrapMany(et,nt){this.many(et,nt)}wrapAtLeastOne(et,nt){this.atLeastOne(et,nt)}}function createParser(tt,et,nt){return buildRules({parser:et,tokens:nt,ruleNames:new Map},tt),et}function buildRules(tt,et){const nt=getAllReachableRules(et,!1),rt=stream(et.rules).filter(isParserRule).filter(st=>nt.has(st));for(const st of rt){const ot=Object.assign(Object.assign({},tt),{consume:1,optional:1,subrule:1,many:1,or:1});tt.parser.rule(st,buildElement(ot,st.definition))}}function buildElement(tt,et,nt=!1){let rt;if(isKeyword(et))rt=buildKeyword(tt,et);else if(isAction(et))rt=buildAction(tt,et);else if(isAssignment(et))rt=buildElement(tt,et.terminal);else if(isCrossReference(et))rt=buildCrossReference(tt,et);else if(isRuleCall(et))rt=buildRuleCall(tt,et);else if(isAlternatives(et))rt=buildAlternatives(tt,et);else if(isUnorderedGroup(et))rt=buildUnorderedGroup(tt,et);else if(isGroup(et))rt=buildGroup(tt,et);else if(isEndOfFile(et)){const st=tt.consume++;rt=()=>tt.parser.consume(st,EOF,et)}else throw new ErrorWithLocation(et.$cstNode,`Unexpected element type: ${et.$type}`);return wrap$1(tt,nt?void 0:getGuardCondition(et),rt,et.cardinality)}function buildAction(tt,et){const nt=getTypeName(et);return()=>tt.parser.action(nt,et)}function buildRuleCall(tt,et){const nt=et.rule.ref;if(isParserRule(nt)){const rt=tt.subrule++,st=nt.fragment,ot=et.arguments.length>0?buildRuleCallPredicate(nt,et.arguments):()=>({});return en=>tt.parser.subrule(rt,getRule(tt,nt),st,et,ot(en))}else if(isTerminalRule(nt)){const rt=tt.consume++,st=getToken(tt,nt.name);return()=>tt.parser.consume(rt,st,et)}else if(nt)assertUnreachable();else throw new ErrorWithLocation(et.$cstNode,`Undefined rule: ${et.rule.$refText}`)}function buildRuleCallPredicate(tt,et){const nt=et.map(rt=>buildPredicate(rt.value));return rt=>{const st={};for(let ot=0;ot<nt.length;ot++){const en=tt.parameters[ot],tn=nt[ot];st[en.name]=tn(rt)}return st}}function buildPredicate(tt){if(isDisjunction(tt)){const et=buildPredicate(tt.left),nt=buildPredicate(tt.right);return rt=>et(rt)||nt(rt)}else if(isConjunction(tt)){const et=buildPredicate(tt.left),nt=buildPredicate(tt.right);return rt=>et(rt)&&nt(rt)}else if(isNegation(tt)){const et=buildPredicate(tt.value);return nt=>!et(nt)}else if(isParameterReference(tt)){const et=tt.parameter.ref.name;return nt=>nt!==void 0&&nt[et]===!0}else if(isBooleanLiteral(tt)){const et=!!tt.true;return()=>et}assertUnreachable()}function buildAlternatives(tt,et){if(et.elements.length===1)return buildElement(tt,et.elements[0]);{const nt=[];for(const st of et.elements){const ot={ALT:buildElement(tt,st,!0)},en=getGuardCondition(st);en&&(ot.GATE=buildPredicate(en)),nt.push(ot)}const rt=tt.or++;return st=>tt.parser.alternatives(rt,nt.map(ot=>{const en={ALT:()=>ot.ALT(st)},tn=ot.GATE;return tn&&(en.GATE=()=>tn(st)),en}))}}function buildUnorderedGroup(tt,et){if(et.elements.length===1)return buildElement(tt,et.elements[0]);const nt=[];for(const tn of et.elements){const nn={ALT:buildElement(tt,tn,!0)},rn=getGuardCondition(tn);rn&&(nn.GATE=buildPredicate(rn)),nt.push(nn)}const rt=tt.or++,st=(tn,nn)=>{const rn=nn.getRuleStack().join("-");return`uGroup_${tn}_${rn}`},ot=tn=>tt.parser.alternatives(rt,nt.map((nn,rn)=>{const sn={ALT:()=>!0},an=tt.parser;sn.ALT=()=>{if(nn.ALT(tn),!an.isRecording()){const cn=st(rt,an);an.unorderedGroups.get(cn)||an.unorderedGroups.set(cn,[]);const ln=an.unorderedGroups.get(cn);typeof ln?.[rn]>"u"&&(ln[rn]=!0)}};const on=nn.GATE;return on?sn.GATE=()=>on(tn):sn.GATE=()=>{const cn=an.unorderedGroups.get(st(rt,an));return!cn?.[rn]},sn})),en=wrap$1(tt,getGuardCondition(et),ot,"*");return tn=>{en(tn),tt.parser.isRecording()||tt.parser.unorderedGroups.delete(st(rt,tt.parser))}}function buildGroup(tt,et){const nt=et.elements.map(rt=>buildElement(tt,rt));return rt=>nt.forEach(st=>st(rt))}function getGuardCondition(tt){if(isGroup(tt))return tt.guardCondition}function buildCrossReference(tt,et,nt=et.terminal){if(nt)if(isRuleCall(nt)&&isParserRule(nt.rule.ref)){const rt=nt.rule.ref,st=tt.subrule++;return ot=>tt.parser.subrule(st,getRule(tt,rt),!1,et,ot)}else if(isRuleCall(nt)&&isTerminalRule(nt.rule.ref)){const rt=tt.consume++,st=getToken(tt,nt.rule.ref.name);return()=>tt.parser.consume(rt,st,et)}else if(isKeyword(nt)){const rt=tt.consume++,st=getToken(tt,nt.value);return()=>tt.parser.consume(rt,st,et)}else throw new Error("Could not build cross reference parser");else{if(!et.type.ref)throw new Error("Could not resolve reference to type: "+et.type.$refText);const rt=findNameAssignment(et.type.ref),st=rt?.terminal;if(!st)throw new Error("Could not find name assignment for type: "+getTypeName(et.type.ref));return buildCrossReference(tt,et,st)}}function buildKeyword(tt,et){const nt=tt.consume++,rt=tt.tokens[et.value];if(!rt)throw new Error("Could not find token for keyword: "+et.value);return()=>tt.parser.consume(nt,rt,et)}function wrap$1(tt,et,nt,rt){const st=et&&buildPredicate(et);if(!rt)if(st){const ot=tt.or++;return en=>tt.parser.alternatives(ot,[{ALT:()=>nt(en),GATE:()=>st(en)},{ALT:EMPTY_ALT(),GATE:()=>!st(en)}])}else return nt;if(rt==="*"){const ot=tt.many++;return en=>tt.parser.many(ot,{DEF:()=>nt(en),GATE:st?()=>st(en):void 0})}else if(rt==="+"){const ot=tt.many++;if(st){const en=tt.or++;return tn=>tt.parser.alternatives(en,[{ALT:()=>tt.parser.atLeastOne(ot,{DEF:()=>nt(tn)}),GATE:()=>st(tn)},{ALT:EMPTY_ALT(),GATE:()=>!st(tn)}])}else return en=>tt.parser.atLeastOne(ot,{DEF:()=>nt(en)})}else if(rt==="?"){const ot=tt.optional++;return en=>tt.parser.optional(ot,{DEF:()=>nt(en),GATE:st?()=>st(en):void 0})}else assertUnreachable()}function getRule(tt,et){const nt=getRuleName(tt,et),rt=tt.parser.getRule(nt);if(!rt)throw new Error(`Rule "${nt}" not found."`);return rt}function getRuleName(tt,et){if(isParserRule(et))return et.name;if(tt.ruleNames.has(et))return tt.ruleNames.get(et);{let nt=et,rt=nt.$container,st=et.$type;for(;!isParserRule(rt);)(isGroup(rt)||isAlternatives(rt)||isUnorderedGroup(rt))&&(st=rt.elements.indexOf(nt).toString()+":"+st),nt=rt,rt=rt.$container;return st=rt.name+":"+st,tt.ruleNames.set(et,st),st}}function getToken(tt,et){const nt=tt.tokens[et];if(!nt)throw new Error(`Token "${et}" not found."`);return nt}function createCompletionParser(tt){const et=tt.Grammar,nt=tt.parser.Lexer,rt=new LangiumCompletionParser(tt);return createParser(et,rt,nt.definition),rt.finalize(),rt}function createLangiumParser(tt){const et=prepareLangiumParser(tt);return et.finalize(),et}function prepareLangiumParser(tt){const et=tt.Grammar,nt=tt.parser.Lexer,rt=new LangiumParser(tt);return createParser(et,rt,nt.definition)}class DefaultTokenBuilder{constructor(){this.diagnostics=[]}buildTokens(et,nt){const rt=stream(getAllReachableRules(et,!1)),st=this.buildTerminalTokens(rt),ot=this.buildKeywordTokens(rt,st,nt);return st.forEach(en=>{const tn=en.PATTERN;typeof tn=="object"&&tn&&"test"in tn&&isWhitespace(tn)?ot.unshift(en):ot.push(en)}),ot}flushLexingReport(et){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){const et=[...this.diagnostics];return this.diagnostics=[],et}buildTerminalTokens(et){return et.filter(isTerminalRule).filter(nt=>!nt.fragment).map(nt=>this.buildTerminalToken(nt)).toArray()}buildTerminalToken(et){const nt=terminalRegex(et),rt=this.requiresCustomPattern(nt)?this.regexPatternFunction(nt):nt,st={name:et.name,PATTERN:rt};return typeof rt=="function"&&(st.LINE_BREAKS=!0),et.hidden&&(st.GROUP=isWhitespace(nt)?Lexer.SKIPPED:"hidden"),st}requiresCustomPattern(et){return et.flags.includes("u")||et.flags.includes("s")?!0:!!(et.source.includes("?<=")||et.source.includes("?<!"))}regexPatternFunction(et){const nt=new RegExp(et,et.flags+"y");return(rt,st)=>(nt.lastIndex=st,nt.exec(rt))}buildKeywordTokens(et,nt,rt){return et.filter(isParserRule).flatMap(st=>streamAllContents(st).filter(isKeyword)).distinct(st=>st.value).toArray().sort((st,ot)=>ot.value.length-st.value.length).map(st=>this.buildKeywordToken(st,nt,!!rt?.caseInsensitive))}buildKeywordToken(et,nt,rt){const st=this.buildKeywordPattern(et,rt),ot={name:et.value,PATTERN:st,LONGER_ALT:this.findLongerAlt(et,nt)};return typeof st=="function"&&(ot.LINE_BREAKS=!0),ot}buildKeywordPattern(et,nt){return nt?new RegExp(getCaseInsensitivePattern(et.value)):et.value}findLongerAlt(et,nt){return nt.reduce((rt,st)=>{const ot=st?.PATTERN;return ot?.source&&partialMatches("^"+ot.source+"$",et.value)&&rt.push(st),rt},[])}}class DefaultValueConverter{convert(et,nt){let rt=nt.grammarSource;if(isCrossReference(rt)&&(rt=getCrossReferenceTerminal(rt)),isRuleCall(rt)){const st=rt.rule.ref;if(!st)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(st,et,nt)}return et}runConverter(et,nt,rt){var st;switch(et.name.toUpperCase()){case"INT":return ValueConverter.convertInt(nt);case"STRING":return ValueConverter.convertString(nt);case"ID":return ValueConverter.convertID(nt)}switch((st=getRuleType(et))===null||st===void 0?void 0:st.toLowerCase()){case"number":return ValueConverter.convertNumber(nt);case"boolean":return ValueConverter.convertBoolean(nt);case"bigint":return ValueConverter.convertBigint(nt);case"date":return ValueConverter.convertDate(nt);default:return nt}}}var ValueConverter;(function(tt){function et(rn){let sn="";for(let an=1;an<rn.length-1;an++){const on=rn.charAt(an);if(on==="\\"){const cn=rn.charAt(++an);sn+=nt(cn)}else sn+=on}return sn}tt.convertString=et;function nt(rn){switch(rn){case"b":return"\b";case"f":return"\f";case"n":return`
|
|
136
|
-
`;case"r":return"\r";case"t":return" ";case"v":return"\v";case"0":return"\0";default:return rn}}function rt(rn){return rn.charAt(0)==="^"?rn.substring(1):rn}tt.convertID=rt;function st(rn){return parseInt(rn)}tt.convertInt=st;function ot(rn){return BigInt(rn)}tt.convertBigint=ot;function en(rn){return new Date(rn)}tt.convertDate=en;function tn(rn){return Number(rn)}tt.convertNumber=tn;function nn(rn){return rn.toLowerCase()==="true"}tt.convertBoolean=nn})(ValueConverter||(ValueConverter={}));var cancellation={},ral={},hasRequiredRal;function requireRal(){if(hasRequiredRal)return ral;hasRequiredRal=1,Object.defineProperty(ral,"__esModule",{value:!0});let tt;function et(){if(tt===void 0)throw new Error("No runtime abstraction layer installed");return tt}return function(nt){function rt(st){if(st===void 0)throw new Error("No runtime abstraction layer provided");tt=st}nt.install=rt}(et||(et={})),ral.default=et,ral}var is$2={},hasRequiredIs$2;function requireIs$2(){if(hasRequiredIs$2)return is$2;hasRequiredIs$2=1,Object.defineProperty(is$2,"__esModule",{value:!0}),is$2.stringArray=is$2.array=is$2.func=is$2.error=is$2.number=is$2.string=is$2.boolean=void 0;function tt(tn){return tn===!0||tn===!1}is$2.boolean=tt;function et(tn){return typeof tn=="string"||tn instanceof String}is$2.string=et;function nt(tn){return typeof tn=="number"||tn instanceof Number}is$2.number=nt;function rt(tn){return tn instanceof Error}is$2.error=rt;function st(tn){return typeof tn=="function"}is$2.func=st;function ot(tn){return Array.isArray(tn)}is$2.array=ot;function en(tn){return ot(tn)&&tn.every(nn=>et(nn))}return is$2.stringArray=en,is$2}var events={},hasRequiredEvents;function requireEvents(){if(hasRequiredEvents)return events;hasRequiredEvents=1,Object.defineProperty(events,"__esModule",{value:!0}),events.Emitter=events.Event=void 0;const tt=requireRal();var et;(function(st){const ot={dispose(){}};st.None=function(){return ot}})(et||(events.Event=et={}));class nt{add(ot,en=null,tn){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(ot),this._contexts.push(en),Array.isArray(tn)&&tn.push({dispose:()=>this.remove(ot,en)})}remove(ot,en=null){if(!this._callbacks)return;let tn=!1;for(let nn=0,rn=this._callbacks.length;nn<rn;nn++)if(this._callbacks[nn]===ot)if(this._contexts[nn]===en){this._callbacks.splice(nn,1),this._contexts.splice(nn,1);return}else tn=!0;if(tn)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...ot){if(!this._callbacks)return[];const en=[],tn=this._callbacks.slice(0),nn=this._contexts.slice(0);for(let rn=0,sn=tn.length;rn<sn;rn++)try{en.push(tn[rn].apply(nn[rn],ot))}catch(an){(0,tt.default)().console.error(an)}return en}isEmpty(){return!this._callbacks||this._callbacks.length===0}dispose(){this._callbacks=void 0,this._contexts=void 0}}class rt{constructor(ot){this._options=ot}get event(){return this._event||(this._event=(ot,en,tn)=>{this._callbacks||(this._callbacks=new nt),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(ot,en);const nn={dispose:()=>{this._callbacks&&(this._callbacks.remove(ot,en),nn.dispose=rt._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(tn)&&tn.push(nn),nn}),this._event}fire(ot){this._callbacks&&this._callbacks.invoke.call(this._callbacks,ot)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}}return events.Emitter=rt,rt._noop=function(){},events}var hasRequiredCancellation;function requireCancellation(){if(hasRequiredCancellation)return cancellation;hasRequiredCancellation=1,Object.defineProperty(cancellation,"__esModule",{value:!0}),cancellation.CancellationTokenSource=cancellation.CancellationToken=void 0;const tt=requireRal(),et=requireIs$2(),nt=requireEvents();var rt;(function(tn){tn.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:nt.Event.None}),tn.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:nt.Event.None});function nn(rn){const sn=rn;return sn&&(sn===tn.None||sn===tn.Cancelled||et.boolean(sn.isCancellationRequested)&&!!sn.onCancellationRequested)}tn.is=nn})(rt||(cancellation.CancellationToken=rt={}));const st=Object.freeze(function(tn,nn){const rn=(0,tt.default)().timer.setTimeout(tn.bind(nn),0);return{dispose(){rn.dispose()}}});class ot{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?st:(this._emitter||(this._emitter=new nt.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}}class en{get token(){return this._token||(this._token=new ot),this._token}cancel(){this._token?this._token.cancel():this._token=rt.Cancelled}dispose(){this._token?this._token instanceof ot&&this._token.dispose():this._token=rt.None}}return cancellation.CancellationTokenSource=en,cancellation}var cancellationExports=requireCancellation();function delayNextTick(){return new Promise(tt=>{typeof setImmediate>"u"?setTimeout(tt,0):setImmediate(tt)})}let lastTick=0,globalInterruptionPeriod=10;function startCancelableOperation(){return lastTick=performance.now(),new cancellationExports.CancellationTokenSource}const OperationCancelled=Symbol("OperationCancelled");function isOperationCancelled(tt){return tt===OperationCancelled}async function interruptAndCheck(tt){if(tt===cancellationExports.CancellationToken.None)return;const et=performance.now();if(et-lastTick>=globalInterruptionPeriod&&(lastTick=et,await delayNextTick(),lastTick=performance.now()),tt.isCancellationRequested)throw OperationCancelled}class Deferred{constructor(){this.promise=new Promise((et,nt)=>{this.resolve=rt=>(et(rt),this),this.reject=rt=>(nt(rt),this)})}}class FullTextDocument{constructor(et,nt,rt,st){this._uri=et,this._languageId=nt,this._version=rt,this._content=st,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(et){if(et){const nt=this.offsetAt(et.start),rt=this.offsetAt(et.end);return this._content.substring(nt,rt)}return this._content}update(et,nt){for(let rt of et)if(FullTextDocument.isIncremental(rt)){const st=getWellformedRange(rt.range),ot=this.offsetAt(st.start),en=this.offsetAt(st.end);this._content=this._content.substring(0,ot)+rt.text+this._content.substring(en,this._content.length);const tn=Math.max(st.start.line,0),nn=Math.max(st.end.line,0);let rn=this._lineOffsets;const sn=computeLineOffsets(rt.text,!1,ot);if(nn-tn===sn.length)for(let on=0,cn=sn.length;on<cn;on++)rn[on+tn+1]=sn[on];else sn.length<1e4?rn.splice(tn+1,nn-tn,...sn):this._lineOffsets=rn=rn.slice(0,tn+1).concat(sn,rn.slice(nn+1));const an=rt.text.length-(en-ot);if(an!==0)for(let on=tn+1+sn.length,cn=rn.length;on<cn;on++)rn[on]=rn[on]+an}else if(FullTextDocument.isFull(rt))this._content=rt.text,this._lineOffsets=void 0;else throw new Error("Unknown change event received");this._version=nt}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=computeLineOffsets(this._content,!0)),this._lineOffsets}positionAt(et){et=Math.max(Math.min(et,this._content.length),0);let nt=this.getLineOffsets(),rt=0,st=nt.length;if(st===0)return{line:0,character:et};for(;rt<st;){let en=Math.floor((rt+st)/2);nt[en]>et?st=en:rt=en+1}let ot=rt-1;return{line:ot,character:et-nt[ot]}}offsetAt(et){let nt=this.getLineOffsets();if(et.line>=nt.length)return this._content.length;if(et.line<0)return 0;let rt=nt[et.line],st=et.line+1<nt.length?nt[et.line+1]:this._content.length;return Math.max(Math.min(rt+et.character,st),rt)}get lineCount(){return this.getLineOffsets().length}static isIncremental(et){let nt=et;return nt!=null&&typeof nt.text=="string"&&nt.range!==void 0&&(nt.rangeLength===void 0||typeof nt.rangeLength=="number")}static isFull(et){let nt=et;return nt!=null&&typeof nt.text=="string"&&nt.range===void 0&&nt.rangeLength===void 0}}var TextDocument;(function(tt){function et(st,ot,en,tn){return new FullTextDocument(st,ot,en,tn)}tt.create=et;function nt(st,ot,en){if(st instanceof FullTextDocument)return st.update(ot,en),st;throw new Error("TextDocument.update: document must be created by TextDocument.create")}tt.update=nt;function rt(st,ot){let en=st.getText(),tn=mergeSort(ot.map(getWellformedEdit),(sn,an)=>{let on=sn.range.start.line-an.range.start.line;return on===0?sn.range.start.character-an.range.start.character:on}),nn=0;const rn=[];for(const sn of tn){let an=st.offsetAt(sn.range.start);if(an<nn)throw new Error("Overlapping edit");an>nn&&rn.push(en.substring(nn,an)),sn.newText.length&&rn.push(sn.newText),nn=st.offsetAt(sn.range.end)}return rn.push(en.substr(nn)),rn.join("")}tt.applyEdits=rt})(TextDocument||(TextDocument={}));function mergeSort(tt,et){if(tt.length<=1)return tt;const nt=tt.length/2|0,rt=tt.slice(0,nt),st=tt.slice(nt);mergeSort(rt,et),mergeSort(st,et);let ot=0,en=0,tn=0;for(;ot<rt.length&&en<st.length;)et(rt[ot],st[en])<=0?tt[tn++]=rt[ot++]:tt[tn++]=st[en++];for(;ot<rt.length;)tt[tn++]=rt[ot++];for(;en<st.length;)tt[tn++]=st[en++];return tt}function computeLineOffsets(tt,et,nt=0){const rt=et?[nt]:[];for(let st=0;st<tt.length;st++){let ot=tt.charCodeAt(st);(ot===13||ot===10)&&(ot===13&&st+1<tt.length&&tt.charCodeAt(st+1)===10&&st++,rt.push(nt+st+1))}return rt}function getWellformedRange(tt){const et=tt.start,nt=tt.end;return et.line>nt.line||et.line===nt.line&&et.character>nt.character?{start:nt,end:et}:tt}function getWellformedEdit(tt){const et=getWellformedRange(tt.range);return et!==tt.range?{newText:tt.newText,range:et}:tt}var LIB;(()=>{var tt={470:st=>{function ot(nn){if(typeof nn!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(nn))}function en(nn,rn){for(var sn,an="",on=0,cn=-1,ln=0,fn=0;fn<=nn.length;++fn){if(fn<nn.length)sn=nn.charCodeAt(fn);else{if(sn===47)break;sn=47}if(sn===47){if(!(cn===fn-1||ln===1))if(cn!==fn-1&&ln===2){if(an.length<2||on!==2||an.charCodeAt(an.length-1)!==46||an.charCodeAt(an.length-2)!==46){if(an.length>2){var gn=an.lastIndexOf("/");if(gn!==an.length-1){gn===-1?(an="",on=0):on=(an=an.slice(0,gn)).length-1-an.lastIndexOf("/"),cn=fn,ln=0;continue}}else if(an.length===2||an.length===1){an="",on=0,cn=fn,ln=0;continue}}rn&&(an.length>0?an+="/..":an="..",on=2)}else an.length>0?an+="/"+nn.slice(cn+1,fn):an=nn.slice(cn+1,fn),on=fn-cn-1;cn=fn,ln=0}else sn===46&&ln!==-1?++ln:ln=-1}return an}var tn={resolve:function(){for(var nn,rn="",sn=!1,an=arguments.length-1;an>=-1&&!sn;an--){var on;an>=0?on=arguments[an]:(nn===void 0&&(nn=process.cwd()),on=nn),ot(on),on.length!==0&&(rn=on+"/"+rn,sn=on.charCodeAt(0)===47)}return rn=en(rn,!sn),sn?rn.length>0?"/"+rn:"/":rn.length>0?rn:"."},normalize:function(nn){if(ot(nn),nn.length===0)return".";var rn=nn.charCodeAt(0)===47,sn=nn.charCodeAt(nn.length-1)===47;return(nn=en(nn,!rn)).length!==0||rn||(nn="."),nn.length>0&&sn&&(nn+="/"),rn?"/"+nn:nn},isAbsolute:function(nn){return ot(nn),nn.length>0&&nn.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var nn,rn=0;rn<arguments.length;++rn){var sn=arguments[rn];ot(sn),sn.length>0&&(nn===void 0?nn=sn:nn+="/"+sn)}return nn===void 0?".":tn.normalize(nn)},relative:function(nn,rn){if(ot(nn),ot(rn),nn===rn||(nn=tn.resolve(nn))===(rn=tn.resolve(rn)))return"";for(var sn=1;sn<nn.length&&nn.charCodeAt(sn)===47;++sn);for(var an=nn.length,on=an-sn,cn=1;cn<rn.length&&rn.charCodeAt(cn)===47;++cn);for(var ln=rn.length-cn,fn=on<ln?on:ln,gn=-1,pn=0;pn<=fn;++pn){if(pn===fn){if(ln>fn){if(rn.charCodeAt(cn+pn)===47)return rn.slice(cn+pn+1);if(pn===0)return rn.slice(cn+pn)}else on>fn&&(nn.charCodeAt(sn+pn)===47?gn=pn:pn===0&&(gn=0));break}var vn=nn.charCodeAt(sn+pn);if(vn!==rn.charCodeAt(cn+pn))break;vn===47&&(gn=pn)}var bn="";for(pn=sn+gn+1;pn<=an;++pn)pn!==an&&nn.charCodeAt(pn)!==47||(bn.length===0?bn+="..":bn+="/..");return bn.length>0?bn+rn.slice(cn+gn):(cn+=gn,rn.charCodeAt(cn)===47&&++cn,rn.slice(cn))},_makeLong:function(nn){return nn},dirname:function(nn){if(ot(nn),nn.length===0)return".";for(var rn=nn.charCodeAt(0),sn=rn===47,an=-1,on=!0,cn=nn.length-1;cn>=1;--cn)if((rn=nn.charCodeAt(cn))===47){if(!on){an=cn;break}}else on=!1;return an===-1?sn?"/":".":sn&&an===1?"//":nn.slice(0,an)},basename:function(nn,rn){if(rn!==void 0&&typeof rn!="string")throw new TypeError('"ext" argument must be a string');ot(nn);var sn,an=0,on=-1,cn=!0;if(rn!==void 0&&rn.length>0&&rn.length<=nn.length){if(rn.length===nn.length&&rn===nn)return"";var ln=rn.length-1,fn=-1;for(sn=nn.length-1;sn>=0;--sn){var gn=nn.charCodeAt(sn);if(gn===47){if(!cn){an=sn+1;break}}else fn===-1&&(cn=!1,fn=sn+1),ln>=0&&(gn===rn.charCodeAt(ln)?--ln==-1&&(on=sn):(ln=-1,on=fn))}return an===on?on=fn:on===-1&&(on=nn.length),nn.slice(an,on)}for(sn=nn.length-1;sn>=0;--sn)if(nn.charCodeAt(sn)===47){if(!cn){an=sn+1;break}}else on===-1&&(cn=!1,on=sn+1);return on===-1?"":nn.slice(an,on)},extname:function(nn){ot(nn);for(var rn=-1,sn=0,an=-1,on=!0,cn=0,ln=nn.length-1;ln>=0;--ln){var fn=nn.charCodeAt(ln);if(fn!==47)an===-1&&(on=!1,an=ln+1),fn===46?rn===-1?rn=ln:cn!==1&&(cn=1):rn!==-1&&(cn=-1);else if(!on){sn=ln+1;break}}return rn===-1||an===-1||cn===0||cn===1&&rn===an-1&&rn===sn+1?"":nn.slice(rn,an)},format:function(nn){if(nn===null||typeof nn!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof nn);return function(rn,sn){var an=sn.dir||sn.root,on=sn.base||(sn.name||"")+(sn.ext||"");return an?an===sn.root?an+on:an+"/"+on:on}(0,nn)},parse:function(nn){ot(nn);var rn={root:"",dir:"",base:"",ext:"",name:""};if(nn.length===0)return rn;var sn,an=nn.charCodeAt(0),on=an===47;on?(rn.root="/",sn=1):sn=0;for(var cn=-1,ln=0,fn=-1,gn=!0,pn=nn.length-1,vn=0;pn>=sn;--pn)if((an=nn.charCodeAt(pn))!==47)fn===-1&&(gn=!1,fn=pn+1),an===46?cn===-1?cn=pn:vn!==1&&(vn=1):cn!==-1&&(vn=-1);else if(!gn){ln=pn+1;break}return cn===-1||fn===-1||vn===0||vn===1&&cn===fn-1&&cn===ln+1?fn!==-1&&(rn.base=rn.name=ln===0&&on?nn.slice(1,fn):nn.slice(ln,fn)):(ln===0&&on?(rn.name=nn.slice(1,cn),rn.base=nn.slice(1,fn)):(rn.name=nn.slice(ln,cn),rn.base=nn.slice(ln,fn)),rn.ext=nn.slice(cn,fn)),ln>0?rn.dir=nn.slice(0,ln-1):on&&(rn.dir="/"),rn},sep:"/",delimiter:":",win32:null,posix:null};tn.posix=tn,st.exports=tn}},et={};function nt(st){var ot=et[st];if(ot!==void 0)return ot.exports;var en=et[st]={exports:{}};return tt[st](en,en.exports,nt),en.exports}nt.d=(st,ot)=>{for(var en in ot)nt.o(ot,en)&&!nt.o(st,en)&&Object.defineProperty(st,en,{enumerable:!0,get:ot[en]})},nt.o=(st,ot)=>Object.prototype.hasOwnProperty.call(st,ot),nt.r=st=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(st,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(st,"__esModule",{value:!0})};var rt={};(()=>{let st;nt.r(rt),nt.d(rt,{URI:()=>on,Utils:()=>Yn}),typeof process=="object"?st=process.platform==="win32":typeof navigator=="object"&&(st=navigator.userAgent.indexOf("Windows")>=0);const ot=/^\w[\w\d+.-]*$/,en=/^\//,tn=/^\/\//;function nn(xn,Rn){if(!xn.scheme&&Rn)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${xn.authority}", path: "${xn.path}", query: "${xn.query}", fragment: "${xn.fragment}"}`);if(xn.scheme&&!ot.test(xn.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(xn.path){if(xn.authority){if(!en.test(xn.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(tn.test(xn.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}const rn="",sn="/",an=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class on{static isUri(Rn){return Rn instanceof on||!!Rn&&typeof Rn.authority=="string"&&typeof Rn.fragment=="string"&&typeof Rn.path=="string"&&typeof Rn.query=="string"&&typeof Rn.scheme=="string"&&typeof Rn.fsPath=="string"&&typeof Rn.with=="function"&&typeof Rn.toString=="function"}scheme;authority;path;query;fragment;constructor(Rn,yn,Cn,Fn,Mn,zn=!1){typeof Rn=="object"?(this.scheme=Rn.scheme||rn,this.authority=Rn.authority||rn,this.path=Rn.path||rn,this.query=Rn.query||rn,this.fragment=Rn.fragment||rn):(this.scheme=function(wr,Hn){return wr||Hn?wr:"file"}(Rn,zn),this.authority=yn||rn,this.path=function(wr,Hn){switch(wr){case"https":case"http":case"file":Hn?Hn[0]!==sn&&(Hn=sn+Hn):Hn=sn}return Hn}(this.scheme,Cn||rn),this.query=Fn||rn,this.fragment=Mn||rn,nn(this,zn))}get fsPath(){return vn(this)}with(Rn){if(!Rn)return this;let{scheme:yn,authority:Cn,path:Fn,query:Mn,fragment:zn}=Rn;return yn===void 0?yn=this.scheme:yn===null&&(yn=rn),Cn===void 0?Cn=this.authority:Cn===null&&(Cn=rn),Fn===void 0?Fn=this.path:Fn===null&&(Fn=rn),Mn===void 0?Mn=this.query:Mn===null&&(Mn=rn),zn===void 0?zn=this.fragment:zn===null&&(zn=rn),yn===this.scheme&&Cn===this.authority&&Fn===this.path&&Mn===this.query&&zn===this.fragment?this:new ln(yn,Cn,Fn,Mn,zn)}static parse(Rn,yn=!1){const Cn=an.exec(Rn);return Cn?new ln(Cn[2]||rn,An(Cn[4]||rn),An(Cn[5]||rn),An(Cn[7]||rn),An(Cn[9]||rn),yn):new ln(rn,rn,rn,rn,rn)}static file(Rn){let yn=rn;if(st&&(Rn=Rn.replace(/\\/g,sn)),Rn[0]===sn&&Rn[1]===sn){const Cn=Rn.indexOf(sn,2);Cn===-1?(yn=Rn.substring(2),Rn=sn):(yn=Rn.substring(2,Cn),Rn=Rn.substring(Cn)||sn)}return new ln("file",yn,Rn,rn,rn)}static from(Rn){const yn=new ln(Rn.scheme,Rn.authority,Rn.path,Rn.query,Rn.fragment);return nn(yn,!0),yn}toString(Rn=!1){return bn(this,Rn)}toJSON(){return this}static revive(Rn){if(Rn){if(Rn instanceof on)return Rn;{const yn=new ln(Rn);return yn._formatted=Rn.external,yn._fsPath=Rn._sep===cn?Rn.fsPath:null,yn}}return Rn}}const cn=st?1:void 0;class ln extends on{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=vn(this)),this._fsPath}toString(Rn=!1){return Rn?bn(this,!0):(this._formatted||(this._formatted=bn(this,!1)),this._formatted)}toJSON(){const Rn={$mid:1};return this._fsPath&&(Rn.fsPath=this._fsPath,Rn._sep=cn),this._formatted&&(Rn.external=this._formatted),this.path&&(Rn.path=this.path),this.scheme&&(Rn.scheme=this.scheme),this.authority&&(Rn.authority=this.authority),this.query&&(Rn.query=this.query),this.fragment&&(Rn.fragment=this.fragment),Rn}}const fn={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function gn(xn,Rn,yn){let Cn,Fn=-1;for(let Mn=0;Mn<xn.length;Mn++){const zn=xn.charCodeAt(Mn);if(zn>=97&&zn<=122||zn>=65&&zn<=90||zn>=48&&zn<=57||zn===45||zn===46||zn===95||zn===126||Rn&&zn===47||yn&&zn===91||yn&&zn===93||yn&&zn===58)Fn!==-1&&(Cn+=encodeURIComponent(xn.substring(Fn,Mn)),Fn=-1),Cn!==void 0&&(Cn+=xn.charAt(Mn));else{Cn===void 0&&(Cn=xn.substr(0,Mn));const wr=fn[zn];wr!==void 0?(Fn!==-1&&(Cn+=encodeURIComponent(xn.substring(Fn,Mn)),Fn=-1),Cn+=wr):Fn===-1&&(Fn=Mn)}}return Fn!==-1&&(Cn+=encodeURIComponent(xn.substring(Fn))),Cn!==void 0?Cn:xn}function pn(xn){let Rn;for(let yn=0;yn<xn.length;yn++){const Cn=xn.charCodeAt(yn);Cn===35||Cn===63?(Rn===void 0&&(Rn=xn.substr(0,yn)),Rn+=fn[Cn]):Rn!==void 0&&(Rn+=xn[yn])}return Rn!==void 0?Rn:xn}function vn(xn,Rn){let yn;return yn=xn.authority&&xn.path.length>1&&xn.scheme==="file"?`//${xn.authority}${xn.path}`:xn.path.charCodeAt(0)===47&&(xn.path.charCodeAt(1)>=65&&xn.path.charCodeAt(1)<=90||xn.path.charCodeAt(1)>=97&&xn.path.charCodeAt(1)<=122)&&xn.path.charCodeAt(2)===58?xn.path[1].toLowerCase()+xn.path.substr(2):xn.path,st&&(yn=yn.replace(/\//g,"\\")),yn}function bn(xn,Rn){const yn=Rn?pn:gn;let Cn="",{scheme:Fn,authority:Mn,path:zn,query:wr,fragment:Hn}=xn;if(Fn&&(Cn+=Fn,Cn+=":"),(Mn||Fn==="file")&&(Cn+=sn,Cn+=sn),Mn){let kn=Mn.indexOf("@");if(kn!==-1){const pr=Mn.substr(0,kn);Mn=Mn.substr(kn+1),kn=pr.lastIndexOf(":"),kn===-1?Cn+=yn(pr,!1,!1):(Cn+=yn(pr.substr(0,kn),!1,!1),Cn+=":",Cn+=yn(pr.substr(kn+1),!1,!0)),Cn+="@"}Mn=Mn.toLowerCase(),kn=Mn.lastIndexOf(":"),kn===-1?Cn+=yn(Mn,!1,!0):(Cn+=yn(Mn.substr(0,kn),!1,!0),Cn+=Mn.substr(kn))}if(zn){if(zn.length>=3&&zn.charCodeAt(0)===47&&zn.charCodeAt(2)===58){const kn=zn.charCodeAt(1);kn>=65&&kn<=90&&(zn=`/${String.fromCharCode(kn+32)}:${zn.substr(3)}`)}else if(zn.length>=2&&zn.charCodeAt(1)===58){const kn=zn.charCodeAt(0);kn>=65&&kn<=90&&(zn=`${String.fromCharCode(kn+32)}:${zn.substr(2)}`)}Cn+=yn(zn,!0,!1)}return wr&&(Cn+="?",Cn+=yn(wr,!1,!1)),Hn&&(Cn+="#",Cn+=Rn?Hn:gn(Hn,!1,!1)),Cn}function $n(xn){try{return decodeURIComponent(xn)}catch{return xn.length>3?xn.substr(0,3)+$n(xn.substr(3)):xn}}const Tn=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function An(xn){return xn.match(Tn)?xn.replace(Tn,Rn=>$n(Rn)):xn}var On=nt(470);const Bn=On.posix||On,Un="/";var Yn;(function(xn){xn.joinPath=function(Rn,...yn){return Rn.with({path:Bn.join(Rn.path,...yn)})},xn.resolvePath=function(Rn,...yn){let Cn=Rn.path,Fn=!1;Cn[0]!==Un&&(Cn=Un+Cn,Fn=!0);let Mn=Bn.resolve(Cn,...yn);return Fn&&Mn[0]===Un&&!Rn.authority&&(Mn=Mn.substring(1)),Rn.with({path:Mn})},xn.dirname=function(Rn){if(Rn.path.length===0||Rn.path===Un)return Rn;let yn=Bn.dirname(Rn.path);return yn.length===1&&yn.charCodeAt(0)===46&&(yn=""),Rn.with({path:yn})},xn.basename=function(Rn){return Bn.basename(Rn.path)},xn.extname=function(Rn){return Bn.extname(Rn.path)}})(Yn||(Yn={}))})(),LIB=rt})();const{URI,Utils:Utils$1}=LIB;var UriUtils;(function(tt){tt.basename=Utils$1.basename,tt.dirname=Utils$1.dirname,tt.extname=Utils$1.extname,tt.joinPath=Utils$1.joinPath,tt.resolvePath=Utils$1.resolvePath;function et(st,ot){return st?.toString()===ot?.toString()}tt.equals=et;function nt(st,ot){const en=typeof st=="string"?st:st.path,tn=typeof ot=="string"?ot:ot.path,nn=en.split("/").filter(cn=>cn.length>0),rn=tn.split("/").filter(cn=>cn.length>0);let sn=0;for(;sn<nn.length&&nn[sn]===rn[sn];sn++);const an="../".repeat(nn.length-sn),on=rn.slice(sn).join("/");return an+on}tt.relative=nt;function rt(st){return URI.parse(st.toString()).toString()}tt.normalize=rt})(UriUtils||(UriUtils={}));var DocumentState;(function(tt){tt[tt.Changed=0]="Changed",tt[tt.Parsed=1]="Parsed",tt[tt.IndexedContent=2]="IndexedContent",tt[tt.ComputedScopes=3]="ComputedScopes",tt[tt.Linked=4]="Linked",tt[tt.IndexedReferences=5]="IndexedReferences",tt[tt.Validated=6]="Validated"})(DocumentState||(DocumentState={}));class DefaultLangiumDocumentFactory{constructor(et){this.serviceRegistry=et.ServiceRegistry,this.textDocuments=et.workspace.TextDocuments,this.fileSystemProvider=et.workspace.FileSystemProvider}async fromUri(et,nt=cancellationExports.CancellationToken.None){const rt=await this.fileSystemProvider.readFile(et);return this.createAsync(et,rt,nt)}fromTextDocument(et,nt,rt){return nt=nt??URI.parse(et.uri),cancellationExports.CancellationToken.is(rt)?this.createAsync(nt,et,rt):this.create(nt,et,rt)}fromString(et,nt,rt){return cancellationExports.CancellationToken.is(rt)?this.createAsync(nt,et,rt):this.create(nt,et,rt)}fromModel(et,nt){return this.create(nt,{$model:et})}create(et,nt,rt){if(typeof nt=="string"){const st=this.parse(et,nt,rt);return this.createLangiumDocument(st,et,void 0,nt)}else if("$model"in nt){const st={value:nt.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(st,et)}else{const st=this.parse(et,nt.getText(),rt);return this.createLangiumDocument(st,et,nt)}}async createAsync(et,nt,rt){if(typeof nt=="string"){const st=await this.parseAsync(et,nt,rt);return this.createLangiumDocument(st,et,void 0,nt)}else{const st=await this.parseAsync(et,nt.getText(),rt);return this.createLangiumDocument(st,et,nt)}}createLangiumDocument(et,nt,rt,st){let ot;if(rt)ot={parseResult:et,uri:nt,state:DocumentState.Parsed,references:[],textDocument:rt};else{const en=this.createTextDocumentGetter(nt,st);ot={parseResult:et,uri:nt,state:DocumentState.Parsed,references:[],get textDocument(){return en()}}}return et.value.$document=ot,ot}async update(et,nt){var rt,st;const ot=(rt=et.parseResult.value.$cstNode)===null||rt===void 0?void 0:rt.root.fullText,en=(st=this.textDocuments)===null||st===void 0?void 0:st.get(et.uri.toString()),tn=en?en.getText():await this.fileSystemProvider.readFile(et.uri);if(en)Object.defineProperty(et,"textDocument",{value:en});else{const nn=this.createTextDocumentGetter(et.uri,tn);Object.defineProperty(et,"textDocument",{get:nn})}return ot!==tn&&(et.parseResult=await this.parseAsync(et.uri,tn,nt),et.parseResult.value.$document=et),et.state=DocumentState.Parsed,et}parse(et,nt,rt){return this.serviceRegistry.getServices(et).parser.LangiumParser.parse(nt,rt)}parseAsync(et,nt,rt){return this.serviceRegistry.getServices(et).parser.AsyncParser.parse(nt,rt)}createTextDocumentGetter(et,nt){const rt=this.serviceRegistry;let st;return()=>st??(st=TextDocument.create(et.toString(),rt.getServices(et).LanguageMetaData.languageId,0,nt??""))}}class DefaultLangiumDocuments{constructor(et){this.documentMap=new Map,this.langiumDocumentFactory=et.workspace.LangiumDocumentFactory,this.serviceRegistry=et.ServiceRegistry}get all(){return stream(this.documentMap.values())}addDocument(et){const nt=et.uri.toString();if(this.documentMap.has(nt))throw new Error(`A document with the URI '${nt}' is already present.`);this.documentMap.set(nt,et)}getDocument(et){const nt=et.toString();return this.documentMap.get(nt)}async getOrCreateDocument(et,nt){let rt=this.getDocument(et);return rt||(rt=await this.langiumDocumentFactory.fromUri(et,nt),this.addDocument(rt),rt)}createDocument(et,nt,rt){if(rt)return this.langiumDocumentFactory.fromString(nt,et,rt).then(st=>(this.addDocument(st),st));{const st=this.langiumDocumentFactory.fromString(nt,et);return this.addDocument(st),st}}hasDocument(et){return this.documentMap.has(et.toString())}invalidateDocument(et){const nt=et.toString(),rt=this.documentMap.get(nt);return rt&&(this.serviceRegistry.getServices(et).references.Linker.unlink(rt),rt.state=DocumentState.Changed,rt.precomputedScopes=void 0,rt.diagnostics=void 0),rt}deleteDocument(et){const nt=et.toString(),rt=this.documentMap.get(nt);return rt&&(rt.state=DocumentState.Changed,this.documentMap.delete(nt)),rt}}const ref_resolving=Symbol("ref_resolving");class DefaultLinker{constructor(et){this.reflection=et.shared.AstReflection,this.langiumDocuments=()=>et.shared.workspace.LangiumDocuments,this.scopeProvider=et.references.ScopeProvider,this.astNodeLocator=et.workspace.AstNodeLocator}async link(et,nt=cancellationExports.CancellationToken.None){for(const rt of streamAst(et.parseResult.value))await interruptAndCheck(nt),streamReferences(rt).forEach(st=>this.doLink(st,et))}doLink(et,nt){var rt;const st=et.reference;if(st._ref===void 0){st._ref=ref_resolving;try{const ot=this.getCandidate(et);if(isLinkingError(ot))st._ref=ot;else if(st._nodeDescription=ot,this.langiumDocuments().hasDocument(ot.documentUri)){const en=this.loadAstNode(ot);st._ref=en??this.createLinkingError(et,ot)}else st._ref=void 0}catch(ot){console.error(`An error occurred while resolving reference to '${st.$refText}':`,ot);const en=(rt=ot.message)!==null&&rt!==void 0?rt:String(ot);st._ref=Object.assign(Object.assign({},et),{message:`An error occurred while resolving reference to '${st.$refText}': ${en}`})}nt.references.push(st)}}unlink(et){for(const nt of et.references)delete nt._ref,delete nt._nodeDescription;et.references=[]}getCandidate(et){const rt=this.scopeProvider.getScope(et).getElement(et.reference.$refText);return rt??this.createLinkingError(et)}buildReference(et,nt,rt,st){const ot=this,en={$refNode:rt,$refText:st,get ref(){var tn;if(isAstNode(this._ref))return this._ref;if(isAstNodeDescription(this._nodeDescription)){const nn=ot.loadAstNode(this._nodeDescription);this._ref=nn??ot.createLinkingError({reference:en,container:et,property:nt},this._nodeDescription)}else if(this._ref===void 0){this._ref=ref_resolving;const nn=findRootNode(et).$document,rn=ot.getLinkedNode({reference:en,container:et,property:nt});if(rn.error&&nn&&nn.state<DocumentState.ComputedScopes)return this._ref=void 0;this._ref=(tn=rn.node)!==null&&tn!==void 0?tn:rn.error,this._nodeDescription=rn.descr,nn?.references.push(this)}else if(this._ref===ref_resolving)throw new Error(`Cyclic reference resolution detected: ${ot.astNodeLocator.getAstNodePath(et)}/${nt} (symbol '${st}')`);return isAstNode(this._ref)?this._ref:void 0},get $nodeDescription(){return this._nodeDescription},get error(){return isLinkingError(this._ref)?this._ref:void 0}};return en}getLinkedNode(et){var nt;try{const rt=this.getCandidate(et);if(isLinkingError(rt))return{error:rt};const st=this.loadAstNode(rt);return st?{node:st,descr:rt}:{descr:rt,error:this.createLinkingError(et,rt)}}catch(rt){console.error(`An error occurred while resolving reference to '${et.reference.$refText}':`,rt);const st=(nt=rt.message)!==null&&nt!==void 0?nt:String(rt);return{error:Object.assign(Object.assign({},et),{message:`An error occurred while resolving reference to '${et.reference.$refText}': ${st}`})}}}loadAstNode(et){if(et.node)return et.node;const nt=this.langiumDocuments().getDocument(et.documentUri);if(nt)return this.astNodeLocator.getAstNode(nt.parseResult.value,et.path)}createLinkingError(et,nt){const rt=findRootNode(et.container).$document;rt&&rt.state<DocumentState.ComputedScopes&&console.warn(`Attempted reference resolution before document reached ComputedScopes state (${rt.uri}).`);const st=this.reflection.getReferenceType(et);return Object.assign(Object.assign({},et),{message:`Could not resolve reference to ${st} named '${et.reference.$refText}'.`,targetDescription:nt})}}function isNamed(tt){return typeof tt.name=="string"}class DefaultNameProvider{getName(et){if(isNamed(et))return et.name}getNameNode(et){return findNodeForProperty(et.$cstNode,"name")}}class DefaultReferences{constructor(et){this.nameProvider=et.references.NameProvider,this.index=et.shared.workspace.IndexManager,this.nodeLocator=et.workspace.AstNodeLocator}findDeclaration(et){if(et){const nt=findAssignment(et),rt=et.astNode;if(nt&&rt){const st=rt[nt.feature];if(isReference(st))return st.ref;if(Array.isArray(st)){for(const ot of st)if(isReference(ot)&&ot.$refNode&&ot.$refNode.offset<=et.offset&&ot.$refNode.end>=et.end)return ot.ref}}if(rt){const st=this.nameProvider.getNameNode(rt);if(st&&(st===et||isChildNode(et,st)))return rt}}}findDeclarationNode(et){const nt=this.findDeclaration(et);if(nt?.$cstNode){const rt=this.nameProvider.getNameNode(nt);return rt??nt.$cstNode}}findReferences(et,nt){const rt=[];if(nt.includeDeclaration){const ot=this.getReferenceToSelf(et);ot&&rt.push(ot)}let st=this.index.findAllReferences(et,this.nodeLocator.getAstNodePath(et));return nt.documentUri&&(st=st.filter(ot=>UriUtils.equals(ot.sourceUri,nt.documentUri))),rt.push(...st),stream(rt)}getReferenceToSelf(et){const nt=this.nameProvider.getNameNode(et);if(nt){const rt=getDocument(et),st=this.nodeLocator.getAstNodePath(et);return{sourceUri:rt.uri,sourcePath:st,targetUri:rt.uri,targetPath:st,segment:toDocumentSegment(nt),local:!0}}}}class MultiMap{constructor(et){if(this.map=new Map,et)for(const[nt,rt]of et)this.add(nt,rt)}get size(){return Reduction.sum(stream(this.map.values()).map(et=>et.length))}clear(){this.map.clear()}delete(et,nt){if(nt===void 0)return this.map.delete(et);{const rt=this.map.get(et);if(rt){const st=rt.indexOf(nt);if(st>=0)return rt.length===1?this.map.delete(et):rt.splice(st,1),!0}return!1}}get(et){var nt;return(nt=this.map.get(et))!==null&&nt!==void 0?nt:[]}has(et,nt){if(nt===void 0)return this.map.has(et);{const rt=this.map.get(et);return rt?rt.indexOf(nt)>=0:!1}}add(et,nt){return this.map.has(et)?this.map.get(et).push(nt):this.map.set(et,[nt]),this}addAll(et,nt){return this.map.has(et)?this.map.get(et).push(...nt):this.map.set(et,Array.from(nt)),this}forEach(et){this.map.forEach((nt,rt)=>nt.forEach(st=>et(st,rt,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return stream(this.map.entries()).flatMap(([et,nt])=>nt.map(rt=>[et,rt]))}keys(){return stream(this.map.keys())}values(){return stream(this.map.values()).flat()}entriesGroupedByKey(){return stream(this.map.entries())}}class BiMap{get size(){return this.map.size}constructor(et){if(this.map=new Map,this.inverse=new Map,et)for(const[nt,rt]of et)this.set(nt,rt)}clear(){this.map.clear(),this.inverse.clear()}set(et,nt){return this.map.set(et,nt),this.inverse.set(nt,et),this}get(et){return this.map.get(et)}getKey(et){return this.inverse.get(et)}delete(et){const nt=this.map.get(et);return nt!==void 0?(this.map.delete(et),this.inverse.delete(nt),!0):!1}}class DefaultScopeComputation{constructor(et){this.nameProvider=et.references.NameProvider,this.descriptions=et.workspace.AstNodeDescriptionProvider}async computeExports(et,nt=cancellationExports.CancellationToken.None){return this.computeExportsForNode(et.parseResult.value,et,void 0,nt)}async computeExportsForNode(et,nt,rt=streamContents,st=cancellationExports.CancellationToken.None){const ot=[];this.exportNode(et,ot,nt);for(const en of rt(et))await interruptAndCheck(st),this.exportNode(en,ot,nt);return ot}exportNode(et,nt,rt){const st=this.nameProvider.getName(et);st&&nt.push(this.descriptions.createDescription(et,st,rt))}async computeLocalScopes(et,nt=cancellationExports.CancellationToken.None){const rt=et.parseResult.value,st=new MultiMap;for(const ot of streamAllContents(rt))await interruptAndCheck(nt),this.processNode(ot,et,st);return st}processNode(et,nt,rt){const st=et.$container;if(st){const ot=this.nameProvider.getName(et);ot&&rt.add(st,this.descriptions.createDescription(et,ot,nt))}}}class StreamScope{constructor(et,nt,rt){var st;this.elements=et,this.outerScope=nt,this.caseInsensitive=(st=rt?.caseInsensitive)!==null&&st!==void 0?st:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(et){const nt=this.caseInsensitive?this.elements.find(rt=>rt.name.toLowerCase()===et.toLowerCase()):this.elements.find(rt=>rt.name===et);if(nt)return nt;if(this.outerScope)return this.outerScope.getElement(et)}}class MapScope{constructor(et,nt,rt){var st;this.elements=new Map,this.caseInsensitive=(st=rt?.caseInsensitive)!==null&&st!==void 0?st:!1;for(const ot of et){const en=this.caseInsensitive?ot.name.toLowerCase():ot.name;this.elements.set(en,ot)}this.outerScope=nt}getElement(et){const nt=this.caseInsensitive?et.toLowerCase():et,rt=this.elements.get(nt);if(rt)return rt;if(this.outerScope)return this.outerScope.getElement(et)}getAllElements(){let et=stream(this.elements.values());return this.outerScope&&(et=et.concat(this.outerScope.getAllElements())),et}}const EMPTY_SCOPE={getElement(){},getAllElements(){return EMPTY_STREAM}};class DisposableCache{constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(et){this.toDispose.push(et)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(et=>et.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}}class SimpleCache extends DisposableCache{constructor(){super(...arguments),this.cache=new Map}has(et){return this.throwIfDisposed(),this.cache.has(et)}set(et,nt){this.throwIfDisposed(),this.cache.set(et,nt)}get(et,nt){if(this.throwIfDisposed(),this.cache.has(et))return this.cache.get(et);if(nt){const rt=nt();return this.cache.set(et,rt),rt}else return}delete(et){return this.throwIfDisposed(),this.cache.delete(et)}clear(){this.throwIfDisposed(),this.cache.clear()}}class ContextCache extends DisposableCache{constructor(et){super(),this.cache=new Map,this.converter=et??(nt=>nt)}has(et,nt){return this.throwIfDisposed(),this.cacheForContext(et).has(nt)}set(et,nt,rt){this.throwIfDisposed(),this.cacheForContext(et).set(nt,rt)}get(et,nt,rt){this.throwIfDisposed();const st=this.cacheForContext(et);if(st.has(nt))return st.get(nt);if(rt){const ot=rt();return st.set(nt,ot),ot}else return}delete(et,nt){return this.throwIfDisposed(),this.cacheForContext(et).delete(nt)}clear(et){if(this.throwIfDisposed(),et){const nt=this.converter(et);this.cache.delete(nt)}else this.cache.clear()}cacheForContext(et){const nt=this.converter(et);let rt=this.cache.get(nt);return rt||(rt=new Map,this.cache.set(nt,rt)),rt}}class DocumentCache extends ContextCache{constructor(et,nt){super(rt=>rt.toString()),nt?(this.toDispose.push(et.workspace.DocumentBuilder.onDocumentPhase(nt,rt=>{this.clear(rt.uri.toString())})),this.toDispose.push(et.workspace.DocumentBuilder.onUpdate((rt,st)=>{for(const ot of st)this.clear(ot)}))):this.toDispose.push(et.workspace.DocumentBuilder.onUpdate((rt,st)=>{const ot=rt.concat(st);for(const en of ot)this.clear(en)}))}}class WorkspaceCache extends SimpleCache{constructor(et,nt){super(),nt?(this.toDispose.push(et.workspace.DocumentBuilder.onBuildPhase(nt,()=>{this.clear()})),this.toDispose.push(et.workspace.DocumentBuilder.onUpdate((rt,st)=>{st.length>0&&this.clear()}))):this.toDispose.push(et.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}class DefaultScopeProvider{constructor(et){this.reflection=et.shared.AstReflection,this.nameProvider=et.references.NameProvider,this.descriptions=et.workspace.AstNodeDescriptionProvider,this.indexManager=et.shared.workspace.IndexManager,this.globalScopeCache=new WorkspaceCache(et.shared)}getScope(et){const nt=[],rt=this.reflection.getReferenceType(et),st=getDocument(et.container).precomputedScopes;if(st){let en=et.container;do{const tn=st.get(en);tn.length>0&&nt.push(stream(tn).filter(nn=>this.reflection.isSubtype(nn.type,rt))),en=en.$container}while(en)}let ot=this.getGlobalScope(rt,et);for(let en=nt.length-1;en>=0;en--)ot=this.createScope(nt[en],ot);return ot}createScope(et,nt,rt){return new StreamScope(stream(et),nt,rt)}createScopeForNodes(et,nt,rt){const st=stream(et).map(ot=>{const en=this.nameProvider.getName(ot);if(en)return this.descriptions.createDescription(ot,en)}).nonNullable();return new StreamScope(st,nt,rt)}getGlobalScope(et,nt){return this.globalScopeCache.get(et,()=>new MapScope(this.indexManager.allElements(et)))}}function isAstNodeWithComment(tt){return typeof tt.$comment=="string"}function isIntermediateReference(tt){return typeof tt=="object"&&!!tt&&("$ref"in tt||"$error"in tt)}class DefaultJsonSerializer{constructor(et){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=et.shared.workspace.LangiumDocuments,this.astNodeLocator=et.workspace.AstNodeLocator,this.nameProvider=et.references.NameProvider,this.commentProvider=et.documentation.CommentProvider}serialize(et,nt){const rt=nt??{},st=nt?.replacer,ot=(tn,nn)=>this.replacer(tn,nn,rt),en=st?(tn,nn)=>st(tn,nn,ot):ot;try{return this.currentDocument=getDocument(et),JSON.stringify(et,en,nt?.space)}finally{this.currentDocument=void 0}}deserialize(et,nt){const rt=nt??{},st=JSON.parse(et);return this.linkNode(st,st,rt),st}replacer(et,nt,{refText:rt,sourceText:st,textRegions:ot,comments:en,uriConverter:tn}){var nn,rn,sn,an;if(!this.ignoreProperties.has(et))if(isReference(nt)){const on=nt.ref,cn=rt?nt.$refText:void 0;if(on){const ln=getDocument(on);let fn="";this.currentDocument&&this.currentDocument!==ln&&(tn?fn=tn(ln.uri,nt):fn=ln.uri.toString());const gn=this.astNodeLocator.getAstNodePath(on);return{$ref:`${fn}#${gn}`,$refText:cn}}else return{$error:(rn=(nn=nt.error)===null||nn===void 0?void 0:nn.message)!==null&&rn!==void 0?rn:"Could not resolve reference",$refText:cn}}else if(isAstNode(nt)){let on;if(ot&&(on=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},nt)),(!et||nt.$document)&&on?.$textRegion&&(on.$textRegion.documentURI=(sn=this.currentDocument)===null||sn===void 0?void 0:sn.uri.toString())),st&&!et&&(on??(on=Object.assign({},nt)),on.$sourceText=(an=nt.$cstNode)===null||an===void 0?void 0:an.text),en){on??(on=Object.assign({},nt));const cn=this.commentProvider.getComment(nt);cn&&(on.$comment=cn.replace(/\r/g,""))}return on??nt}else return nt}addAstNodeRegionWithAssignmentsTo(et){const nt=rt=>({offset:rt.offset,end:rt.end,length:rt.length,range:rt.range});if(et.$cstNode){const rt=et.$textRegion=nt(et.$cstNode),st=rt.assignments={};return Object.keys(et).filter(ot=>!ot.startsWith("$")).forEach(ot=>{const en=findNodesForProperty(et.$cstNode,ot).map(nt);en.length!==0&&(st[ot]=en)}),et}}linkNode(et,nt,rt,st,ot,en){for(const[nn,rn]of Object.entries(et))if(Array.isArray(rn))for(let sn=0;sn<rn.length;sn++){const an=rn[sn];isIntermediateReference(an)?rn[sn]=this.reviveReference(et,nn,nt,an,rt):isAstNode(an)&&this.linkNode(an,nt,rt,et,nn,sn)}else isIntermediateReference(rn)?et[nn]=this.reviveReference(et,nn,nt,rn,rt):isAstNode(rn)&&this.linkNode(rn,nt,rt,et,nn);const tn=et;tn.$container=st,tn.$containerProperty=ot,tn.$containerIndex=en}reviveReference(et,nt,rt,st,ot){let en=st.$refText,tn=st.$error;if(st.$ref){const nn=this.getRefNode(rt,st.$ref,ot.uriConverter);if(isAstNode(nn))return en||(en=this.nameProvider.getName(nn)),{$refText:en??"",ref:nn};tn=nn}if(tn){const nn={$refText:en??""};return nn.error={container:et,property:nt,message:tn,reference:nn},nn}else return}getRefNode(et,nt,rt){try{const st=nt.indexOf("#");if(st===0){const nn=this.astNodeLocator.getAstNode(et,nt.substring(1));return nn||"Could not resolve path: "+nt}if(st<0){const nn=rt?rt(nt):URI.parse(nt),rn=this.langiumDocuments.getDocument(nn);return rn?rn.parseResult.value:"Could not find document for URI: "+nt}const ot=rt?rt(nt.substring(0,st)):URI.parse(nt.substring(0,st)),en=this.langiumDocuments.getDocument(ot);if(!en)return"Could not find document for URI: "+nt;if(st===nt.length-1)return en.parseResult.value;const tn=this.astNodeLocator.getAstNode(en.parseResult.value,nt.substring(st+1));return tn||"Could not resolve URI: "+nt}catch(st){return String(st)}}}class DefaultServiceRegistry{get map(){return this.fileExtensionMap}constructor(et){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=et?.workspace.TextDocuments}register(et){const nt=et.LanguageMetaData;for(const rt of nt.fileExtensions)this.fileExtensionMap.has(rt)&&console.warn(`The file extension ${rt} is used by multiple languages. It is now assigned to '${nt.languageId}'.`),this.fileExtensionMap.set(rt,et);this.languageIdMap.set(nt.languageId,et),this.languageIdMap.size===1?this.singleton=et:this.singleton=void 0}getServices(et){var nt,rt;if(this.singleton!==void 0)return this.singleton;if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");const st=(rt=(nt=this.textDocuments)===null||nt===void 0?void 0:nt.get(et))===null||rt===void 0?void 0:rt.languageId;if(st!==void 0){const tn=this.languageIdMap.get(st);if(tn)return tn}const ot=UriUtils.extname(et),en=this.fileExtensionMap.get(ot);if(!en)throw st?new Error(`The service registry contains no services for the extension '${ot}' for language '${st}'.`):new Error(`The service registry contains no services for the extension '${ot}'.`);return en}hasServices(et){try{return this.getServices(et),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}function diagnosticData(tt){return{code:tt}}var ValidationCategory;(function(tt){tt.all=["fast","slow","built-in"]})(ValidationCategory||(ValidationCategory={}));class ValidationRegistry{constructor(et){this.entries=new MultiMap,this.entriesBefore=[],this.entriesAfter=[],this.reflection=et.shared.AstReflection}register(et,nt=this,rt="fast"){if(rt==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(const[st,ot]of Object.entries(et)){const en=ot;if(Array.isArray(en))for(const tn of en){const nn={check:this.wrapValidationException(tn,nt),category:rt};this.addEntry(st,nn)}else if(typeof en=="function"){const tn={check:this.wrapValidationException(en,nt),category:rt};this.addEntry(st,tn)}else assertUnreachable()}}wrapValidationException(et,nt){return async(rt,st,ot)=>{await this.handleException(()=>et.call(nt,rt,st,ot),"An error occurred during validation",st,rt)}}async handleException(et,nt,rt,st){try{await et()}catch(ot){if(isOperationCancelled(ot))throw ot;console.error(`${nt}:`,ot),ot instanceof Error&&ot.stack&&console.error(ot.stack);const en=ot instanceof Error?ot.message:String(ot);rt("error",`${nt}: ${en}`,{node:st})}}addEntry(et,nt){if(et==="AstNode"){this.entries.add("AstNode",nt);return}for(const rt of this.reflection.getAllSubTypes(et))this.entries.add(rt,nt)}getChecks(et,nt){let rt=stream(this.entries.get(et)).concat(this.entries.get("AstNode"));return nt&&(rt=rt.filter(st=>nt.includes(st.category))),rt.map(st=>st.check)}registerBeforeDocument(et,nt=this){this.entriesBefore.push(this.wrapPreparationException(et,"An error occurred during set-up of the validation",nt))}registerAfterDocument(et,nt=this){this.entriesAfter.push(this.wrapPreparationException(et,"An error occurred during tear-down of the validation",nt))}wrapPreparationException(et,nt,rt){return async(st,ot,en,tn)=>{await this.handleException(()=>et.call(rt,st,ot,en,tn),nt,ot,st)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}class DefaultDocumentValidator{constructor(et){this.validationRegistry=et.validation.ValidationRegistry,this.metadata=et.LanguageMetaData}async validateDocument(et,nt={},rt=cancellationExports.CancellationToken.None){const st=et.parseResult,ot=[];if(await interruptAndCheck(rt),(!nt.categories||nt.categories.includes("built-in"))&&(this.processLexingErrors(st,ot,nt),nt.stopAfterLexingErrors&&ot.some(en=>{var tn;return((tn=en.data)===null||tn===void 0?void 0:tn.code)===DocumentValidator.LexingError})||(this.processParsingErrors(st,ot,nt),nt.stopAfterParsingErrors&&ot.some(en=>{var tn;return((tn=en.data)===null||tn===void 0?void 0:tn.code)===DocumentValidator.ParsingError}))||(this.processLinkingErrors(et,ot,nt),nt.stopAfterLinkingErrors&&ot.some(en=>{var tn;return((tn=en.data)===null||tn===void 0?void 0:tn.code)===DocumentValidator.LinkingError}))))return ot;try{ot.push(...await this.validateAst(st.value,nt,rt))}catch(en){if(isOperationCancelled(en))throw en;console.error("An error occurred during validation:",en)}return await interruptAndCheck(rt),ot}processLexingErrors(et,nt,rt){var st,ot,en;const tn=[...et.lexerErrors,...(ot=(st=et.lexerReport)===null||st===void 0?void 0:st.diagnostics)!==null&&ot!==void 0?ot:[]];for(const nn of tn){const rn=(en=nn.severity)!==null&&en!==void 0?en:"error",sn={severity:toDiagnosticSeverity(rn),range:{start:{line:nn.line-1,character:nn.column-1},end:{line:nn.line-1,character:nn.column+nn.length-1}},message:nn.message,data:toDiagnosticData(rn),source:this.getSource()};nt.push(sn)}}processParsingErrors(et,nt,rt){for(const st of et.parserErrors){let ot;if(isNaN(st.token.startOffset)){if("previousToken"in st){const en=st.previousToken;if(isNaN(en.startOffset)){const tn={line:0,character:0};ot={start:tn,end:tn}}else{const tn={line:en.endLine-1,character:en.endColumn};ot={start:tn,end:tn}}}}else ot=tokenToRange(st.token);if(ot){const en={severity:toDiagnosticSeverity("error"),range:ot,message:st.message,data:diagnosticData(DocumentValidator.ParsingError),source:this.getSource()};nt.push(en)}}}processLinkingErrors(et,nt,rt){for(const st of et.references){const ot=st.error;if(ot){const en={node:ot.container,property:ot.property,index:ot.index,data:{code:DocumentValidator.LinkingError,containerType:ot.container.$type,property:ot.property,refText:ot.reference.$refText}};nt.push(this.toDiagnostic("error",ot.message,en))}}}async validateAst(et,nt,rt=cancellationExports.CancellationToken.None){const st=[],ot=(en,tn,nn)=>{st.push(this.toDiagnostic(en,tn,nn))};return await this.validateAstBefore(et,nt,ot,rt),await this.validateAstNodes(et,nt,ot,rt),await this.validateAstAfter(et,nt,ot,rt),st}async validateAstBefore(et,nt,rt,st=cancellationExports.CancellationToken.None){var ot;const en=this.validationRegistry.checksBefore;for(const tn of en)await interruptAndCheck(st),await tn(et,rt,(ot=nt.categories)!==null&&ot!==void 0?ot:[],st)}async validateAstNodes(et,nt,rt,st=cancellationExports.CancellationToken.None){await Promise.all(streamAst(et).map(async ot=>{await interruptAndCheck(st);const en=this.validationRegistry.getChecks(ot.$type,nt.categories);for(const tn of en)await tn(ot,rt,st)}))}async validateAstAfter(et,nt,rt,st=cancellationExports.CancellationToken.None){var ot;const en=this.validationRegistry.checksAfter;for(const tn of en)await interruptAndCheck(st),await tn(et,rt,(ot=nt.categories)!==null&&ot!==void 0?ot:[],st)}toDiagnostic(et,nt,rt){return{message:nt,range:getDiagnosticRange(rt),severity:toDiagnosticSeverity(et),code:rt.code,codeDescription:rt.codeDescription,tags:rt.tags,relatedInformation:rt.relatedInformation,data:rt.data,source:this.getSource()}}getSource(){return this.metadata.languageId}}function getDiagnosticRange(tt){if(tt.range)return tt.range;let et;return typeof tt.property=="string"?et=findNodeForProperty(tt.node.$cstNode,tt.property,tt.index):typeof tt.keyword=="string"&&(et=findNodeForKeyword(tt.node.$cstNode,tt.keyword,tt.index)),et??(et=tt.node.$cstNode),et?et.range:{start:{line:0,character:0},end:{line:0,character:0}}}function toDiagnosticSeverity(tt){switch(tt){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+tt)}}function toDiagnosticData(tt){switch(tt){case"error":return diagnosticData(DocumentValidator.LexingError);case"warning":return diagnosticData(DocumentValidator.LexingWarning);case"info":return diagnosticData(DocumentValidator.LexingInfo);case"hint":return diagnosticData(DocumentValidator.LexingHint);default:throw new Error("Invalid diagnostic severity: "+tt)}}var DocumentValidator;(function(tt){tt.LexingError="lexing-error",tt.LexingWarning="lexing-warning",tt.LexingInfo="lexing-info",tt.LexingHint="lexing-hint",tt.ParsingError="parsing-error",tt.LinkingError="linking-error"})(DocumentValidator||(DocumentValidator={}));class DefaultAstNodeDescriptionProvider{constructor(et){this.astNodeLocator=et.workspace.AstNodeLocator,this.nameProvider=et.references.NameProvider}createDescription(et,nt,rt){const st=rt??getDocument(et);nt??(nt=this.nameProvider.getName(et));const ot=this.astNodeLocator.getAstNodePath(et);if(!nt)throw new Error(`Node at path ${ot} has no name.`);let en;const tn=()=>{var nn;return en??(en=toDocumentSegment((nn=this.nameProvider.getNameNode(et))!==null&&nn!==void 0?nn:et.$cstNode))};return{node:et,name:nt,get nameSegment(){return tn()},selectionSegment:toDocumentSegment(et.$cstNode),type:et.$type,documentUri:st.uri,path:ot}}}class DefaultReferenceDescriptionProvider{constructor(et){this.nodeLocator=et.workspace.AstNodeLocator}async createDescriptions(et,nt=cancellationExports.CancellationToken.None){const rt=[],st=et.parseResult.value;for(const ot of streamAst(st))await interruptAndCheck(nt),streamReferences(ot).filter(en=>!isLinkingError(en)).forEach(en=>{const tn=this.createDescription(en);tn&&rt.push(tn)});return rt}createDescription(et){const nt=et.reference.$nodeDescription,rt=et.reference.$refNode;if(!nt||!rt)return;const st=getDocument(et.container).uri;return{sourceUri:st,sourcePath:this.nodeLocator.getAstNodePath(et.container),targetUri:nt.documentUri,targetPath:nt.path,segment:toDocumentSegment(rt),local:UriUtils.equals(nt.documentUri,st)}}}class DefaultAstNodeLocator{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(et){if(et.$container){const nt=this.getAstNodePath(et.$container),rt=this.getPathSegment(et);return nt+this.segmentSeparator+rt}return""}getPathSegment({$containerProperty:et,$containerIndex:nt}){if(!et)throw new Error("Missing '$containerProperty' in AST node.");return nt!==void 0?et+this.indexSeparator+nt:et}getAstNode(et,nt){return nt.split(this.segmentSeparator).reduce((st,ot)=>{if(!st||ot.length===0)return st;const en=ot.indexOf(this.indexSeparator);if(en>0){const tn=ot.substring(0,en),nn=parseInt(ot.substring(en+1)),rn=st[tn];return rn?.[nn]}return st[ot]},et)}}var eventsExports=requireEvents();class DefaultConfigurationProvider{constructor(et){this._ready=new Deferred,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new eventsExports.Emitter,this.serviceRegistry=et.ServiceRegistry}get ready(){return this._ready.promise}initialize(et){var nt,rt;this.workspaceConfig=(rt=(nt=et.capabilities.workspace)===null||nt===void 0?void 0:nt.configuration)!==null&&rt!==void 0?rt:!1}async initialized(et){if(this.workspaceConfig){if(et.register){const nt=this.serviceRegistry.all;et.register({section:nt.map(rt=>this.toSectionName(rt.LanguageMetaData.languageId))})}if(et.fetchConfiguration){const nt=this.serviceRegistry.all.map(st=>({section:this.toSectionName(st.LanguageMetaData.languageId)})),rt=await et.fetchConfiguration(nt);nt.forEach((st,ot)=>{this.updateSectionConfiguration(st.section,rt[ot])})}}this._ready.resolve()}updateConfiguration(et){et.settings&&Object.keys(et.settings).forEach(nt=>{const rt=et.settings[nt];this.updateSectionConfiguration(nt,rt),this.onConfigurationSectionUpdateEmitter.fire({section:nt,configuration:rt})})}updateSectionConfiguration(et,nt){this.settings[et]=nt}async getConfiguration(et,nt){await this.ready;const rt=this.toSectionName(et);if(this.settings[rt])return this.settings[rt][nt]}toSectionName(et){return`${et}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}var Disposable;(function(tt){function et(nt){return{dispose:async()=>await nt()}}tt.create=et})(Disposable||(Disposable={}));class DefaultDocumentBuilder{constructor(et){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new MultiMap,this.documentPhaseListeners=new MultiMap,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=DocumentState.Changed,this.langiumDocuments=et.workspace.LangiumDocuments,this.langiumDocumentFactory=et.workspace.LangiumDocumentFactory,this.textDocuments=et.workspace.TextDocuments,this.indexManager=et.workspace.IndexManager,this.serviceRegistry=et.ServiceRegistry}async build(et,nt={},rt=cancellationExports.CancellationToken.None){var st,ot;for(const en of et){const tn=en.uri.toString();if(en.state===DocumentState.Validated){if(typeof nt.validation=="boolean"&&nt.validation)en.state=DocumentState.IndexedReferences,en.diagnostics=void 0,this.buildState.delete(tn);else if(typeof nt.validation=="object"){const nn=this.buildState.get(tn),rn=(st=nn?.result)===null||st===void 0?void 0:st.validationChecks;if(rn){const an=((ot=nt.validation.categories)!==null&&ot!==void 0?ot:ValidationCategory.all).filter(on=>!rn.includes(on));an.length>0&&(this.buildState.set(tn,{completed:!1,options:{validation:Object.assign(Object.assign({},nt.validation),{categories:an})},result:nn.result}),en.state=DocumentState.IndexedReferences)}}}else this.buildState.delete(tn)}this.currentState=DocumentState.Changed,await this.emitUpdate(et.map(en=>en.uri),[]),await this.buildDocuments(et,nt,rt)}async update(et,nt,rt=cancellationExports.CancellationToken.None){this.currentState=DocumentState.Changed;for(const en of nt)this.langiumDocuments.deleteDocument(en),this.buildState.delete(en.toString()),this.indexManager.remove(en);for(const en of et){if(!this.langiumDocuments.invalidateDocument(en)){const nn=this.langiumDocumentFactory.fromModel({$type:"INVALID"},en);nn.state=DocumentState.Changed,this.langiumDocuments.addDocument(nn)}this.buildState.delete(en.toString())}const st=stream(et).concat(nt).map(en=>en.toString()).toSet();this.langiumDocuments.all.filter(en=>!st.has(en.uri.toString())&&this.shouldRelink(en,st)).forEach(en=>{this.serviceRegistry.getServices(en.uri).references.Linker.unlink(en),en.state=Math.min(en.state,DocumentState.ComputedScopes),en.diagnostics=void 0}),await this.emitUpdate(et,nt),await interruptAndCheck(rt);const ot=this.sortDocuments(this.langiumDocuments.all.filter(en=>{var tn;return en.state<DocumentState.Linked||!(!((tn=this.buildState.get(en.uri.toString()))===null||tn===void 0)&&tn.completed)}).toArray());await this.buildDocuments(ot,this.updateBuildOptions,rt)}async emitUpdate(et,nt){await Promise.all(this.updateListeners.map(rt=>rt(et,nt)))}sortDocuments(et){let nt=0,rt=et.length-1;for(;nt<rt;){for(;nt<et.length&&this.hasTextDocument(et[nt]);)nt++;for(;rt>=0&&!this.hasTextDocument(et[rt]);)rt--;nt<rt&&([et[nt],et[rt]]=[et[rt],et[nt]])}return et}hasTextDocument(et){var nt;return!!(!((nt=this.textDocuments)===null||nt===void 0)&&nt.get(et.uri))}shouldRelink(et,nt){return et.references.some(rt=>rt.error!==void 0)?!0:this.indexManager.isAffected(et,nt)}onUpdate(et){return this.updateListeners.push(et),Disposable.create(()=>{const nt=this.updateListeners.indexOf(et);nt>=0&&this.updateListeners.splice(nt,1)})}async buildDocuments(et,nt,rt){this.prepareBuild(et,nt),await this.runCancelable(et,DocumentState.Parsed,rt,ot=>this.langiumDocumentFactory.update(ot,rt)),await this.runCancelable(et,DocumentState.IndexedContent,rt,ot=>this.indexManager.updateContent(ot,rt)),await this.runCancelable(et,DocumentState.ComputedScopes,rt,async ot=>{const en=this.serviceRegistry.getServices(ot.uri).references.ScopeComputation;ot.precomputedScopes=await en.computeLocalScopes(ot,rt)}),await this.runCancelable(et,DocumentState.Linked,rt,ot=>this.serviceRegistry.getServices(ot.uri).references.Linker.link(ot,rt)),await this.runCancelable(et,DocumentState.IndexedReferences,rt,ot=>this.indexManager.updateReferences(ot,rt));const st=et.filter(ot=>this.shouldValidate(ot));await this.runCancelable(st,DocumentState.Validated,rt,ot=>this.validate(ot,rt));for(const ot of et){const en=this.buildState.get(ot.uri.toString());en&&(en.completed=!0)}}prepareBuild(et,nt){for(const rt of et){const st=rt.uri.toString(),ot=this.buildState.get(st);(!ot||ot.completed)&&this.buildState.set(st,{completed:!1,options:nt,result:ot?.result})}}async runCancelable(et,nt,rt,st){const ot=et.filter(tn=>tn.state<nt);for(const tn of ot)await interruptAndCheck(rt),await st(tn),tn.state=nt,await this.notifyDocumentPhase(tn,nt,rt);const en=et.filter(tn=>tn.state===nt);await this.notifyBuildPhase(en,nt,rt),this.currentState=nt}onBuildPhase(et,nt){return this.buildPhaseListeners.add(et,nt),Disposable.create(()=>{this.buildPhaseListeners.delete(et,nt)})}onDocumentPhase(et,nt){return this.documentPhaseListeners.add(et,nt),Disposable.create(()=>{this.documentPhaseListeners.delete(et,nt)})}waitUntil(et,nt,rt){let st;if(nt&&"path"in nt?st=nt:rt=nt,rt??(rt=cancellationExports.CancellationToken.None),st){const ot=this.langiumDocuments.getDocument(st);if(ot&&ot.state>et)return Promise.resolve(st)}return this.currentState>=et?Promise.resolve(void 0):rt.isCancellationRequested?Promise.reject(OperationCancelled):new Promise((ot,en)=>{const tn=this.onBuildPhase(et,()=>{if(tn.dispose(),nn.dispose(),st){const rn=this.langiumDocuments.getDocument(st);ot(rn?.uri)}else ot(void 0)}),nn=rt.onCancellationRequested(()=>{tn.dispose(),nn.dispose(),en(OperationCancelled)})})}async notifyDocumentPhase(et,nt,rt){const ot=this.documentPhaseListeners.get(nt).slice();for(const en of ot)try{await en(et,rt)}catch(tn){if(!isOperationCancelled(tn))throw tn}}async notifyBuildPhase(et,nt,rt){if(et.length===0)return;const ot=this.buildPhaseListeners.get(nt).slice();for(const en of ot)await interruptAndCheck(rt),await en(et,rt)}shouldValidate(et){return!!this.getBuildOptions(et).validation}async validate(et,nt){var rt,st;const ot=this.serviceRegistry.getServices(et.uri).validation.DocumentValidator,en=this.getBuildOptions(et).validation,tn=typeof en=="object"?en:void 0,nn=await ot.validateDocument(et,tn,nt);et.diagnostics?et.diagnostics.push(...nn):et.diagnostics=nn;const rn=this.buildState.get(et.uri.toString());if(rn){(rt=rn.result)!==null&&rt!==void 0||(rn.result={});const sn=(st=tn?.categories)!==null&&st!==void 0?st:ValidationCategory.all;rn.result.validationChecks?rn.result.validationChecks.push(...sn):rn.result.validationChecks=[...sn]}}getBuildOptions(et){var nt,rt;return(rt=(nt=this.buildState.get(et.uri.toString()))===null||nt===void 0?void 0:nt.options)!==null&&rt!==void 0?rt:{}}}class DefaultIndexManager{constructor(et){this.symbolIndex=new Map,this.symbolByTypeIndex=new ContextCache,this.referenceIndex=new Map,this.documents=et.workspace.LangiumDocuments,this.serviceRegistry=et.ServiceRegistry,this.astReflection=et.AstReflection}findAllReferences(et,nt){const rt=getDocument(et).uri,st=[];return this.referenceIndex.forEach(ot=>{ot.forEach(en=>{UriUtils.equals(en.targetUri,rt)&&en.targetPath===nt&&st.push(en)})}),stream(st)}allElements(et,nt){let rt=stream(this.symbolIndex.keys());return nt&&(rt=rt.filter(st=>!nt||nt.has(st))),rt.map(st=>this.getFileDescriptions(st,et)).flat()}getFileDescriptions(et,nt){var rt;return nt?this.symbolByTypeIndex.get(et,nt,()=>{var ot;return((ot=this.symbolIndex.get(et))!==null&&ot!==void 0?ot:[]).filter(tn=>this.astReflection.isSubtype(tn.type,nt))}):(rt=this.symbolIndex.get(et))!==null&&rt!==void 0?rt:[]}remove(et){const nt=et.toString();this.symbolIndex.delete(nt),this.symbolByTypeIndex.clear(nt),this.referenceIndex.delete(nt)}async updateContent(et,nt=cancellationExports.CancellationToken.None){const st=await this.serviceRegistry.getServices(et.uri).references.ScopeComputation.computeExports(et,nt),ot=et.uri.toString();this.symbolIndex.set(ot,st),this.symbolByTypeIndex.clear(ot)}async updateReferences(et,nt=cancellationExports.CancellationToken.None){const st=await this.serviceRegistry.getServices(et.uri).workspace.ReferenceDescriptionProvider.createDescriptions(et,nt);this.referenceIndex.set(et.uri.toString(),st)}isAffected(et,nt){const rt=this.referenceIndex.get(et.uri.toString());return rt?rt.some(st=>!st.local&&nt.has(st.targetUri.toString())):!1}}class DefaultWorkspaceManager{constructor(et){this.initialBuildOptions={},this._ready=new Deferred,this.serviceRegistry=et.ServiceRegistry,this.langiumDocuments=et.workspace.LangiumDocuments,this.documentBuilder=et.workspace.DocumentBuilder,this.fileSystemProvider=et.workspace.FileSystemProvider,this.mutex=et.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(et){var nt;this.folders=(nt=et.workspaceFolders)!==null&&nt!==void 0?nt:void 0}initialized(et){return this.mutex.write(nt=>{var rt;return this.initializeWorkspace((rt=this.folders)!==null&&rt!==void 0?rt:[],nt)})}async initializeWorkspace(et,nt=cancellationExports.CancellationToken.None){const rt=await this.performStartup(et);await interruptAndCheck(nt),await this.documentBuilder.build(rt,this.initialBuildOptions,nt)}async performStartup(et){const nt=this.serviceRegistry.all.flatMap(ot=>ot.LanguageMetaData.fileExtensions),rt=[],st=ot=>{rt.push(ot),this.langiumDocuments.hasDocument(ot.uri)||this.langiumDocuments.addDocument(ot)};return await this.loadAdditionalDocuments(et,st),await Promise.all(et.map(ot=>[ot,this.getRootFolder(ot)]).map(async ot=>this.traverseFolder(...ot,nt,st))),this._ready.resolve(),rt}loadAdditionalDocuments(et,nt){return Promise.resolve()}getRootFolder(et){return URI.parse(et.uri)}async traverseFolder(et,nt,rt,st){const ot=await this.fileSystemProvider.readDirectory(nt);await Promise.all(ot.map(async en=>{if(this.includeEntry(et,en,rt)){if(en.isDirectory)await this.traverseFolder(et,en.uri,rt,st);else if(en.isFile){const tn=await this.langiumDocuments.getOrCreateDocument(en.uri);st(tn)}}}))}includeEntry(et,nt,rt){const st=UriUtils.basename(nt.uri);if(st.startsWith("."))return!1;if(nt.isDirectory)return st!=="node_modules"&&st!=="out";if(nt.isFile){const ot=UriUtils.extname(nt.uri);return rt.includes(ot)}return!1}}class DefaultLexerErrorMessageProvider{buildUnexpectedCharactersMessage(et,nt,rt,st,ot){return defaultLexerErrorProvider.buildUnexpectedCharactersMessage(et,nt,rt,st,ot)}buildUnableToPopLexerModeMessage(et){return defaultLexerErrorProvider.buildUnableToPopLexerModeMessage(et)}}const DEFAULT_TOKENIZE_OPTIONS={mode:"full"};class DefaultLexer{constructor(et){this.errorMessageProvider=et.parser.LexerErrorMessageProvider,this.tokenBuilder=et.parser.TokenBuilder;const nt=this.tokenBuilder.buildTokens(et.Grammar,{caseInsensitive:et.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(nt);const rt=isTokenTypeDictionary(nt)?Object.values(nt):nt,st=et.LanguageMetaData.mode==="production";this.chevrotainLexer=new Lexer(rt,{positionTracking:"full",skipValidations:st,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(et,nt=DEFAULT_TOKENIZE_OPTIONS){var rt,st,ot;const en=this.chevrotainLexer.tokenize(et);return{tokens:en.tokens,errors:en.errors,hidden:(rt=en.groups.hidden)!==null&&rt!==void 0?rt:[],report:(ot=(st=this.tokenBuilder).flushLexingReport)===null||ot===void 0?void 0:ot.call(st,et)}}toTokenTypeDictionary(et){if(isTokenTypeDictionary(et))return et;const nt=isIMultiModeLexerDefinition(et)?Object.values(et.modes).flat():et,rt={};return nt.forEach(st=>rt[st.name]=st),rt}}function isTokenTypeArray(tt){return Array.isArray(tt)&&(tt.length===0||"name"in tt[0])}function isIMultiModeLexerDefinition(tt){return tt&&"modes"in tt&&"defaultMode"in tt}function isTokenTypeDictionary(tt){return!isTokenTypeArray(tt)&&!isIMultiModeLexerDefinition(tt)}function parseJSDoc(tt,et,nt){let rt,st;typeof tt=="string"?(st=et,rt=nt):(st=tt.range.start,rt=et),st||(st=Position.create(0,0));const ot=getLines(tt),en=normalizeOptions(rt),tn=tokenize({lines:ot,position:st,options:en});return parseJSDocComment({index:0,tokens:tn,position:st})}function isJSDoc(tt,et){const nt=normalizeOptions(et),rt=getLines(tt);if(rt.length===0)return!1;const st=rt[0],ot=rt[rt.length-1],en=nt.start,tn=nt.end;return!!en?.exec(st)&&!!tn?.exec(ot)}function getLines(tt){let et="";return typeof tt=="string"?et=tt:et=tt.text,et.split(NEWLINE_REGEXP)}const tagRegex=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,inlineTagRegex=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function tokenize(tt){var et,nt,rt;const st=[];let ot=tt.position.line,en=tt.position.character;for(let tn=0;tn<tt.lines.length;tn++){const nn=tn===0,rn=tn===tt.lines.length-1;let sn=tt.lines[tn],an=0;if(nn&&tt.options.start){const cn=(et=tt.options.start)===null||et===void 0?void 0:et.exec(sn);cn&&(an=cn.index+cn[0].length)}else{const cn=(nt=tt.options.line)===null||nt===void 0?void 0:nt.exec(sn);cn&&(an=cn.index+cn[0].length)}if(rn){const cn=(rt=tt.options.end)===null||rt===void 0?void 0:rt.exec(sn);cn&&(sn=sn.substring(0,cn.index))}if(sn=sn.substring(0,lastCharacter(sn)),skipWhitespace(sn,an)>=sn.length){if(st.length>0){const cn=Position.create(ot,en);st.push({type:"break",content:"",range:Range.create(cn,cn)})}}else{tagRegex.lastIndex=an;const cn=tagRegex.exec(sn);if(cn){const ln=cn[0],fn=cn[1],gn=Position.create(ot,en+an),pn=Position.create(ot,en+an+ln.length);st.push({type:"tag",content:fn,range:Range.create(gn,pn)}),an+=ln.length,an=skipWhitespace(sn,an)}if(an<sn.length){const ln=sn.substring(an),fn=Array.from(ln.matchAll(inlineTagRegex));st.push(...buildInlineTokens(fn,ln,ot,en+an))}}ot++,en=0}return st.length>0&&st[st.length-1].type==="break"?st.slice(0,-1):st}function buildInlineTokens(tt,et,nt,rt){const st=[];if(tt.length===0){const ot=Position.create(nt,rt),en=Position.create(nt,rt+et.length);st.push({type:"text",content:et,range:Range.create(ot,en)})}else{let ot=0;for(const tn of tt){const nn=tn.index,rn=et.substring(ot,nn);rn.length>0&&st.push({type:"text",content:et.substring(ot,nn),range:Range.create(Position.create(nt,ot+rt),Position.create(nt,nn+rt))});let sn=rn.length+1;const an=tn[1];if(st.push({type:"inline-tag",content:an,range:Range.create(Position.create(nt,ot+sn+rt),Position.create(nt,ot+sn+an.length+rt))}),sn+=an.length,tn.length===4){sn+=tn[2].length;const on=tn[3];st.push({type:"text",content:on,range:Range.create(Position.create(nt,ot+sn+rt),Position.create(nt,ot+sn+on.length+rt))})}else st.push({type:"text",content:"",range:Range.create(Position.create(nt,ot+sn+rt),Position.create(nt,ot+sn+rt))});ot=nn+tn[0].length}const en=et.substring(ot);en.length>0&&st.push({type:"text",content:en,range:Range.create(Position.create(nt,ot+rt),Position.create(nt,ot+rt+en.length))})}return st}const nonWhitespaceRegex=/\S/,whitespaceEndRegex=/\s*$/;function skipWhitespace(tt,et){const nt=tt.substring(et).match(nonWhitespaceRegex);return nt?et+nt.index:tt.length}function lastCharacter(tt){const et=tt.match(whitespaceEndRegex);if(et&&typeof et.index=="number")return et.index}function parseJSDocComment(tt){var et,nt,rt,st;const ot=Position.create(tt.position.line,tt.position.character);if(tt.tokens.length===0)return new JSDocCommentImpl([],Range.create(ot,ot));const en=[];for(;tt.index<tt.tokens.length;){const rn=parseJSDocElement(tt,en[en.length-1]);rn&&en.push(rn)}const tn=(nt=(et=en[0])===null||et===void 0?void 0:et.range.start)!==null&&nt!==void 0?nt:ot,nn=(st=(rt=en[en.length-1])===null||rt===void 0?void 0:rt.range.end)!==null&&st!==void 0?st:ot;return new JSDocCommentImpl(en,Range.create(tn,nn))}function parseJSDocElement(tt,et){const nt=tt.tokens[tt.index];if(nt.type==="tag")return parseJSDocTag(tt,!1);if(nt.type==="text"||nt.type==="inline-tag")return parseJSDocText(tt);appendEmptyLine(nt,et),tt.index++}function appendEmptyLine(tt,et){if(et){const nt=new JSDocLineImpl("",tt.range);"inlines"in et?et.inlines.push(nt):et.content.inlines.push(nt)}}function parseJSDocText(tt){let et=tt.tokens[tt.index];const nt=et;let rt=et;const st=[];for(;et&&et.type!=="break"&&et.type!=="tag";)st.push(parseJSDocInline(tt)),rt=et,et=tt.tokens[tt.index];return new JSDocTextImpl(st,Range.create(nt.range.start,rt.range.end))}function parseJSDocInline(tt){return tt.tokens[tt.index].type==="inline-tag"?parseJSDocTag(tt,!0):parseJSDocLine(tt)}function parseJSDocTag(tt,et){const nt=tt.tokens[tt.index++],rt=nt.content.substring(1),st=tt.tokens[tt.index];if(st?.type==="text")if(et){const ot=parseJSDocLine(tt);return new JSDocTagImpl(rt,new JSDocTextImpl([ot],ot.range),et,Range.create(nt.range.start,ot.range.end))}else{const ot=parseJSDocText(tt);return new JSDocTagImpl(rt,ot,et,Range.create(nt.range.start,ot.range.end))}else{const ot=nt.range;return new JSDocTagImpl(rt,new JSDocTextImpl([],ot),et,ot)}}function parseJSDocLine(tt){const et=tt.tokens[tt.index++];return new JSDocLineImpl(et.content,et.range)}function normalizeOptions(tt){if(!tt)return normalizeOptions({start:"/**",end:"*/",line:"*"});const{start:et,end:nt,line:rt}=tt;return{start:normalizeOption(et,!0),end:normalizeOption(nt,!1),line:normalizeOption(rt,!0)}}function normalizeOption(tt,et){if(typeof tt=="string"||typeof tt=="object"){const nt=typeof tt=="string"?escapeRegExp(tt):tt.source;return et?new RegExp(`^\\s*${nt}`):new RegExp(`\\s*${nt}\\s*$`)}else return tt}class JSDocCommentImpl{constructor(et,nt){this.elements=et,this.range=nt}getTag(et){return this.getAllTags().find(nt=>nt.name===et)}getTags(et){return this.getAllTags().filter(nt=>nt.name===et)}getAllTags(){return this.elements.filter(et=>"name"in et)}toString(){let et="";for(const nt of this.elements)if(et.length===0)et=nt.toString();else{const rt=nt.toString();et+=fillNewlines(et)+rt}return et.trim()}toMarkdown(et){let nt="";for(const rt of this.elements)if(nt.length===0)nt=rt.toMarkdown(et);else{const st=rt.toMarkdown(et);nt+=fillNewlines(nt)+st}return nt.trim()}}class JSDocTagImpl{constructor(et,nt,rt,st){this.name=et,this.content=nt,this.inline=rt,this.range=st}toString(){let et=`@${this.name}`;const nt=this.content.toString();return this.content.inlines.length===1?et=`${et} ${nt}`:this.content.inlines.length>1&&(et=`${et}
|
|
137
|
-
${nt}`),this.inline?`{${et}}`:et}toMarkdown(et){var nt,rt;return(rt=(nt=et?.renderTag)===null||nt===void 0?void 0:nt.call(et,this))!==null&&rt!==void 0?rt:this.toMarkdownDefault(et)}toMarkdownDefault(et){const nt=this.content.toMarkdown(et);if(this.inline){const ot=renderInlineTag(this.name,nt,et??{});if(typeof ot=="string")return ot}let rt="";et?.tag==="italic"||et?.tag===void 0?rt="*":et?.tag==="bold"?rt="**":et?.tag==="bold-italic"&&(rt="***");let st=`${rt}@${this.name}${rt}`;return this.content.inlines.length===1?st=`${st} \u2014 ${nt}`:this.content.inlines.length>1&&(st=`${st}
|
|
138
|
-
${nt}`),this.inline?`{${st}}`:st}}function renderInlineTag(tt,et,nt){var rt,st;if(tt==="linkplain"||tt==="linkcode"||tt==="link"){const ot=et.indexOf(" ");let en=et;if(ot>0){const nn=skipWhitespace(et,ot);en=et.substring(nn),et=et.substring(0,ot)}return(tt==="linkcode"||tt==="link"&&nt.link==="code")&&(en=`\`${en}\``),(st=(rt=nt.renderLink)===null||rt===void 0?void 0:rt.call(nt,et,en))!==null&&st!==void 0?st:renderLinkDefault(et,en)}}function renderLinkDefault(tt,et){try{return URI.parse(tt,!0),`[${et}](${tt})`}catch{return tt}}class JSDocTextImpl{constructor(et,nt){this.inlines=et,this.range=nt}toString(){let et="";for(let nt=0;nt<this.inlines.length;nt++){const rt=this.inlines[nt],st=this.inlines[nt+1];et+=rt.toString(),st&&st.range.start.line>rt.range.start.line&&(et+=`
|
|
139
|
-
`)}return et}toMarkdown(et){let nt="";for(let rt=0;rt<this.inlines.length;rt++){const st=this.inlines[rt],ot=this.inlines[rt+1];nt+=st.toMarkdown(et),ot&&ot.range.start.line>st.range.start.line&&(nt+=`
|
|
140
|
-
`)}return nt}}class JSDocLineImpl{constructor(et,nt){this.text=et,this.range=nt}toString(){return this.text}toMarkdown(){return this.text}}function fillNewlines(tt){return tt.endsWith(`
|
|
141
|
-
`)?`
|
|
142
|
-
`:`
|
|
143
|
-
|
|
144
|
-
`}class JSDocDocumentationProvider{constructor(et){this.indexManager=et.shared.workspace.IndexManager,this.commentProvider=et.documentation.CommentProvider}getDocumentation(et){const nt=this.commentProvider.getComment(et);if(nt&&isJSDoc(nt))return parseJSDoc(nt).toMarkdown({renderLink:(st,ot)=>this.documentationLinkRenderer(et,st,ot),renderTag:st=>this.documentationTagRenderer(et,st)})}documentationLinkRenderer(et,nt,rt){var st;const ot=(st=this.findNameInPrecomputedScopes(et,nt))!==null&&st!==void 0?st:this.findNameInGlobalScope(et,nt);if(ot&&ot.nameSegment){const en=ot.nameSegment.range.start.line+1,tn=ot.nameSegment.range.start.character+1,nn=ot.documentUri.with({fragment:`L${en},${tn}`});return`[${rt}](${nn.toString()})`}else return}documentationTagRenderer(et,nt){}findNameInPrecomputedScopes(et,nt){const st=getDocument(et).precomputedScopes;if(!st)return;let ot=et;do{const tn=st.get(ot).find(nn=>nn.name===nt);if(tn)return tn;ot=ot.$container}while(ot)}findNameInGlobalScope(et,nt){return this.indexManager.allElements().find(st=>st.name===nt)}}class DefaultCommentProvider{constructor(et){this.grammarConfig=()=>et.parser.GrammarConfig}getComment(et){var nt;return isAstNodeWithComment(et)?et.$comment:(nt=findCommentNode(et.$cstNode,this.grammarConfig().multilineCommentRules))===null||nt===void 0?void 0:nt.text}}class DefaultAsyncParser{constructor(et){this.syncParser=et.parser.LangiumParser}parse(et,nt){return Promise.resolve(this.syncParser.parse(et))}}class DefaultWorkspaceLock{constructor(){this.previousTokenSource=new cancellationExports.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(et){this.cancelWrite();const nt=startCancelableOperation();return this.previousTokenSource=nt,this.enqueue(this.writeQueue,et,nt.token)}read(et){return this.enqueue(this.readQueue,et)}enqueue(et,nt,rt=cancellationExports.CancellationToken.None){const st=new Deferred,ot={action:nt,deferred:st,cancellationToken:rt};return et.push(ot),this.performNextOperation(),st.promise}async performNextOperation(){if(!this.done)return;const et=[];if(this.writeQueue.length>0)et.push(this.writeQueue.shift());else if(this.readQueue.length>0)et.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(et.map(async({action:nt,deferred:rt,cancellationToken:st})=>{try{const ot=await Promise.resolve().then(()=>nt(st));rt.resolve(ot)}catch(ot){isOperationCancelled(ot)?rt.resolve(void 0):rt.reject(ot)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}class DefaultHydrator{constructor(et){this.grammarElementIdMap=new BiMap,this.tokenTypeIdMap=new BiMap,this.grammar=et.Grammar,this.lexer=et.parser.Lexer,this.linker=et.references.Linker}dehydrate(et){return{lexerErrors:et.lexerErrors,lexerReport:et.lexerReport?this.dehydrateLexerReport(et.lexerReport):void 0,parserErrors:et.parserErrors.map(nt=>Object.assign(Object.assign({},nt),{message:nt.message})),value:this.dehydrateAstNode(et.value,this.createDehyrationContext(et.value))}}dehydrateLexerReport(et){return et}createDehyrationContext(et){const nt=new Map,rt=new Map;for(const st of streamAst(et))nt.set(st,{});if(et.$cstNode)for(const st of streamCst(et.$cstNode))rt.set(st,{});return{astNodes:nt,cstNodes:rt}}dehydrateAstNode(et,nt){const rt=nt.astNodes.get(et);rt.$type=et.$type,rt.$containerIndex=et.$containerIndex,rt.$containerProperty=et.$containerProperty,et.$cstNode!==void 0&&(rt.$cstNode=this.dehydrateCstNode(et.$cstNode,nt));for(const[st,ot]of Object.entries(et))if(!st.startsWith("$"))if(Array.isArray(ot)){const en=[];rt[st]=en;for(const tn of ot)isAstNode(tn)?en.push(this.dehydrateAstNode(tn,nt)):isReference(tn)?en.push(this.dehydrateReference(tn,nt)):en.push(tn)}else isAstNode(ot)?rt[st]=this.dehydrateAstNode(ot,nt):isReference(ot)?rt[st]=this.dehydrateReference(ot,nt):ot!==void 0&&(rt[st]=ot);return rt}dehydrateReference(et,nt){const rt={};return rt.$refText=et.$refText,et.$refNode&&(rt.$refNode=nt.cstNodes.get(et.$refNode)),rt}dehydrateCstNode(et,nt){const rt=nt.cstNodes.get(et);return isRootCstNode(et)?rt.fullText=et.fullText:rt.grammarSource=this.getGrammarElementId(et.grammarSource),rt.hidden=et.hidden,rt.astNode=nt.astNodes.get(et.astNode),isCompositeCstNode(et)?rt.content=et.content.map(st=>this.dehydrateCstNode(st,nt)):isLeafCstNode(et)&&(rt.tokenType=et.tokenType.name,rt.offset=et.offset,rt.length=et.length,rt.startLine=et.range.start.line,rt.startColumn=et.range.start.character,rt.endLine=et.range.end.line,rt.endColumn=et.range.end.character),rt}hydrate(et){const nt=et.value,rt=this.createHydrationContext(nt);return"$cstNode"in nt&&this.hydrateCstNode(nt.$cstNode,rt),{lexerErrors:et.lexerErrors,lexerReport:et.lexerReport,parserErrors:et.parserErrors,value:this.hydrateAstNode(nt,rt)}}createHydrationContext(et){const nt=new Map,rt=new Map;for(const ot of streamAst(et))nt.set(ot,{});let st;if(et.$cstNode)for(const ot of streamCst(et.$cstNode)){let en;"fullText"in ot?(en=new RootCstNodeImpl(ot.fullText),st=en):"content"in ot?en=new CompositeCstNodeImpl:"tokenType"in ot&&(en=this.hydrateCstLeafNode(ot)),en&&(rt.set(ot,en),en.root=st)}return{astNodes:nt,cstNodes:rt}}hydrateAstNode(et,nt){const rt=nt.astNodes.get(et);rt.$type=et.$type,rt.$containerIndex=et.$containerIndex,rt.$containerProperty=et.$containerProperty,et.$cstNode&&(rt.$cstNode=nt.cstNodes.get(et.$cstNode));for(const[st,ot]of Object.entries(et))if(!st.startsWith("$"))if(Array.isArray(ot)){const en=[];rt[st]=en;for(const tn of ot)isAstNode(tn)?en.push(this.setParent(this.hydrateAstNode(tn,nt),rt)):isReference(tn)?en.push(this.hydrateReference(tn,rt,st,nt)):en.push(tn)}else isAstNode(ot)?rt[st]=this.setParent(this.hydrateAstNode(ot,nt),rt):isReference(ot)?rt[st]=this.hydrateReference(ot,rt,st,nt):ot!==void 0&&(rt[st]=ot);return rt}setParent(et,nt){return et.$container=nt,et}hydrateReference(et,nt,rt,st){return this.linker.buildReference(nt,rt,st.cstNodes.get(et.$refNode),et.$refText)}hydrateCstNode(et,nt,rt=0){const st=nt.cstNodes.get(et);if(typeof et.grammarSource=="number"&&(st.grammarSource=this.getGrammarElement(et.grammarSource)),st.astNode=nt.astNodes.get(et.astNode),isCompositeCstNode(st))for(const ot of et.content){const en=this.hydrateCstNode(ot,nt,rt++);st.content.push(en)}return st}hydrateCstLeafNode(et){const nt=this.getTokenType(et.tokenType),rt=et.offset,st=et.length,ot=et.startLine,en=et.startColumn,tn=et.endLine,nn=et.endColumn,rn=et.hidden;return new LeafCstNodeImpl(rt,st,{start:{line:ot,character:en},end:{line:tn,character:nn}},nt,rn)}getTokenType(et){return this.lexer.definition[et]}getGrammarElementId(et){if(et)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(et)}getGrammarElement(et){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(et)}createGrammarElementIdMap(){let et=0;for(const nt of streamAst(this.grammar))isAbstractElement(nt)&&this.grammarElementIdMap.set(nt,et++)}}function createDefaultCoreModule(tt){return{documentation:{CommentProvider:et=>new DefaultCommentProvider(et),DocumentationProvider:et=>new JSDocDocumentationProvider(et)},parser:{AsyncParser:et=>new DefaultAsyncParser(et),GrammarConfig:et=>createGrammarConfig(et),LangiumParser:et=>createLangiumParser(et),CompletionParser:et=>createCompletionParser(et),ValueConverter:()=>new DefaultValueConverter,TokenBuilder:()=>new DefaultTokenBuilder,Lexer:et=>new DefaultLexer(et),ParserErrorMessageProvider:()=>new LangiumParserErrorMessageProvider,LexerErrorMessageProvider:()=>new DefaultLexerErrorMessageProvider},workspace:{AstNodeLocator:()=>new DefaultAstNodeLocator,AstNodeDescriptionProvider:et=>new DefaultAstNodeDescriptionProvider(et),ReferenceDescriptionProvider:et=>new DefaultReferenceDescriptionProvider(et)},references:{Linker:et=>new DefaultLinker(et),NameProvider:()=>new DefaultNameProvider,ScopeProvider:et=>new DefaultScopeProvider(et),ScopeComputation:et=>new DefaultScopeComputation(et),References:et=>new DefaultReferences(et)},serializer:{Hydrator:et=>new DefaultHydrator(et),JsonSerializer:et=>new DefaultJsonSerializer(et)},validation:{DocumentValidator:et=>new DefaultDocumentValidator(et),ValidationRegistry:et=>new ValidationRegistry(et)},shared:()=>tt.shared}}function createDefaultSharedCoreModule(tt){return{ServiceRegistry:et=>new DefaultServiceRegistry(et),workspace:{LangiumDocuments:et=>new DefaultLangiumDocuments(et),LangiumDocumentFactory:et=>new DefaultLangiumDocumentFactory(et),DocumentBuilder:et=>new DefaultDocumentBuilder(et),IndexManager:et=>new DefaultIndexManager(et),WorkspaceManager:et=>new DefaultWorkspaceManager(et),FileSystemProvider:et=>tt.fileSystemProvider(et),WorkspaceLock:()=>new DefaultWorkspaceLock,ConfigurationProvider:et=>new DefaultConfigurationProvider(et)}}}var Module;(function(tt){tt.merge=(et,nt)=>_merge(_merge({},et),nt)})(Module||(Module={}));function inject(tt,et,nt,rt,st,ot,en,tn,nn){const rn=[tt,et,nt,rt,st,ot,en,tn,nn].reduce(_merge,{});return _inject(rn)}const isProxy=Symbol("isProxy");function eagerLoad(tt){if(tt&&tt[isProxy])for(const et of Object.values(tt))eagerLoad(et);return tt}function _inject(tt,et){const nt=new Proxy({},{deleteProperty:()=>!1,set:()=>{throw new Error("Cannot set property on injected service container")},get:(rt,st)=>st===isProxy?!0:_resolve(rt,st,tt,et||nt),getOwnPropertyDescriptor:(rt,st)=>(_resolve(rt,st,tt,et||nt),Object.getOwnPropertyDescriptor(rt,st)),has:(rt,st)=>st in tt,ownKeys:()=>[...Object.getOwnPropertyNames(tt)]});return nt}const __requested__=Symbol();function _resolve(tt,et,nt,rt){if(et in tt){if(tt[et]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:tt[et]});if(tt[et]===__requested__)throw new Error('Cycle detected. Please make "'+String(et)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return tt[et]}else if(et in nt){const st=nt[et];tt[et]=__requested__;try{tt[et]=typeof st=="function"?st(rt):_inject(st,rt)}catch(ot){throw tt[et]=ot instanceof Error?ot:void 0,ot}return tt[et]}else return}function _merge(tt,et){if(et){for(const[nt,rt]of Object.entries(et))if(rt!==void 0){const st=tt[nt];st!==null&&rt!==null&&typeof st=="object"&&typeof rt=="object"?tt[nt]=_merge(st,rt):tt[nt]=rt}}return tt}class EmptyFileSystemProvider{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}}const EmptyFileSystem={fileSystemProvider:()=>new EmptyFileSystemProvider},minimalGrammarModule={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},minimalSharedGrammarModule={AstReflection:()=>new LangiumGrammarAstReflection};function createMinimalGrammarServices(){const tt=inject(createDefaultSharedCoreModule(EmptyFileSystem),minimalSharedGrammarModule),et=inject(createDefaultCoreModule({shared:tt}),minimalGrammarModule);return tt.ServiceRegistry.register(et),et}function loadGrammarFromJson(tt){var et;const nt=createMinimalGrammarServices(),rt=nt.serializer.JsonSerializer.deserialize(tt);return nt.shared.workspace.LangiumDocumentFactory.fromModel(rt,URI.parse(`memory://${(et=rt.name)!==null&&et!==void 0?et:"grammar"}.langium`)),rt}var e$7={done:!0,hasNext:!1},s$3={done:!1,hasNext:!1},a$8=()=>e$7,o$a=tt=>({hasNext:!0,next:tt,done:!1});function C$1(tt,...et){let nt=tt,rt=et.map(ot=>"lazy"in ot?A$2(ot):void 0),st=0;for(;st<et.length;){if(rt[st]===void 0||!B$1(nt)){let nn=et[st];nt=nn(nt),st+=1;continue}let ot=[];for(let nn=st;nn<et.length;nn++){let rn=rt[nn];if(rn===void 0||(ot.push(rn),rn.isSingle))break}let en=[];for(let nn of nt)if(y$7(nn,en,ot))break;let{isSingle:tn}=ot.at(-1);nt=tn?en[0]:en,st+=ot.length}return nt}function y$7(tt,et,nt){if(nt.length===0)return et.push(tt),!1;let rt=tt,st=s$3,ot=!1;for(let[en,tn]of nt.entries()){let{index:nn,items:rn}=tn;if(rn.push(rt),st=tn(rt,nn,rn),tn.index+=1,st.hasNext){if(st.hasMany??!1){for(let sn of st.next)if(y$7(sn,et,nt.slice(en+1)))return!0;return ot}rt=st.next}if(!st.hasNext)break;st.done&&(ot=!0)}return st.hasNext&&et.push(rt),ot}function A$2(tt){let{lazy:et,lazyArgs:nt}=tt,rt=et(...nt);return Object.assign(rt,{isSingle:et.single??!1,index:0,items:[]})}function B$1(tt){return typeof tt=="string"||typeof tt=="object"&&tt!==null&&Symbol.iterator in tt}function y$6(tt,et){let nt=et.length-tt.length;if(nt===1){let[rt,...st]=et;return C$1(rt,{lazy:tt,lazyArgs:st})}if(nt===0){let rt={lazy:tt,lazyArgs:et};return Object.assign(st=>C$1(st,rt),rt)}throw new Error("Wrong number of arguments")}function u$8(tt,et,nt){let rt=st=>tt(st,...et);return nt===void 0?rt:Object.assign(rt,{lazy:nt,lazyArgs:et})}function u$7(tt,et,nt){let rt=tt.length-et.length;if(rt===0)return tt(...et);if(rt===1)return u$8(tt,et,nt);throw new Error("Wrong number of arguments")}function r$9(...tt){return u$7(Object.values,tt)}function i$8(...tt){return y$6(a$7,tt)}function a$7(){let tt=new Set;return et=>tt.has(et)?s$3:(tt.add(et),{done:!1,hasNext:!0,next:et})}function l$7(...tt){return u$7(o$9,tt,u$6)}var o$9=(tt,et)=>et<0?[]:tt.slice(0,et);function u$6(tt){if(tt<=0)return a$8;let et=tt;return nt=>(et-=1,{done:et<=0,hasNext:!0,next:nt})}function i$7(...tt){return u$7(r$8,tt)}var r$8=(tt,et)=>tt.length>=et;function r$7(...tt){return u$7(e$6,tt)}function e$6(tt,et){return et(tt),tt}function m$2(...tt){return u$7(o$8,tt)}function o$8(tt,et){let nt=[...tt];return nt.sort(et),nt}function l$6(...tt){return u$7(u$5,tt)}var u$5=(tt,et,nt)=>tt.reduce(et,nt);function t$4(...tt){return u$7(r$6,tt)}function r$6(tt){return[...tt].reverse()}function p$6(...tt){return u$7(t$3,tt)}var t$3=(tt,et)=>tt[et];function y$5(...tt){return u$7(f$8,tt)}function f$8(tt,et){if(!i$7(et,1))return{...tt};if(!i$7(et,2)){let{[et[0]]:rt,...st}=tt;return st}let nt={...tt};for(let rt of et)delete nt[rt];return nt}function i$6(...tt){return u$7(o$7,tt)}function o$7(tt,et){let nt={};for(let[rt,st]of Object.entries(tt)){let ot=et(st,rt,tt);nt[rt]=ot}return nt}function n$7(tt){return!!tt}function a$6(...tt){return u$7(n$6,tt)}var n$6=tt=>tt.at(-1);function m$1(...tt){return u$7(o$6,tt,p$5)}var o$6=(tt,et)=>tt.map(et),p$5=tt=>(et,nt,rt)=>({done:!1,hasNext:!0,next:tt(et,nt,rt)});function l$5(...tt){return u$7(d$6,tt)}function d$6(tt,et){let nt={};for(let[rt,st]of tt.entries()){let[ot,en]=et(st,rt,tt);nt[ot]=en}return nt}function e$5(tt){return typeof tt=="number"&&!Number.isNaN(tt)}function e$4(tt){return tt instanceof Promise}function t$2(tt){return typeof tt=="string"}function n$5(tt){return tt===void 0?!0:typeof tt=="string"||Array.isArray(tt)?tt.length===0:Object.keys(tt).length===0}function l$4(tt){return tt!=null}function n$4(tt){return tt==null}function o$5(tt){return Array.isArray(tt)}function e$3(tt){return typeof tt=="boolean"}function n$3(tt){return tt!==void 0}function T$1(tt,{triggerAt:et="end",minQuietPeriodMs:nt,maxBurstDurationMs:rt,minGapMs:st,reducer:ot=g$4}){let en,tn,nn,rn,sn=()=>{let cn=nn;cn!==void 0&&(nn=void 0,tt(cn),tn=setTimeout(an,st))},an=()=>{clearTimeout(tn),tn=void 0,en===void 0&&sn()},on=()=>{clearTimeout(en),en=void 0,rn=void 0,tn===void 0&&sn()};return{call:(...cn)=>{let ln=en===void 0&&tn===void 0;if((et!=="start"||ln)&&(nn=ot(nn,...cn)),!(en===void 0&&!ln)){{clearTimeout(en);let fn=Date.now();rn??=fn;let gn=Math.min(nt,rt-(fn-rn));en=setTimeout(on,gn)}et!=="end"&&ln&&sn()}},cancel:()=>{clearTimeout(en),en=void 0,rn=void 0,clearTimeout(tn),tn=void 0,nn=void 0},flush:()=>{on(),an()},get isIdle(){return en===void 0&&tn===void 0}}}var g$4=()=>"";function i$5(...tt){return u$7(p$4,tt)}var p$4=(tt,et)=>{let nt={};for(let[rt,st]of tt.entries()){let ot=et(st,rt,tt);if(ot!==void 0){let{[ot]:en}=nt;en===void 0&&(en=[],nt[ot]=en),en.push(st)}}return nt};function e$2(){return n$2}var n$2=tt=>tt;function c$1(...tt){return u$7(y$4,tt)}function y$4(tt,et){let nt={};for(let[rt,st]of tt.entries()){let ot=et(st,rt,tt);nt[ot]=st}return nt}function u$4(...tt){return u$7(o$4,tt,l$3)}var o$4=(tt,et)=>tt.flatMap(et),l$3=tt=>(et,nt,rt)=>{let st=tt(et,nt,rt);return Array.isArray(st)?{done:!1,hasNext:!0,hasMany:!0,next:st}:{done:!1,hasNext:!0,next:st}};function u$3(...tt){return u$7(o$3,tt,i$4)}function o$3(tt,et){return tt.forEach(et),tt}var i$4=tt=>(et,nt,rt)=>(tt(et,nt,rt),{done:!1,hasNext:!0,next:et});function i$3(...tt){return u$7(a$5,tt)}function a$5(tt,et){for(let[nt,rt]of Object.entries(tt))et(rt,nt,tt);return tt}function n$1(...tt){return u$7(Object.fromEntries,tt)}function t$1(...tt){return u$7(Object.entries,tt)}function T(...tt){return u$7(l$2,tt,y$3)}var l$2=(tt,et)=>tt.filter(et),y$3=tt=>(et,nt,rt)=>tt(et,nt,rt)?{done:!1,hasNext:!0,next:et}:s$3,e$1=tt=>Object.assign(tt,{single:!0});function f$7(...tt){return u$7(i$2,tt,e$1(u$2))}var i$2=(tt,et)=>tt.find(et),u$2=tt=>(et,nt,rt)=>tt(et,nt,rt)?{done:!0,hasNext:!0,next:et}:s$3;function o$2(...tt){return u$7(t,tt)}var t=(tt,et)=>{for(let nt=tt.length-1;nt>=0;nt--){let rt=tt[nt];if(et(rt,nt,tt))return rt}};function d$5(...tt){return u$7(r$5,tt,e$1(a$4))}var r$5=([tt])=>tt,a$4=()=>o$1,o$1=tt=>({hasNext:!0,next:tt,done:!0});function a$3(...tt){return u$7(r$4,tt)}var r$4=(tt,et)=>[...tt,...et];function d$4(...tt){return y$6(f$6,tt)}function f$6(tt){if(tt.length===0)return o$a;let et=new Map;for(let nt of tt)et.set(nt,(et.get(nt)??0)+1);return nt=>{let rt=et.get(nt);return rt===void 0||rt===0?{done:!1,hasNext:!0,next:nt}:(et.set(nt,rt-1),s$3)}}function y$2(...tt){return u$7(r$3,tt)}var r$3=(tt,et)=>et.some(nt=>nt(tt));function f$5(...tt){return u$7(s$2,tt)}function s$2(tt,et){if(et<1)throw new RangeError(`chunk: A chunk size of '${et.toString()}' would result in an infinite array`);if(tt.length===0)return[];if(et>=tt.length)return[[...tt]];let nt=Math.ceil(tt.length/et),rt=new Array(nt);if(et===1)for(let[st,ot]of tt.entries())rt[st]=[ot];else for(let st=0;st<nt;st+=1){let ot=st*et;rt[st]=tt.slice(ot,ot+et)}return rt}function u$1(...tt){return u$7(i$1,tt)}var i$1=(tt,{min:et,max:nt})=>et!==void 0&&tt<et?et:nt!==void 0&&tt>nt?nt:tt,f$4={reset:[0,0],bold:[1,22,"\x1B[22m\x1B[1m"],dim:[2,22,"\x1B[22m\x1B[2m"],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]},h$1=Object.entries(f$4);function a$2(tt){return String(tt)}a$2.open="",a$2.close="";function C(tt=!1){let et=typeof process<"u"?process:void 0,nt=et?.env||{},rt=et?.argv||[];return!("NO_COLOR"in nt||rt.includes("--no-color"))&&("FORCE_COLOR"in nt||rt.includes("--color")||et?.platform==="win32"||tt&&nt.TERM!=="dumb"||"CI"in nt)||typeof window<"u"&&!!window.chrome}function p$3(tt=!1){let et=C(tt),nt=(en,tn,nn,rn)=>{let sn="",an=0;do sn+=en.substring(an,rn)+nn,an=rn+tn.length,rn=en.indexOf(tn,an);while(~rn);return sn+en.substring(an)},rt=(en,tn,nn=en)=>{let rn=sn=>{let an=String(sn),on=an.indexOf(tn,en.length);return~on?en+nt(an,tn,nn,on)+tn:en+an+tn};return rn.open=en,rn.close=tn,rn},st={isColorSupported:et},ot=en=>`\x1B[${en}m`;for(let[en,tn]of h$1)st[en]=et?rt(ot(tn[0]),ot(tn[1]),tn[2]):a$2;return st}var r$2=process.env.FORCE_TTY!==void 0||tty.isatty(1),u=p$3(r$2),main$3={},is$1={},hasRequiredIs$1;function requireIs$1(){if(hasRequiredIs$1)return is$1;hasRequiredIs$1=1,Object.defineProperty(is$1,"__esModule",{value:!0}),is$1.thenable=is$1.typedArray=is$1.stringArray=is$1.array=is$1.func=is$1.error=is$1.number=is$1.string=is$1.boolean=void 0;function tt(rn){return rn===!0||rn===!1}is$1.boolean=tt;function et(rn){return typeof rn=="string"||rn instanceof String}is$1.string=et;function nt(rn){return typeof rn=="number"||rn instanceof Number}is$1.number=nt;function rt(rn){return rn instanceof Error}is$1.error=rt;function st(rn){return typeof rn=="function"}is$1.func=st;function ot(rn){return Array.isArray(rn)}is$1.array=ot;function en(rn){return ot(rn)&&rn.every(sn=>et(sn))}is$1.stringArray=en;function tn(rn,sn){return Array.isArray(rn)&&rn.every(sn)}is$1.typedArray=tn;function nn(rn){return rn&&st(rn.then)}return is$1.thenable=nn,is$1}var server={},main$2={},main$1={},ril={},api$2={},messages$1={},hasRequiredMessages$1;function requireMessages$1(){if(hasRequiredMessages$1)return messages$1;hasRequiredMessages$1=1,Object.defineProperty(messages$1,"__esModule",{value:!0}),messages$1.Message=messages$1.NotificationType9=messages$1.NotificationType8=messages$1.NotificationType7=messages$1.NotificationType6=messages$1.NotificationType5=messages$1.NotificationType4=messages$1.NotificationType3=messages$1.NotificationType2=messages$1.NotificationType1=messages$1.NotificationType0=messages$1.NotificationType=messages$1.RequestType9=messages$1.RequestType8=messages$1.RequestType7=messages$1.RequestType6=messages$1.RequestType5=messages$1.RequestType4=messages$1.RequestType3=messages$1.RequestType2=messages$1.RequestType1=messages$1.RequestType=messages$1.RequestType0=messages$1.AbstractMessageSignature=messages$1.ParameterStructures=messages$1.ResponseError=messages$1.ErrorCodes=void 0;const tt=requireIs$2();var et;(function(Rn){Rn.ParseError=-32700,Rn.InvalidRequest=-32600,Rn.MethodNotFound=-32601,Rn.InvalidParams=-32602,Rn.InternalError=-32603,Rn.jsonrpcReservedErrorRangeStart=-32099,Rn.serverErrorStart=-32099,Rn.MessageWriteError=-32099,Rn.MessageReadError=-32098,Rn.PendingResponseRejected=-32097,Rn.ConnectionInactive=-32096,Rn.ServerNotInitialized=-32002,Rn.UnknownErrorCode=-32001,Rn.jsonrpcReservedErrorRangeEnd=-32e3,Rn.serverErrorEnd=-32e3})(et||(messages$1.ErrorCodes=et={}));class nt extends Error{constructor(yn,Cn,Fn){super(Cn),this.code=tt.number(yn)?yn:et.UnknownErrorCode,this.data=Fn,Object.setPrototypeOf(this,nt.prototype)}toJson(){const yn={code:this.code,message:this.message};return this.data!==void 0&&(yn.data=this.data),yn}}messages$1.ResponseError=nt;class rt{constructor(yn){this.kind=yn}static is(yn){return yn===rt.auto||yn===rt.byName||yn===rt.byPosition}toString(){return this.kind}}messages$1.ParameterStructures=rt,rt.auto=new rt("auto"),rt.byPosition=new rt("byPosition"),rt.byName=new rt("byName");class st{constructor(yn,Cn){this.method=yn,this.numberOfParams=Cn}get parameterStructures(){return rt.auto}}messages$1.AbstractMessageSignature=st;class ot extends st{constructor(yn){super(yn,0)}}messages$1.RequestType0=ot;class en extends st{constructor(yn,Cn=rt.auto){super(yn,1),this._parameterStructures=Cn}get parameterStructures(){return this._parameterStructures}}messages$1.RequestType=en;class tn extends st{constructor(yn,Cn=rt.auto){super(yn,1),this._parameterStructures=Cn}get parameterStructures(){return this._parameterStructures}}messages$1.RequestType1=tn;class nn extends st{constructor(yn){super(yn,2)}}messages$1.RequestType2=nn;class rn extends st{constructor(yn){super(yn,3)}}messages$1.RequestType3=rn;class sn extends st{constructor(yn){super(yn,4)}}messages$1.RequestType4=sn;class an extends st{constructor(yn){super(yn,5)}}messages$1.RequestType5=an;class on extends st{constructor(yn){super(yn,6)}}messages$1.RequestType6=on;class cn extends st{constructor(yn){super(yn,7)}}messages$1.RequestType7=cn;class ln extends st{constructor(yn){super(yn,8)}}messages$1.RequestType8=ln;class fn extends st{constructor(yn){super(yn,9)}}messages$1.RequestType9=fn;class gn extends st{constructor(yn,Cn=rt.auto){super(yn,1),this._parameterStructures=Cn}get parameterStructures(){return this._parameterStructures}}messages$1.NotificationType=gn;class pn extends st{constructor(yn){super(yn,0)}}messages$1.NotificationType0=pn;class vn extends st{constructor(yn,Cn=rt.auto){super(yn,1),this._parameterStructures=Cn}get parameterStructures(){return this._parameterStructures}}messages$1.NotificationType1=vn;class bn extends st{constructor(yn){super(yn,2)}}messages$1.NotificationType2=bn;class $n extends st{constructor(yn){super(yn,3)}}messages$1.NotificationType3=$n;class Tn extends st{constructor(yn){super(yn,4)}}messages$1.NotificationType4=Tn;class An extends st{constructor(yn){super(yn,5)}}messages$1.NotificationType5=An;class On extends st{constructor(yn){super(yn,6)}}messages$1.NotificationType6=On;class Bn extends st{constructor(yn){super(yn,7)}}messages$1.NotificationType7=Bn;class Un extends st{constructor(yn){super(yn,8)}}messages$1.NotificationType8=Un;class Yn extends st{constructor(yn){super(yn,9)}}messages$1.NotificationType9=Yn;var xn;return function(Rn){function yn(Mn){const zn=Mn;return zn&&tt.string(zn.method)&&(tt.string(zn.id)||tt.number(zn.id))}Rn.isRequest=yn;function Cn(Mn){const zn=Mn;return zn&&tt.string(zn.method)&&Mn.id===void 0}Rn.isNotification=Cn;function Fn(Mn){const zn=Mn;return zn&&(zn.result!==void 0||!!zn.error)&&(tt.string(zn.id)||tt.number(zn.id)||zn.id===null)}Rn.isResponse=Fn}(xn||(messages$1.Message=xn={})),messages$1}var linkedMap={},hasRequiredLinkedMap;function requireLinkedMap(){if(hasRequiredLinkedMap)return linkedMap;hasRequiredLinkedMap=1;var tt;Object.defineProperty(linkedMap,"__esModule",{value:!0}),linkedMap.LRUCache=linkedMap.LinkedMap=linkedMap.Touch=void 0;var et;(function(st){st.None=0,st.First=1,st.AsOld=st.First,st.Last=2,st.AsNew=st.Last})(et||(linkedMap.Touch=et={}));class nt{constructor(){this[tt]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(ot){return this._map.has(ot)}get(ot,en=et.None){const tn=this._map.get(ot);if(tn)return en!==et.None&&this.touch(tn,en),tn.value}set(ot,en,tn=et.None){let nn=this._map.get(ot);if(nn)nn.value=en,tn!==et.None&&this.touch(nn,tn);else{switch(nn={key:ot,value:en,next:void 0,previous:void 0},tn){case et.None:this.addItemLast(nn);break;case et.First:this.addItemFirst(nn);break;case et.Last:this.addItemLast(nn);break;default:this.addItemLast(nn);break}this._map.set(ot,nn),this._size++}return this}delete(ot){return!!this.remove(ot)}remove(ot){const en=this._map.get(ot);if(en)return this._map.delete(ot),this.removeItem(en),this._size--,en.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const ot=this._head;return this._map.delete(ot.key),this.removeItem(ot),this._size--,ot.value}forEach(ot,en){const tn=this._state;let nn=this._head;for(;nn;){if(en?ot.bind(en)(nn.value,nn.key,this):ot(nn.value,nn.key,this),this._state!==tn)throw new Error("LinkedMap got modified during iteration.");nn=nn.next}}keys(){const ot=this._state;let en=this._head;const tn={[Symbol.iterator]:()=>tn,next:()=>{if(this._state!==ot)throw new Error("LinkedMap got modified during iteration.");if(en){const nn={value:en.key,done:!1};return en=en.next,nn}else return{value:void 0,done:!0}}};return tn}values(){const ot=this._state;let en=this._head;const tn={[Symbol.iterator]:()=>tn,next:()=>{if(this._state!==ot)throw new Error("LinkedMap got modified during iteration.");if(en){const nn={value:en.value,done:!1};return en=en.next,nn}else return{value:void 0,done:!0}}};return tn}entries(){const ot=this._state;let en=this._head;const tn={[Symbol.iterator]:()=>tn,next:()=>{if(this._state!==ot)throw new Error("LinkedMap got modified during iteration.");if(en){const nn={value:[en.key,en.value],done:!1};return en=en.next,nn}else return{value:void 0,done:!0}}};return tn}[(tt=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(ot){if(ot>=this.size)return;if(ot===0){this.clear();return}let en=this._head,tn=this.size;for(;en&&tn>ot;)this._map.delete(en.key),en=en.next,tn--;this._head=en,this._size=tn,en&&(en.previous=void 0),this._state++}addItemFirst(ot){if(!this._head&&!this._tail)this._tail=ot;else if(this._head)ot.next=this._head,this._head.previous=ot;else throw new Error("Invalid list");this._head=ot,this._state++}addItemLast(ot){if(!this._head&&!this._tail)this._head=ot;else if(this._tail)ot.previous=this._tail,this._tail.next=ot;else throw new Error("Invalid list");this._tail=ot,this._state++}removeItem(ot){if(ot===this._head&&ot===this._tail)this._head=void 0,this._tail=void 0;else if(ot===this._head){if(!ot.next)throw new Error("Invalid list");ot.next.previous=void 0,this._head=ot.next}else if(ot===this._tail){if(!ot.previous)throw new Error("Invalid list");ot.previous.next=void 0,this._tail=ot.previous}else{const en=ot.next,tn=ot.previous;if(!en||!tn)throw new Error("Invalid list");en.previous=tn,tn.next=en}ot.next=void 0,ot.previous=void 0,this._state++}touch(ot,en){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(en!==et.First&&en!==et.Last)){if(en===et.First){if(ot===this._head)return;const tn=ot.next,nn=ot.previous;ot===this._tail?(nn.next=void 0,this._tail=nn):(tn.previous=nn,nn.next=tn),ot.previous=void 0,ot.next=this._head,this._head.previous=ot,this._head=ot,this._state++}else if(en===et.Last){if(ot===this._tail)return;const tn=ot.next,nn=ot.previous;ot===this._head?(tn.previous=void 0,this._head=tn):(tn.previous=nn,nn.next=tn),ot.next=void 0,ot.previous=this._tail,this._tail.next=ot,this._tail=ot,this._state++}}}toJSON(){const ot=[];return this.forEach((en,tn)=>{ot.push([tn,en])}),ot}fromJSON(ot){this.clear();for(const[en,tn]of ot)this.set(en,tn)}}linkedMap.LinkedMap=nt;class rt extends nt{constructor(ot,en=1){super(),this._limit=ot,this._ratio=Math.min(Math.max(0,en),1)}get limit(){return this._limit}set limit(ot){this._limit=ot,this.checkTrim()}get ratio(){return this._ratio}set ratio(ot){this._ratio=Math.min(Math.max(0,ot),1),this.checkTrim()}get(ot,en=et.AsNew){return super.get(ot,en)}peek(ot){return super.get(ot,et.None)}set(ot,en){return super.set(ot,en,et.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}return linkedMap.LRUCache=rt,linkedMap}var disposable={},hasRequiredDisposable;function requireDisposable(){if(hasRequiredDisposable)return disposable;hasRequiredDisposable=1,Object.defineProperty(disposable,"__esModule",{value:!0}),disposable.Disposable=void 0;var tt;return function(et){function nt(rt){return{dispose:rt}}et.create=nt}(tt||(disposable.Disposable=tt={})),disposable}var sharedArrayCancellation={},hasRequiredSharedArrayCancellation;function requireSharedArrayCancellation(){if(hasRequiredSharedArrayCancellation)return sharedArrayCancellation;hasRequiredSharedArrayCancellation=1,Object.defineProperty(sharedArrayCancellation,"__esModule",{value:!0}),sharedArrayCancellation.SharedArrayReceiverStrategy=sharedArrayCancellation.SharedArraySenderStrategy=void 0;const tt=requireCancellation();var et;(function(en){en.Continue=0,en.Cancelled=1})(et||(et={}));class nt{constructor(){this.buffers=new Map}enableCancellation(tn){if(tn.id===null)return;const nn=new SharedArrayBuffer(4),rn=new Int32Array(nn,0,1);rn[0]=et.Continue,this.buffers.set(tn.id,nn),tn.$cancellationData=nn}async sendCancellation(tn,nn){const rn=this.buffers.get(nn);if(rn===void 0)return;const sn=new Int32Array(rn,0,1);Atomics.store(sn,0,et.Cancelled)}cleanup(tn){this.buffers.delete(tn)}dispose(){this.buffers.clear()}}sharedArrayCancellation.SharedArraySenderStrategy=nt;class rt{constructor(tn){this.data=new Int32Array(tn,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===et.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}}class st{constructor(tn){this.token=new rt(tn)}cancel(){}dispose(){}}class ot{constructor(){this.kind="request"}createCancellationTokenSource(tn){const nn=tn.$cancellationData;return nn===void 0?new tt.CancellationTokenSource:new st(nn)}}return sharedArrayCancellation.SharedArrayReceiverStrategy=ot,sharedArrayCancellation}var messageReader={},semaphore={},hasRequiredSemaphore;function requireSemaphore(){if(hasRequiredSemaphore)return semaphore;hasRequiredSemaphore=1,Object.defineProperty(semaphore,"__esModule",{value:!0}),semaphore.Semaphore=void 0;const tt=requireRal();class et{constructor(rt=1){if(rt<=0)throw new Error("Capacity must be greater than 0");this._capacity=rt,this._active=0,this._waiting=[]}lock(rt){return new Promise((st,ot)=>{this._waiting.push({thunk:rt,resolve:st,reject:ot}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,tt.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;const rt=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{const st=rt.thunk();st instanceof Promise?st.then(ot=>{this._active--,rt.resolve(ot),this.runNext()},ot=>{this._active--,rt.reject(ot),this.runNext()}):(this._active--,rt.resolve(st),this.runNext())}catch(st){this._active--,rt.reject(st),this.runNext()}}}return semaphore.Semaphore=et,semaphore}var hasRequiredMessageReader;function requireMessageReader(){if(hasRequiredMessageReader)return messageReader;hasRequiredMessageReader=1,Object.defineProperty(messageReader,"__esModule",{value:!0}),messageReader.ReadableStreamMessageReader=messageReader.AbstractMessageReader=messageReader.MessageReader=void 0;const tt=requireRal(),et=requireIs$2(),nt=requireEvents(),rt=requireSemaphore();var st;(function(nn){function rn(sn){let an=sn;return an&&et.func(an.listen)&&et.func(an.dispose)&&et.func(an.onError)&&et.func(an.onClose)&&et.func(an.onPartialMessage)}nn.is=rn})(st||(messageReader.MessageReader=st={}));class ot{constructor(){this.errorEmitter=new nt.Emitter,this.closeEmitter=new nt.Emitter,this.partialMessageEmitter=new nt.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(rn){this.errorEmitter.fire(this.asError(rn))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(rn){this.partialMessageEmitter.fire(rn)}asError(rn){return rn instanceof Error?rn:new Error(`Reader received error. Reason: ${et.string(rn.message)?rn.message:"unknown"}`)}}messageReader.AbstractMessageReader=ot;var en;(function(nn){function rn(sn){let an,on;const cn=new Map;let ln;const fn=new Map;if(sn===void 0||typeof sn=="string")an=sn??"utf-8";else{if(an=sn.charset??"utf-8",sn.contentDecoder!==void 0&&(on=sn.contentDecoder,cn.set(on.name,on)),sn.contentDecoders!==void 0)for(const gn of sn.contentDecoders)cn.set(gn.name,gn);if(sn.contentTypeDecoder!==void 0&&(ln=sn.contentTypeDecoder,fn.set(ln.name,ln)),sn.contentTypeDecoders!==void 0)for(const gn of sn.contentTypeDecoders)fn.set(gn.name,gn)}return ln===void 0&&(ln=(0,tt.default)().applicationJson.decoder,fn.set(ln.name,ln)),{charset:an,contentDecoder:on,contentDecoders:cn,contentTypeDecoder:ln,contentTypeDecoders:fn}}nn.fromOptions=rn})(en||(en={}));class tn extends ot{constructor(rn,sn){super(),this.readable=rn,this.options=en.fromOptions(sn),this.buffer=(0,tt.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new rt.Semaphore(1)}set partialMessageTimeout(rn){this._partialMessageTimeout=rn}get partialMessageTimeout(){return this._partialMessageTimeout}listen(rn){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=rn;const sn=this.readable.onData(an=>{this.onData(an)});return this.readable.onError(an=>this.fireError(an)),this.readable.onClose(()=>this.fireClose()),sn}onData(rn){try{for(this.buffer.append(rn);;){if(this.nextMessageLength===-1){const an=this.buffer.tryReadHeaders(!0);if(!an)return;const on=an.get("content-length");if(!on){this.fireError(new Error(`Header must provide a Content-Length property.
|
|
145
|
-
${JSON.stringify(Object.fromEntries(an))}`));return}const cn=parseInt(on);if(isNaN(cn)){this.fireError(new Error(`Content-Length value must be a number. Got ${on}`));return}this.nextMessageLength=cn}const sn=this.buffer.tryReadBody(this.nextMessageLength);if(sn===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{const an=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(sn):sn,on=await this.options.contentTypeDecoder.decode(an,this.options);this.callback(on)}).catch(an=>{this.fireError(an)})}}catch(sn){this.fireError(sn)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,tt.default)().timer.setTimeout((rn,sn)=>{this.partialMessageTimer=void 0,rn===this.messageToken&&(this.firePartialMessage({messageToken:rn,waitingTime:sn}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}}return messageReader.ReadableStreamMessageReader=tn,messageReader}var messageWriter={},hasRequiredMessageWriter;function requireMessageWriter(){if(hasRequiredMessageWriter)return messageWriter;hasRequiredMessageWriter=1,Object.defineProperty(messageWriter,"__esModule",{value:!0}),messageWriter.WriteableStreamMessageWriter=messageWriter.AbstractMessageWriter=messageWriter.MessageWriter=void 0;const tt=requireRal(),et=requireIs$2(),nt=requireSemaphore(),rt=requireEvents(),st="Content-Length: ",ot=`\r
|
|
146
|
-
`;var en;(function(sn){function an(on){let cn=on;return cn&&et.func(cn.dispose)&&et.func(cn.onClose)&&et.func(cn.onError)&&et.func(cn.write)}sn.is=an})(en||(messageWriter.MessageWriter=en={}));class tn{constructor(){this.errorEmitter=new rt.Emitter,this.closeEmitter=new rt.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(an,on,cn){this.errorEmitter.fire([this.asError(an),on,cn])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(an){return an instanceof Error?an:new Error(`Writer received error. Reason: ${et.string(an.message)?an.message:"unknown"}`)}}messageWriter.AbstractMessageWriter=tn;var nn;(function(sn){function an(on){return on===void 0||typeof on=="string"?{charset:on??"utf-8",contentTypeEncoder:(0,tt.default)().applicationJson.encoder}:{charset:on.charset??"utf-8",contentEncoder:on.contentEncoder,contentTypeEncoder:on.contentTypeEncoder??(0,tt.default)().applicationJson.encoder}}sn.fromOptions=an})(nn||(nn={}));class rn extends tn{constructor(an,on){super(),this.writable=an,this.options=nn.fromOptions(on),this.errorCount=0,this.writeSemaphore=new nt.Semaphore(1),this.writable.onError(cn=>this.fireError(cn)),this.writable.onClose(()=>this.fireClose())}async write(an){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(an,this.options).then(cn=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(cn):cn).then(cn=>{const ln=[];return ln.push(st,cn.byteLength.toString(),ot),ln.push(ot),this.doWrite(an,ln,cn)},cn=>{throw this.fireError(cn),cn}))}async doWrite(an,on,cn){try{return await this.writable.write(on.join(""),"ascii"),this.writable.write(cn)}catch(ln){return this.handleError(ln,an),Promise.reject(ln)}}handleError(an,on){this.errorCount++,this.fireError(an,on,this.errorCount)}end(){this.writable.end()}}return messageWriter.WriteableStreamMessageWriter=rn,messageWriter}var messageBuffer={},hasRequiredMessageBuffer;function requireMessageBuffer(){if(hasRequiredMessageBuffer)return messageBuffer;hasRequiredMessageBuffer=1,Object.defineProperty(messageBuffer,"__esModule",{value:!0}),messageBuffer.AbstractMessageBuffer=void 0;const tt=13,et=10,nt=`\r
|
|
147
|
-
`;class rt{constructor(ot="utf-8"){this._encoding=ot,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(ot){const en=typeof ot=="string"?this.fromString(ot,this._encoding):ot;this._chunks.push(en),this._totalLength+=en.byteLength}tryReadHeaders(ot=!1){if(this._chunks.length===0)return;let en=0,tn=0,nn=0,rn=0;e:for(;tn<this._chunks.length;){const cn=this._chunks[tn];for(nn=0;nn<cn.length;){switch(cn[nn]){case tt:switch(en){case 0:en=1;break;case 2:en=3;break;default:en=0}break;case et:switch(en){case 1:en=2;break;case 3:en=4,nn++;break e;default:en=0}break;default:en=0}nn++}rn+=cn.byteLength,tn++}if(en!==4)return;const sn=this._read(rn+nn),an=new Map,on=this.toString(sn,"ascii").split(nt);if(on.length<2)return an;for(let cn=0;cn<on.length-2;cn++){const ln=on[cn],fn=ln.indexOf(":");if(fn===-1)throw new Error(`Message header must separate key and value using ':'
|
|
148
|
-
${ln}`);const gn=ln.substr(0,fn),pn=ln.substr(fn+1).trim();an.set(ot?gn.toLowerCase():gn,pn)}return an}tryReadBody(ot){if(!(this._totalLength<ot))return this._read(ot)}get numberOfBytes(){return this._totalLength}_read(ot){if(ot===0)return this.emptyBuffer();if(ot>this._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===ot){const rn=this._chunks[0];return this._chunks.shift(),this._totalLength-=ot,this.asNative(rn)}if(this._chunks[0].byteLength>ot){const rn=this._chunks[0],sn=this.asNative(rn,ot);return this._chunks[0]=rn.slice(ot),this._totalLength-=ot,sn}const en=this.allocNative(ot);let tn=0,nn=0;for(;ot>0;){const rn=this._chunks[nn];if(rn.byteLength>ot){const sn=rn.slice(0,ot);en.set(sn,tn),tn+=ot,this._chunks[nn]=rn.slice(ot),this._totalLength-=ot,ot-=ot}else en.set(rn,tn),tn+=rn.byteLength,this._chunks.shift(),this._totalLength-=rn.byteLength,ot-=rn.byteLength}return en}}return messageBuffer.AbstractMessageBuffer=rt,messageBuffer}var connection$1={},hasRequiredConnection$1;function requireConnection$1(){return hasRequiredConnection$1||(hasRequiredConnection$1=1,function(tt){Object.defineProperty(tt,"__esModule",{value:!0}),tt.createMessageConnection=tt.ConnectionOptions=tt.MessageStrategy=tt.CancellationStrategy=tt.CancellationSenderStrategy=tt.CancellationReceiverStrategy=tt.RequestCancellationReceiverStrategy=tt.IdCancellationReceiverStrategy=tt.ConnectionStrategy=tt.ConnectionError=tt.ConnectionErrors=tt.LogTraceNotification=tt.SetTraceNotification=tt.TraceFormat=tt.TraceValues=tt.Trace=tt.NullLogger=tt.ProgressType=tt.ProgressToken=void 0;const et=requireRal(),nt=requireIs$2(),rt=requireMessages$1(),st=requireLinkedMap(),ot=requireEvents(),en=requireCancellation();var tn;(function(yn){yn.type=new rt.NotificationType("$/cancelRequest")})(tn||(tn={}));var nn;(function(yn){function Cn(Fn){return typeof Fn=="string"||typeof Fn=="number"}yn.is=Cn})(nn||(tt.ProgressToken=nn={}));var rn;(function(yn){yn.type=new rt.NotificationType("$/progress")})(rn||(rn={}));class sn{constructor(){}}tt.ProgressType=sn;var an;(function(yn){function Cn(Fn){return nt.func(Fn)}yn.is=Cn})(an||(an={})),tt.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var on;(function(yn){yn[yn.Off=0]="Off",yn[yn.Messages=1]="Messages",yn[yn.Compact=2]="Compact",yn[yn.Verbose=3]="Verbose"})(on||(tt.Trace=on={}));var cn;(function(yn){yn.Off="off",yn.Messages="messages",yn.Compact="compact",yn.Verbose="verbose"})(cn||(tt.TraceValues=cn={})),function(yn){function Cn(Mn){if(!nt.string(Mn))return yn.Off;switch(Mn=Mn.toLowerCase(),Mn){case"off":return yn.Off;case"messages":return yn.Messages;case"compact":return yn.Compact;case"verbose":return yn.Verbose;default:return yn.Off}}yn.fromString=Cn;function Fn(Mn){switch(Mn){case yn.Off:return"off";case yn.Messages:return"messages";case yn.Compact:return"compact";case yn.Verbose:return"verbose";default:return"off"}}yn.toString=Fn}(on||(tt.Trace=on={}));var ln;(function(yn){yn.Text="text",yn.JSON="json"})(ln||(tt.TraceFormat=ln={})),function(yn){function Cn(Fn){return nt.string(Fn)?(Fn=Fn.toLowerCase(),Fn==="json"?yn.JSON:yn.Text):yn.Text}yn.fromString=Cn}(ln||(tt.TraceFormat=ln={}));var fn;(function(yn){yn.type=new rt.NotificationType("$/setTrace")})(fn||(tt.SetTraceNotification=fn={}));var gn;(function(yn){yn.type=new rt.NotificationType("$/logTrace")})(gn||(tt.LogTraceNotification=gn={}));var pn;(function(yn){yn[yn.Closed=1]="Closed",yn[yn.Disposed=2]="Disposed",yn[yn.AlreadyListening=3]="AlreadyListening"})(pn||(tt.ConnectionErrors=pn={}));class vn extends Error{constructor(Cn,Fn){super(Fn),this.code=Cn,Object.setPrototypeOf(this,vn.prototype)}}tt.ConnectionError=vn;var bn;(function(yn){function Cn(Fn){const Mn=Fn;return Mn&&nt.func(Mn.cancelUndispatched)}yn.is=Cn})(bn||(tt.ConnectionStrategy=bn={}));var $n;(function(yn){function Cn(Fn){const Mn=Fn;return Mn&&(Mn.kind===void 0||Mn.kind==="id")&&nt.func(Mn.createCancellationTokenSource)&&(Mn.dispose===void 0||nt.func(Mn.dispose))}yn.is=Cn})($n||(tt.IdCancellationReceiverStrategy=$n={}));var Tn;(function(yn){function Cn(Fn){const Mn=Fn;return Mn&&Mn.kind==="request"&&nt.func(Mn.createCancellationTokenSource)&&(Mn.dispose===void 0||nt.func(Mn.dispose))}yn.is=Cn})(Tn||(tt.RequestCancellationReceiverStrategy=Tn={}));var An;(function(yn){yn.Message=Object.freeze({createCancellationTokenSource(Fn){return new en.CancellationTokenSource}});function Cn(Fn){return $n.is(Fn)||Tn.is(Fn)}yn.is=Cn})(An||(tt.CancellationReceiverStrategy=An={}));var On;(function(yn){yn.Message=Object.freeze({sendCancellation(Fn,Mn){return Fn.sendNotification(tn.type,{id:Mn})},cleanup(Fn){}});function Cn(Fn){const Mn=Fn;return Mn&&nt.func(Mn.sendCancellation)&&nt.func(Mn.cleanup)}yn.is=Cn})(On||(tt.CancellationSenderStrategy=On={}));var Bn;(function(yn){yn.Message=Object.freeze({receiver:An.Message,sender:On.Message});function Cn(Fn){const Mn=Fn;return Mn&&An.is(Mn.receiver)&&On.is(Mn.sender)}yn.is=Cn})(Bn||(tt.CancellationStrategy=Bn={}));var Un;(function(yn){function Cn(Fn){const Mn=Fn;return Mn&&nt.func(Mn.handleMessage)}yn.is=Cn})(Un||(tt.MessageStrategy=Un={}));var Yn;(function(yn){function Cn(Fn){const Mn=Fn;return Mn&&(Bn.is(Mn.cancellationStrategy)||bn.is(Mn.connectionStrategy)||Un.is(Mn.messageStrategy))}yn.is=Cn})(Yn||(tt.ConnectionOptions=Yn={}));var xn;(function(yn){yn[yn.New=1]="New",yn[yn.Listening=2]="Listening",yn[yn.Closed=3]="Closed",yn[yn.Disposed=4]="Disposed"})(xn||(xn={}));function Rn(yn,Cn,Fn,Mn){const zn=Fn!==void 0?Fn:tt.NullLogger;let wr=0,Hn=0,kn=0;const pr="2.0";let br;const Ir=new Map;let Ln;const qn=new Map,Tr=new Map;let Jn,yr=new st.LinkedMap,Rr=new Map,Qn=new Set,_n=new Map,Nn=on.Off,fr=ln.Text,Dn,Zn=xn.New;const Ar=new ot.Emitter,Nr=new ot.Emitter,Xn=new ot.Emitter,$r=new ot.Emitter,Kn=new ot.Emitter,vr=Mn&&Mn.cancellationStrategy?Mn.cancellationStrategy:Bn.Message;function Sr(mn){if(mn===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+mn.toString()}function Or(mn){return mn===null?"res-unknown-"+(++kn).toString():"res-"+mn.toString()}function Cr(){return"not-"+(++Hn).toString()}function Mr(mn,In){rt.Message.isRequest(In)?mn.set(Sr(In.id),In):rt.Message.isResponse(In)?mn.set(Or(In.id),In):mn.set(Cr(),In)}function Fr(mn){}function Gr(){return Zn===xn.Listening}function Gn(){return Zn===xn.Closed}function jn(){return Zn===xn.Disposed}function hr(){(Zn===xn.New||Zn===xn.Listening)&&(Zn=xn.Closed,Nr.fire(void 0))}function qr(mn){Ar.fire([mn,void 0,void 0])}function zr(mn){Ar.fire(mn)}yn.onClose(hr),yn.onError(qr),Cn.onClose(hr),Cn.onError(zr);function Hr(){Jn||yr.size===0||(Jn=(0,et.default)().timer.setImmediate(()=>{Jn=void 0,Zr()}))}function Yr(mn){rt.Message.isRequest(mn)?ti(mn):rt.Message.isNotification(mn)?Jr(mn):rt.Message.isResponse(mn)?ni(mn):Qr(mn)}function Zr(){if(yr.size===0)return;const mn=yr.shift();try{const In=Mn?.messageStrategy;Un.is(In)?In.handleMessage(mn,Yr):Yr(mn)}finally{Hr()}}const ei=mn=>{try{if(rt.Message.isNotification(mn)&&mn.method===tn.type.method){const In=mn.params.id,Wn=Sr(In),Vn=yr.get(Wn);if(rt.Message.isRequest(Vn)){const Er=Mn?.connectionStrategy,xr=Er&&Er.cancelUndispatched?Er.cancelUndispatched(Vn,Fr):void 0;if(xr&&(xr.error!==void 0||xr.result!==void 0)){yr.delete(Wn),_n.delete(In),xr.id=Vn.id,Kr(xr,mn.method,Date.now()),Cn.write(xr).catch(()=>zn.error("Sending response for canceled message failed."));return}}const _r=_n.get(In);if(_r!==void 0){_r.cancel(),Xr(mn);return}else Qn.add(In)}Mr(yr,mn)}finally{Hr()}};function ti(mn){if(jn())return;function In(kr,Dr,Pr){const Lr={jsonrpc:pr,id:mn.id};kr instanceof rt.ResponseError?Lr.error=kr.toJson():Lr.result=kr===void 0?null:kr,Kr(Lr,Dr,Pr),Cn.write(Lr).catch(()=>zn.error("Sending response failed."))}function Wn(kr,Dr,Pr){const Lr={jsonrpc:pr,id:mn.id,error:kr.toJson()};Kr(Lr,Dr,Pr),Cn.write(Lr).catch(()=>zn.error("Sending response failed."))}function Vn(kr,Dr,Pr){kr===void 0&&(kr=null);const Lr={jsonrpc:pr,id:mn.id,result:kr};Kr(Lr,Dr,Pr),Cn.write(Lr).catch(()=>zn.error("Sending response failed."))}si(mn);const _r=Ir.get(mn.method);let Er,xr;_r&&(Er=_r.type,xr=_r.handler);const mr=Date.now();if(xr||br){const kr=mn.id??String(Date.now()),Dr=$n.is(vr.receiver)?vr.receiver.createCancellationTokenSource(kr):vr.receiver.createCancellationTokenSource(mn);mn.id!==null&&Qn.has(mn.id)&&Dr.cancel(),mn.id!==null&&_n.set(kr,Dr);try{let Pr;if(xr)if(mn.params===void 0){if(Er!==void 0&&Er.numberOfParams!==0){Wn(new rt.ResponseError(rt.ErrorCodes.InvalidParams,`Request ${mn.method} defines ${Er.numberOfParams} params but received none.`),mn.method,mr);return}Pr=xr(Dr.token)}else if(Array.isArray(mn.params)){if(Er!==void 0&&Er.parameterStructures===rt.ParameterStructures.byName){Wn(new rt.ResponseError(rt.ErrorCodes.InvalidParams,`Request ${mn.method} defines parameters by name but received parameters by position`),mn.method,mr);return}Pr=xr(...mn.params,Dr.token)}else{if(Er!==void 0&&Er.parameterStructures===rt.ParameterStructures.byPosition){Wn(new rt.ResponseError(rt.ErrorCodes.InvalidParams,`Request ${mn.method} defines parameters by position but received parameters by name`),mn.method,mr);return}Pr=xr(mn.params,Dr.token)}else br&&(Pr=br(mn.method,mn.params,Dr.token));const Lr=Pr;Pr?Lr.then?Lr.then(jr=>{_n.delete(kr),In(jr,mn.method,mr)},jr=>{_n.delete(kr),jr instanceof rt.ResponseError?Wn(jr,mn.method,mr):jr&&nt.string(jr.message)?Wn(new rt.ResponseError(rt.ErrorCodes.InternalError,`Request ${mn.method} failed with message: ${jr.message}`),mn.method,mr):Wn(new rt.ResponseError(rt.ErrorCodes.InternalError,`Request ${mn.method} failed unexpectedly without providing any details.`),mn.method,mr)}):(_n.delete(kr),In(Pr,mn.method,mr)):(_n.delete(kr),Vn(Pr,mn.method,mr))}catch(Pr){_n.delete(kr),Pr instanceof rt.ResponseError?In(Pr,mn.method,mr):Pr&&nt.string(Pr.message)?Wn(new rt.ResponseError(rt.ErrorCodes.InternalError,`Request ${mn.method} failed with message: ${Pr.message}`),mn.method,mr):Wn(new rt.ResponseError(rt.ErrorCodes.InternalError,`Request ${mn.method} failed unexpectedly without providing any details.`),mn.method,mr)}}else Wn(new rt.ResponseError(rt.ErrorCodes.MethodNotFound,`Unhandled method ${mn.method}`),mn.method,mr)}function ni(mn){if(!jn())if(mn.id===null)mn.error?zn.error(`Received response message without id: Error is:
|
|
149
|
-
${JSON.stringify(mn.error,void 0,4)}`):zn.error("Received response message without id. No further error information provided.");else{const In=mn.id,Wn=Rr.get(In);if(ai(mn,Wn),Wn!==void 0){Rr.delete(In);try{if(mn.error){const Vn=mn.error;Wn.reject(new rt.ResponseError(Vn.code,Vn.message,Vn.data))}else if(mn.result!==void 0)Wn.resolve(mn.result);else throw new Error("Should never happen.")}catch(Vn){Vn.message?zn.error(`Response handler '${Wn.method}' failed with message: ${Vn.message}`):zn.error(`Response handler '${Wn.method}' failed unexpectedly.`)}}}}function Jr(mn){if(jn())return;let In,Wn;if(mn.method===tn.type.method){const Vn=mn.params.id;Qn.delete(Vn),Xr(mn);return}else{const Vn=qn.get(mn.method);Vn&&(Wn=Vn.handler,In=Vn.type)}if(Wn||Ln)try{if(Xr(mn),Wn)if(mn.params===void 0)In!==void 0&&In.numberOfParams!==0&&In.parameterStructures!==rt.ParameterStructures.byName&&zn.error(`Notification ${mn.method} defines ${In.numberOfParams} params but received none.`),Wn();else if(Array.isArray(mn.params)){const Vn=mn.params;mn.method===rn.type.method&&Vn.length===2&&nn.is(Vn[0])?Wn({token:Vn[0],value:Vn[1]}):(In!==void 0&&(In.parameterStructures===rt.ParameterStructures.byName&&zn.error(`Notification ${mn.method} defines parameters by name but received parameters by position`),In.numberOfParams!==mn.params.length&&zn.error(`Notification ${mn.method} defines ${In.numberOfParams} params but received ${Vn.length} arguments`)),Wn(...Vn))}else In!==void 0&&In.parameterStructures===rt.ParameterStructures.byPosition&&zn.error(`Notification ${mn.method} defines parameters by position but received parameters by name`),Wn(mn.params);else Ln&&Ln(mn.method,mn.params)}catch(Vn){Vn.message?zn.error(`Notification handler '${mn.method}' failed with message: ${Vn.message}`):zn.error(`Notification handler '${mn.method}' failed unexpectedly.`)}else Xn.fire(mn)}function Qr(mn){if(!mn){zn.error("Received empty message.");return}zn.error(`Received message which is neither a response nor a notification message:
|
|
150
|
-
${JSON.stringify(mn,null,4)}`);const In=mn;if(nt.string(In.id)||nt.number(In.id)){const Wn=In.id,Vn=Rr.get(Wn);Vn&&Vn.reject(new Error("The received response has neither a result nor an error property."))}}function Br(mn){if(mn!=null)switch(Nn){case on.Verbose:return JSON.stringify(mn,null,4);case on.Compact:return JSON.stringify(mn);default:return}}function ri(mn){if(!(Nn===on.Off||!Dn))if(fr===ln.Text){let In;(Nn===on.Verbose||Nn===on.Compact)&&mn.params&&(In=`Params: ${Br(mn.params)}
|
|
151
|
-
|
|
152
|
-
`),Dn.log(`Sending request '${mn.method} - (${mn.id})'.`,In)}else Ur("send-request",mn)}function ii(mn){if(!(Nn===on.Off||!Dn))if(fr===ln.Text){let In;(Nn===on.Verbose||Nn===on.Compact)&&(mn.params?In=`Params: ${Br(mn.params)}
|
|
153
|
-
|
|
154
|
-
`:In=`No parameters provided.
|
|
155
|
-
|
|
156
|
-
`),Dn.log(`Sending notification '${mn.method}'.`,In)}else Ur("send-notification",mn)}function Kr(mn,In,Wn){if(!(Nn===on.Off||!Dn))if(fr===ln.Text){let Vn;(Nn===on.Verbose||Nn===on.Compact)&&(mn.error&&mn.error.data?Vn=`Error data: ${Br(mn.error.data)}
|
|
157
|
-
|
|
158
|
-
`:mn.result?Vn=`Result: ${Br(mn.result)}
|
|
159
|
-
|
|
160
|
-
`:mn.error===void 0&&(Vn=`No result returned.
|
|
161
|
-
|
|
162
|
-
`)),Dn.log(`Sending response '${In} - (${mn.id})'. Processing request took ${Date.now()-Wn}ms`,Vn)}else Ur("send-response",mn)}function si(mn){if(!(Nn===on.Off||!Dn))if(fr===ln.Text){let In;(Nn===on.Verbose||Nn===on.Compact)&&mn.params&&(In=`Params: ${Br(mn.params)}
|
|
163
|
-
|
|
164
|
-
`),Dn.log(`Received request '${mn.method} - (${mn.id})'.`,In)}else Ur("receive-request",mn)}function Xr(mn){if(!(Nn===on.Off||!Dn||mn.method===gn.type.method))if(fr===ln.Text){let In;(Nn===on.Verbose||Nn===on.Compact)&&(mn.params?In=`Params: ${Br(mn.params)}
|
|
165
|
-
|
|
166
|
-
`:In=`No parameters provided.
|
|
167
|
-
|
|
168
|
-
`),Dn.log(`Received notification '${mn.method}'.`,In)}else Ur("receive-notification",mn)}function ai(mn,In){if(!(Nn===on.Off||!Dn))if(fr===ln.Text){let Wn;if((Nn===on.Verbose||Nn===on.Compact)&&(mn.error&&mn.error.data?Wn=`Error data: ${Br(mn.error.data)}
|
|
169
|
-
|
|
170
|
-
`:mn.result?Wn=`Result: ${Br(mn.result)}
|
|
171
|
-
|
|
172
|
-
`:mn.error===void 0&&(Wn=`No result returned.
|
|
173
|
-
|
|
174
|
-
`)),In){const Vn=mn.error?` Request failed: ${mn.error.message} (${mn.error.code}).`:"";Dn.log(`Received response '${In.method} - (${mn.id})' in ${Date.now()-In.timerStart}ms.${Vn}`,Wn)}else Dn.log(`Received response ${mn.id} without active response promise.`,Wn)}else Ur("receive-response",mn)}function Ur(mn,In){if(!Dn||Nn===on.Off)return;const Wn={isLSPMessage:!0,type:mn,message:In,timestamp:Date.now()};Dn.log(Wn)}function Wr(){if(Gn())throw new vn(pn.Closed,"Connection is closed.");if(jn())throw new vn(pn.Disposed,"Connection is disposed.")}function oi(){if(Gr())throw new vn(pn.AlreadyListening,"Connection is already listening")}function Pn(){if(!Gr())throw new Error("Call listen() first.")}function hn(mn){return mn===void 0?null:mn}function En(mn){if(mn!==null)return mn}function un(mn){return mn!=null&&!Array.isArray(mn)&&typeof mn=="object"}function wn(mn,In){switch(mn){case rt.ParameterStructures.auto:return un(In)?En(In):[hn(In)];case rt.ParameterStructures.byName:if(!un(In))throw new Error("Received parameters by name but param is not an object literal.");return En(In);case rt.ParameterStructures.byPosition:return[hn(In)];default:throw new Error(`Unknown parameter structure ${mn.toString()}`)}}function dn(mn,In){let Wn;const Vn=mn.numberOfParams;switch(Vn){case 0:Wn=void 0;break;case 1:Wn=wn(mn.parameterStructures,In[0]);break;default:Wn=[];for(let _r=0;_r<In.length&&_r<Vn;_r++)Wn.push(hn(In[_r]));if(In.length<Vn)for(let _r=In.length;_r<Vn;_r++)Wn.push(null);break}return Wn}const Sn={sendNotification:(mn,...In)=>{Wr();let Wn,Vn;if(nt.string(mn)){Wn=mn;const Er=In[0];let xr=0,mr=rt.ParameterStructures.auto;rt.ParameterStructures.is(Er)&&(xr=1,mr=Er);let kr=In.length;const Dr=kr-xr;switch(Dr){case 0:Vn=void 0;break;case 1:Vn=wn(mr,In[xr]);break;default:if(mr===rt.ParameterStructures.byName)throw new Error(`Received ${Dr} parameters for 'by Name' notification parameter structure.`);Vn=In.slice(xr,kr).map(Pr=>hn(Pr));break}}else{const Er=In;Wn=mn.method,Vn=dn(mn,Er)}const _r={jsonrpc:pr,method:Wn,params:Vn};return ii(_r),Cn.write(_r).catch(Er=>{throw zn.error("Sending notification failed."),Er})},onNotification:(mn,In)=>{Wr();let Wn;return nt.func(mn)?Ln=mn:In&&(nt.string(mn)?(Wn=mn,qn.set(mn,{type:void 0,handler:In})):(Wn=mn.method,qn.set(mn.method,{type:mn,handler:In}))),{dispose:()=>{Wn!==void 0?qn.delete(Wn):Ln=void 0}}},onProgress:(mn,In,Wn)=>{if(Tr.has(In))throw new Error(`Progress handler for token ${In} already registered`);return Tr.set(In,Wn),{dispose:()=>{Tr.delete(In)}}},sendProgress:(mn,In,Wn)=>Sn.sendNotification(rn.type,{token:In,value:Wn}),onUnhandledProgress:$r.event,sendRequest:(mn,...In)=>{Wr(),Pn();let Wn,Vn,_r;if(nt.string(mn)){Wn=mn;const kr=In[0],Dr=In[In.length-1];let Pr=0,Lr=rt.ParameterStructures.auto;rt.ParameterStructures.is(kr)&&(Pr=1,Lr=kr);let jr=In.length;en.CancellationToken.is(Dr)&&(jr=jr-1,_r=Dr);const Vr=jr-Pr;switch(Vr){case 0:Vn=void 0;break;case 1:Vn=wn(Lr,In[Pr]);break;default:if(Lr===rt.ParameterStructures.byName)throw new Error(`Received ${Vr} parameters for 'by Name' request parameter structure.`);Vn=In.slice(Pr,jr).map(ci=>hn(ci));break}}else{const kr=In;Wn=mn.method,Vn=dn(mn,kr);const Dr=mn.numberOfParams;_r=en.CancellationToken.is(kr[Dr])?kr[Dr]:void 0}const Er=wr++;let xr;_r&&(xr=_r.onCancellationRequested(()=>{const kr=vr.sender.sendCancellation(Sn,Er);return kr===void 0?(zn.log(`Received no promise from cancellation strategy when cancelling id ${Er}`),Promise.resolve()):kr.catch(()=>{zn.log(`Sending cancellation messages for id ${Er} failed`)})}));const mr={jsonrpc:pr,id:Er,method:Wn,params:Vn};return ri(mr),typeof vr.sender.enableCancellation=="function"&&vr.sender.enableCancellation(mr),new Promise(async(kr,Dr)=>{const Pr=Vr=>{kr(Vr),vr.sender.cleanup(Er),xr?.dispose()},Lr=Vr=>{Dr(Vr),vr.sender.cleanup(Er),xr?.dispose()},jr={method:Wn,timerStart:Date.now(),resolve:Pr,reject:Lr};try{await Cn.write(mr),Rr.set(Er,jr)}catch(Vr){throw zn.error("Sending request failed."),jr.reject(new rt.ResponseError(rt.ErrorCodes.MessageWriteError,Vr.message?Vr.message:"Unknown reason")),Vr}})},onRequest:(mn,In)=>{Wr();let Wn=null;return an.is(mn)?(Wn=void 0,br=mn):nt.string(mn)?(Wn=null,In!==void 0&&(Wn=mn,Ir.set(mn,{handler:In,type:void 0}))):In!==void 0&&(Wn=mn.method,Ir.set(mn.method,{type:mn,handler:In})),{dispose:()=>{Wn!==null&&(Wn!==void 0?Ir.delete(Wn):br=void 0)}}},hasPendingResponse:()=>Rr.size>0,trace:async(mn,In,Wn)=>{let Vn=!1,_r=ln.Text;Wn!==void 0&&(nt.boolean(Wn)?Vn=Wn:(Vn=Wn.sendNotification||!1,_r=Wn.traceFormat||ln.Text)),Nn=mn,fr=_r,Nn===on.Off?Dn=void 0:Dn=In,Vn&&!Gn()&&!jn()&&await Sn.sendNotification(fn.type,{value:on.toString(mn)})},onError:Ar.event,onClose:Nr.event,onUnhandledNotification:Xn.event,onDispose:Kn.event,end:()=>{Cn.end()},dispose:()=>{if(jn())return;Zn=xn.Disposed,Kn.fire(void 0);const mn=new rt.ResponseError(rt.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(const In of Rr.values())In.reject(mn);Rr=new Map,_n=new Map,Qn=new Set,yr=new st.LinkedMap,nt.func(Cn.dispose)&&Cn.dispose(),nt.func(yn.dispose)&&yn.dispose()},listen:()=>{Wr(),oi(),Zn=xn.Listening,yn.listen(ei)},inspect:()=>{(0,et.default)().console.log("inspect")}};return Sn.onNotification(gn.type,mn=>{if(Nn===on.Off||!Dn)return;const In=Nn===on.Verbose||Nn===on.Compact;Dn.log(mn.message,In?mn.verbose:void 0)}),Sn.onNotification(rn.type,mn=>{const In=Tr.get(mn.token);In?In(mn.value):$r.fire(mn)}),Sn}tt.createMessageConnection=Rn}(connection$1)),connection$1}var hasRequiredApi$2;function requireApi$2(){return hasRequiredApi$2||(hasRequiredApi$2=1,function(tt){Object.defineProperty(tt,"__esModule",{value:!0}),tt.ProgressType=tt.ProgressToken=tt.createMessageConnection=tt.NullLogger=tt.ConnectionOptions=tt.ConnectionStrategy=tt.AbstractMessageBuffer=tt.WriteableStreamMessageWriter=tt.AbstractMessageWriter=tt.MessageWriter=tt.ReadableStreamMessageReader=tt.AbstractMessageReader=tt.MessageReader=tt.SharedArrayReceiverStrategy=tt.SharedArraySenderStrategy=tt.CancellationToken=tt.CancellationTokenSource=tt.Emitter=tt.Event=tt.Disposable=tt.LRUCache=tt.Touch=tt.LinkedMap=tt.ParameterStructures=tt.NotificationType9=tt.NotificationType8=tt.NotificationType7=tt.NotificationType6=tt.NotificationType5=tt.NotificationType4=tt.NotificationType3=tt.NotificationType2=tt.NotificationType1=tt.NotificationType0=tt.NotificationType=tt.ErrorCodes=tt.ResponseError=tt.RequestType9=tt.RequestType8=tt.RequestType7=tt.RequestType6=tt.RequestType5=tt.RequestType4=tt.RequestType3=tt.RequestType2=tt.RequestType1=tt.RequestType0=tt.RequestType=tt.Message=tt.RAL=void 0,tt.MessageStrategy=tt.CancellationStrategy=tt.CancellationSenderStrategy=tt.CancellationReceiverStrategy=tt.ConnectionError=tt.ConnectionErrors=tt.LogTraceNotification=tt.SetTraceNotification=tt.TraceFormat=tt.TraceValues=tt.Trace=void 0;const et=requireMessages$1();Object.defineProperty(tt,"Message",{enumerable:!0,get:function(){return et.Message}}),Object.defineProperty(tt,"RequestType",{enumerable:!0,get:function(){return et.RequestType}}),Object.defineProperty(tt,"RequestType0",{enumerable:!0,get:function(){return et.RequestType0}}),Object.defineProperty(tt,"RequestType1",{enumerable:!0,get:function(){return et.RequestType1}}),Object.defineProperty(tt,"RequestType2",{enumerable:!0,get:function(){return et.RequestType2}}),Object.defineProperty(tt,"RequestType3",{enumerable:!0,get:function(){return et.RequestType3}}),Object.defineProperty(tt,"RequestType4",{enumerable:!0,get:function(){return et.RequestType4}}),Object.defineProperty(tt,"RequestType5",{enumerable:!0,get:function(){return et.RequestType5}}),Object.defineProperty(tt,"RequestType6",{enumerable:!0,get:function(){return et.RequestType6}}),Object.defineProperty(tt,"RequestType7",{enumerable:!0,get:function(){return et.RequestType7}}),Object.defineProperty(tt,"RequestType8",{enumerable:!0,get:function(){return et.RequestType8}}),Object.defineProperty(tt,"RequestType9",{enumerable:!0,get:function(){return et.RequestType9}}),Object.defineProperty(tt,"ResponseError",{enumerable:!0,get:function(){return et.ResponseError}}),Object.defineProperty(tt,"ErrorCodes",{enumerable:!0,get:function(){return et.ErrorCodes}}),Object.defineProperty(tt,"NotificationType",{enumerable:!0,get:function(){return et.NotificationType}}),Object.defineProperty(tt,"NotificationType0",{enumerable:!0,get:function(){return et.NotificationType0}}),Object.defineProperty(tt,"NotificationType1",{enumerable:!0,get:function(){return et.NotificationType1}}),Object.defineProperty(tt,"NotificationType2",{enumerable:!0,get:function(){return et.NotificationType2}}),Object.defineProperty(tt,"NotificationType3",{enumerable:!0,get:function(){return et.NotificationType3}}),Object.defineProperty(tt,"NotificationType4",{enumerable:!0,get:function(){return et.NotificationType4}}),Object.defineProperty(tt,"NotificationType5",{enumerable:!0,get:function(){return et.NotificationType5}}),Object.defineProperty(tt,"NotificationType6",{enumerable:!0,get:function(){return et.NotificationType6}}),Object.defineProperty(tt,"NotificationType7",{enumerable:!0,get:function(){return et.NotificationType7}}),Object.defineProperty(tt,"NotificationType8",{enumerable:!0,get:function(){return et.NotificationType8}}),Object.defineProperty(tt,"NotificationType9",{enumerable:!0,get:function(){return et.NotificationType9}}),Object.defineProperty(tt,"ParameterStructures",{enumerable:!0,get:function(){return et.ParameterStructures}});const nt=requireLinkedMap();Object.defineProperty(tt,"LinkedMap",{enumerable:!0,get:function(){return nt.LinkedMap}}),Object.defineProperty(tt,"LRUCache",{enumerable:!0,get:function(){return nt.LRUCache}}),Object.defineProperty(tt,"Touch",{enumerable:!0,get:function(){return nt.Touch}});const rt=requireDisposable();Object.defineProperty(tt,"Disposable",{enumerable:!0,get:function(){return rt.Disposable}});const st=requireEvents();Object.defineProperty(tt,"Event",{enumerable:!0,get:function(){return st.Event}}),Object.defineProperty(tt,"Emitter",{enumerable:!0,get:function(){return st.Emitter}});const ot=requireCancellation();Object.defineProperty(tt,"CancellationTokenSource",{enumerable:!0,get:function(){return ot.CancellationTokenSource}}),Object.defineProperty(tt,"CancellationToken",{enumerable:!0,get:function(){return ot.CancellationToken}});const en=requireSharedArrayCancellation();Object.defineProperty(tt,"SharedArraySenderStrategy",{enumerable:!0,get:function(){return en.SharedArraySenderStrategy}}),Object.defineProperty(tt,"SharedArrayReceiverStrategy",{enumerable:!0,get:function(){return en.SharedArrayReceiverStrategy}});const tn=requireMessageReader();Object.defineProperty(tt,"MessageReader",{enumerable:!0,get:function(){return tn.MessageReader}}),Object.defineProperty(tt,"AbstractMessageReader",{enumerable:!0,get:function(){return tn.AbstractMessageReader}}),Object.defineProperty(tt,"ReadableStreamMessageReader",{enumerable:!0,get:function(){return tn.ReadableStreamMessageReader}});const nn=requireMessageWriter();Object.defineProperty(tt,"MessageWriter",{enumerable:!0,get:function(){return nn.MessageWriter}}),Object.defineProperty(tt,"AbstractMessageWriter",{enumerable:!0,get:function(){return nn.AbstractMessageWriter}}),Object.defineProperty(tt,"WriteableStreamMessageWriter",{enumerable:!0,get:function(){return nn.WriteableStreamMessageWriter}});const rn=requireMessageBuffer();Object.defineProperty(tt,"AbstractMessageBuffer",{enumerable:!0,get:function(){return rn.AbstractMessageBuffer}});const sn=requireConnection$1();Object.defineProperty(tt,"ConnectionStrategy",{enumerable:!0,get:function(){return sn.ConnectionStrategy}}),Object.defineProperty(tt,"ConnectionOptions",{enumerable:!0,get:function(){return sn.ConnectionOptions}}),Object.defineProperty(tt,"NullLogger",{enumerable:!0,get:function(){return sn.NullLogger}}),Object.defineProperty(tt,"createMessageConnection",{enumerable:!0,get:function(){return sn.createMessageConnection}}),Object.defineProperty(tt,"ProgressToken",{enumerable:!0,get:function(){return sn.ProgressToken}}),Object.defineProperty(tt,"ProgressType",{enumerable:!0,get:function(){return sn.ProgressType}}),Object.defineProperty(tt,"Trace",{enumerable:!0,get:function(){return sn.Trace}}),Object.defineProperty(tt,"TraceValues",{enumerable:!0,get:function(){return sn.TraceValues}}),Object.defineProperty(tt,"TraceFormat",{enumerable:!0,get:function(){return sn.TraceFormat}}),Object.defineProperty(tt,"SetTraceNotification",{enumerable:!0,get:function(){return sn.SetTraceNotification}}),Object.defineProperty(tt,"LogTraceNotification",{enumerable:!0,get:function(){return sn.LogTraceNotification}}),Object.defineProperty(tt,"ConnectionErrors",{enumerable:!0,get:function(){return sn.ConnectionErrors}}),Object.defineProperty(tt,"ConnectionError",{enumerable:!0,get:function(){return sn.ConnectionError}}),Object.defineProperty(tt,"CancellationReceiverStrategy",{enumerable:!0,get:function(){return sn.CancellationReceiverStrategy}}),Object.defineProperty(tt,"CancellationSenderStrategy",{enumerable:!0,get:function(){return sn.CancellationSenderStrategy}}),Object.defineProperty(tt,"CancellationStrategy",{enumerable:!0,get:function(){return sn.CancellationStrategy}}),Object.defineProperty(tt,"MessageStrategy",{enumerable:!0,get:function(){return sn.MessageStrategy}});const an=requireRal();tt.RAL=an.default}(api$2)),api$2}var hasRequiredRil;function requireRil(){if(hasRequiredRil)return ril;hasRequiredRil=1,Object.defineProperty(ril,"__esModule",{value:!0});const tt=require$$0__default,et=requireApi$2();class nt extends et.AbstractMessageBuffer{constructor(nn="utf-8"){super(nn)}emptyBuffer(){return nt.emptyBuffer}fromString(nn,rn){return Buffer.from(nn,rn)}toString(nn,rn){return nn instanceof Buffer?nn.toString(rn):new tt.TextDecoder(rn).decode(nn)}asNative(nn,rn){return rn===void 0?nn instanceof Buffer?nn:Buffer.from(nn):nn instanceof Buffer?nn.slice(0,rn):Buffer.from(nn,0,rn)}allocNative(nn){return Buffer.allocUnsafe(nn)}}nt.emptyBuffer=Buffer.allocUnsafe(0);class rt{constructor(nn){this.stream=nn}onClose(nn){return this.stream.on("close",nn),et.Disposable.create(()=>this.stream.off("close",nn))}onError(nn){return this.stream.on("error",nn),et.Disposable.create(()=>this.stream.off("error",nn))}onEnd(nn){return this.stream.on("end",nn),et.Disposable.create(()=>this.stream.off("end",nn))}onData(nn){return this.stream.on("data",nn),et.Disposable.create(()=>this.stream.off("data",nn))}}class st{constructor(nn){this.stream=nn}onClose(nn){return this.stream.on("close",nn),et.Disposable.create(()=>this.stream.off("close",nn))}onError(nn){return this.stream.on("error",nn),et.Disposable.create(()=>this.stream.off("error",nn))}onEnd(nn){return this.stream.on("end",nn),et.Disposable.create(()=>this.stream.off("end",nn))}write(nn,rn){return new Promise((sn,an)=>{const on=cn=>{cn==null?sn():an(cn)};typeof nn=="string"?this.stream.write(nn,rn,on):this.stream.write(nn,on)})}end(){this.stream.end()}}const ot=Object.freeze({messageBuffer:Object.freeze({create:tn=>new nt(tn)}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:(tn,nn)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(tn,void 0,0),nn.charset))}catch(rn){return Promise.reject(rn)}}}),decoder:Object.freeze({name:"application/json",decode:(tn,nn)=>{try{return tn instanceof Buffer?Promise.resolve(JSON.parse(tn.toString(nn.charset))):Promise.resolve(JSON.parse(new tt.TextDecoder(nn.charset).decode(tn)))}catch(rn){return Promise.reject(rn)}}})}),stream:Object.freeze({asReadableStream:tn=>new rt(tn),asWritableStream:tn=>new st(tn)}),console,timer:Object.freeze({setTimeout(tn,nn,...rn){const sn=setTimeout(tn,nn,...rn);return{dispose:()=>clearTimeout(sn)}},setImmediate(tn,...nn){const rn=setImmediate(tn,...nn);return{dispose:()=>clearImmediate(rn)}},setInterval(tn,nn,...rn){const sn=setInterval(tn,nn,...rn);return{dispose:()=>clearInterval(sn)}}})});function en(){return ot}return function(tn){function nn(){et.RAL.install(ot)}tn.install=nn}(en||(en={})),ril.default=en,ril}var hasRequiredMain$3;function requireMain$3(){return hasRequiredMain$3||(hasRequiredMain$3=1,function(tt){var et=main$1&&main$1.__createBinding||(Object.create?function(xn,Rn,yn,Cn){Cn===void 0&&(Cn=yn);var Fn=Object.getOwnPropertyDescriptor(Rn,yn);(!Fn||("get"in Fn?!Rn.__esModule:Fn.writable||Fn.configurable))&&(Fn={enumerable:!0,get:function(){return Rn[yn]}}),Object.defineProperty(xn,Cn,Fn)}:function(xn,Rn,yn,Cn){Cn===void 0&&(Cn=yn),xn[Cn]=Rn[yn]}),nt=main$1&&main$1.__exportStar||function(xn,Rn){for(var yn in xn)yn!=="default"&&!Object.prototype.hasOwnProperty.call(Rn,yn)&&et(Rn,xn,yn)};Object.defineProperty(tt,"__esModule",{value:!0}),tt.createMessageConnection=tt.createServerSocketTransport=tt.createClientSocketTransport=tt.createServerPipeTransport=tt.createClientPipeTransport=tt.generateRandomPipeName=tt.StreamMessageWriter=tt.StreamMessageReader=tt.SocketMessageWriter=tt.SocketMessageReader=tt.PortMessageWriter=tt.PortMessageReader=tt.IPCMessageWriter=tt.IPCMessageReader=void 0;const rt=requireRil();rt.default.install();const st=require$$0__default$1,ot=require$$2__default,en=require$$3__default,tn=require$$4__default,nn=requireApi$2();nt(requireApi$2(),tt);class rn extends nn.AbstractMessageReader{constructor(Rn){super(),this.process=Rn;let yn=this.process;yn.on("error",Cn=>this.fireError(Cn)),yn.on("close",()=>this.fireClose())}listen(Rn){return this.process.on("message",Rn),nn.Disposable.create(()=>this.process.off("message",Rn))}}tt.IPCMessageReader=rn;class sn extends nn.AbstractMessageWriter{constructor(Rn){super(),this.process=Rn,this.errorCount=0;const yn=this.process;yn.on("error",Cn=>this.fireError(Cn)),yn.on("close",()=>this.fireClose)}write(Rn){try{return typeof this.process.send=="function"&&this.process.send(Rn,void 0,void 0,yn=>{yn?(this.errorCount++,this.handleError(yn,Rn)):this.errorCount=0}),Promise.resolve()}catch(yn){return this.handleError(yn,Rn),Promise.reject(yn)}}handleError(Rn,yn){this.errorCount++,this.fireError(Rn,yn,this.errorCount)}end(){}}tt.IPCMessageWriter=sn;class an extends nn.AbstractMessageReader{constructor(Rn){super(),this.onData=new nn.Emitter,Rn.on("close",()=>this.fireClose),Rn.on("error",yn=>this.fireError(yn)),Rn.on("message",yn=>{this.onData.fire(yn)})}listen(Rn){return this.onData.event(Rn)}}tt.PortMessageReader=an;class on extends nn.AbstractMessageWriter{constructor(Rn){super(),this.port=Rn,this.errorCount=0,Rn.on("close",()=>this.fireClose()),Rn.on("error",yn=>this.fireError(yn))}write(Rn){try{return this.port.postMessage(Rn),Promise.resolve()}catch(yn){return this.handleError(yn,Rn),Promise.reject(yn)}}handleError(Rn,yn){this.errorCount++,this.fireError(Rn,yn,this.errorCount)}end(){}}tt.PortMessageWriter=on;class cn extends nn.ReadableStreamMessageReader{constructor(Rn,yn="utf-8"){super((0,rt.default)().stream.asReadableStream(Rn),yn)}}tt.SocketMessageReader=cn;class ln extends nn.WriteableStreamMessageWriter{constructor(Rn,yn){super((0,rt.default)().stream.asWritableStream(Rn),yn),this.socket=Rn}dispose(){super.dispose(),this.socket.destroy()}}tt.SocketMessageWriter=ln;class fn extends nn.ReadableStreamMessageReader{constructor(Rn,yn){super((0,rt.default)().stream.asReadableStream(Rn),yn)}}tt.StreamMessageReader=fn;class gn extends nn.WriteableStreamMessageWriter{constructor(Rn,yn){super((0,rt.default)().stream.asWritableStream(Rn),yn)}}tt.StreamMessageWriter=gn;const pn=process.env.XDG_RUNTIME_DIR,vn=new Map([["linux",107],["darwin",103]]);function bn(){const xn=(0,en.randomBytes)(21).toString("hex");if(process.platform==="win32")return`\\\\.\\pipe\\vscode-jsonrpc-${xn}-sock`;let Rn;pn?Rn=st.join(pn,`vscode-ipc-${xn}.sock`):Rn=st.join(ot.tmpdir(),`vscode-${xn}.sock`);const yn=vn.get(process.platform);return yn!==void 0&&Rn.length>yn&&(0,rt.default)().console.warn(`WARNING: IPC handle "${Rn}" is longer than ${yn} characters.`),Rn}tt.generateRandomPipeName=bn;function $n(xn,Rn="utf-8"){let yn;const Cn=new Promise((Fn,Mn)=>{yn=Fn});return new Promise((Fn,Mn)=>{let zn=(0,tn.createServer)(wr=>{zn.close(),yn([new cn(wr,Rn),new ln(wr,Rn)])});zn.on("error",Mn),zn.listen(xn,()=>{zn.removeListener("error",Mn),Fn({onConnected:()=>Cn})})})}tt.createClientPipeTransport=$n;function Tn(xn,Rn="utf-8"){const yn=(0,tn.createConnection)(xn);return[new cn(yn,Rn),new ln(yn,Rn)]}tt.createServerPipeTransport=Tn;function An(xn,Rn="utf-8"){let yn;const Cn=new Promise((Fn,Mn)=>{yn=Fn});return new Promise((Fn,Mn)=>{const zn=(0,tn.createServer)(wr=>{zn.close(),yn([new cn(wr,Rn),new ln(wr,Rn)])});zn.on("error",Mn),zn.listen(xn,"127.0.0.1",()=>{zn.removeListener("error",Mn),Fn({onConnected:()=>Cn})})})}tt.createClientSocketTransport=An;function On(xn,Rn="utf-8"){const yn=(0,tn.createConnection)(xn,"127.0.0.1");return[new cn(yn,Rn),new ln(yn,Rn)]}tt.createServerSocketTransport=On;function Bn(xn){const Rn=xn;return Rn.read!==void 0&&Rn.addListener!==void 0}function Un(xn){const Rn=xn;return Rn.write!==void 0&&Rn.addListener!==void 0}function Yn(xn,Rn,yn,Cn){yn||(yn=nn.NullLogger);const Fn=Bn(xn)?new fn(xn):xn,Mn=Un(Rn)?new gn(Rn):Rn;return nn.ConnectionStrategy.is(Cn)&&(Cn={connectionStrategy:Cn}),(0,nn.createMessageConnection)(Fn,Mn,yn,Cn)}tt.createMessageConnection=Yn}(main$1)),main$1}var node$2,hasRequiredNode$2;function requireNode$2(){return hasRequiredNode$2||(hasRequiredNode$2=1,node$2=requireMain$3()),node$2}var api$1={},main={exports:{}},hasRequiredMain$2;function requireMain$2(){return hasRequiredMain$2||(hasRequiredMain$2=1,function(tt,et){(function(nt){{var rt=nt(commonjsRequire,et);rt!==void 0&&(tt.exports=rt)}})(function(nt,rt){Object.defineProperty(rt,"__esModule",{value:!0}),rt.TextDocument=rt.EOL=rt.WorkspaceFolder=rt.InlineCompletionContext=rt.SelectedCompletionInfo=rt.InlineCompletionTriggerKind=rt.InlineCompletionList=rt.InlineCompletionItem=rt.StringValue=rt.InlayHint=rt.InlayHintLabelPart=rt.InlayHintKind=rt.InlineValueContext=rt.InlineValueEvaluatableExpression=rt.InlineValueVariableLookup=rt.InlineValueText=rt.SemanticTokens=rt.SemanticTokenModifiers=rt.SemanticTokenTypes=rt.SelectionRange=rt.DocumentLink=rt.FormattingOptions=rt.CodeLens=rt.CodeAction=rt.CodeActionContext=rt.CodeActionTriggerKind=rt.CodeActionKind=rt.DocumentSymbol=rt.WorkspaceSymbol=rt.SymbolInformation=rt.SymbolTag=rt.SymbolKind=rt.DocumentHighlight=rt.DocumentHighlightKind=rt.SignatureInformation=rt.ParameterInformation=rt.Hover=rt.MarkedString=rt.CompletionList=rt.CompletionItem=rt.CompletionItemLabelDetails=rt.InsertTextMode=rt.InsertReplaceEdit=rt.CompletionItemTag=rt.InsertTextFormat=rt.CompletionItemKind=rt.MarkupContent=rt.MarkupKind=rt.TextDocumentItem=rt.OptionalVersionedTextDocumentIdentifier=rt.VersionedTextDocumentIdentifier=rt.TextDocumentIdentifier=rt.WorkspaceChange=rt.WorkspaceEdit=rt.DeleteFile=rt.RenameFile=rt.CreateFile=rt.TextDocumentEdit=rt.AnnotatedTextEdit=rt.ChangeAnnotationIdentifier=rt.ChangeAnnotation=rt.TextEdit=rt.Command=rt.Diagnostic=rt.CodeDescription=rt.DiagnosticTag=rt.DiagnosticSeverity=rt.DiagnosticRelatedInformation=rt.FoldingRange=rt.FoldingRangeKind=rt.ColorPresentation=rt.ColorInformation=rt.Color=rt.LocationLink=rt.Location=rt.Range=rt.Position=rt.uinteger=rt.integer=rt.URI=rt.DocumentUri=void 0;var st;(function(hn){function En(un){return typeof un=="string"}hn.is=En})(st||(rt.DocumentUri=st={}));var ot;(function(hn){function En(un){return typeof un=="string"}hn.is=En})(ot||(rt.URI=ot={}));var en;(function(hn){hn.MIN_VALUE=-2147483648,hn.MAX_VALUE=2147483647;function En(un){return typeof un=="number"&&hn.MIN_VALUE<=un&&un<=hn.MAX_VALUE}hn.is=En})(en||(rt.integer=en={}));var tn;(function(hn){hn.MIN_VALUE=0,hn.MAX_VALUE=2147483647;function En(un){return typeof un=="number"&&hn.MIN_VALUE<=un&&un<=hn.MAX_VALUE}hn.is=En})(tn||(rt.uinteger=tn={}));var nn;(function(hn){function En(wn,dn){return wn===Number.MAX_VALUE&&(wn=tn.MAX_VALUE),dn===Number.MAX_VALUE&&(dn=tn.MAX_VALUE),{line:wn,character:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&Pn.uinteger(dn.line)&&Pn.uinteger(dn.character)}hn.is=un})(nn||(rt.Position=nn={}));var rn;(function(hn){function En(wn,dn,Sn,mn){if(Pn.uinteger(wn)&&Pn.uinteger(dn)&&Pn.uinteger(Sn)&&Pn.uinteger(mn))return{start:nn.create(wn,dn),end:nn.create(Sn,mn)};if(nn.is(wn)&&nn.is(dn))return{start:wn,end:dn};throw new Error("Range#create called with invalid arguments[".concat(wn,", ").concat(dn,", ").concat(Sn,", ").concat(mn,"]"))}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&nn.is(dn.start)&&nn.is(dn.end)}hn.is=un})(rn||(rt.Range=rn={}));var sn;(function(hn){function En(wn,dn){return{uri:wn,range:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&rn.is(dn.range)&&(Pn.string(dn.uri)||Pn.undefined(dn.uri))}hn.is=un})(sn||(rt.Location=sn={}));var an;(function(hn){function En(wn,dn,Sn,mn){return{targetUri:wn,targetRange:dn,targetSelectionRange:Sn,originSelectionRange:mn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&rn.is(dn.targetRange)&&Pn.string(dn.targetUri)&&rn.is(dn.targetSelectionRange)&&(rn.is(dn.originSelectionRange)||Pn.undefined(dn.originSelectionRange))}hn.is=un})(an||(rt.LocationLink=an={}));var on;(function(hn){function En(wn,dn,Sn,mn){return{red:wn,green:dn,blue:Sn,alpha:mn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&Pn.numberRange(dn.red,0,1)&&Pn.numberRange(dn.green,0,1)&&Pn.numberRange(dn.blue,0,1)&&Pn.numberRange(dn.alpha,0,1)}hn.is=un})(on||(rt.Color=on={}));var cn;(function(hn){function En(wn,dn){return{range:wn,color:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&rn.is(dn.range)&&on.is(dn.color)}hn.is=un})(cn||(rt.ColorInformation=cn={}));var ln;(function(hn){function En(wn,dn,Sn){return{label:wn,textEdit:dn,additionalTextEdits:Sn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&Pn.string(dn.label)&&(Pn.undefined(dn.textEdit)||On.is(dn))&&(Pn.undefined(dn.additionalTextEdits)||Pn.typedArray(dn.additionalTextEdits,On.is))}hn.is=un})(ln||(rt.ColorPresentation=ln={}));var fn;(function(hn){hn.Comment="comment",hn.Imports="imports",hn.Region="region"})(fn||(rt.FoldingRangeKind=fn={}));var gn;(function(hn){function En(wn,dn,Sn,mn,In,Wn){var Vn={startLine:wn,endLine:dn};return Pn.defined(Sn)&&(Vn.startCharacter=Sn),Pn.defined(mn)&&(Vn.endCharacter=mn),Pn.defined(In)&&(Vn.kind=In),Pn.defined(Wn)&&(Vn.collapsedText=Wn),Vn}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&Pn.uinteger(dn.startLine)&&Pn.uinteger(dn.startLine)&&(Pn.undefined(dn.startCharacter)||Pn.uinteger(dn.startCharacter))&&(Pn.undefined(dn.endCharacter)||Pn.uinteger(dn.endCharacter))&&(Pn.undefined(dn.kind)||Pn.string(dn.kind))}hn.is=un})(gn||(rt.FoldingRange=gn={}));var pn;(function(hn){function En(wn,dn){return{location:wn,message:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&sn.is(dn.location)&&Pn.string(dn.message)}hn.is=un})(pn||(rt.DiagnosticRelatedInformation=pn={}));var vn;(function(hn){hn.Error=1,hn.Warning=2,hn.Information=3,hn.Hint=4})(vn||(rt.DiagnosticSeverity=vn={}));var bn;(function(hn){hn.Unnecessary=1,hn.Deprecated=2})(bn||(rt.DiagnosticTag=bn={}));var $n;(function(hn){function En(un){var wn=un;return Pn.objectLiteral(wn)&&Pn.string(wn.href)}hn.is=En})($n||(rt.CodeDescription=$n={}));var Tn;(function(hn){function En(wn,dn,Sn,mn,In,Wn){var Vn={range:wn,message:dn};return Pn.defined(Sn)&&(Vn.severity=Sn),Pn.defined(mn)&&(Vn.code=mn),Pn.defined(In)&&(Vn.source=In),Pn.defined(Wn)&&(Vn.relatedInformation=Wn),Vn}hn.create=En;function un(wn){var dn,Sn=wn;return Pn.defined(Sn)&&rn.is(Sn.range)&&Pn.string(Sn.message)&&(Pn.number(Sn.severity)||Pn.undefined(Sn.severity))&&(Pn.integer(Sn.code)||Pn.string(Sn.code)||Pn.undefined(Sn.code))&&(Pn.undefined(Sn.codeDescription)||Pn.string((dn=Sn.codeDescription)===null||dn===void 0?void 0:dn.href))&&(Pn.string(Sn.source)||Pn.undefined(Sn.source))&&(Pn.undefined(Sn.relatedInformation)||Pn.typedArray(Sn.relatedInformation,pn.is))}hn.is=un})(Tn||(rt.Diagnostic=Tn={}));var An;(function(hn){function En(wn,dn){for(var Sn=[],mn=2;mn<arguments.length;mn++)Sn[mn-2]=arguments[mn];var In={title:wn,command:dn};return Pn.defined(Sn)&&Sn.length>0&&(In.arguments=Sn),In}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&Pn.string(dn.title)&&Pn.string(dn.command)}hn.is=un})(An||(rt.Command=An={}));var On;(function(hn){function En(Sn,mn){return{range:Sn,newText:mn}}hn.replace=En;function un(Sn,mn){return{range:{start:Sn,end:Sn},newText:mn}}hn.insert=un;function wn(Sn){return{range:Sn,newText:""}}hn.del=wn;function dn(Sn){var mn=Sn;return Pn.objectLiteral(mn)&&Pn.string(mn.newText)&&rn.is(mn.range)}hn.is=dn})(On||(rt.TextEdit=On={}));var Bn;(function(hn){function En(wn,dn,Sn){var mn={label:wn};return dn!==void 0&&(mn.needsConfirmation=dn),Sn!==void 0&&(mn.description=Sn),mn}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&Pn.string(dn.label)&&(Pn.boolean(dn.needsConfirmation)||dn.needsConfirmation===void 0)&&(Pn.string(dn.description)||dn.description===void 0)}hn.is=un})(Bn||(rt.ChangeAnnotation=Bn={}));var Un;(function(hn){function En(un){var wn=un;return Pn.string(wn)}hn.is=En})(Un||(rt.ChangeAnnotationIdentifier=Un={}));var Yn;(function(hn){function En(Sn,mn,In){return{range:Sn,newText:mn,annotationId:In}}hn.replace=En;function un(Sn,mn,In){return{range:{start:Sn,end:Sn},newText:mn,annotationId:In}}hn.insert=un;function wn(Sn,mn){return{range:Sn,newText:"",annotationId:mn}}hn.del=wn;function dn(Sn){var mn=Sn;return On.is(mn)&&(Bn.is(mn.annotationId)||Un.is(mn.annotationId))}hn.is=dn})(Yn||(rt.AnnotatedTextEdit=Yn={}));var xn;(function(hn){function En(wn,dn){return{textDocument:wn,edits:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&pr.is(dn.textDocument)&&Array.isArray(dn.edits)}hn.is=un})(xn||(rt.TextDocumentEdit=xn={}));var Rn;(function(hn){function En(wn,dn,Sn){var mn={kind:"create",uri:wn};return dn!==void 0&&(dn.overwrite!==void 0||dn.ignoreIfExists!==void 0)&&(mn.options=dn),Sn!==void 0&&(mn.annotationId=Sn),mn}hn.create=En;function un(wn){var dn=wn;return dn&&dn.kind==="create"&&Pn.string(dn.uri)&&(dn.options===void 0||(dn.options.overwrite===void 0||Pn.boolean(dn.options.overwrite))&&(dn.options.ignoreIfExists===void 0||Pn.boolean(dn.options.ignoreIfExists)))&&(dn.annotationId===void 0||Un.is(dn.annotationId))}hn.is=un})(Rn||(rt.CreateFile=Rn={}));var yn;(function(hn){function En(wn,dn,Sn,mn){var In={kind:"rename",oldUri:wn,newUri:dn};return Sn!==void 0&&(Sn.overwrite!==void 0||Sn.ignoreIfExists!==void 0)&&(In.options=Sn),mn!==void 0&&(In.annotationId=mn),In}hn.create=En;function un(wn){var dn=wn;return dn&&dn.kind==="rename"&&Pn.string(dn.oldUri)&&Pn.string(dn.newUri)&&(dn.options===void 0||(dn.options.overwrite===void 0||Pn.boolean(dn.options.overwrite))&&(dn.options.ignoreIfExists===void 0||Pn.boolean(dn.options.ignoreIfExists)))&&(dn.annotationId===void 0||Un.is(dn.annotationId))}hn.is=un})(yn||(rt.RenameFile=yn={}));var Cn;(function(hn){function En(wn,dn,Sn){var mn={kind:"delete",uri:wn};return dn!==void 0&&(dn.recursive!==void 0||dn.ignoreIfNotExists!==void 0)&&(mn.options=dn),Sn!==void 0&&(mn.annotationId=Sn),mn}hn.create=En;function un(wn){var dn=wn;return dn&&dn.kind==="delete"&&Pn.string(dn.uri)&&(dn.options===void 0||(dn.options.recursive===void 0||Pn.boolean(dn.options.recursive))&&(dn.options.ignoreIfNotExists===void 0||Pn.boolean(dn.options.ignoreIfNotExists)))&&(dn.annotationId===void 0||Un.is(dn.annotationId))}hn.is=un})(Cn||(rt.DeleteFile=Cn={}));var Fn;(function(hn){function En(un){var wn=un;return wn&&(wn.changes!==void 0||wn.documentChanges!==void 0)&&(wn.documentChanges===void 0||wn.documentChanges.every(function(dn){return Pn.string(dn.kind)?Rn.is(dn)||yn.is(dn)||Cn.is(dn):xn.is(dn)}))}hn.is=En})(Fn||(rt.WorkspaceEdit=Fn={}));var Mn=function(){function hn(En,un){this.edits=En,this.changeAnnotations=un}return hn.prototype.insert=function(En,un,wn){var dn,Sn;if(wn===void 0?dn=On.insert(En,un):Un.is(wn)?(Sn=wn,dn=Yn.insert(En,un,wn)):(this.assertChangeAnnotations(this.changeAnnotations),Sn=this.changeAnnotations.manage(wn),dn=Yn.insert(En,un,Sn)),this.edits.push(dn),Sn!==void 0)return Sn},hn.prototype.replace=function(En,un,wn){var dn,Sn;if(wn===void 0?dn=On.replace(En,un):Un.is(wn)?(Sn=wn,dn=Yn.replace(En,un,wn)):(this.assertChangeAnnotations(this.changeAnnotations),Sn=this.changeAnnotations.manage(wn),dn=Yn.replace(En,un,Sn)),this.edits.push(dn),Sn!==void 0)return Sn},hn.prototype.delete=function(En,un){var wn,dn;if(un===void 0?wn=On.del(En):Un.is(un)?(dn=un,wn=Yn.del(En,un)):(this.assertChangeAnnotations(this.changeAnnotations),dn=this.changeAnnotations.manage(un),wn=Yn.del(En,dn)),this.edits.push(wn),dn!==void 0)return dn},hn.prototype.add=function(En){this.edits.push(En)},hn.prototype.all=function(){return this.edits},hn.prototype.clear=function(){this.edits.splice(0,this.edits.length)},hn.prototype.assertChangeAnnotations=function(En){if(En===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},hn}(),zn=function(){function hn(En){this._annotations=En===void 0?Object.create(null):En,this._counter=0,this._size=0}return hn.prototype.all=function(){return this._annotations},Object.defineProperty(hn.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),hn.prototype.manage=function(En,un){var wn;if(Un.is(En)?wn=En:(wn=this.nextId(),un=En),this._annotations[wn]!==void 0)throw new Error("Id ".concat(wn," is already in use."));if(un===void 0)throw new Error("No annotation provided for id ".concat(wn));return this._annotations[wn]=un,this._size++,wn},hn.prototype.nextId=function(){return this._counter++,this._counter.toString()},hn}(),wr=function(){function hn(En){var un=this;this._textEditChanges=Object.create(null),En!==void 0?(this._workspaceEdit=En,En.documentChanges?(this._changeAnnotations=new zn(En.changeAnnotations),En.changeAnnotations=this._changeAnnotations.all(),En.documentChanges.forEach(function(wn){if(xn.is(wn)){var dn=new Mn(wn.edits,un._changeAnnotations);un._textEditChanges[wn.textDocument.uri]=dn}})):En.changes&&Object.keys(En.changes).forEach(function(wn){var dn=new Mn(En.changes[wn]);un._textEditChanges[wn]=dn})):this._workspaceEdit={}}return Object.defineProperty(hn.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),hn.prototype.getTextEditChange=function(En){if(pr.is(En)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var un={uri:En.uri,version:En.version},wn=this._textEditChanges[un.uri];if(!wn){var dn=[],Sn={textDocument:un,edits:dn};this._workspaceEdit.documentChanges.push(Sn),wn=new Mn(dn,this._changeAnnotations),this._textEditChanges[un.uri]=wn}return wn}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var wn=this._textEditChanges[En];if(!wn){var dn=[];this._workspaceEdit.changes[En]=dn,wn=new Mn(dn),this._textEditChanges[En]=wn}return wn}},hn.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new zn,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},hn.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},hn.prototype.createFile=function(En,un,wn){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var dn;Bn.is(un)||Un.is(un)?dn=un:wn=un;var Sn,mn;if(dn===void 0?Sn=Rn.create(En,wn):(mn=Un.is(dn)?dn:this._changeAnnotations.manage(dn),Sn=Rn.create(En,wn,mn)),this._workspaceEdit.documentChanges.push(Sn),mn!==void 0)return mn},hn.prototype.renameFile=function(En,un,wn,dn){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var Sn;Bn.is(wn)||Un.is(wn)?Sn=wn:dn=wn;var mn,In;if(Sn===void 0?mn=yn.create(En,un,dn):(In=Un.is(Sn)?Sn:this._changeAnnotations.manage(Sn),mn=yn.create(En,un,dn,In)),this._workspaceEdit.documentChanges.push(mn),In!==void 0)return In},hn.prototype.deleteFile=function(En,un,wn){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var dn;Bn.is(un)||Un.is(un)?dn=un:wn=un;var Sn,mn;if(dn===void 0?Sn=Cn.create(En,wn):(mn=Un.is(dn)?dn:this._changeAnnotations.manage(dn),Sn=Cn.create(En,wn,mn)),this._workspaceEdit.documentChanges.push(Sn),mn!==void 0)return mn},hn}();rt.WorkspaceChange=wr;var Hn;(function(hn){function En(wn){return{uri:wn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&Pn.string(dn.uri)}hn.is=un})(Hn||(rt.TextDocumentIdentifier=Hn={}));var kn;(function(hn){function En(wn,dn){return{uri:wn,version:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&Pn.string(dn.uri)&&Pn.integer(dn.version)}hn.is=un})(kn||(rt.VersionedTextDocumentIdentifier=kn={}));var pr;(function(hn){function En(wn,dn){return{uri:wn,version:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&Pn.string(dn.uri)&&(dn.version===null||Pn.integer(dn.version))}hn.is=un})(pr||(rt.OptionalVersionedTextDocumentIdentifier=pr={}));var br;(function(hn){function En(wn,dn,Sn,mn){return{uri:wn,languageId:dn,version:Sn,text:mn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&Pn.string(dn.uri)&&Pn.string(dn.languageId)&&Pn.integer(dn.version)&&Pn.string(dn.text)}hn.is=un})(br||(rt.TextDocumentItem=br={}));var Ir;(function(hn){hn.PlainText="plaintext",hn.Markdown="markdown";function En(un){var wn=un;return wn===hn.PlainText||wn===hn.Markdown}hn.is=En})(Ir||(rt.MarkupKind=Ir={}));var Ln;(function(hn){function En(un){var wn=un;return Pn.objectLiteral(un)&&Ir.is(wn.kind)&&Pn.string(wn.value)}hn.is=En})(Ln||(rt.MarkupContent=Ln={}));var qn;(function(hn){hn.Text=1,hn.Method=2,hn.Function=3,hn.Constructor=4,hn.Field=5,hn.Variable=6,hn.Class=7,hn.Interface=8,hn.Module=9,hn.Property=10,hn.Unit=11,hn.Value=12,hn.Enum=13,hn.Keyword=14,hn.Snippet=15,hn.Color=16,hn.File=17,hn.Reference=18,hn.Folder=19,hn.EnumMember=20,hn.Constant=21,hn.Struct=22,hn.Event=23,hn.Operator=24,hn.TypeParameter=25})(qn||(rt.CompletionItemKind=qn={}));var Tr;(function(hn){hn.PlainText=1,hn.Snippet=2})(Tr||(rt.InsertTextFormat=Tr={}));var Jn;(function(hn){hn.Deprecated=1})(Jn||(rt.CompletionItemTag=Jn={}));var yr;(function(hn){function En(wn,dn,Sn){return{newText:wn,insert:dn,replace:Sn}}hn.create=En;function un(wn){var dn=wn;return dn&&Pn.string(dn.newText)&&rn.is(dn.insert)&&rn.is(dn.replace)}hn.is=un})(yr||(rt.InsertReplaceEdit=yr={}));var Rr;(function(hn){hn.asIs=1,hn.adjustIndentation=2})(Rr||(rt.InsertTextMode=Rr={}));var Qn;(function(hn){function En(un){var wn=un;return wn&&(Pn.string(wn.detail)||wn.detail===void 0)&&(Pn.string(wn.description)||wn.description===void 0)}hn.is=En})(Qn||(rt.CompletionItemLabelDetails=Qn={}));var _n;(function(hn){function En(un){return{label:un}}hn.create=En})(_n||(rt.CompletionItem=_n={}));var Nn;(function(hn){function En(un,wn){return{items:un||[],isIncomplete:!!wn}}hn.create=En})(Nn||(rt.CompletionList=Nn={}));var fr;(function(hn){function En(wn){return wn.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}hn.fromPlainText=En;function un(wn){var dn=wn;return Pn.string(dn)||Pn.objectLiteral(dn)&&Pn.string(dn.language)&&Pn.string(dn.value)}hn.is=un})(fr||(rt.MarkedString=fr={}));var Dn;(function(hn){function En(un){var wn=un;return!!wn&&Pn.objectLiteral(wn)&&(Ln.is(wn.contents)||fr.is(wn.contents)||Pn.typedArray(wn.contents,fr.is))&&(un.range===void 0||rn.is(un.range))}hn.is=En})(Dn||(rt.Hover=Dn={}));var Zn;(function(hn){function En(un,wn){return wn?{label:un,documentation:wn}:{label:un}}hn.create=En})(Zn||(rt.ParameterInformation=Zn={}));var Ar;(function(hn){function En(un,wn){for(var dn=[],Sn=2;Sn<arguments.length;Sn++)dn[Sn-2]=arguments[Sn];var mn={label:un};return Pn.defined(wn)&&(mn.documentation=wn),Pn.defined(dn)?mn.parameters=dn:mn.parameters=[],mn}hn.create=En})(Ar||(rt.SignatureInformation=Ar={}));var Nr;(function(hn){hn.Text=1,hn.Read=2,hn.Write=3})(Nr||(rt.DocumentHighlightKind=Nr={}));var Xn;(function(hn){function En(un,wn){var dn={range:un};return Pn.number(wn)&&(dn.kind=wn),dn}hn.create=En})(Xn||(rt.DocumentHighlight=Xn={}));var $r;(function(hn){hn.File=1,hn.Module=2,hn.Namespace=3,hn.Package=4,hn.Class=5,hn.Method=6,hn.Property=7,hn.Field=8,hn.Constructor=9,hn.Enum=10,hn.Interface=11,hn.Function=12,hn.Variable=13,hn.Constant=14,hn.String=15,hn.Number=16,hn.Boolean=17,hn.Array=18,hn.Object=19,hn.Key=20,hn.Null=21,hn.EnumMember=22,hn.Struct=23,hn.Event=24,hn.Operator=25,hn.TypeParameter=26})($r||(rt.SymbolKind=$r={}));var Kn;(function(hn){hn.Deprecated=1})(Kn||(rt.SymbolTag=Kn={}));var vr;(function(hn){function En(un,wn,dn,Sn,mn){var In={name:un,kind:wn,location:{uri:Sn,range:dn}};return mn&&(In.containerName=mn),In}hn.create=En})(vr||(rt.SymbolInformation=vr={}));var Sr;(function(hn){function En(un,wn,dn,Sn){return Sn!==void 0?{name:un,kind:wn,location:{uri:dn,range:Sn}}:{name:un,kind:wn,location:{uri:dn}}}hn.create=En})(Sr||(rt.WorkspaceSymbol=Sr={}));var Or;(function(hn){function En(wn,dn,Sn,mn,In,Wn){var Vn={name:wn,detail:dn,kind:Sn,range:mn,selectionRange:In};return Wn!==void 0&&(Vn.children=Wn),Vn}hn.create=En;function un(wn){var dn=wn;return dn&&Pn.string(dn.name)&&Pn.number(dn.kind)&&rn.is(dn.range)&&rn.is(dn.selectionRange)&&(dn.detail===void 0||Pn.string(dn.detail))&&(dn.deprecated===void 0||Pn.boolean(dn.deprecated))&&(dn.children===void 0||Array.isArray(dn.children))&&(dn.tags===void 0||Array.isArray(dn.tags))}hn.is=un})(Or||(rt.DocumentSymbol=Or={}));var Cr;(function(hn){hn.Empty="",hn.QuickFix="quickfix",hn.Refactor="refactor",hn.RefactorExtract="refactor.extract",hn.RefactorInline="refactor.inline",hn.RefactorRewrite="refactor.rewrite",hn.Source="source",hn.SourceOrganizeImports="source.organizeImports",hn.SourceFixAll="source.fixAll"})(Cr||(rt.CodeActionKind=Cr={}));var Mr;(function(hn){hn.Invoked=1,hn.Automatic=2})(Mr||(rt.CodeActionTriggerKind=Mr={}));var Fr;(function(hn){function En(wn,dn,Sn){var mn={diagnostics:wn};return dn!=null&&(mn.only=dn),Sn!=null&&(mn.triggerKind=Sn),mn}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&Pn.typedArray(dn.diagnostics,Tn.is)&&(dn.only===void 0||Pn.typedArray(dn.only,Pn.string))&&(dn.triggerKind===void 0||dn.triggerKind===Mr.Invoked||dn.triggerKind===Mr.Automatic)}hn.is=un})(Fr||(rt.CodeActionContext=Fr={}));var Gr;(function(hn){function En(wn,dn,Sn){var mn={title:wn},In=!0;return typeof dn=="string"?(In=!1,mn.kind=dn):An.is(dn)?mn.command=dn:mn.edit=dn,In&&Sn!==void 0&&(mn.kind=Sn),mn}hn.create=En;function un(wn){var dn=wn;return dn&&Pn.string(dn.title)&&(dn.diagnostics===void 0||Pn.typedArray(dn.diagnostics,Tn.is))&&(dn.kind===void 0||Pn.string(dn.kind))&&(dn.edit!==void 0||dn.command!==void 0)&&(dn.command===void 0||An.is(dn.command))&&(dn.isPreferred===void 0||Pn.boolean(dn.isPreferred))&&(dn.edit===void 0||Fn.is(dn.edit))}hn.is=un})(Gr||(rt.CodeAction=Gr={}));var Gn;(function(hn){function En(wn,dn){var Sn={range:wn};return Pn.defined(dn)&&(Sn.data=dn),Sn}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&rn.is(dn.range)&&(Pn.undefined(dn.command)||An.is(dn.command))}hn.is=un})(Gn||(rt.CodeLens=Gn={}));var jn;(function(hn){function En(wn,dn){return{tabSize:wn,insertSpaces:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&Pn.uinteger(dn.tabSize)&&Pn.boolean(dn.insertSpaces)}hn.is=un})(jn||(rt.FormattingOptions=jn={}));var hr;(function(hn){function En(wn,dn,Sn){return{range:wn,target:dn,data:Sn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&rn.is(dn.range)&&(Pn.undefined(dn.target)||Pn.string(dn.target))}hn.is=un})(hr||(rt.DocumentLink=hr={}));var qr;(function(hn){function En(wn,dn){return{range:wn,parent:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&rn.is(dn.range)&&(dn.parent===void 0||hn.is(dn.parent))}hn.is=un})(qr||(rt.SelectionRange=qr={}));var zr;(function(hn){hn.namespace="namespace",hn.type="type",hn.class="class",hn.enum="enum",hn.interface="interface",hn.struct="struct",hn.typeParameter="typeParameter",hn.parameter="parameter",hn.variable="variable",hn.property="property",hn.enumMember="enumMember",hn.event="event",hn.function="function",hn.method="method",hn.macro="macro",hn.keyword="keyword",hn.modifier="modifier",hn.comment="comment",hn.string="string",hn.number="number",hn.regexp="regexp",hn.operator="operator",hn.decorator="decorator"})(zr||(rt.SemanticTokenTypes=zr={}));var Hr;(function(hn){hn.declaration="declaration",hn.definition="definition",hn.readonly="readonly",hn.static="static",hn.deprecated="deprecated",hn.abstract="abstract",hn.async="async",hn.modification="modification",hn.documentation="documentation",hn.defaultLibrary="defaultLibrary"})(Hr||(rt.SemanticTokenModifiers=Hr={}));var Yr;(function(hn){function En(un){var wn=un;return Pn.objectLiteral(wn)&&(wn.resultId===void 0||typeof wn.resultId=="string")&&Array.isArray(wn.data)&&(wn.data.length===0||typeof wn.data[0]=="number")}hn.is=En})(Yr||(rt.SemanticTokens=Yr={}));var Zr;(function(hn){function En(wn,dn){return{range:wn,text:dn}}hn.create=En;function un(wn){var dn=wn;return dn!=null&&rn.is(dn.range)&&Pn.string(dn.text)}hn.is=un})(Zr||(rt.InlineValueText=Zr={}));var ei;(function(hn){function En(wn,dn,Sn){return{range:wn,variableName:dn,caseSensitiveLookup:Sn}}hn.create=En;function un(wn){var dn=wn;return dn!=null&&rn.is(dn.range)&&Pn.boolean(dn.caseSensitiveLookup)&&(Pn.string(dn.variableName)||dn.variableName===void 0)}hn.is=un})(ei||(rt.InlineValueVariableLookup=ei={}));var ti;(function(hn){function En(wn,dn){return{range:wn,expression:dn}}hn.create=En;function un(wn){var dn=wn;return dn!=null&&rn.is(dn.range)&&(Pn.string(dn.expression)||dn.expression===void 0)}hn.is=un})(ti||(rt.InlineValueEvaluatableExpression=ti={}));var ni;(function(hn){function En(wn,dn){return{frameId:wn,stoppedLocation:dn}}hn.create=En;function un(wn){var dn=wn;return Pn.defined(dn)&&rn.is(wn.stoppedLocation)}hn.is=un})(ni||(rt.InlineValueContext=ni={}));var Jr;(function(hn){hn.Type=1,hn.Parameter=2;function En(un){return un===1||un===2}hn.is=En})(Jr||(rt.InlayHintKind=Jr={}));var Qr;(function(hn){function En(wn){return{value:wn}}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&(dn.tooltip===void 0||Pn.string(dn.tooltip)||Ln.is(dn.tooltip))&&(dn.location===void 0||sn.is(dn.location))&&(dn.command===void 0||An.is(dn.command))}hn.is=un})(Qr||(rt.InlayHintLabelPart=Qr={}));var Br;(function(hn){function En(wn,dn,Sn){var mn={position:wn,label:dn};return Sn!==void 0&&(mn.kind=Sn),mn}hn.create=En;function un(wn){var dn=wn;return Pn.objectLiteral(dn)&&nn.is(dn.position)&&(Pn.string(dn.label)||Pn.typedArray(dn.label,Qr.is))&&(dn.kind===void 0||Jr.is(dn.kind))&&dn.textEdits===void 0||Pn.typedArray(dn.textEdits,On.is)&&(dn.tooltip===void 0||Pn.string(dn.tooltip)||Ln.is(dn.tooltip))&&(dn.paddingLeft===void 0||Pn.boolean(dn.paddingLeft))&&(dn.paddingRight===void 0||Pn.boolean(dn.paddingRight))}hn.is=un})(Br||(rt.InlayHint=Br={}));var ri;(function(hn){function En(un){return{kind:"snippet",value:un}}hn.createSnippet=En})(ri||(rt.StringValue=ri={}));var ii;(function(hn){function En(un,wn,dn,Sn){return{insertText:un,filterText:wn,range:dn,command:Sn}}hn.create=En})(ii||(rt.InlineCompletionItem=ii={}));var Kr;(function(hn){function En(un){return{items:un}}hn.create=En})(Kr||(rt.InlineCompletionList=Kr={}));var si;(function(hn){hn.Invoked=0,hn.Automatic=1})(si||(rt.InlineCompletionTriggerKind=si={}));var Xr;(function(hn){function En(un,wn){return{range:un,text:wn}}hn.create=En})(Xr||(rt.SelectedCompletionInfo=Xr={}));var ai;(function(hn){function En(un,wn){return{triggerKind:un,selectedCompletionInfo:wn}}hn.create=En})(ai||(rt.InlineCompletionContext=ai={}));var Ur;(function(hn){function En(un){var wn=un;return Pn.objectLiteral(wn)&&ot.is(wn.uri)&&Pn.string(wn.name)}hn.is=En})(Ur||(rt.WorkspaceFolder=Ur={})),rt.EOL=[`
|
|
175
|
-
`,`\r
|
|
176
|
-
`,"\r"];var Wr;(function(hn){function En(Sn,mn,In,Wn){return new oi(Sn,mn,In,Wn)}hn.create=En;function un(Sn){var mn=Sn;return!!(Pn.defined(mn)&&Pn.string(mn.uri)&&(Pn.undefined(mn.languageId)||Pn.string(mn.languageId))&&Pn.uinteger(mn.lineCount)&&Pn.func(mn.getText)&&Pn.func(mn.positionAt)&&Pn.func(mn.offsetAt))}hn.is=un;function wn(Sn,mn){for(var In=Sn.getText(),Wn=dn(mn,function(kr,Dr){var Pr=kr.range.start.line-Dr.range.start.line;return Pr===0?kr.range.start.character-Dr.range.start.character:Pr}),Vn=In.length,_r=Wn.length-1;_r>=0;_r--){var Er=Wn[_r],xr=Sn.offsetAt(Er.range.start),mr=Sn.offsetAt(Er.range.end);if(mr<=Vn)In=In.substring(0,xr)+Er.newText+In.substring(mr,In.length);else throw new Error("Overlapping edit");Vn=xr}return In}hn.applyEdits=wn;function dn(Sn,mn){if(Sn.length<=1)return Sn;var In=Sn.length/2|0,Wn=Sn.slice(0,In),Vn=Sn.slice(In);dn(Wn,mn),dn(Vn,mn);for(var _r=0,Er=0,xr=0;_r<Wn.length&&Er<Vn.length;){var mr=mn(Wn[_r],Vn[Er]);mr<=0?Sn[xr++]=Wn[_r++]:Sn[xr++]=Vn[Er++]}for(;_r<Wn.length;)Sn[xr++]=Wn[_r++];for(;Er<Vn.length;)Sn[xr++]=Vn[Er++];return Sn}})(Wr||(rt.TextDocument=Wr={}));var oi=function(){function hn(En,un,wn,dn){this._uri=En,this._languageId=un,this._version=wn,this._content=dn,this._lineOffsets=void 0}return Object.defineProperty(hn.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(hn.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(hn.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),hn.prototype.getText=function(En){if(En){var un=this.offsetAt(En.start),wn=this.offsetAt(En.end);return this._content.substring(un,wn)}return this._content},hn.prototype.update=function(En,un){this._content=En.text,this._version=un,this._lineOffsets=void 0},hn.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var En=[],un=this._content,wn=!0,dn=0;dn<un.length;dn++){wn&&(En.push(dn),wn=!1);var Sn=un.charAt(dn);wn=Sn==="\r"||Sn===`
|
|
177
|
-
`,Sn==="\r"&&dn+1<un.length&&un.charAt(dn+1)===`
|
|
178
|
-
`&&dn++}wn&&un.length>0&&En.push(un.length),this._lineOffsets=En}return this._lineOffsets},hn.prototype.positionAt=function(En){En=Math.max(Math.min(En,this._content.length),0);var un=this.getLineOffsets(),wn=0,dn=un.length;if(dn===0)return nn.create(0,En);for(;wn<dn;){var Sn=Math.floor((wn+dn)/2);un[Sn]>En?dn=Sn:wn=Sn+1}var mn=wn-1;return nn.create(mn,En-un[mn])},hn.prototype.offsetAt=function(En){var un=this.getLineOffsets();if(En.line>=un.length)return this._content.length;if(En.line<0)return 0;var wn=un[En.line],dn=En.line+1<un.length?un[En.line+1]:this._content.length;return Math.max(Math.min(wn+En.character,dn),wn)},Object.defineProperty(hn.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),hn}(),Pn;(function(hn){var En=Object.prototype.toString;function un(mr){return typeof mr<"u"}hn.defined=un;function wn(mr){return typeof mr>"u"}hn.undefined=wn;function dn(mr){return mr===!0||mr===!1}hn.boolean=dn;function Sn(mr){return En.call(mr)==="[object String]"}hn.string=Sn;function mn(mr){return En.call(mr)==="[object Number]"}hn.number=mn;function In(mr,kr,Dr){return En.call(mr)==="[object Number]"&&kr<=mr&&mr<=Dr}hn.numberRange=In;function Wn(mr){return En.call(mr)==="[object Number]"&&-2147483648<=mr&&mr<=2147483647}hn.integer=Wn;function Vn(mr){return En.call(mr)==="[object Number]"&&0<=mr&&mr<=2147483647}hn.uinteger=Vn;function _r(mr){return En.call(mr)==="[object Function]"}hn.func=_r;function Er(mr){return mr!==null&&typeof mr=="object"}hn.objectLiteral=Er;function xr(mr,kr){return Array.isArray(mr)&&mr.every(kr)}hn.typedArray=xr})(Pn||(Pn={}))})}(main,main.exports)),main.exports}var messages={},hasRequiredMessages;function requireMessages(){if(hasRequiredMessages)return messages;hasRequiredMessages=1,Object.defineProperty(messages,"__esModule",{value:!0}),messages.ProtocolNotificationType=messages.ProtocolNotificationType0=messages.ProtocolRequestType=messages.ProtocolRequestType0=messages.RegistrationType=messages.MessageDirection=void 0;const tt=requireMain$3();var et;(function(tn){tn.clientToServer="clientToServer",tn.serverToClient="serverToClient",tn.both="both"})(et||(messages.MessageDirection=et={}));class nt{constructor(nn){this.method=nn}}messages.RegistrationType=nt;class rt extends tt.RequestType0{constructor(nn){super(nn)}}messages.ProtocolRequestType0=rt;class st extends tt.RequestType{constructor(nn){super(nn,tt.ParameterStructures.byName)}}messages.ProtocolRequestType=st;class ot extends tt.NotificationType0{constructor(nn){super(nn)}}messages.ProtocolNotificationType0=ot;class en extends tt.NotificationType{constructor(nn){super(nn,tt.ParameterStructures.byName)}}return messages.ProtocolNotificationType=en,messages}var protocol={},is={},hasRequiredIs;function requireIs(){if(hasRequiredIs)return is;hasRequiredIs=1,Object.defineProperty(is,"__esModule",{value:!0}),is.objectLiteral=is.typedArray=is.stringArray=is.array=is.func=is.error=is.number=is.string=is.boolean=void 0;function tt(rn){return rn===!0||rn===!1}is.boolean=tt;function et(rn){return typeof rn=="string"||rn instanceof String}is.string=et;function nt(rn){return typeof rn=="number"||rn instanceof Number}is.number=nt;function rt(rn){return rn instanceof Error}is.error=rt;function st(rn){return typeof rn=="function"}is.func=st;function ot(rn){return Array.isArray(rn)}is.array=ot;function en(rn){return ot(rn)&&rn.every(sn=>et(sn))}is.stringArray=en;function tn(rn,sn){return Array.isArray(rn)&&rn.every(sn)}is.typedArray=tn;function nn(rn){return rn!==null&&typeof rn=="object"}return is.objectLiteral=nn,is}var protocol_implementation={},hasRequiredProtocol_implementation;function requireProtocol_implementation(){if(hasRequiredProtocol_implementation)return protocol_implementation;hasRequiredProtocol_implementation=1,Object.defineProperty(protocol_implementation,"__esModule",{value:!0}),protocol_implementation.ImplementationRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="textDocument/implementation",nt.messageDirection=tt.MessageDirection.clientToServer,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_implementation.ImplementationRequest=et={})),protocol_implementation}var protocol_typeDefinition={},hasRequiredProtocol_typeDefinition;function requireProtocol_typeDefinition(){if(hasRequiredProtocol_typeDefinition)return protocol_typeDefinition;hasRequiredProtocol_typeDefinition=1,Object.defineProperty(protocol_typeDefinition,"__esModule",{value:!0}),protocol_typeDefinition.TypeDefinitionRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="textDocument/typeDefinition",nt.messageDirection=tt.MessageDirection.clientToServer,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_typeDefinition.TypeDefinitionRequest=et={})),protocol_typeDefinition}var protocol_workspaceFolder={},hasRequiredProtocol_workspaceFolder;function requireProtocol_workspaceFolder(){if(hasRequiredProtocol_workspaceFolder)return protocol_workspaceFolder;hasRequiredProtocol_workspaceFolder=1,Object.defineProperty(protocol_workspaceFolder,"__esModule",{value:!0}),protocol_workspaceFolder.DidChangeWorkspaceFoldersNotification=protocol_workspaceFolder.WorkspaceFoldersRequest=void 0;const tt=requireMessages();var et;(function(rt){rt.method="workspace/workspaceFolders",rt.messageDirection=tt.MessageDirection.serverToClient,rt.type=new tt.ProtocolRequestType0(rt.method)})(et||(protocol_workspaceFolder.WorkspaceFoldersRequest=et={}));var nt;return function(rt){rt.method="workspace/didChangeWorkspaceFolders",rt.messageDirection=tt.MessageDirection.clientToServer,rt.type=new tt.ProtocolNotificationType(rt.method)}(nt||(protocol_workspaceFolder.DidChangeWorkspaceFoldersNotification=nt={})),protocol_workspaceFolder}var protocol_configuration={},hasRequiredProtocol_configuration;function requireProtocol_configuration(){if(hasRequiredProtocol_configuration)return protocol_configuration;hasRequiredProtocol_configuration=1,Object.defineProperty(protocol_configuration,"__esModule",{value:!0}),protocol_configuration.ConfigurationRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="workspace/configuration",nt.messageDirection=tt.MessageDirection.serverToClient,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_configuration.ConfigurationRequest=et={})),protocol_configuration}var protocol_colorProvider={},hasRequiredProtocol_colorProvider;function requireProtocol_colorProvider(){if(hasRequiredProtocol_colorProvider)return protocol_colorProvider;hasRequiredProtocol_colorProvider=1,Object.defineProperty(protocol_colorProvider,"__esModule",{value:!0}),protocol_colorProvider.ColorPresentationRequest=protocol_colorProvider.DocumentColorRequest=void 0;const tt=requireMessages();var et;(function(rt){rt.method="textDocument/documentColor",rt.messageDirection=tt.MessageDirection.clientToServer,rt.type=new tt.ProtocolRequestType(rt.method)})(et||(protocol_colorProvider.DocumentColorRequest=et={}));var nt;return function(rt){rt.method="textDocument/colorPresentation",rt.messageDirection=tt.MessageDirection.clientToServer,rt.type=new tt.ProtocolRequestType(rt.method)}(nt||(protocol_colorProvider.ColorPresentationRequest=nt={})),protocol_colorProvider}var protocol_foldingRange={},hasRequiredProtocol_foldingRange;function requireProtocol_foldingRange(){if(hasRequiredProtocol_foldingRange)return protocol_foldingRange;hasRequiredProtocol_foldingRange=1,Object.defineProperty(protocol_foldingRange,"__esModule",{value:!0}),protocol_foldingRange.FoldingRangeRefreshRequest=protocol_foldingRange.FoldingRangeRequest=void 0;const tt=requireMessages();var et;(function(rt){rt.method="textDocument/foldingRange",rt.messageDirection=tt.MessageDirection.clientToServer,rt.type=new tt.ProtocolRequestType(rt.method)})(et||(protocol_foldingRange.FoldingRangeRequest=et={}));var nt;return function(rt){rt.method="workspace/foldingRange/refresh",rt.messageDirection=tt.MessageDirection.serverToClient,rt.type=new tt.ProtocolRequestType0(rt.method)}(nt||(protocol_foldingRange.FoldingRangeRefreshRequest=nt={})),protocol_foldingRange}var protocol_declaration={},hasRequiredProtocol_declaration;function requireProtocol_declaration(){if(hasRequiredProtocol_declaration)return protocol_declaration;hasRequiredProtocol_declaration=1,Object.defineProperty(protocol_declaration,"__esModule",{value:!0}),protocol_declaration.DeclarationRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="textDocument/declaration",nt.messageDirection=tt.MessageDirection.clientToServer,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_declaration.DeclarationRequest=et={})),protocol_declaration}var protocol_selectionRange={},hasRequiredProtocol_selectionRange;function requireProtocol_selectionRange(){if(hasRequiredProtocol_selectionRange)return protocol_selectionRange;hasRequiredProtocol_selectionRange=1,Object.defineProperty(protocol_selectionRange,"__esModule",{value:!0}),protocol_selectionRange.SelectionRangeRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="textDocument/selectionRange",nt.messageDirection=tt.MessageDirection.clientToServer,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_selectionRange.SelectionRangeRequest=et={})),protocol_selectionRange}var protocol_progress={},hasRequiredProtocol_progress;function requireProtocol_progress(){if(hasRequiredProtocol_progress)return protocol_progress;hasRequiredProtocol_progress=1,Object.defineProperty(protocol_progress,"__esModule",{value:!0}),protocol_progress.WorkDoneProgressCancelNotification=protocol_progress.WorkDoneProgressCreateRequest=protocol_progress.WorkDoneProgress=void 0;const tt=requireMain$3(),et=requireMessages();var nt;(function(ot){ot.type=new tt.ProgressType;function en(tn){return tn===ot.type}ot.is=en})(nt||(protocol_progress.WorkDoneProgress=nt={}));var rt;(function(ot){ot.method="window/workDoneProgress/create",ot.messageDirection=et.MessageDirection.serverToClient,ot.type=new et.ProtocolRequestType(ot.method)})(rt||(protocol_progress.WorkDoneProgressCreateRequest=rt={}));var st;return function(ot){ot.method="window/workDoneProgress/cancel",ot.messageDirection=et.MessageDirection.clientToServer,ot.type=new et.ProtocolNotificationType(ot.method)}(st||(protocol_progress.WorkDoneProgressCancelNotification=st={})),protocol_progress}var protocol_callHierarchy={},hasRequiredProtocol_callHierarchy;function requireProtocol_callHierarchy(){if(hasRequiredProtocol_callHierarchy)return protocol_callHierarchy;hasRequiredProtocol_callHierarchy=1,Object.defineProperty(protocol_callHierarchy,"__esModule",{value:!0}),protocol_callHierarchy.CallHierarchyOutgoingCallsRequest=protocol_callHierarchy.CallHierarchyIncomingCallsRequest=protocol_callHierarchy.CallHierarchyPrepareRequest=void 0;const tt=requireMessages();var et;(function(st){st.method="textDocument/prepareCallHierarchy",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)})(et||(protocol_callHierarchy.CallHierarchyPrepareRequest=et={}));var nt;(function(st){st.method="callHierarchy/incomingCalls",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)})(nt||(protocol_callHierarchy.CallHierarchyIncomingCallsRequest=nt={}));var rt;return function(st){st.method="callHierarchy/outgoingCalls",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)}(rt||(protocol_callHierarchy.CallHierarchyOutgoingCallsRequest=rt={})),protocol_callHierarchy}var protocol_semanticTokens={},hasRequiredProtocol_semanticTokens;function requireProtocol_semanticTokens(){if(hasRequiredProtocol_semanticTokens)return protocol_semanticTokens;hasRequiredProtocol_semanticTokens=1,Object.defineProperty(protocol_semanticTokens,"__esModule",{value:!0}),protocol_semanticTokens.SemanticTokensRefreshRequest=protocol_semanticTokens.SemanticTokensRangeRequest=protocol_semanticTokens.SemanticTokensDeltaRequest=protocol_semanticTokens.SemanticTokensRequest=protocol_semanticTokens.SemanticTokensRegistrationType=protocol_semanticTokens.TokenFormat=void 0;const tt=requireMessages();var et;(function(tn){tn.Relative="relative"})(et||(protocol_semanticTokens.TokenFormat=et={}));var nt;(function(tn){tn.method="textDocument/semanticTokens",tn.type=new tt.RegistrationType(tn.method)})(nt||(protocol_semanticTokens.SemanticTokensRegistrationType=nt={}));var rt;(function(tn){tn.method="textDocument/semanticTokens/full",tn.messageDirection=tt.MessageDirection.clientToServer,tn.type=new tt.ProtocolRequestType(tn.method),tn.registrationMethod=nt.method})(rt||(protocol_semanticTokens.SemanticTokensRequest=rt={}));var st;(function(tn){tn.method="textDocument/semanticTokens/full/delta",tn.messageDirection=tt.MessageDirection.clientToServer,tn.type=new tt.ProtocolRequestType(tn.method),tn.registrationMethod=nt.method})(st||(protocol_semanticTokens.SemanticTokensDeltaRequest=st={}));var ot;(function(tn){tn.method="textDocument/semanticTokens/range",tn.messageDirection=tt.MessageDirection.clientToServer,tn.type=new tt.ProtocolRequestType(tn.method),tn.registrationMethod=nt.method})(ot||(protocol_semanticTokens.SemanticTokensRangeRequest=ot={}));var en;return function(tn){tn.method="workspace/semanticTokens/refresh",tn.messageDirection=tt.MessageDirection.serverToClient,tn.type=new tt.ProtocolRequestType0(tn.method)}(en||(protocol_semanticTokens.SemanticTokensRefreshRequest=en={})),protocol_semanticTokens}var protocol_showDocument={},hasRequiredProtocol_showDocument;function requireProtocol_showDocument(){if(hasRequiredProtocol_showDocument)return protocol_showDocument;hasRequiredProtocol_showDocument=1,Object.defineProperty(protocol_showDocument,"__esModule",{value:!0}),protocol_showDocument.ShowDocumentRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="window/showDocument",nt.messageDirection=tt.MessageDirection.serverToClient,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_showDocument.ShowDocumentRequest=et={})),protocol_showDocument}var protocol_linkedEditingRange={},hasRequiredProtocol_linkedEditingRange;function requireProtocol_linkedEditingRange(){if(hasRequiredProtocol_linkedEditingRange)return protocol_linkedEditingRange;hasRequiredProtocol_linkedEditingRange=1,Object.defineProperty(protocol_linkedEditingRange,"__esModule",{value:!0}),protocol_linkedEditingRange.LinkedEditingRangeRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="textDocument/linkedEditingRange",nt.messageDirection=tt.MessageDirection.clientToServer,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_linkedEditingRange.LinkedEditingRangeRequest=et={})),protocol_linkedEditingRange}var protocol_fileOperations={},hasRequiredProtocol_fileOperations;function requireProtocol_fileOperations(){if(hasRequiredProtocol_fileOperations)return protocol_fileOperations;hasRequiredProtocol_fileOperations=1,Object.defineProperty(protocol_fileOperations,"__esModule",{value:!0}),protocol_fileOperations.WillDeleteFilesRequest=protocol_fileOperations.DidDeleteFilesNotification=protocol_fileOperations.DidRenameFilesNotification=protocol_fileOperations.WillRenameFilesRequest=protocol_fileOperations.DidCreateFilesNotification=protocol_fileOperations.WillCreateFilesRequest=protocol_fileOperations.FileOperationPatternKind=void 0;const tt=requireMessages();var et;(function(nn){nn.file="file",nn.folder="folder"})(et||(protocol_fileOperations.FileOperationPatternKind=et={}));var nt;(function(nn){nn.method="workspace/willCreateFiles",nn.messageDirection=tt.MessageDirection.clientToServer,nn.type=new tt.ProtocolRequestType(nn.method)})(nt||(protocol_fileOperations.WillCreateFilesRequest=nt={}));var rt;(function(nn){nn.method="workspace/didCreateFiles",nn.messageDirection=tt.MessageDirection.clientToServer,nn.type=new tt.ProtocolNotificationType(nn.method)})(rt||(protocol_fileOperations.DidCreateFilesNotification=rt={}));var st;(function(nn){nn.method="workspace/willRenameFiles",nn.messageDirection=tt.MessageDirection.clientToServer,nn.type=new tt.ProtocolRequestType(nn.method)})(st||(protocol_fileOperations.WillRenameFilesRequest=st={}));var ot;(function(nn){nn.method="workspace/didRenameFiles",nn.messageDirection=tt.MessageDirection.clientToServer,nn.type=new tt.ProtocolNotificationType(nn.method)})(ot||(protocol_fileOperations.DidRenameFilesNotification=ot={}));var en;(function(nn){nn.method="workspace/didDeleteFiles",nn.messageDirection=tt.MessageDirection.clientToServer,nn.type=new tt.ProtocolNotificationType(nn.method)})(en||(protocol_fileOperations.DidDeleteFilesNotification=en={}));var tn;return function(nn){nn.method="workspace/willDeleteFiles",nn.messageDirection=tt.MessageDirection.clientToServer,nn.type=new tt.ProtocolRequestType(nn.method)}(tn||(protocol_fileOperations.WillDeleteFilesRequest=tn={})),protocol_fileOperations}var protocol_moniker={},hasRequiredProtocol_moniker;function requireProtocol_moniker(){if(hasRequiredProtocol_moniker)return protocol_moniker;hasRequiredProtocol_moniker=1,Object.defineProperty(protocol_moniker,"__esModule",{value:!0}),protocol_moniker.MonikerRequest=protocol_moniker.MonikerKind=protocol_moniker.UniquenessLevel=void 0;const tt=requireMessages();var et;(function(st){st.document="document",st.project="project",st.group="group",st.scheme="scheme",st.global="global"})(et||(protocol_moniker.UniquenessLevel=et={}));var nt;(function(st){st.$import="import",st.$export="export",st.local="local"})(nt||(protocol_moniker.MonikerKind=nt={}));var rt;return function(st){st.method="textDocument/moniker",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)}(rt||(protocol_moniker.MonikerRequest=rt={})),protocol_moniker}var protocol_typeHierarchy={},hasRequiredProtocol_typeHierarchy;function requireProtocol_typeHierarchy(){if(hasRequiredProtocol_typeHierarchy)return protocol_typeHierarchy;hasRequiredProtocol_typeHierarchy=1,Object.defineProperty(protocol_typeHierarchy,"__esModule",{value:!0}),protocol_typeHierarchy.TypeHierarchySubtypesRequest=protocol_typeHierarchy.TypeHierarchySupertypesRequest=protocol_typeHierarchy.TypeHierarchyPrepareRequest=void 0;const tt=requireMessages();var et;(function(st){st.method="textDocument/prepareTypeHierarchy",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)})(et||(protocol_typeHierarchy.TypeHierarchyPrepareRequest=et={}));var nt;(function(st){st.method="typeHierarchy/supertypes",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)})(nt||(protocol_typeHierarchy.TypeHierarchySupertypesRequest=nt={}));var rt;return function(st){st.method="typeHierarchy/subtypes",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)}(rt||(protocol_typeHierarchy.TypeHierarchySubtypesRequest=rt={})),protocol_typeHierarchy}var protocol_inlineValue={},hasRequiredProtocol_inlineValue;function requireProtocol_inlineValue(){if(hasRequiredProtocol_inlineValue)return protocol_inlineValue;hasRequiredProtocol_inlineValue=1,Object.defineProperty(protocol_inlineValue,"__esModule",{value:!0}),protocol_inlineValue.InlineValueRefreshRequest=protocol_inlineValue.InlineValueRequest=void 0;const tt=requireMessages();var et;(function(rt){rt.method="textDocument/inlineValue",rt.messageDirection=tt.MessageDirection.clientToServer,rt.type=new tt.ProtocolRequestType(rt.method)})(et||(protocol_inlineValue.InlineValueRequest=et={}));var nt;return function(rt){rt.method="workspace/inlineValue/refresh",rt.messageDirection=tt.MessageDirection.serverToClient,rt.type=new tt.ProtocolRequestType0(rt.method)}(nt||(protocol_inlineValue.InlineValueRefreshRequest=nt={})),protocol_inlineValue}var protocol_inlayHint={},hasRequiredProtocol_inlayHint;function requireProtocol_inlayHint(){if(hasRequiredProtocol_inlayHint)return protocol_inlayHint;hasRequiredProtocol_inlayHint=1,Object.defineProperty(protocol_inlayHint,"__esModule",{value:!0}),protocol_inlayHint.InlayHintRefreshRequest=protocol_inlayHint.InlayHintResolveRequest=protocol_inlayHint.InlayHintRequest=void 0;const tt=requireMessages();var et;(function(st){st.method="textDocument/inlayHint",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)})(et||(protocol_inlayHint.InlayHintRequest=et={}));var nt;(function(st){st.method="inlayHint/resolve",st.messageDirection=tt.MessageDirection.clientToServer,st.type=new tt.ProtocolRequestType(st.method)})(nt||(protocol_inlayHint.InlayHintResolveRequest=nt={}));var rt;return function(st){st.method="workspace/inlayHint/refresh",st.messageDirection=tt.MessageDirection.serverToClient,st.type=new tt.ProtocolRequestType0(st.method)}(rt||(protocol_inlayHint.InlayHintRefreshRequest=rt={})),protocol_inlayHint}var protocol_diagnostic={},hasRequiredProtocol_diagnostic;function requireProtocol_diagnostic(){if(hasRequiredProtocol_diagnostic)return protocol_diagnostic;hasRequiredProtocol_diagnostic=1,Object.defineProperty(protocol_diagnostic,"__esModule",{value:!0}),protocol_diagnostic.DiagnosticRefreshRequest=protocol_diagnostic.WorkspaceDiagnosticRequest=protocol_diagnostic.DocumentDiagnosticRequest=protocol_diagnostic.DocumentDiagnosticReportKind=protocol_diagnostic.DiagnosticServerCancellationData=void 0;const tt=requireMain$3(),et=requireIs(),nt=requireMessages();var rt;(function(nn){function rn(sn){const an=sn;return an&&et.boolean(an.retriggerRequest)}nn.is=rn})(rt||(protocol_diagnostic.DiagnosticServerCancellationData=rt={}));var st;(function(nn){nn.Full="full",nn.Unchanged="unchanged"})(st||(protocol_diagnostic.DocumentDiagnosticReportKind=st={}));var ot;(function(nn){nn.method="textDocument/diagnostic",nn.messageDirection=nt.MessageDirection.clientToServer,nn.type=new nt.ProtocolRequestType(nn.method),nn.partialResult=new tt.ProgressType})(ot||(protocol_diagnostic.DocumentDiagnosticRequest=ot={}));var en;(function(nn){nn.method="workspace/diagnostic",nn.messageDirection=nt.MessageDirection.clientToServer,nn.type=new nt.ProtocolRequestType(nn.method),nn.partialResult=new tt.ProgressType})(en||(protocol_diagnostic.WorkspaceDiagnosticRequest=en={}));var tn;return function(nn){nn.method="workspace/diagnostic/refresh",nn.messageDirection=nt.MessageDirection.serverToClient,nn.type=new nt.ProtocolRequestType0(nn.method)}(tn||(protocol_diagnostic.DiagnosticRefreshRequest=tn={})),protocol_diagnostic}var protocol_notebook={},hasRequiredProtocol_notebook;function requireProtocol_notebook(){if(hasRequiredProtocol_notebook)return protocol_notebook;hasRequiredProtocol_notebook=1,Object.defineProperty(protocol_notebook,"__esModule",{value:!0}),protocol_notebook.DidCloseNotebookDocumentNotification=protocol_notebook.DidSaveNotebookDocumentNotification=protocol_notebook.DidChangeNotebookDocumentNotification=protocol_notebook.NotebookCellArrayChange=protocol_notebook.DidOpenNotebookDocumentNotification=protocol_notebook.NotebookDocumentSyncRegistrationType=protocol_notebook.NotebookDocument=protocol_notebook.NotebookCell=protocol_notebook.ExecutionSummary=protocol_notebook.NotebookCellKind=void 0;const tt=requireMain$2(),et=requireIs(),nt=requireMessages();var rt;(function(cn){cn.Markup=1,cn.Code=2;function ln(fn){return fn===1||fn===2}cn.is=ln})(rt||(protocol_notebook.NotebookCellKind=rt={}));var st;(function(cn){function ln(pn,vn){const bn={executionOrder:pn};return(vn===!0||vn===!1)&&(bn.success=vn),bn}cn.create=ln;function fn(pn){const vn=pn;return et.objectLiteral(vn)&&tt.uinteger.is(vn.executionOrder)&&(vn.success===void 0||et.boolean(vn.success))}cn.is=fn;function gn(pn,vn){return pn===vn?!0:pn==null||vn===null||vn===void 0?!1:pn.executionOrder===vn.executionOrder&&pn.success===vn.success}cn.equals=gn})(st||(protocol_notebook.ExecutionSummary=st={}));var ot;(function(cn){function ln(vn,bn){return{kind:vn,document:bn}}cn.create=ln;function fn(vn){const bn=vn;return et.objectLiteral(bn)&&rt.is(bn.kind)&&tt.DocumentUri.is(bn.document)&&(bn.metadata===void 0||et.objectLiteral(bn.metadata))}cn.is=fn;function gn(vn,bn){const $n=new Set;return vn.document!==bn.document&&$n.add("document"),vn.kind!==bn.kind&&$n.add("kind"),vn.executionSummary!==bn.executionSummary&&$n.add("executionSummary"),(vn.metadata!==void 0||bn.metadata!==void 0)&&!pn(vn.metadata,bn.metadata)&&$n.add("metadata"),(vn.executionSummary!==void 0||bn.executionSummary!==void 0)&&!st.equals(vn.executionSummary,bn.executionSummary)&&$n.add("executionSummary"),$n}cn.diff=gn;function pn(vn,bn){if(vn===bn)return!0;if(vn==null||bn===null||bn===void 0||typeof vn!=typeof bn||typeof vn!="object")return!1;const $n=Array.isArray(vn),Tn=Array.isArray(bn);if($n!==Tn)return!1;if($n&&Tn){if(vn.length!==bn.length)return!1;for(let An=0;An<vn.length;An++)if(!pn(vn[An],bn[An]))return!1}if(et.objectLiteral(vn)&&et.objectLiteral(bn)){const An=Object.keys(vn),On=Object.keys(bn);if(An.length!==On.length||(An.sort(),On.sort(),!pn(An,On)))return!1;for(let Bn=0;Bn<An.length;Bn++){const Un=An[Bn];if(!pn(vn[Un],bn[Un]))return!1}}return!0}})(ot||(protocol_notebook.NotebookCell=ot={}));var en;(function(cn){function ln(gn,pn,vn,bn){return{uri:gn,notebookType:pn,version:vn,cells:bn}}cn.create=ln;function fn(gn){const pn=gn;return et.objectLiteral(pn)&&et.string(pn.uri)&&tt.integer.is(pn.version)&&et.typedArray(pn.cells,ot.is)}cn.is=fn})(en||(protocol_notebook.NotebookDocument=en={}));var tn;(function(cn){cn.method="notebookDocument/sync",cn.messageDirection=nt.MessageDirection.clientToServer,cn.type=new nt.RegistrationType(cn.method)})(tn||(protocol_notebook.NotebookDocumentSyncRegistrationType=tn={}));var nn;(function(cn){cn.method="notebookDocument/didOpen",cn.messageDirection=nt.MessageDirection.clientToServer,cn.type=new nt.ProtocolNotificationType(cn.method),cn.registrationMethod=tn.method})(nn||(protocol_notebook.DidOpenNotebookDocumentNotification=nn={}));var rn;(function(cn){function ln(gn){const pn=gn;return et.objectLiteral(pn)&&tt.uinteger.is(pn.start)&&tt.uinteger.is(pn.deleteCount)&&(pn.cells===void 0||et.typedArray(pn.cells,ot.is))}cn.is=ln;function fn(gn,pn,vn){const bn={start:gn,deleteCount:pn};return vn!==void 0&&(bn.cells=vn),bn}cn.create=fn})(rn||(protocol_notebook.NotebookCellArrayChange=rn={}));var sn;(function(cn){cn.method="notebookDocument/didChange",cn.messageDirection=nt.MessageDirection.clientToServer,cn.type=new nt.ProtocolNotificationType(cn.method),cn.registrationMethod=tn.method})(sn||(protocol_notebook.DidChangeNotebookDocumentNotification=sn={}));var an;(function(cn){cn.method="notebookDocument/didSave",cn.messageDirection=nt.MessageDirection.clientToServer,cn.type=new nt.ProtocolNotificationType(cn.method),cn.registrationMethod=tn.method})(an||(protocol_notebook.DidSaveNotebookDocumentNotification=an={}));var on;return function(cn){cn.method="notebookDocument/didClose",cn.messageDirection=nt.MessageDirection.clientToServer,cn.type=new nt.ProtocolNotificationType(cn.method),cn.registrationMethod=tn.method}(on||(protocol_notebook.DidCloseNotebookDocumentNotification=on={})),protocol_notebook}var protocol_inlineCompletion={},hasRequiredProtocol_inlineCompletion;function requireProtocol_inlineCompletion(){if(hasRequiredProtocol_inlineCompletion)return protocol_inlineCompletion;hasRequiredProtocol_inlineCompletion=1,Object.defineProperty(protocol_inlineCompletion,"__esModule",{value:!0}),protocol_inlineCompletion.InlineCompletionRequest=void 0;const tt=requireMessages();var et;return function(nt){nt.method="textDocument/inlineCompletion",nt.messageDirection=tt.MessageDirection.clientToServer,nt.type=new tt.ProtocolRequestType(nt.method)}(et||(protocol_inlineCompletion.InlineCompletionRequest=et={})),protocol_inlineCompletion}var hasRequiredProtocol;function requireProtocol(){return hasRequiredProtocol||(hasRequiredProtocol=1,function(tt){Object.defineProperty(tt,"__esModule",{value:!0}),tt.WorkspaceSymbolRequest=tt.CodeActionResolveRequest=tt.CodeActionRequest=tt.DocumentSymbolRequest=tt.DocumentHighlightRequest=tt.ReferencesRequest=tt.DefinitionRequest=tt.SignatureHelpRequest=tt.SignatureHelpTriggerKind=tt.HoverRequest=tt.CompletionResolveRequest=tt.CompletionRequest=tt.CompletionTriggerKind=tt.PublishDiagnosticsNotification=tt.WatchKind=tt.RelativePattern=tt.FileChangeType=tt.DidChangeWatchedFilesNotification=tt.WillSaveTextDocumentWaitUntilRequest=tt.WillSaveTextDocumentNotification=tt.TextDocumentSaveReason=tt.DidSaveTextDocumentNotification=tt.DidCloseTextDocumentNotification=tt.DidChangeTextDocumentNotification=tt.TextDocumentContentChangeEvent=tt.DidOpenTextDocumentNotification=tt.TextDocumentSyncKind=tt.TelemetryEventNotification=tt.LogMessageNotification=tt.ShowMessageRequest=tt.ShowMessageNotification=tt.MessageType=tt.DidChangeConfigurationNotification=tt.ExitNotification=tt.ShutdownRequest=tt.InitializedNotification=tt.InitializeErrorCodes=tt.InitializeRequest=tt.WorkDoneProgressOptions=tt.TextDocumentRegistrationOptions=tt.StaticRegistrationOptions=tt.PositionEncodingKind=tt.FailureHandlingKind=tt.ResourceOperationKind=tt.UnregistrationRequest=tt.RegistrationRequest=tt.DocumentSelector=tt.NotebookCellTextDocumentFilter=tt.NotebookDocumentFilter=tt.TextDocumentFilter=void 0,tt.MonikerRequest=tt.MonikerKind=tt.UniquenessLevel=tt.WillDeleteFilesRequest=tt.DidDeleteFilesNotification=tt.WillRenameFilesRequest=tt.DidRenameFilesNotification=tt.WillCreateFilesRequest=tt.DidCreateFilesNotification=tt.FileOperationPatternKind=tt.LinkedEditingRangeRequest=tt.ShowDocumentRequest=tt.SemanticTokensRegistrationType=tt.SemanticTokensRefreshRequest=tt.SemanticTokensRangeRequest=tt.SemanticTokensDeltaRequest=tt.SemanticTokensRequest=tt.TokenFormat=tt.CallHierarchyPrepareRequest=tt.CallHierarchyOutgoingCallsRequest=tt.CallHierarchyIncomingCallsRequest=tt.WorkDoneProgressCancelNotification=tt.WorkDoneProgressCreateRequest=tt.WorkDoneProgress=tt.SelectionRangeRequest=tt.DeclarationRequest=tt.FoldingRangeRefreshRequest=tt.FoldingRangeRequest=tt.ColorPresentationRequest=tt.DocumentColorRequest=tt.ConfigurationRequest=tt.DidChangeWorkspaceFoldersNotification=tt.WorkspaceFoldersRequest=tt.TypeDefinitionRequest=tt.ImplementationRequest=tt.ApplyWorkspaceEditRequest=tt.ExecuteCommandRequest=tt.PrepareRenameRequest=tt.RenameRequest=tt.PrepareSupportDefaultBehavior=tt.DocumentOnTypeFormattingRequest=tt.DocumentRangesFormattingRequest=tt.DocumentRangeFormattingRequest=tt.DocumentFormattingRequest=tt.DocumentLinkResolveRequest=tt.DocumentLinkRequest=tt.CodeLensRefreshRequest=tt.CodeLensResolveRequest=tt.CodeLensRequest=tt.WorkspaceSymbolResolveRequest=void 0,tt.InlineCompletionRequest=tt.DidCloseNotebookDocumentNotification=tt.DidSaveNotebookDocumentNotification=tt.DidChangeNotebookDocumentNotification=tt.NotebookCellArrayChange=tt.DidOpenNotebookDocumentNotification=tt.NotebookDocumentSyncRegistrationType=tt.NotebookDocument=tt.NotebookCell=tt.ExecutionSummary=tt.NotebookCellKind=tt.DiagnosticRefreshRequest=tt.WorkspaceDiagnosticRequest=tt.DocumentDiagnosticRequest=tt.DocumentDiagnosticReportKind=tt.DiagnosticServerCancellationData=tt.InlayHintRefreshRequest=tt.InlayHintResolveRequest=tt.InlayHintRequest=tt.InlineValueRefreshRequest=tt.InlineValueRequest=tt.TypeHierarchySupertypesRequest=tt.TypeHierarchySubtypesRequest=tt.TypeHierarchyPrepareRequest=void 0;const et=requireMessages(),nt=requireMain$2(),rt=requireIs(),st=requireProtocol_implementation();Object.defineProperty(tt,"ImplementationRequest",{enumerable:!0,get:function(){return st.ImplementationRequest}});const ot=requireProtocol_typeDefinition();Object.defineProperty(tt,"TypeDefinitionRequest",{enumerable:!0,get:function(){return ot.TypeDefinitionRequest}});const en=requireProtocol_workspaceFolder();Object.defineProperty(tt,"WorkspaceFoldersRequest",{enumerable:!0,get:function(){return en.WorkspaceFoldersRequest}}),Object.defineProperty(tt,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:function(){return en.DidChangeWorkspaceFoldersNotification}});const tn=requireProtocol_configuration();Object.defineProperty(tt,"ConfigurationRequest",{enumerable:!0,get:function(){return tn.ConfigurationRequest}});const nn=requireProtocol_colorProvider();Object.defineProperty(tt,"DocumentColorRequest",{enumerable:!0,get:function(){return nn.DocumentColorRequest}}),Object.defineProperty(tt,"ColorPresentationRequest",{enumerable:!0,get:function(){return nn.ColorPresentationRequest}});const rn=requireProtocol_foldingRange();Object.defineProperty(tt,"FoldingRangeRequest",{enumerable:!0,get:function(){return rn.FoldingRangeRequest}}),Object.defineProperty(tt,"FoldingRangeRefreshRequest",{enumerable:!0,get:function(){return rn.FoldingRangeRefreshRequest}});const sn=requireProtocol_declaration();Object.defineProperty(tt,"DeclarationRequest",{enumerable:!0,get:function(){return sn.DeclarationRequest}});const an=requireProtocol_selectionRange();Object.defineProperty(tt,"SelectionRangeRequest",{enumerable:!0,get:function(){return an.SelectionRangeRequest}});const on=requireProtocol_progress();Object.defineProperty(tt,"WorkDoneProgress",{enumerable:!0,get:function(){return on.WorkDoneProgress}}),Object.defineProperty(tt,"WorkDoneProgressCreateRequest",{enumerable:!0,get:function(){return on.WorkDoneProgressCreateRequest}}),Object.defineProperty(tt,"WorkDoneProgressCancelNotification",{enumerable:!0,get:function(){return on.WorkDoneProgressCancelNotification}});const cn=requireProtocol_callHierarchy();Object.defineProperty(tt,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:function(){return cn.CallHierarchyIncomingCallsRequest}}),Object.defineProperty(tt,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:function(){return cn.CallHierarchyOutgoingCallsRequest}}),Object.defineProperty(tt,"CallHierarchyPrepareRequest",{enumerable:!0,get:function(){return cn.CallHierarchyPrepareRequest}});const ln=requireProtocol_semanticTokens();Object.defineProperty(tt,"TokenFormat",{enumerable:!0,get:function(){return ln.TokenFormat}}),Object.defineProperty(tt,"SemanticTokensRequest",{enumerable:!0,get:function(){return ln.SemanticTokensRequest}}),Object.defineProperty(tt,"SemanticTokensDeltaRequest",{enumerable:!0,get:function(){return ln.SemanticTokensDeltaRequest}}),Object.defineProperty(tt,"SemanticTokensRangeRequest",{enumerable:!0,get:function(){return ln.SemanticTokensRangeRequest}}),Object.defineProperty(tt,"SemanticTokensRefreshRequest",{enumerable:!0,get:function(){return ln.SemanticTokensRefreshRequest}}),Object.defineProperty(tt,"SemanticTokensRegistrationType",{enumerable:!0,get:function(){return ln.SemanticTokensRegistrationType}});const fn=requireProtocol_showDocument();Object.defineProperty(tt,"ShowDocumentRequest",{enumerable:!0,get:function(){return fn.ShowDocumentRequest}});const gn=requireProtocol_linkedEditingRange();Object.defineProperty(tt,"LinkedEditingRangeRequest",{enumerable:!0,get:function(){return gn.LinkedEditingRangeRequest}});const pn=requireProtocol_fileOperations();Object.defineProperty(tt,"FileOperationPatternKind",{enumerable:!0,get:function(){return pn.FileOperationPatternKind}}),Object.defineProperty(tt,"DidCreateFilesNotification",{enumerable:!0,get:function(){return pn.DidCreateFilesNotification}}),Object.defineProperty(tt,"WillCreateFilesRequest",{enumerable:!0,get:function(){return pn.WillCreateFilesRequest}}),Object.defineProperty(tt,"DidRenameFilesNotification",{enumerable:!0,get:function(){return pn.DidRenameFilesNotification}}),Object.defineProperty(tt,"WillRenameFilesRequest",{enumerable:!0,get:function(){return pn.WillRenameFilesRequest}}),Object.defineProperty(tt,"DidDeleteFilesNotification",{enumerable:!0,get:function(){return pn.DidDeleteFilesNotification}}),Object.defineProperty(tt,"WillDeleteFilesRequest",{enumerable:!0,get:function(){return pn.WillDeleteFilesRequest}});const vn=requireProtocol_moniker();Object.defineProperty(tt,"UniquenessLevel",{enumerable:!0,get:function(){return vn.UniquenessLevel}}),Object.defineProperty(tt,"MonikerKind",{enumerable:!0,get:function(){return vn.MonikerKind}}),Object.defineProperty(tt,"MonikerRequest",{enumerable:!0,get:function(){return vn.MonikerRequest}});const bn=requireProtocol_typeHierarchy();Object.defineProperty(tt,"TypeHierarchyPrepareRequest",{enumerable:!0,get:function(){return bn.TypeHierarchyPrepareRequest}}),Object.defineProperty(tt,"TypeHierarchySubtypesRequest",{enumerable:!0,get:function(){return bn.TypeHierarchySubtypesRequest}}),Object.defineProperty(tt,"TypeHierarchySupertypesRequest",{enumerable:!0,get:function(){return bn.TypeHierarchySupertypesRequest}});const $n=requireProtocol_inlineValue();Object.defineProperty(tt,"InlineValueRequest",{enumerable:!0,get:function(){return $n.InlineValueRequest}}),Object.defineProperty(tt,"InlineValueRefreshRequest",{enumerable:!0,get:function(){return $n.InlineValueRefreshRequest}});const Tn=requireProtocol_inlayHint();Object.defineProperty(tt,"InlayHintRequest",{enumerable:!0,get:function(){return Tn.InlayHintRequest}}),Object.defineProperty(tt,"InlayHintResolveRequest",{enumerable:!0,get:function(){return Tn.InlayHintResolveRequest}}),Object.defineProperty(tt,"InlayHintRefreshRequest",{enumerable:!0,get:function(){return Tn.InlayHintRefreshRequest}});const An=requireProtocol_diagnostic();Object.defineProperty(tt,"DiagnosticServerCancellationData",{enumerable:!0,get:function(){return An.DiagnosticServerCancellationData}}),Object.defineProperty(tt,"DocumentDiagnosticReportKind",{enumerable:!0,get:function(){return An.DocumentDiagnosticReportKind}}),Object.defineProperty(tt,"DocumentDiagnosticRequest",{enumerable:!0,get:function(){return An.DocumentDiagnosticRequest}}),Object.defineProperty(tt,"WorkspaceDiagnosticRequest",{enumerable:!0,get:function(){return An.WorkspaceDiagnosticRequest}}),Object.defineProperty(tt,"DiagnosticRefreshRequest",{enumerable:!0,get:function(){return An.DiagnosticRefreshRequest}});const On=requireProtocol_notebook();Object.defineProperty(tt,"NotebookCellKind",{enumerable:!0,get:function(){return On.NotebookCellKind}}),Object.defineProperty(tt,"ExecutionSummary",{enumerable:!0,get:function(){return On.ExecutionSummary}}),Object.defineProperty(tt,"NotebookCell",{enumerable:!0,get:function(){return On.NotebookCell}}),Object.defineProperty(tt,"NotebookDocument",{enumerable:!0,get:function(){return On.NotebookDocument}}),Object.defineProperty(tt,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:function(){return On.NotebookDocumentSyncRegistrationType}}),Object.defineProperty(tt,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:function(){return On.DidOpenNotebookDocumentNotification}}),Object.defineProperty(tt,"NotebookCellArrayChange",{enumerable:!0,get:function(){return On.NotebookCellArrayChange}}),Object.defineProperty(tt,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:function(){return On.DidChangeNotebookDocumentNotification}}),Object.defineProperty(tt,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:function(){return On.DidSaveNotebookDocumentNotification}}),Object.defineProperty(tt,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:function(){return On.DidCloseNotebookDocumentNotification}});const Bn=requireProtocol_inlineCompletion();Object.defineProperty(tt,"InlineCompletionRequest",{enumerable:!0,get:function(){return Bn.InlineCompletionRequest}});var Un;(function(un){function wn(dn){const Sn=dn;return rt.string(Sn)||rt.string(Sn.language)||rt.string(Sn.scheme)||rt.string(Sn.pattern)}un.is=wn})(Un||(tt.TextDocumentFilter=Un={}));var Yn;(function(un){function wn(dn){const Sn=dn;return rt.objectLiteral(Sn)&&(rt.string(Sn.notebookType)||rt.string(Sn.scheme)||rt.string(Sn.pattern))}un.is=wn})(Yn||(tt.NotebookDocumentFilter=Yn={}));var xn;(function(un){function wn(dn){const Sn=dn;return rt.objectLiteral(Sn)&&(rt.string(Sn.notebook)||Yn.is(Sn.notebook))&&(Sn.language===void 0||rt.string(Sn.language))}un.is=wn})(xn||(tt.NotebookCellTextDocumentFilter=xn={}));var Rn;(function(un){function wn(dn){if(!Array.isArray(dn))return!1;for(let Sn of dn)if(!rt.string(Sn)&&!Un.is(Sn)&&!xn.is(Sn))return!1;return!0}un.is=wn})(Rn||(tt.DocumentSelector=Rn={}));var yn;(function(un){un.method="client/registerCapability",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolRequestType(un.method)})(yn||(tt.RegistrationRequest=yn={}));var Cn;(function(un){un.method="client/unregisterCapability",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolRequestType(un.method)})(Cn||(tt.UnregistrationRequest=Cn={}));var Fn;(function(un){un.Create="create",un.Rename="rename",un.Delete="delete"})(Fn||(tt.ResourceOperationKind=Fn={}));var Mn;(function(un){un.Abort="abort",un.Transactional="transactional",un.TextOnlyTransactional="textOnlyTransactional",un.Undo="undo"})(Mn||(tt.FailureHandlingKind=Mn={}));var zn;(function(un){un.UTF8="utf-8",un.UTF16="utf-16",un.UTF32="utf-32"})(zn||(tt.PositionEncodingKind=zn={}));var wr;(function(un){function wn(dn){const Sn=dn;return Sn&&rt.string(Sn.id)&&Sn.id.length>0}un.hasId=wn})(wr||(tt.StaticRegistrationOptions=wr={}));var Hn;(function(un){function wn(dn){const Sn=dn;return Sn&&(Sn.documentSelector===null||Rn.is(Sn.documentSelector))}un.is=wn})(Hn||(tt.TextDocumentRegistrationOptions=Hn={}));var kn;(function(un){function wn(Sn){const mn=Sn;return rt.objectLiteral(mn)&&(mn.workDoneProgress===void 0||rt.boolean(mn.workDoneProgress))}un.is=wn;function dn(Sn){const mn=Sn;return mn&&rt.boolean(mn.workDoneProgress)}un.hasWorkDoneProgress=dn})(kn||(tt.WorkDoneProgressOptions=kn={}));var pr;(function(un){un.method="initialize",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(pr||(tt.InitializeRequest=pr={}));var br;(function(un){un.unknownProtocolVersion=1})(br||(tt.InitializeErrorCodes=br={}));var Ir;(function(un){un.method="initialized",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})(Ir||(tt.InitializedNotification=Ir={}));var Ln;(function(un){un.method="shutdown",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType0(un.method)})(Ln||(tt.ShutdownRequest=Ln={}));var qn;(function(un){un.method="exit",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType0(un.method)})(qn||(tt.ExitNotification=qn={}));var Tr;(function(un){un.method="workspace/didChangeConfiguration",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})(Tr||(tt.DidChangeConfigurationNotification=Tr={}));var Jn;(function(un){un.Error=1,un.Warning=2,un.Info=3,un.Log=4,un.Debug=5})(Jn||(tt.MessageType=Jn={}));var yr;(function(un){un.method="window/showMessage",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolNotificationType(un.method)})(yr||(tt.ShowMessageNotification=yr={}));var Rr;(function(un){un.method="window/showMessageRequest",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolRequestType(un.method)})(Rr||(tt.ShowMessageRequest=Rr={}));var Qn;(function(un){un.method="window/logMessage",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolNotificationType(un.method)})(Qn||(tt.LogMessageNotification=Qn={}));var _n;(function(un){un.method="telemetry/event",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolNotificationType(un.method)})(_n||(tt.TelemetryEventNotification=_n={}));var Nn;(function(un){un.None=0,un.Full=1,un.Incremental=2})(Nn||(tt.TextDocumentSyncKind=Nn={}));var fr;(function(un){un.method="textDocument/didOpen",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})(fr||(tt.DidOpenTextDocumentNotification=fr={}));var Dn;(function(un){function wn(Sn){let mn=Sn;return mn!=null&&typeof mn.text=="string"&&mn.range!==void 0&&(mn.rangeLength===void 0||typeof mn.rangeLength=="number")}un.isIncremental=wn;function dn(Sn){let mn=Sn;return mn!=null&&typeof mn.text=="string"&&mn.range===void 0&&mn.rangeLength===void 0}un.isFull=dn})(Dn||(tt.TextDocumentContentChangeEvent=Dn={}));var Zn;(function(un){un.method="textDocument/didChange",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})(Zn||(tt.DidChangeTextDocumentNotification=Zn={}));var Ar;(function(un){un.method="textDocument/didClose",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})(Ar||(tt.DidCloseTextDocumentNotification=Ar={}));var Nr;(function(un){un.method="textDocument/didSave",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})(Nr||(tt.DidSaveTextDocumentNotification=Nr={}));var Xn;(function(un){un.Manual=1,un.AfterDelay=2,un.FocusOut=3})(Xn||(tt.TextDocumentSaveReason=Xn={}));var $r;(function(un){un.method="textDocument/willSave",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})($r||(tt.WillSaveTextDocumentNotification=$r={}));var Kn;(function(un){un.method="textDocument/willSaveWaitUntil",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Kn||(tt.WillSaveTextDocumentWaitUntilRequest=Kn={}));var vr;(function(un){un.method="workspace/didChangeWatchedFiles",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolNotificationType(un.method)})(vr||(tt.DidChangeWatchedFilesNotification=vr={}));var Sr;(function(un){un.Created=1,un.Changed=2,un.Deleted=3})(Sr||(tt.FileChangeType=Sr={}));var Or;(function(un){function wn(dn){const Sn=dn;return rt.objectLiteral(Sn)&&(nt.URI.is(Sn.baseUri)||nt.WorkspaceFolder.is(Sn.baseUri))&&rt.string(Sn.pattern)}un.is=wn})(Or||(tt.RelativePattern=Or={}));var Cr;(function(un){un.Create=1,un.Change=2,un.Delete=4})(Cr||(tt.WatchKind=Cr={}));var Mr;(function(un){un.method="textDocument/publishDiagnostics",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolNotificationType(un.method)})(Mr||(tt.PublishDiagnosticsNotification=Mr={}));var Fr;(function(un){un.Invoked=1,un.TriggerCharacter=2,un.TriggerForIncompleteCompletions=3})(Fr||(tt.CompletionTriggerKind=Fr={}));var Gr;(function(un){un.method="textDocument/completion",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Gr||(tt.CompletionRequest=Gr={}));var Gn;(function(un){un.method="completionItem/resolve",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Gn||(tt.CompletionResolveRequest=Gn={}));var jn;(function(un){un.method="textDocument/hover",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(jn||(tt.HoverRequest=jn={}));var hr;(function(un){un.Invoked=1,un.TriggerCharacter=2,un.ContentChange=3})(hr||(tt.SignatureHelpTriggerKind=hr={}));var qr;(function(un){un.method="textDocument/signatureHelp",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(qr||(tt.SignatureHelpRequest=qr={}));var zr;(function(un){un.method="textDocument/definition",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(zr||(tt.DefinitionRequest=zr={}));var Hr;(function(un){un.method="textDocument/references",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Hr||(tt.ReferencesRequest=Hr={}));var Yr;(function(un){un.method="textDocument/documentHighlight",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Yr||(tt.DocumentHighlightRequest=Yr={}));var Zr;(function(un){un.method="textDocument/documentSymbol",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Zr||(tt.DocumentSymbolRequest=Zr={}));var ei;(function(un){un.method="textDocument/codeAction",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(ei||(tt.CodeActionRequest=ei={}));var ti;(function(un){un.method="codeAction/resolve",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(ti||(tt.CodeActionResolveRequest=ti={}));var ni;(function(un){un.method="workspace/symbol",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(ni||(tt.WorkspaceSymbolRequest=ni={}));var Jr;(function(un){un.method="workspaceSymbol/resolve",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Jr||(tt.WorkspaceSymbolResolveRequest=Jr={}));var Qr;(function(un){un.method="textDocument/codeLens",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Qr||(tt.CodeLensRequest=Qr={}));var Br;(function(un){un.method="codeLens/resolve",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Br||(tt.CodeLensResolveRequest=Br={}));var ri;(function(un){un.method="workspace/codeLens/refresh",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolRequestType0(un.method)})(ri||(tt.CodeLensRefreshRequest=ri={}));var ii;(function(un){un.method="textDocument/documentLink",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(ii||(tt.DocumentLinkRequest=ii={}));var Kr;(function(un){un.method="documentLink/resolve",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Kr||(tt.DocumentLinkResolveRequest=Kr={}));var si;(function(un){un.method="textDocument/formatting",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(si||(tt.DocumentFormattingRequest=si={}));var Xr;(function(un){un.method="textDocument/rangeFormatting",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Xr||(tt.DocumentRangeFormattingRequest=Xr={}));var ai;(function(un){un.method="textDocument/rangesFormatting",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(ai||(tt.DocumentRangesFormattingRequest=ai={}));var Ur;(function(un){un.method="textDocument/onTypeFormatting",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Ur||(tt.DocumentOnTypeFormattingRequest=Ur={}));var Wr;(function(un){un.Identifier=1})(Wr||(tt.PrepareSupportDefaultBehavior=Wr={}));var oi;(function(un){un.method="textDocument/rename",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(oi||(tt.RenameRequest=oi={}));var Pn;(function(un){un.method="textDocument/prepareRename",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(Pn||(tt.PrepareRenameRequest=Pn={}));var hn;(function(un){un.method="workspace/executeCommand",un.messageDirection=et.MessageDirection.clientToServer,un.type=new et.ProtocolRequestType(un.method)})(hn||(tt.ExecuteCommandRequest=hn={}));var En;(function(un){un.method="workspace/applyEdit",un.messageDirection=et.MessageDirection.serverToClient,un.type=new et.ProtocolRequestType("workspace/applyEdit")})(En||(tt.ApplyWorkspaceEditRequest=En={}))}(protocol)),protocol}var connection={},hasRequiredConnection;function requireConnection(){if(hasRequiredConnection)return connection;hasRequiredConnection=1,Object.defineProperty(connection,"__esModule",{value:!0}),connection.createProtocolConnection=void 0;const tt=requireMain$3();function et(nt,rt,st,ot){return tt.ConnectionStrategy.is(ot)&&(ot={connectionStrategy:ot}),(0,tt.createMessageConnection)(nt,rt,st,ot)}return connection.createProtocolConnection=et,connection}var hasRequiredApi$1;function requireApi$1(){return hasRequiredApi$1||(hasRequiredApi$1=1,function(tt){var et=api$1&&api$1.__createBinding||(Object.create?function(ot,en,tn,nn){nn===void 0&&(nn=tn);var rn=Object.getOwnPropertyDescriptor(en,tn);(!rn||("get"in rn?!en.__esModule:rn.writable||rn.configurable))&&(rn={enumerable:!0,get:function(){return en[tn]}}),Object.defineProperty(ot,nn,rn)}:function(ot,en,tn,nn){nn===void 0&&(nn=tn),ot[nn]=en[tn]}),nt=api$1&&api$1.__exportStar||function(ot,en){for(var tn in ot)tn!=="default"&&!Object.prototype.hasOwnProperty.call(en,tn)&&et(en,ot,tn)};Object.defineProperty(tt,"__esModule",{value:!0}),tt.LSPErrorCodes=tt.createProtocolConnection=void 0,nt(requireMain$3(),tt),nt(requireMain$2(),tt),nt(requireMessages(),tt),nt(requireProtocol(),tt);var rt=requireConnection();Object.defineProperty(tt,"createProtocolConnection",{enumerable:!0,get:function(){return rt.createProtocolConnection}});var st;(function(ot){ot.lspReservedErrorRangeStart=-32899,ot.RequestFailed=-32803,ot.ServerCancelled=-32802,ot.ContentModified=-32801,ot.RequestCancelled=-32800,ot.lspReservedErrorRangeEnd=-32800})(st||(tt.LSPErrorCodes=st={}))}(api$1)),api$1}var hasRequiredMain$1;function requireMain$1(){return hasRequiredMain$1||(hasRequiredMain$1=1,function(tt){var et=main$2&&main$2.__createBinding||(Object.create?function(ot,en,tn,nn){nn===void 0&&(nn=tn);var rn=Object.getOwnPropertyDescriptor(en,tn);(!rn||("get"in rn?!en.__esModule:rn.writable||rn.configurable))&&(rn={enumerable:!0,get:function(){return en[tn]}}),Object.defineProperty(ot,nn,rn)}:function(ot,en,tn,nn){nn===void 0&&(nn=tn),ot[nn]=en[tn]}),nt=main$2&&main$2.__exportStar||function(ot,en){for(var tn in ot)tn!=="default"&&!Object.prototype.hasOwnProperty.call(en,tn)&&et(en,ot,tn)};Object.defineProperty(tt,"__esModule",{value:!0}),tt.createProtocolConnection=void 0;const rt=requireNode$2();nt(requireNode$2(),tt),nt(requireApi$1(),tt);function st(ot,en,tn,nn){return(0,rt.createMessageConnection)(ot,en,tn,nn)}tt.createProtocolConnection=st}(main$2)),main$2}var uuid={},hasRequiredUuid;function requireUuid(){if(hasRequiredUuid)return uuid;hasRequiredUuid=1,Object.defineProperty(uuid,"__esModule",{value:!0}),uuid.generateUuid=uuid.parse=uuid.isUUID=uuid.v4=uuid.empty=void 0;class tt{constructor(nn){this._value=nn}asHex(){return this._value}equals(nn){return this.asHex()===nn.asHex()}}class et extends tt{static _oneOf(nn){return nn[Math.floor(nn.length*Math.random())]}static _randomHex(){return et._oneOf(et._chars)}constructor(){super([et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),"-",et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),"-","4",et._randomHex(),et._randomHex(),et._randomHex(),"-",et._oneOf(et._timeHighBits),et._randomHex(),et._randomHex(),et._randomHex(),"-",et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex(),et._randomHex()].join(""))}}et._chars=["0","1","2","3","4","5","6","6","7","8","9","a","b","c","d","e","f"],et._timeHighBits=["8","9","a","b"],uuid.empty=new tt("00000000-0000-0000-0000-000000000000");function nt(){return new et}uuid.v4=nt;const rt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function st(tn){return rt.test(tn)}uuid.isUUID=st;function ot(tn){if(!st(tn))throw new Error("invalid uuid");return new tt(tn)}uuid.parse=ot;function en(){return nt().asHex()}return uuid.generateUuid=en,uuid}var progress={},hasRequiredProgress;function requireProgress(){if(hasRequiredProgress)return progress;hasRequiredProgress=1,Object.defineProperty(progress,"__esModule",{value:!0}),progress.attachPartialResult=progress.ProgressFeature=progress.attachWorkDone=void 0;const tt=requireMain$1(),et=requireUuid();class nt{constructor(on,cn){this._connection=on,this._token=cn,nt.Instances.set(this._token,this)}begin(on,cn,ln,fn){let gn={kind:"begin",title:on,percentage:cn,message:ln,cancellable:fn};this._connection.sendProgress(tt.WorkDoneProgress.type,this._token,gn)}report(on,cn){let ln={kind:"report"};typeof on=="number"?(ln.percentage=on,cn!==void 0&&(ln.message=cn)):ln.message=on,this._connection.sendProgress(tt.WorkDoneProgress.type,this._token,ln)}done(){nt.Instances.delete(this._token),this._connection.sendProgress(tt.WorkDoneProgress.type,this._token,{kind:"end"})}}nt.Instances=new Map;class rt extends nt{constructor(on,cn){super(on,cn),this._source=new tt.CancellationTokenSource}get token(){return this._source.token}done(){this._source.dispose(),super.done()}cancel(){this._source.cancel()}}class st{constructor(){}begin(){}report(){}done(){}}class ot extends st{constructor(){super(),this._source=new tt.CancellationTokenSource}get token(){return this._source.token}done(){this._source.dispose()}cancel(){this._source.cancel()}}function en(an,on){if(on===void 0||on.workDoneToken===void 0)return new st;const cn=on.workDoneToken;return delete on.workDoneToken,new nt(an,cn)}progress.attachWorkDone=en;const tn=an=>class extends an{constructor(){super(),this._progressSupported=!1}initialize(on){super.initialize(on),on?.window?.workDoneProgress===!0&&(this._progressSupported=!0,this.connection.onNotification(tt.WorkDoneProgressCancelNotification.type,cn=>{let ln=nt.Instances.get(cn.token);(ln instanceof rt||ln instanceof ot)&&ln.cancel()}))}attachWorkDoneProgress(on){return on===void 0?new st:new nt(this.connection,on)}createWorkDoneProgress(){if(this._progressSupported){const on=(0,et.generateUuid)();return this.connection.sendRequest(tt.WorkDoneProgressCreateRequest.type,{token:on}).then(()=>new rt(this.connection,on))}else return Promise.resolve(new ot)}};progress.ProgressFeature=tn;var nn;(function(an){an.type=new tt.ProgressType})(nn||(nn={}));class rn{constructor(on,cn){this._connection=on,this._token=cn}report(on){this._connection.sendProgress(nn.type,this._token,on)}}function sn(an,on){if(on===void 0||on.partialResultToken===void 0)return;const cn=on.partialResultToken;return delete on.partialResultToken,new rn(an,cn)}return progress.attachPartialResult=sn,progress}var configuration={},hasRequiredConfiguration;function requireConfiguration(){if(hasRequiredConfiguration)return configuration;hasRequiredConfiguration=1,Object.defineProperty(configuration,"__esModule",{value:!0}),configuration.ConfigurationFeature=void 0;const tt=requireMain$1(),et=requireIs$1(),nt=rt=>class extends rt{getConfiguration(st){return st?et.string(st)?this._getConfiguration({section:st}):this._getConfiguration(st):this._getConfiguration({})}_getConfiguration(st){let ot={items:Array.isArray(st)?st:[st]};return this.connection.sendRequest(tt.ConfigurationRequest.type,ot).then(en=>Array.isArray(en)?Array.isArray(st)?en:en[0]:Array.isArray(st)?[]:null)}};return configuration.ConfigurationFeature=nt,configuration}var workspaceFolder={},hasRequiredWorkspaceFolder;function requireWorkspaceFolder(){if(hasRequiredWorkspaceFolder)return workspaceFolder;hasRequiredWorkspaceFolder=1,Object.defineProperty(workspaceFolder,"__esModule",{value:!0}),workspaceFolder.WorkspaceFoldersFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{constructor(){super(),this._notificationIsAutoRegistered=!1}initialize(rt){super.initialize(rt);let st=rt.workspace;st&&st.workspaceFolders&&(this._onDidChangeWorkspaceFolders=new tt.Emitter,this.connection.onNotification(tt.DidChangeWorkspaceFoldersNotification.type,ot=>{this._onDidChangeWorkspaceFolders.fire(ot.event)}))}fillServerCapabilities(rt){super.fillServerCapabilities(rt);const st=rt.workspace?.workspaceFolders?.changeNotifications;this._notificationIsAutoRegistered=st===!0||typeof st=="string"}getWorkspaceFolders(){return this.connection.sendRequest(tt.WorkspaceFoldersRequest.type)}get onDidChangeWorkspaceFolders(){if(!this._onDidChangeWorkspaceFolders)throw new Error("Client doesn't support sending workspace folder change events.");return!this._notificationIsAutoRegistered&&!this._unregistration&&(this._unregistration=this.connection.client.register(tt.DidChangeWorkspaceFoldersNotification.type)),this._onDidChangeWorkspaceFolders.event}};return workspaceFolder.WorkspaceFoldersFeature=et,workspaceFolder}var callHierarchy={},hasRequiredCallHierarchy;function requireCallHierarchy(){if(hasRequiredCallHierarchy)return callHierarchy;hasRequiredCallHierarchy=1,Object.defineProperty(callHierarchy,"__esModule",{value:!0}),callHierarchy.CallHierarchyFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get callHierarchy(){return{onPrepare:rt=>this.connection.onRequest(tt.CallHierarchyPrepareRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st),void 0)),onIncomingCalls:rt=>{const st=tt.CallHierarchyIncomingCallsRequest.type;return this.connection.onRequest(st,(ot,en)=>rt(ot,en,this.attachWorkDoneProgress(ot),this.attachPartialResultProgress(st,ot)))},onOutgoingCalls:rt=>{const st=tt.CallHierarchyOutgoingCallsRequest.type;return this.connection.onRequest(st,(ot,en)=>rt(ot,en,this.attachWorkDoneProgress(ot),this.attachPartialResultProgress(st,ot)))}}}};return callHierarchy.CallHierarchyFeature=et,callHierarchy}var semanticTokens={},hasRequiredSemanticTokens;function requireSemanticTokens(){if(hasRequiredSemanticTokens)return semanticTokens;hasRequiredSemanticTokens=1,Object.defineProperty(semanticTokens,"__esModule",{value:!0}),semanticTokens.SemanticTokensBuilder=semanticTokens.SemanticTokensDiff=semanticTokens.SemanticTokensFeature=void 0;const tt=requireMain$1(),et=st=>class extends st{get semanticTokens(){return{refresh:()=>this.connection.sendRequest(tt.SemanticTokensRefreshRequest.type),on:ot=>{const en=tt.SemanticTokensRequest.type;return this.connection.onRequest(en,(tn,nn)=>ot(tn,nn,this.attachWorkDoneProgress(tn),this.attachPartialResultProgress(en,tn)))},onDelta:ot=>{const en=tt.SemanticTokensDeltaRequest.type;return this.connection.onRequest(en,(tn,nn)=>ot(tn,nn,this.attachWorkDoneProgress(tn),this.attachPartialResultProgress(en,tn)))},onRange:ot=>{const en=tt.SemanticTokensRangeRequest.type;return this.connection.onRequest(en,(tn,nn)=>ot(tn,nn,this.attachWorkDoneProgress(tn),this.attachPartialResultProgress(en,tn)))}}}};semanticTokens.SemanticTokensFeature=et;class nt{constructor(ot,en){this.originalSequence=ot,this.modifiedSequence=en}computeDiff(){const ot=this.originalSequence.length,en=this.modifiedSequence.length;let tn=0;for(;tn<en&&tn<ot&&this.originalSequence[tn]===this.modifiedSequence[tn];)tn++;if(tn<en&&tn<ot){let nn=ot-1,rn=en-1;for(;nn>=tn&&rn>=tn&&this.originalSequence[nn]===this.modifiedSequence[rn];)nn--,rn--;(nn<tn||rn<tn)&&(nn++,rn++);const sn=nn-tn+1,an=this.modifiedSequence.slice(tn,rn+1);return an.length===1&&an[0]===this.originalSequence[nn]?[{start:tn,deleteCount:sn-1}]:[{start:tn,deleteCount:sn,data:an}]}else return tn<en?[{start:tn,deleteCount:0,data:this.modifiedSequence.slice(tn)}]:tn<ot?[{start:tn,deleteCount:ot-tn}]:[]}}semanticTokens.SemanticTokensDiff=nt;class rt{constructor(){this._prevData=void 0,this.initialize()}initialize(){this._id=Date.now(),this._prevLine=0,this._prevChar=0,this._data=[],this._dataLen=0}push(ot,en,tn,nn,rn){let sn=ot,an=en;this._dataLen>0&&(sn-=this._prevLine,sn===0&&(an-=this._prevChar)),this._data[this._dataLen++]=sn,this._data[this._dataLen++]=an,this._data[this._dataLen++]=tn,this._data[this._dataLen++]=nn,this._data[this._dataLen++]=rn,this._prevLine=ot,this._prevChar=en}get id(){return this._id.toString()}previousResult(ot){this.id===ot&&(this._prevData=this._data),this.initialize()}build(){return this._prevData=void 0,{resultId:this.id,data:this._data}}canBuildEdits(){return this._prevData!==void 0}buildEdits(){return this._prevData!==void 0?{resultId:this.id,edits:new nt(this._prevData,this._data).computeDiff()}:this.build()}}return semanticTokens.SemanticTokensBuilder=rt,semanticTokens}var showDocument={},hasRequiredShowDocument;function requireShowDocument(){if(hasRequiredShowDocument)return showDocument;hasRequiredShowDocument=1,Object.defineProperty(showDocument,"__esModule",{value:!0}),showDocument.ShowDocumentFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{showDocument(rt){return this.connection.sendRequest(tt.ShowDocumentRequest.type,rt)}};return showDocument.ShowDocumentFeature=et,showDocument}var fileOperations={},hasRequiredFileOperations;function requireFileOperations(){if(hasRequiredFileOperations)return fileOperations;hasRequiredFileOperations=1,Object.defineProperty(fileOperations,"__esModule",{value:!0}),fileOperations.FileOperationsFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{onDidCreateFiles(rt){return this.connection.onNotification(tt.DidCreateFilesNotification.type,st=>{rt(st)})}onDidRenameFiles(rt){return this.connection.onNotification(tt.DidRenameFilesNotification.type,st=>{rt(st)})}onDidDeleteFiles(rt){return this.connection.onNotification(tt.DidDeleteFilesNotification.type,st=>{rt(st)})}onWillCreateFiles(rt){return this.connection.onRequest(tt.WillCreateFilesRequest.type,(st,ot)=>rt(st,ot))}onWillRenameFiles(rt){return this.connection.onRequest(tt.WillRenameFilesRequest.type,(st,ot)=>rt(st,ot))}onWillDeleteFiles(rt){return this.connection.onRequest(tt.WillDeleteFilesRequest.type,(st,ot)=>rt(st,ot))}};return fileOperations.FileOperationsFeature=et,fileOperations}var linkedEditingRange={},hasRequiredLinkedEditingRange;function requireLinkedEditingRange(){if(hasRequiredLinkedEditingRange)return linkedEditingRange;hasRequiredLinkedEditingRange=1,Object.defineProperty(linkedEditingRange,"__esModule",{value:!0}),linkedEditingRange.LinkedEditingRangeFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{onLinkedEditingRange(rt){return this.connection.onRequest(tt.LinkedEditingRangeRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st),void 0))}};return linkedEditingRange.LinkedEditingRangeFeature=et,linkedEditingRange}var typeHierarchy={},hasRequiredTypeHierarchy;function requireTypeHierarchy(){if(hasRequiredTypeHierarchy)return typeHierarchy;hasRequiredTypeHierarchy=1,Object.defineProperty(typeHierarchy,"__esModule",{value:!0}),typeHierarchy.TypeHierarchyFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get typeHierarchy(){return{onPrepare:rt=>this.connection.onRequest(tt.TypeHierarchyPrepareRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st),void 0)),onSupertypes:rt=>{const st=tt.TypeHierarchySupertypesRequest.type;return this.connection.onRequest(st,(ot,en)=>rt(ot,en,this.attachWorkDoneProgress(ot),this.attachPartialResultProgress(st,ot)))},onSubtypes:rt=>{const st=tt.TypeHierarchySubtypesRequest.type;return this.connection.onRequest(st,(ot,en)=>rt(ot,en,this.attachWorkDoneProgress(ot),this.attachPartialResultProgress(st,ot)))}}}};return typeHierarchy.TypeHierarchyFeature=et,typeHierarchy}var inlineValue={},hasRequiredInlineValue;function requireInlineValue(){if(hasRequiredInlineValue)return inlineValue;hasRequiredInlineValue=1,Object.defineProperty(inlineValue,"__esModule",{value:!0}),inlineValue.InlineValueFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get inlineValue(){return{refresh:()=>this.connection.sendRequest(tt.InlineValueRefreshRequest.type),on:rt=>this.connection.onRequest(tt.InlineValueRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st)))}}};return inlineValue.InlineValueFeature=et,inlineValue}var foldingRange={},hasRequiredFoldingRange;function requireFoldingRange(){if(hasRequiredFoldingRange)return foldingRange;hasRequiredFoldingRange=1,Object.defineProperty(foldingRange,"__esModule",{value:!0}),foldingRange.FoldingRangeFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get foldingRange(){return{refresh:()=>this.connection.sendRequest(tt.FoldingRangeRefreshRequest.type),on:rt=>{const st=tt.FoldingRangeRequest.type;return this.connection.onRequest(st,(ot,en)=>rt(ot,en,this.attachWorkDoneProgress(ot),this.attachPartialResultProgress(st,ot)))}}}};return foldingRange.FoldingRangeFeature=et,foldingRange}var inlayHint={},hasRequiredInlayHint;function requireInlayHint(){if(hasRequiredInlayHint)return inlayHint;hasRequiredInlayHint=1,Object.defineProperty(inlayHint,"__esModule",{value:!0}),inlayHint.InlayHintFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get inlayHint(){return{refresh:()=>this.connection.sendRequest(tt.InlayHintRefreshRequest.type),on:rt=>this.connection.onRequest(tt.InlayHintRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st))),resolve:rt=>this.connection.onRequest(tt.InlayHintResolveRequest.type,(st,ot)=>rt(st,ot))}}};return inlayHint.InlayHintFeature=et,inlayHint}var diagnostic={},hasRequiredDiagnostic;function requireDiagnostic(){if(hasRequiredDiagnostic)return diagnostic;hasRequiredDiagnostic=1,Object.defineProperty(diagnostic,"__esModule",{value:!0}),diagnostic.DiagnosticFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get diagnostics(){return{refresh:()=>this.connection.sendRequest(tt.DiagnosticRefreshRequest.type),on:rt=>this.connection.onRequest(tt.DocumentDiagnosticRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st),this.attachPartialResultProgress(tt.DocumentDiagnosticRequest.partialResult,st))),onWorkspace:rt=>this.connection.onRequest(tt.WorkspaceDiagnosticRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st),this.attachPartialResultProgress(tt.WorkspaceDiagnosticRequest.partialResult,st)))}}};return diagnostic.DiagnosticFeature=et,diagnostic}var notebook={},textDocuments={},hasRequiredTextDocuments;function requireTextDocuments(){if(hasRequiredTextDocuments)return textDocuments;hasRequiredTextDocuments=1,Object.defineProperty(textDocuments,"__esModule",{value:!0}),textDocuments.TextDocuments=void 0;const tt=requireMain$1();class et{constructor(rt){this._configuration=rt,this._syncedDocuments=new Map,this._onDidChangeContent=new tt.Emitter,this._onDidOpen=new tt.Emitter,this._onDidClose=new tt.Emitter,this._onDidSave=new tt.Emitter,this._onWillSave=new tt.Emitter}get onDidOpen(){return this._onDidOpen.event}get onDidChangeContent(){return this._onDidChangeContent.event}get onWillSave(){return this._onWillSave.event}onWillSaveWaitUntil(rt){this._willSaveWaitUntil=rt}get onDidSave(){return this._onDidSave.event}get onDidClose(){return this._onDidClose.event}get(rt){return this._syncedDocuments.get(rt)}all(){return Array.from(this._syncedDocuments.values())}keys(){return Array.from(this._syncedDocuments.keys())}listen(rt){rt.__textDocumentSync=tt.TextDocumentSyncKind.Incremental;const st=[];return st.push(rt.onDidOpenTextDocument(ot=>{const en=ot.textDocument,tn=this._configuration.create(en.uri,en.languageId,en.version,en.text);this._syncedDocuments.set(en.uri,tn);const nn=Object.freeze({document:tn});this._onDidOpen.fire(nn),this._onDidChangeContent.fire(nn)})),st.push(rt.onDidChangeTextDocument(ot=>{const en=ot.textDocument,tn=ot.contentChanges;if(tn.length===0)return;const{version:nn}=en;if(nn==null)throw new Error(`Received document change event for ${en.uri} without valid version identifier`);let rn=this._syncedDocuments.get(en.uri);rn!==void 0&&(rn=this._configuration.update(rn,tn,nn),this._syncedDocuments.set(en.uri,rn),this._onDidChangeContent.fire(Object.freeze({document:rn})))})),st.push(rt.onDidCloseTextDocument(ot=>{let en=this._syncedDocuments.get(ot.textDocument.uri);en!==void 0&&(this._syncedDocuments.delete(ot.textDocument.uri),this._onDidClose.fire(Object.freeze({document:en})))})),st.push(rt.onWillSaveTextDocument(ot=>{let en=this._syncedDocuments.get(ot.textDocument.uri);en!==void 0&&this._onWillSave.fire(Object.freeze({document:en,reason:ot.reason}))})),st.push(rt.onWillSaveTextDocumentWaitUntil((ot,en)=>{let tn=this._syncedDocuments.get(ot.textDocument.uri);return tn!==void 0&&this._willSaveWaitUntil?this._willSaveWaitUntil(Object.freeze({document:tn,reason:ot.reason}),en):[]})),st.push(rt.onDidSaveTextDocument(ot=>{let en=this._syncedDocuments.get(ot.textDocument.uri);en!==void 0&&this._onDidSave.fire(Object.freeze({document:en}))})),tt.Disposable.create(()=>{st.forEach(ot=>ot.dispose())})}}return textDocuments.TextDocuments=et,textDocuments}var hasRequiredNotebook;function requireNotebook(){if(hasRequiredNotebook)return notebook;hasRequiredNotebook=1,Object.defineProperty(notebook,"__esModule",{value:!0}),notebook.NotebookDocuments=notebook.NotebookSyncFeature=void 0;const tt=requireMain$1(),et=requireTextDocuments(),nt=ot=>class extends ot{get synchronization(){return{onDidOpenNotebookDocument:en=>this.connection.onNotification(tt.DidOpenNotebookDocumentNotification.type,tn=>{en(tn)}),onDidChangeNotebookDocument:en=>this.connection.onNotification(tt.DidChangeNotebookDocumentNotification.type,tn=>{en(tn)}),onDidSaveNotebookDocument:en=>this.connection.onNotification(tt.DidSaveNotebookDocumentNotification.type,tn=>{en(tn)}),onDidCloseNotebookDocument:en=>this.connection.onNotification(tt.DidCloseNotebookDocumentNotification.type,tn=>{en(tn)})}}};notebook.NotebookSyncFeature=nt;class rt{onDidOpenTextDocument(en){return this.openHandler=en,tt.Disposable.create(()=>{this.openHandler=void 0})}openTextDocument(en){this.openHandler&&this.openHandler(en)}onDidChangeTextDocument(en){return this.changeHandler=en,tt.Disposable.create(()=>{this.changeHandler=en})}changeTextDocument(en){this.changeHandler&&this.changeHandler(en)}onDidCloseTextDocument(en){return this.closeHandler=en,tt.Disposable.create(()=>{this.closeHandler=void 0})}closeTextDocument(en){this.closeHandler&&this.closeHandler(en)}onWillSaveTextDocument(){return rt.NULL_DISPOSE}onWillSaveTextDocumentWaitUntil(){return rt.NULL_DISPOSE}onDidSaveTextDocument(){return rt.NULL_DISPOSE}}rt.NULL_DISPOSE=Object.freeze({dispose:()=>{}});class st{constructor(en){en instanceof et.TextDocuments?this._cellTextDocuments=en:this._cellTextDocuments=new et.TextDocuments(en),this.notebookDocuments=new Map,this.notebookCellMap=new Map,this._onDidOpen=new tt.Emitter,this._onDidChange=new tt.Emitter,this._onDidSave=new tt.Emitter,this._onDidClose=new tt.Emitter}get cellTextDocuments(){return this._cellTextDocuments}getCellTextDocument(en){return this._cellTextDocuments.get(en.document)}getNotebookDocument(en){return this.notebookDocuments.get(en)}getNotebookCell(en){const tn=this.notebookCellMap.get(en);return tn&&tn[0]}findNotebookDocumentForCell(en){const tn=typeof en=="string"?en:en.document,nn=this.notebookCellMap.get(tn);return nn&&nn[1]}get onDidOpen(){return this._onDidOpen.event}get onDidSave(){return this._onDidSave.event}get onDidChange(){return this._onDidChange.event}get onDidClose(){return this._onDidClose.event}listen(en){const tn=new rt,nn=[];return nn.push(this.cellTextDocuments.listen(tn)),nn.push(en.notebooks.synchronization.onDidOpenNotebookDocument(rn=>{this.notebookDocuments.set(rn.notebookDocument.uri,rn.notebookDocument);for(const sn of rn.cellTextDocuments)tn.openTextDocument({textDocument:sn});this.updateCellMap(rn.notebookDocument),this._onDidOpen.fire(rn.notebookDocument)})),nn.push(en.notebooks.synchronization.onDidChangeNotebookDocument(rn=>{const sn=this.notebookDocuments.get(rn.notebookDocument.uri);if(sn===void 0)return;sn.version=rn.notebookDocument.version;const an=sn.metadata;let on=!1;const cn=rn.change;cn.metadata!==void 0&&(on=!0,sn.metadata=cn.metadata);const ln=[],fn=[],gn=[],pn=[];if(cn.cells!==void 0){const An=cn.cells;if(An.structure!==void 0){const On=An.structure.array;if(sn.cells.splice(On.start,On.deleteCount,...On.cells!==void 0?On.cells:[]),An.structure.didOpen!==void 0)for(const Bn of An.structure.didOpen)tn.openTextDocument({textDocument:Bn}),ln.push(Bn.uri);if(An.structure.didClose)for(const Bn of An.structure.didClose)tn.closeTextDocument({textDocument:Bn}),fn.push(Bn.uri)}if(An.data!==void 0){const On=new Map(An.data.map(Bn=>[Bn.document,Bn]));for(let Bn=0;Bn<=sn.cells.length;Bn++){const Un=On.get(sn.cells[Bn].document);if(Un!==void 0){const Yn=sn.cells.splice(Bn,1,Un);if(gn.push({old:Yn[0],new:Un}),On.delete(Un.document),On.size===0)break}}}if(An.textContent!==void 0)for(const On of An.textContent)tn.changeTextDocument({textDocument:On.document,contentChanges:On.changes}),pn.push(On.document.uri)}this.updateCellMap(sn);const vn={notebookDocument:sn};on&&(vn.metadata={old:an,new:sn.metadata});const bn=[];for(const An of ln)bn.push(this.getNotebookCell(An));const $n=[];for(const An of fn)$n.push(this.getNotebookCell(An));const Tn=[];for(const An of pn)Tn.push(this.getNotebookCell(An));(bn.length>0||$n.length>0||gn.length>0||Tn.length>0)&&(vn.cells={added:bn,removed:$n,changed:{data:gn,textContent:Tn}}),(vn.metadata!==void 0||vn.cells!==void 0)&&this._onDidChange.fire(vn)})),nn.push(en.notebooks.synchronization.onDidSaveNotebookDocument(rn=>{const sn=this.notebookDocuments.get(rn.notebookDocument.uri);sn!==void 0&&this._onDidSave.fire(sn)})),nn.push(en.notebooks.synchronization.onDidCloseNotebookDocument(rn=>{const sn=this.notebookDocuments.get(rn.notebookDocument.uri);if(sn!==void 0){this._onDidClose.fire(sn);for(const an of rn.cellTextDocuments)tn.closeTextDocument({textDocument:an});this.notebookDocuments.delete(rn.notebookDocument.uri);for(const an of sn.cells)this.notebookCellMap.delete(an.document)}})),tt.Disposable.create(()=>{nn.forEach(rn=>rn.dispose())})}updateCellMap(en){for(const tn of en.cells)this.notebookCellMap.set(tn.document,[tn,en])}}return notebook.NotebookDocuments=st,notebook}var moniker={},hasRequiredMoniker;function requireMoniker(){if(hasRequiredMoniker)return moniker;hasRequiredMoniker=1,Object.defineProperty(moniker,"__esModule",{value:!0}),moniker.MonikerFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get moniker(){return{on:rt=>{const st=tt.MonikerRequest.type;return this.connection.onRequest(st,(ot,en)=>rt(ot,en,this.attachWorkDoneProgress(ot),this.attachPartialResultProgress(st,ot)))}}}};return moniker.MonikerFeature=et,moniker}var hasRequiredServer;function requireServer(){if(hasRequiredServer)return server;hasRequiredServer=1,Object.defineProperty(server,"__esModule",{value:!0}),server.createConnection=server.combineFeatures=server.combineNotebooksFeatures=server.combineLanguagesFeatures=server.combineWorkspaceFeatures=server.combineWindowFeatures=server.combineClientFeatures=server.combineTracerFeatures=server.combineTelemetryFeatures=server.combineConsoleFeatures=server._NotebooksImpl=server._LanguagesImpl=server.BulkUnregistration=server.BulkRegistration=server.ErrorMessageTracker=void 0;const tt=requireMain$1(),et=requireIs$1(),nt=requireUuid(),rt=requireProgress(),st=requireConfiguration(),ot=requireWorkspaceFolder(),en=requireCallHierarchy(),tn=requireSemanticTokens(),nn=requireShowDocument(),rn=requireFileOperations(),sn=requireLinkedEditingRange(),an=requireTypeHierarchy(),on=requireInlineValue(),cn=requireFoldingRange(),ln=requireInlayHint(),fn=requireDiagnostic(),gn=requireNotebook(),pn=requireMoniker();function vn(Qn){if(Qn!==null)return Qn}class bn{constructor(){this._messages=Object.create(null)}add(_n){let Nn=this._messages[_n];Nn||(Nn=0),Nn++,this._messages[_n]=Nn}sendErrors(_n){Object.keys(this._messages).forEach(Nn=>{_n.window.showErrorMessage(Nn)})}}server.ErrorMessageTracker=bn;class $n{constructor(){}rawAttach(_n){this._rawConnection=_n}attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}fillServerCapabilities(_n){}initialize(_n){}error(_n){this.send(tt.MessageType.Error,_n)}warn(_n){this.send(tt.MessageType.Warning,_n)}info(_n){this.send(tt.MessageType.Info,_n)}log(_n){this.send(tt.MessageType.Log,_n)}debug(_n){this.send(tt.MessageType.Debug,_n)}send(_n,Nn){this._rawConnection&&this._rawConnection.sendNotification(tt.LogMessageNotification.type,{type:_n,message:Nn}).catch(()=>{(0,tt.RAL)().console.error("Sending log message failed")})}}class Tn{constructor(){}attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}initialize(_n){}fillServerCapabilities(_n){}showErrorMessage(_n,...Nn){let fr={type:tt.MessageType.Error,message:_n,actions:Nn};return this.connection.sendRequest(tt.ShowMessageRequest.type,fr).then(vn)}showWarningMessage(_n,...Nn){let fr={type:tt.MessageType.Warning,message:_n,actions:Nn};return this.connection.sendRequest(tt.ShowMessageRequest.type,fr).then(vn)}showInformationMessage(_n,...Nn){let fr={type:tt.MessageType.Info,message:_n,actions:Nn};return this.connection.sendRequest(tt.ShowMessageRequest.type,fr).then(vn)}}const An=(0,nn.ShowDocumentFeature)((0,rt.ProgressFeature)(Tn));var On;(function(Qn){function _n(){return new Bn}Qn.create=_n})(On||(server.BulkRegistration=On={}));class Bn{constructor(){this._registrations=[],this._registered=new Set}add(_n,Nn){const fr=et.string(_n)?_n:_n.method;if(this._registered.has(fr))throw new Error(`${fr} is already added to this registration`);const Dn=nt.generateUuid();this._registrations.push({id:Dn,method:fr,registerOptions:Nn||{}}),this._registered.add(fr)}asRegistrationParams(){return{registrations:this._registrations}}}var Un;(function(Qn){function _n(){return new Yn(void 0,[])}Qn.create=_n})(Un||(server.BulkUnregistration=Un={}));class Yn{constructor(_n,Nn){this._connection=_n,this._unregistrations=new Map,Nn.forEach(fr=>{this._unregistrations.set(fr.method,fr)})}get isAttached(){return!!this._connection}attach(_n){this._connection=_n}add(_n){this._unregistrations.set(_n.method,_n)}dispose(){let _n=[];for(let fr of this._unregistrations.values())_n.push(fr);let Nn={unregisterations:_n};this._connection.sendRequest(tt.UnregistrationRequest.type,Nn).catch(()=>{this._connection.console.info("Bulk unregistration failed.")})}disposeSingle(_n){const Nn=et.string(_n)?_n:_n.method,fr=this._unregistrations.get(Nn);if(!fr)return!1;let Dn={unregisterations:[fr]};return this._connection.sendRequest(tt.UnregistrationRequest.type,Dn).then(()=>{this._unregistrations.delete(Nn)},Zn=>{this._connection.console.info(`Un-registering request handler for ${fr.id} failed.`)}),!0}}class xn{attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}initialize(_n){}fillServerCapabilities(_n){}register(_n,Nn,fr){return _n instanceof Bn?this.registerMany(_n):_n instanceof Yn?this.registerSingle1(_n,Nn,fr):this.registerSingle2(_n,Nn)}registerSingle1(_n,Nn,fr){const Dn=et.string(Nn)?Nn:Nn.method,Zn=nt.generateUuid();let Ar={registrations:[{id:Zn,method:Dn,registerOptions:fr||{}}]};return _n.isAttached||_n.attach(this.connection),this.connection.sendRequest(tt.RegistrationRequest.type,Ar).then(Nr=>(_n.add({id:Zn,method:Dn}),_n),Nr=>(this.connection.console.info(`Registering request handler for ${Dn} failed.`),Promise.reject(Nr)))}registerSingle2(_n,Nn){const fr=et.string(_n)?_n:_n.method,Dn=nt.generateUuid();let Zn={registrations:[{id:Dn,method:fr,registerOptions:Nn||{}}]};return this.connection.sendRequest(tt.RegistrationRequest.type,Zn).then(Ar=>tt.Disposable.create(()=>{this.unregisterSingle(Dn,fr).catch(()=>{this.connection.console.info(`Un-registering capability with id ${Dn} failed.`)})}),Ar=>(this.connection.console.info(`Registering request handler for ${fr} failed.`),Promise.reject(Ar)))}unregisterSingle(_n,Nn){let fr={unregisterations:[{id:_n,method:Nn}]};return this.connection.sendRequest(tt.UnregistrationRequest.type,fr).catch(()=>{this.connection.console.info(`Un-registering request handler for ${_n} failed.`)})}registerMany(_n){let Nn=_n.asRegistrationParams();return this.connection.sendRequest(tt.RegistrationRequest.type,Nn).then(()=>new Yn(this._connection,Nn.registrations.map(fr=>({id:fr.id,method:fr.method}))),fr=>(this.connection.console.info("Bulk registration failed."),Promise.reject(fr)))}}class Rn{constructor(){}attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}initialize(_n){}fillServerCapabilities(_n){}applyEdit(_n){function Nn(Dn){return Dn&&!!Dn.edit}let fr=Nn(_n)?_n:{edit:_n};return this.connection.sendRequest(tt.ApplyWorkspaceEditRequest.type,fr)}}const yn=(0,rn.FileOperationsFeature)((0,ot.WorkspaceFoldersFeature)((0,st.ConfigurationFeature)(Rn)));class Cn{constructor(){this._trace=tt.Trace.Off}attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}initialize(_n){}fillServerCapabilities(_n){}set trace(_n){this._trace=_n}log(_n,Nn){this._trace!==tt.Trace.Off&&this.connection.sendNotification(tt.LogTraceNotification.type,{message:_n,verbose:this._trace===tt.Trace.Verbose?Nn:void 0}).catch(()=>{})}}class Fn{constructor(){}attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}initialize(_n){}fillServerCapabilities(_n){}logEvent(_n){this.connection.sendNotification(tt.TelemetryEventNotification.type,_n).catch(()=>{this.connection.console.log("Sending TelemetryEventNotification failed")})}}class Mn{constructor(){}attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}initialize(_n){}fillServerCapabilities(_n){}attachWorkDoneProgress(_n){return(0,rt.attachWorkDone)(this.connection,_n)}attachPartialResultProgress(_n,Nn){return(0,rt.attachPartialResult)(this.connection,Nn)}}server._LanguagesImpl=Mn;const zn=(0,cn.FoldingRangeFeature)((0,pn.MonikerFeature)((0,fn.DiagnosticFeature)((0,ln.InlayHintFeature)((0,on.InlineValueFeature)((0,an.TypeHierarchyFeature)((0,sn.LinkedEditingRangeFeature)((0,tn.SemanticTokensFeature)((0,en.CallHierarchyFeature)(Mn)))))))));class wr{constructor(){}attach(_n){this._connection=_n}get connection(){if(!this._connection)throw new Error("Remote is not attached to a connection yet.");return this._connection}initialize(_n){}fillServerCapabilities(_n){}attachWorkDoneProgress(_n){return(0,rt.attachWorkDone)(this.connection,_n)}attachPartialResultProgress(_n,Nn){return(0,rt.attachPartialResult)(this.connection,Nn)}}server._NotebooksImpl=wr;const Hn=(0,gn.NotebookSyncFeature)(wr);function kn(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineConsoleFeatures=kn;function pr(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineTelemetryFeatures=pr;function br(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineTracerFeatures=br;function Ir(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineClientFeatures=Ir;function Ln(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineWindowFeatures=Ln;function qn(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineWorkspaceFeatures=qn;function Tr(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineLanguagesFeatures=Tr;function Jn(Qn,_n){return function(Nn){return _n(Qn(Nn))}}server.combineNotebooksFeatures=Jn;function yr(Qn,_n){function Nn(Dn,Zn,Ar){return Dn&&Zn?Ar(Dn,Zn):Dn||Zn}return{__brand:"features",console:Nn(Qn.console,_n.console,kn),tracer:Nn(Qn.tracer,_n.tracer,br),telemetry:Nn(Qn.telemetry,_n.telemetry,pr),client:Nn(Qn.client,_n.client,Ir),window:Nn(Qn.window,_n.window,Ln),workspace:Nn(Qn.workspace,_n.workspace,qn),languages:Nn(Qn.languages,_n.languages,Tr),notebooks:Nn(Qn.notebooks,_n.notebooks,Jn)}}server.combineFeatures=yr;function Rr(Qn,_n,Nn){const fr=Nn&&Nn.console?new(Nn.console($n)):new $n,Dn=Qn(fr);fr.rawAttach(Dn);const Zn=Nn&&Nn.tracer?new(Nn.tracer(Cn)):new Cn,Ar=Nn&&Nn.telemetry?new(Nn.telemetry(Fn)):new Fn,Nr=Nn&&Nn.client?new(Nn.client(xn)):new xn,Xn=Nn&&Nn.window?new(Nn.window(An)):new An,$r=Nn&&Nn.workspace?new(Nn.workspace(yn)):new yn,Kn=Nn&&Nn.languages?new(Nn.languages(zn)):new zn,vr=Nn&&Nn.notebooks?new(Nn.notebooks(Hn)):new Hn,Sr=[fr,Zn,Ar,Nr,Xn,$r,Kn,vr];function Or(Gn){return Gn instanceof Promise?Gn:et.thenable(Gn)?new Promise((jn,hr)=>{Gn.then(qr=>jn(qr),qr=>hr(qr))}):Promise.resolve(Gn)}let Cr,Mr,Fr,Gr={listen:()=>Dn.listen(),sendRequest:(Gn,...jn)=>Dn.sendRequest(et.string(Gn)?Gn:Gn.method,...jn),onRequest:(Gn,jn)=>Dn.onRequest(Gn,jn),sendNotification:(Gn,jn)=>{const hr=et.string(Gn)?Gn:Gn.method;return Dn.sendNotification(hr,jn)},onNotification:(Gn,jn)=>Dn.onNotification(Gn,jn),onProgress:Dn.onProgress,sendProgress:Dn.sendProgress,onInitialize:Gn=>(Mr=Gn,{dispose:()=>{Mr=void 0}}),onInitialized:Gn=>Dn.onNotification(tt.InitializedNotification.type,Gn),onShutdown:Gn=>(Cr=Gn,{dispose:()=>{Cr=void 0}}),onExit:Gn=>(Fr=Gn,{dispose:()=>{Fr=void 0}}),get console(){return fr},get telemetry(){return Ar},get tracer(){return Zn},get client(){return Nr},get window(){return Xn},get workspace(){return $r},get languages(){return Kn},get notebooks(){return vr},onDidChangeConfiguration:Gn=>Dn.onNotification(tt.DidChangeConfigurationNotification.type,Gn),onDidChangeWatchedFiles:Gn=>Dn.onNotification(tt.DidChangeWatchedFilesNotification.type,Gn),__textDocumentSync:void 0,onDidOpenTextDocument:Gn=>Dn.onNotification(tt.DidOpenTextDocumentNotification.type,Gn),onDidChangeTextDocument:Gn=>Dn.onNotification(tt.DidChangeTextDocumentNotification.type,Gn),onDidCloseTextDocument:Gn=>Dn.onNotification(tt.DidCloseTextDocumentNotification.type,Gn),onWillSaveTextDocument:Gn=>Dn.onNotification(tt.WillSaveTextDocumentNotification.type,Gn),onWillSaveTextDocumentWaitUntil:Gn=>Dn.onRequest(tt.WillSaveTextDocumentWaitUntilRequest.type,Gn),onDidSaveTextDocument:Gn=>Dn.onNotification(tt.DidSaveTextDocumentNotification.type,Gn),sendDiagnostics:Gn=>Dn.sendNotification(tt.PublishDiagnosticsNotification.type,Gn),onHover:Gn=>Dn.onRequest(tt.HoverRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),void 0)),onCompletion:Gn=>Dn.onRequest(tt.CompletionRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onCompletionResolve:Gn=>Dn.onRequest(tt.CompletionResolveRequest.type,Gn),onSignatureHelp:Gn=>Dn.onRequest(tt.SignatureHelpRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),void 0)),onDeclaration:Gn=>Dn.onRequest(tt.DeclarationRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onDefinition:Gn=>Dn.onRequest(tt.DefinitionRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onTypeDefinition:Gn=>Dn.onRequest(tt.TypeDefinitionRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onImplementation:Gn=>Dn.onRequest(tt.ImplementationRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onReferences:Gn=>Dn.onRequest(tt.ReferencesRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onDocumentHighlight:Gn=>Dn.onRequest(tt.DocumentHighlightRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onDocumentSymbol:Gn=>Dn.onRequest(tt.DocumentSymbolRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onWorkspaceSymbol:Gn=>Dn.onRequest(tt.WorkspaceSymbolRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onWorkspaceSymbolResolve:Gn=>Dn.onRequest(tt.WorkspaceSymbolResolveRequest.type,Gn),onCodeAction:Gn=>Dn.onRequest(tt.CodeActionRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onCodeActionResolve:Gn=>Dn.onRequest(tt.CodeActionResolveRequest.type,(jn,hr)=>Gn(jn,hr)),onCodeLens:Gn=>Dn.onRequest(tt.CodeLensRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onCodeLensResolve:Gn=>Dn.onRequest(tt.CodeLensResolveRequest.type,(jn,hr)=>Gn(jn,hr)),onDocumentFormatting:Gn=>Dn.onRequest(tt.DocumentFormattingRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),void 0)),onDocumentRangeFormatting:Gn=>Dn.onRequest(tt.DocumentRangeFormattingRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),void 0)),onDocumentOnTypeFormatting:Gn=>Dn.onRequest(tt.DocumentOnTypeFormattingRequest.type,(jn,hr)=>Gn(jn,hr)),onRenameRequest:Gn=>Dn.onRequest(tt.RenameRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),void 0)),onPrepareRename:Gn=>Dn.onRequest(tt.PrepareRenameRequest.type,(jn,hr)=>Gn(jn,hr)),onDocumentLinks:Gn=>Dn.onRequest(tt.DocumentLinkRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onDocumentLinkResolve:Gn=>Dn.onRequest(tt.DocumentLinkResolveRequest.type,(jn,hr)=>Gn(jn,hr)),onDocumentColor:Gn=>Dn.onRequest(tt.DocumentColorRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onColorPresentation:Gn=>Dn.onRequest(tt.ColorPresentationRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onFoldingRanges:Gn=>Dn.onRequest(tt.FoldingRangeRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onSelectionRanges:Gn=>Dn.onRequest(tt.SelectionRangeRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),(0,rt.attachPartialResult)(Dn,jn))),onExecuteCommand:Gn=>Dn.onRequest(tt.ExecuteCommandRequest.type,(jn,hr)=>Gn(jn,hr,(0,rt.attachWorkDone)(Dn,jn),void 0)),dispose:()=>Dn.dispose()};for(let Gn of Sr)Gn.attach(Gr);return Dn.onRequest(tt.InitializeRequest.type,Gn=>{_n.initialize(Gn),et.string(Gn.trace)&&(Zn.trace=tt.Trace.fromString(Gn.trace));for(let jn of Sr)jn.initialize(Gn.capabilities);if(Mr){let jn=Mr(Gn,new tt.CancellationTokenSource().token,(0,rt.attachWorkDone)(Dn,Gn),void 0);return Or(jn).then(hr=>{if(hr instanceof tt.ResponseError)return hr;let qr=hr;qr||(qr={capabilities:{}});let zr=qr.capabilities;zr||(zr={},qr.capabilities=zr),zr.textDocumentSync===void 0||zr.textDocumentSync===null?zr.textDocumentSync=et.number(Gr.__textDocumentSync)?Gr.__textDocumentSync:tt.TextDocumentSyncKind.None:!et.number(zr.textDocumentSync)&&!et.number(zr.textDocumentSync.change)&&(zr.textDocumentSync.change=et.number(Gr.__textDocumentSync)?Gr.__textDocumentSync:tt.TextDocumentSyncKind.None);for(let Hr of Sr)Hr.fillServerCapabilities(zr);return qr})}else{let jn={capabilities:{textDocumentSync:tt.TextDocumentSyncKind.None}};for(let hr of Sr)hr.fillServerCapabilities(jn.capabilities);return jn}}),Dn.onRequest(tt.ShutdownRequest.type,()=>{if(_n.shutdownReceived=!0,Cr)return Cr(new tt.CancellationTokenSource().token)}),Dn.onNotification(tt.ExitNotification.type,()=>{try{Fr&&Fr()}finally{_n.shutdownReceived?_n.exit(0):_n.exit(1)}}),Dn.onNotification(tt.SetTraceNotification.type,Gn=>{Zn.trace=tt.Trace.fromString(Gn.value)}),Gr}return server.createConnection=Rr,server}var files={},hasRequiredFiles;function requireFiles(){if(hasRequiredFiles)return files;hasRequiredFiles=1,Object.defineProperty(files,"__esModule",{value:!0}),files.resolveModulePath=files.FileSystem=files.resolveGlobalYarnPath=files.resolveGlobalNodePath=files.resolve=files.uriToFilePath=void 0;const tt=require$$0__default$2,et=require$$0__default$1,nt=require$$0__default$3,rt=require$$3__default$1;function st(an){let on=tt.parse(an);if(on.protocol!=="file:"||!on.path)return;let cn=on.path.split("/");for(var ln=0,fn=cn.length;ln<fn;ln++)cn[ln]=decodeURIComponent(cn[ln]);if(process.platform==="win32"&&cn.length>1){let gn=cn[0],pn=cn[1];gn.length===0&&pn.length>1&&pn[1]===":"&&cn.shift()}return et.normalize(cn.join("/"))}files.uriToFilePath=st;function ot(){return process.platform==="win32"}function en(an,on,cn,ln){const fn="NODE_PATH",gn=["var p = process;","p.on('message',function(m){","if(m.c==='e'){","p.exit(0);","}","else if(m.c==='rs'){","try{","var r=require.resolve(m.a);","p.send({c:'r',s:true,r:r});","}","catch(err){","p.send({c:'r',s:false});","}","}","});"].join("");return new Promise((pn,vn)=>{let bn=process.env,$n=Object.create(null);Object.keys(bn).forEach(Tn=>$n[Tn]=bn[Tn]),on&&nt.existsSync(on)&&($n[fn]?$n[fn]=on+et.delimiter+$n[fn]:$n[fn]=on,ln&&ln(`NODE_PATH value is: ${$n[fn]}`)),$n.ELECTRON_RUN_AS_NODE="1";try{let Tn=(0,rt.fork)("",[],{cwd:cn,env:$n,execArgv:["-e",gn]});if(Tn.pid===void 0){vn(new Error(`Starting process to resolve node module ${an} failed`));return}Tn.on("error",On=>{vn(On)}),Tn.on("message",On=>{On.c==="r"&&(Tn.send({c:"e"}),On.s?pn(On.r):vn(new Error(`Failed to resolve module: ${an}`)))});let An={c:"rs",a:an};Tn.send(An)}catch(Tn){vn(Tn)}})}files.resolve=en;function tn(an){let on="npm";const cn=Object.create(null);Object.keys(process.env).forEach(gn=>cn[gn]=process.env[gn]),cn.NO_UPDATE_NOTIFIER="true";const ln={encoding:"utf8",env:cn};ot()&&(on="npm.cmd",ln.shell=!0);let fn=()=>{};try{process.on("SIGPIPE",fn);let gn=(0,rt.spawnSync)(on,["config","get","prefix"],ln).stdout;if(!gn){an&&an("'npm config get prefix' didn't return a value.");return}let pn=gn.trim();return an&&an(`'npm config get prefix' value is: ${pn}`),pn.length>0?ot()?et.join(pn,"node_modules"):et.join(pn,"lib","node_modules"):void 0}catch{return}finally{process.removeListener("SIGPIPE",fn)}}files.resolveGlobalNodePath=tn;function nn(an){let on="yarn",cn={encoding:"utf8"};ot()&&(on="yarn.cmd",cn.shell=!0);let ln=()=>{};try{process.on("SIGPIPE",ln);let fn=(0,rt.spawnSync)(on,["global","dir","--json"],cn),gn=fn.stdout;if(!gn){an&&(an("'yarn global dir' didn't return a value."),fn.stderr&&an(fn.stderr));return}let pn=gn.trim().split(/\r?\n/);for(let vn of pn)try{let bn=JSON.parse(vn);if(bn.type==="log")return et.join(bn.data,"node_modules")}catch{}return}catch{return}finally{process.removeListener("SIGPIPE",ln)}}files.resolveGlobalYarnPath=nn;var rn;(function(an){let on;function cn(){return on!==void 0||(process.platform==="win32"?on=!1:on=!nt.existsSync(__filename.toUpperCase())||!nt.existsSync(__filename.toLowerCase())),on}an.isCaseSensitive=cn;function ln(fn,gn){return cn()?et.normalize(gn).indexOf(et.normalize(fn))===0:et.normalize(gn).toLowerCase().indexOf(et.normalize(fn).toLowerCase())===0}an.isParent=ln})(rn||(files.FileSystem=rn={}));function sn(an,on,cn,ln){return cn?(et.isAbsolute(cn)||(cn=et.join(an,cn)),en(on,cn,cn,ln).then(fn=>rn.isParent(cn,fn)?fn:Promise.reject(new Error(`Failed to load ${on} from node path location.`))).then(void 0,fn=>en(on,tn(ln),an,ln))):en(on,tn(ln),an,ln)}return files.resolveModulePath=sn,files}var node$1,hasRequiredNode$1;function requireNode$1(){return hasRequiredNode$1||(hasRequiredNode$1=1,node$1=requireMain$1()),node$1}var api={},inlineCompletion_proposed={},hasRequiredInlineCompletion_proposed;function requireInlineCompletion_proposed(){if(hasRequiredInlineCompletion_proposed)return inlineCompletion_proposed;hasRequiredInlineCompletion_proposed=1,Object.defineProperty(inlineCompletion_proposed,"__esModule",{value:!0}),inlineCompletion_proposed.InlineCompletionFeature=void 0;const tt=requireMain$1(),et=nt=>class extends nt{get inlineCompletion(){return{on:rt=>this.connection.onRequest(tt.InlineCompletionRequest.type,(st,ot)=>rt(st,ot,this.attachWorkDoneProgress(st)))}}};return inlineCompletion_proposed.InlineCompletionFeature=et,inlineCompletion_proposed}var hasRequiredApi;function requireApi(){return hasRequiredApi||(hasRequiredApi=1,function(tt){var et=api&&api.__createBinding||(Object.create?function(nn,rn,sn,an){an===void 0&&(an=sn);var on=Object.getOwnPropertyDescriptor(rn,sn);(!on||("get"in on?!rn.__esModule:on.writable||on.configurable))&&(on={enumerable:!0,get:function(){return rn[sn]}}),Object.defineProperty(nn,an,on)}:function(nn,rn,sn,an){an===void 0&&(an=sn),nn[an]=rn[sn]}),nt=api&&api.__exportStar||function(nn,rn){for(var sn in nn)sn!=="default"&&!Object.prototype.hasOwnProperty.call(rn,sn)&&et(rn,nn,sn)};Object.defineProperty(tt,"__esModule",{value:!0}),tt.ProposedFeatures=tt.NotebookDocuments=tt.TextDocuments=tt.SemanticTokensBuilder=void 0;const rt=requireSemanticTokens();Object.defineProperty(tt,"SemanticTokensBuilder",{enumerable:!0,get:function(){return rt.SemanticTokensBuilder}});const st=requireInlineCompletion_proposed();nt(requireMain$1(),tt);const ot=requireTextDocuments();Object.defineProperty(tt,"TextDocuments",{enumerable:!0,get:function(){return ot.TextDocuments}});const en=requireNotebook();Object.defineProperty(tt,"NotebookDocuments",{enumerable:!0,get:function(){return en.NotebookDocuments}}),nt(requireServer(),tt);var tn;(function(nn){nn.all={__brand:"features",languages:st.InlineCompletionFeature}})(tn||(tt.ProposedFeatures=tn={}))}(api)),api}var hasRequiredMain;function requireMain(){return hasRequiredMain||(hasRequiredMain=1,function(tt){var et=main$3&&main$3.__createBinding||(Object.create?function(pn,vn,bn,$n){$n===void 0&&($n=bn);var Tn=Object.getOwnPropertyDescriptor(vn,bn);(!Tn||("get"in Tn?!vn.__esModule:Tn.writable||Tn.configurable))&&(Tn={enumerable:!0,get:function(){return vn[bn]}}),Object.defineProperty(pn,$n,Tn)}:function(pn,vn,bn,$n){$n===void 0&&($n=bn),pn[$n]=vn[bn]}),nt=main$3&&main$3.__exportStar||function(pn,vn){for(var bn in pn)bn!=="default"&&!Object.prototype.hasOwnProperty.call(vn,bn)&&et(vn,pn,bn)};Object.defineProperty(tt,"__esModule",{value:!0}),tt.createConnection=tt.Files=void 0;const rt=require$$0__default$4,st=requireIs$1(),ot=requireServer(),en=requireFiles(),tn=requireNode$1();nt(requireNode$1(),tt),nt(requireApi(),tt);var nn;(function(pn){pn.uriToFilePath=en.uriToFilePath,pn.resolveGlobalNodePath=en.resolveGlobalNodePath,pn.resolveGlobalYarnPath=en.resolveGlobalYarnPath,pn.resolve=en.resolve,pn.resolveModulePath=en.resolveModulePath})(nn||(tt.Files=nn={}));function rn(){}let sn=!1,an;function on(){const pn="--clientProcessId";function vn(bn){try{let $n=parseInt(bn);isNaN($n)||(an=setInterval(()=>{try{process.kill($n,0)}catch{process.exit(sn?0:1)}},3e3))}catch{}}for(let bn=2;bn<process.argv.length;bn++){let $n=process.argv[bn];if($n===pn&&bn+1<process.argv.length){vn(process.argv[bn+1]);return}else{let Tn=$n.split("=");Tn[0]===pn&&vn(Tn[1])}}}on();const cn={initialize:pn=>{const vn=pn.processId;st.number(vn)&&an===void 0&&setInterval(()=>{try{process.kill(vn,0)}catch{process.exit(sn?0:1)}},3e3)},get shutdownReceived(){return sn},set shutdownReceived(pn){sn=pn},exit:pn=>{process.exit(pn)}};function ln(pn,vn,bn,$n){let Tn,An,On,Bn;return pn!==void 0&&pn.__brand==="features"&&(Tn=pn,pn=vn,vn=bn,bn=$n),tn.ConnectionStrategy.is(pn)||tn.ConnectionOptions.is(pn)?Bn=pn:(An=pn,On=vn,Bn=bn),fn(An,On,Bn,Tn)}tt.createConnection=ln;function fn(pn,vn,bn,$n){let Tn=!1;if(!pn&&!vn&&process.argv.length>2){let Un,Yn,xn=process.argv.slice(2);for(let Rn=0;Rn<xn.length;Rn++){let yn=xn[Rn];if(yn==="--node-ipc"){pn=new tn.IPCMessageReader(process),vn=new tn.IPCMessageWriter(process);break}else if(yn==="--stdio"){Tn=!0,pn=process.stdin,vn=process.stdout;break}else if(yn==="--socket"){Un=parseInt(xn[Rn+1]);break}else if(yn==="--pipe"){Yn=xn[Rn+1];break}else{var An=yn.split("=");if(An[0]==="--socket"){Un=parseInt(An[1]);break}else if(An[0]==="--pipe"){Yn=An[1];break}}}if(Un){let Rn=(0,tn.createServerSocketTransport)(Un);pn=Rn[0],vn=Rn[1]}else if(Yn){let Rn=(0,tn.createServerPipeTransport)(Yn);pn=Rn[0],vn=Rn[1]}}var On="Use arguments of createConnection or set command line parameters: '--node-ipc', '--stdio' or '--socket={number}'";if(!pn)throw new Error("Connection input stream is not set. "+On);if(!vn)throw new Error("Connection output stream is not set. "+On);if(st.func(pn.read)&&st.func(pn.on)){let Un=pn;Un.on("end",()=>{process.exit(sn?0:1)}),Un.on("close",()=>{process.exit(sn?0:1)})}const Bn=Un=>{const Yn=(0,tn.createProtocolConnection)(pn,vn,Un,bn);return Tn&&gn(Un),Yn};return(0,ot.createConnection)(Bn,cn,$n)}function gn(pn){function vn($n){return $n.map(Tn=>typeof Tn=="string"?Tn:(0,rt.inspect)(Tn)).join(" ")}const bn=new Map;console.assert=function(Tn,...An){if(!Tn)if(An.length===0)pn.error("Assertion failed");else{const[On,...Bn]=An;pn.error(`Assertion failed: ${On} ${vn(Bn)}`)}},console.count=function(Tn="default"){const An=String(Tn);let On=bn.get(An)??0;On+=1,bn.set(An,On),pn.log(`${An}: ${An}`)},console.countReset=function(Tn){Tn===void 0?bn.clear():bn.delete(String(Tn))},console.debug=function(...Tn){pn.log(vn(Tn))},console.dir=function(Tn,An){pn.log((0,rt.inspect)(Tn,An))},console.log=function(...Tn){pn.log(vn(Tn))},console.error=function(...Tn){pn.error(vn(Tn))},console.trace=function(...Tn){const An=new Error().stack.replace(/(.+\n){2}/,"");let On="Trace";Tn.length!==0&&(On+=`: ${vn(Tn)}`),pn.log(`${On}
|
|
179
|
-
${An}`)},console.warn=function(...Tn){pn.warn(vn(Tn))}}}(main$3)),main$3}var mainExports$2=requireMain();function findNextFeatures(tt,et){const nt={stacks:tt,tokens:et};return interpretTokens(nt),nt.stacks.flat().forEach(st=>{st.property=void 0}),findNextFeatureStacks(nt.stacks).map(st=>st[st.length-1])}function findNextFeaturesInternal(tt){const{next:et,cardinalities:nt,visited:rt,plus:st}=tt,ot=[],en=et.feature;if(rt.has(en))return[];isGroup(en)||rt.add(en);let tn,nn=en;for(;nn.$container;)if(isGroup(nn.$container)){tn=nn.$container;break}else if(isAbstractElement(nn.$container))nn=nn.$container;else break;if(isArrayCardinality(nn.cardinality)){const rn=findFirstFeaturesInternal({next:{feature:nn,type:et.type},cardinalities:nt,visited:rt,plus:st});for(const sn of rn)st.add(sn.feature);ot.push(...rn)}if(tn){const rn=tn.elements.indexOf(nn);rn!==void 0&&rn<tn.elements.length-1&&ot.push(...findNextFeaturesInGroup({feature:tn,type:et.type},rn+1,nt,rt,st)),ot.every(sn=>isOptionalCardinality(sn.feature.cardinality,sn.feature)||isOptionalCardinality(nt.get(sn.feature))||st.has(sn.feature))&&ot.push(...findNextFeaturesInternal({next:{feature:tn,type:et.type},cardinalities:nt,visited:rt,plus:st}))}return ot}function findFirstFeatures(tt){return isAstNode(tt)&&(tt={feature:tt}),findFirstFeaturesInternal({next:tt,cardinalities:new Map,visited:new Set,plus:new Set})}function findFirstFeaturesInternal(tt){var et,nt,rt;const{next:st,cardinalities:ot,visited:en,plus:tn}=tt;if(st===void 0)return[];const{feature:nn,type:rn}=st;if(isGroup(nn))return en.has(nn)?[]:(en.add(nn),findNextFeaturesInGroup(st,0,ot,en,tn).map(sn=>modifyCardinality(sn,nn.cardinality,ot)));if(isAlternatives(nn)||isUnorderedGroup(nn))return nn.elements.flatMap(sn=>findFirstFeaturesInternal({next:{feature:sn,type:rn,property:st.property},cardinalities:ot,visited:en,plus:tn})).map(sn=>modifyCardinality(sn,nn.cardinality,ot));if(isAssignment(nn)){const sn={feature:nn.terminal,type:rn,property:(et=st.property)!==null&&et!==void 0?et:nn.feature};return findFirstFeaturesInternal({next:sn,cardinalities:ot,visited:en,plus:tn}).map(an=>modifyCardinality(an,nn.cardinality,ot))}else{if(isAction(nn))return findNextFeaturesInternal({next:{feature:nn,type:getTypeName(nn),property:(nt=st.property)!==null&&nt!==void 0?nt:nn.feature},cardinalities:ot,visited:en,plus:tn});if(isRuleCall(nn)&&isParserRule(nn.rule.ref)){const sn=nn.rule.ref,an={feature:sn.definition,type:sn.fragment||sn.dataType?void 0:(rt=getExplicitRuleType(sn))!==null&&rt!==void 0?rt:sn.name,property:st.property};return findFirstFeaturesInternal({next:an,cardinalities:ot,visited:en,plus:tn}).map(on=>modifyCardinality(on,nn.cardinality,ot))}else return[st]}}function modifyCardinality(tt,et,nt){return nt.set(tt.feature,et),tt}function findNextFeaturesInGroup(tt,et,nt,rt,st){var ot;const en=[];let tn;for(;et<tt.feature.elements.length&&(tn={feature:tt.feature.elements[et++],type:tt.type},en.push(...findFirstFeaturesInternal({next:tn,cardinalities:nt,visited:rt,plus:st})),!!isOptionalCardinality((ot=tn.feature.cardinality)!==null&&ot!==void 0?ot:nt.get(tn.feature),tn.feature)););return en}function interpretTokens(tt){for(const et of tt.tokens){const nt=findNextFeatureStacks(tt.stacks,et);tt.stacks=nt}}function findNextFeatureStacks(tt,et){const nt=[];for(const rt of tt)nt.push(...interpretStackToken(rt,et));return nt}function interpretStackToken(tt,et){const nt=new Map,rt=new Set(tt.map(ot=>ot.feature).filter(isPlusFeature)),st=[];for(;tt.length>0;){const ot=tt.pop(),en=findNextFeaturesInternal({next:ot,cardinalities:nt,plus:rt,visited:new Set}).filter(tn=>et?featureMatches(tn.feature,et):!0);for(const tn of en)st.push([...tt,tn]);if(!en.every(tn=>isOptionalCardinality(tn.feature.cardinality,tn.feature)||isOptionalCardinality(nt.get(tn.feature))))break}return st}function isPlusFeature(tt){if(tt.cardinality==="+")return!0;const et=getContainerOfType(tt,isAssignment);return!!(et&&et.cardinality==="+")}function featureMatches(tt,et){if(isKeyword(tt))return tt.value===et.image;if(isRuleCall(tt))return ruleMatches(tt.rule.ref,et);if(isCrossReference(tt)){const nt=getCrossReferenceTerminal(tt);if(nt)return featureMatches(nt,et)}return!1}function ruleMatches(tt,et){return isParserRule(tt)?findFirstFeatures(tt.definition).some(rt=>featureMatches(rt.feature,et)):isTerminalRule(tt)?terminalRegex(tt).test(et.image):!1}function mergeCompletionProviderOptions(tt){const et=Array.from(new Set(tt.flatMap(rt=>{var st;return(st=rt?.triggerCharacters)!==null&&st!==void 0?st:[]}))),nt=Array.from(new Set(tt.flatMap(rt=>{var st;return(st=rt?.allCommitCharacters)!==null&&st!==void 0?st:[]})));return{triggerCharacters:et.length>0?et:void 0,allCommitCharacters:nt.length>0?nt:void 0}}class DefaultCompletionProvider{constructor(et){this.scopeProvider=et.references.ScopeProvider,this.grammar=et.Grammar,this.completionParser=et.parser.CompletionParser,this.nameProvider=et.references.NameProvider,this.lexer=et.parser.Lexer,this.nodeKindProvider=et.shared.lsp.NodeKindProvider,this.fuzzyMatcher=et.shared.lsp.FuzzyMatcher,this.grammarConfig=et.parser.GrammarConfig,this.astReflection=et.shared.AstReflection,this.documentationProvider=et.documentation.DocumentationProvider}async getCompletion(et,nt,rt){const st=[],ot=this.buildContexts(et,nt.position),en=(rn,sn)=>{const an=this.fillCompletionItem(rn,sn);an&&st.push(an)},tn=rn=>isKeyword(rn.feature)?rn.feature.value:rn.feature,nn=[];for(const rn of ot)if(await Promise.all(stream(rn.features).distinct(tn).exclude(nn).map(sn=>this.completionFor(rn,sn,en))),nn.push(...rn.features),!this.continueCompletion(st))break;return mainExports$2.CompletionList.create(this.deduplicateItems(st),!0)}deduplicateItems(et){return stream(et).distinct(nt=>`${nt.kind}_${nt.label}_${nt.detail}`).toArray()}findFeaturesAt(et,nt){const rt=et.getText({start:mainExports$2.Position.create(0,0),end:et.positionAt(nt)}),st=this.completionParser.parse(rt),ot=st.tokens;if(st.tokenIndex===0){const nn=getEntryRule(this.grammar),rn=findFirstFeatures({feature:nn.definition,type:getExplicitRuleType(nn)});return ot.length>0?(ot.shift(),findNextFeatures(rn.map(sn=>[sn]),ot)):rn}const en=[...ot].splice(st.tokenIndex);return findNextFeatures([st.elementStack.map(nn=>({feature:nn}))],en)}*buildContexts(et,nt){var rt,st;const ot=et.parseResult.value.$cstNode;if(!ot)return;const en=et.textDocument,tn=en.getText(),nn=en.offsetAt(nt),rn={document:et,textDocument:en,offset:nn,position:nt},sn=this.findDataTypeRuleStart(ot,nn);if(sn){const[vn,bn]=sn,$n=(rt=findLeafNodeBeforeOffset(ot,vn))===null||rt===void 0?void 0:rt.astNode;yield Object.assign(Object.assign({},rn),{node:$n,tokenOffset:vn,tokenEndOffset:bn,features:this.findFeaturesAt(en,vn)})}const{nextTokenStart:an,nextTokenEnd:on,previousTokenStart:cn,previousTokenEnd:ln}=this.backtrackToAnyToken(tn,nn);let fn=an;nn<=an&&cn!==void 0&&(fn=cn);const gn=(st=findLeafNodeBeforeOffset(ot,fn))===null||st===void 0?void 0:st.astNode;let pn=!0;if(cn!==void 0&&ln!==void 0&&ln===nn&&(yield Object.assign(Object.assign({},rn),{node:gn,tokenOffset:cn,tokenEndOffset:ln,features:this.findFeaturesAt(en,cn)}),pn=this.performNextTokenCompletion(et,tn.substring(cn,ln),cn,ln),pn&&(yield Object.assign(Object.assign({},rn),{node:gn,tokenOffset:ln,tokenEndOffset:ln,features:this.findFeaturesAt(en,ln)}))),gn)pn&&(yield Object.assign(Object.assign({},rn),{node:gn,tokenOffset:an,tokenEndOffset:on,features:this.findFeaturesAt(en,an)}));else{const vn=getEntryRule(this.grammar);if(!vn)throw new Error("Missing entry parser rule");yield Object.assign(Object.assign({},rn),{tokenOffset:an,tokenEndOffset:on,features:findFirstFeatures(vn.definition)})}}performNextTokenCompletion(et,nt,rt,st){return new RegExp("\\P{L}$","u").test(nt)}findDataTypeRuleStart(et,nt){var rt,st;let ot=findDeclarationNodeAtOffset(et,nt,this.grammarConfig.nameRegexp),en=!!(!((rt=getContainerOfType(ot?.grammarSource,isParserRule))===null||rt===void 0)&&rt.dataType);if(en){for(;en;)ot=ot?.container,en=!!(!((st=getContainerOfType(ot?.grammarSource,isParserRule))===null||st===void 0)&&st.dataType);if(ot)return[ot.offset,ot.end]}}continueCompletion(et){return et.length===0}backtrackToAnyToken(et,nt){const rt=this.lexer.tokenize(et).tokens;if(rt.length===0)return{nextTokenStart:nt,nextTokenEnd:nt};let st;for(const ot of rt){if(ot.startOffset>=nt)return{nextTokenStart:nt,nextTokenEnd:nt,previousTokenStart:st?st.startOffset:void 0,previousTokenEnd:st?st.endOffset+1:void 0};if(ot.endOffset>=nt)return{nextTokenStart:ot.startOffset,nextTokenEnd:ot.endOffset+1,previousTokenStart:st?st.startOffset:void 0,previousTokenEnd:st?st.endOffset+1:void 0};st=ot}return{nextTokenStart:nt,nextTokenEnd:nt,previousTokenStart:st?st.startOffset:void 0,previousTokenEnd:st?st.endOffset+1:void 0}}completionFor(et,nt,rt){if(isKeyword(nt.feature))return this.completionForKeyword(et,nt.feature,rt);if(isCrossReference(nt.feature)&&et.node)return this.completionForCrossReference(et,nt,rt)}completionForCrossReference(et,nt,rt){const st=getContainerOfType(nt.feature,isAssignment);let ot=et.node;if(st&&ot){nt.type&&(ot={$type:nt.type,$container:ot,$containerProperty:nt.property},assignMandatoryProperties(this.astReflection,ot));const en={reference:{$refText:""},container:ot,property:st.feature};try{for(const tn of this.getReferenceCandidates(en,et))rt(et,this.createReferenceCompletionItem(tn))}catch(tn){console.error(tn)}}}getReferenceCandidates(et,nt){return this.scopeProvider.getScope(et).getAllElements()}createReferenceCompletionItem(et){const nt=this.nodeKindProvider.getCompletionItemKind(et),rt=this.getReferenceDocumentation(et);return{nodeDescription:et,kind:nt,documentation:rt,detail:et.type,sortText:"0"}}getReferenceDocumentation(et){if(!et.node)return;const nt=this.documentationProvider.getDocumentation(et.node);if(nt)return{kind:"markdown",value:nt}}completionForKeyword(et,nt,rt){this.filterKeyword(et,nt)&&rt(et,{label:nt.value,kind:this.getKeywordCompletionItemKind(nt),detail:"Keyword",sortText:"1"})}getKeywordCompletionItemKind(et){return mainExports$2.CompletionItemKind.Keyword}filterKeyword(et,nt){return new RegExp("\\p{L}","u").test(nt.value)}fillCompletionItem(et,nt){var rt,st;let ot;if(typeof nt.label=="string")ot=nt.label;else if("node"in nt){const rn=this.nameProvider.getName(nt.node);if(!rn)return;ot=rn}else if("nodeDescription"in nt)ot=nt.nodeDescription.name;else return;let en;typeof((rt=nt.textEdit)===null||rt===void 0?void 0:rt.newText)=="string"?en=nt.textEdit.newText:typeof nt.insertText=="string"?en=nt.insertText:en=ot;const tn=(st=nt.textEdit)!==null&&st!==void 0?st:this.buildCompletionTextEdit(et,ot,en);return tn?{additionalTextEdits:nt.additionalTextEdits,command:nt.command,commitCharacters:nt.commitCharacters,data:nt.data,detail:nt.detail,documentation:nt.documentation,filterText:nt.filterText,insertText:nt.insertText,insertTextFormat:nt.insertTextFormat,insertTextMode:nt.insertTextMode,kind:nt.kind,labelDetails:nt.labelDetails,preselect:nt.preselect,sortText:nt.sortText,tags:nt.tags,textEditText:nt.textEditText,textEdit:tn,label:ot}:void 0}buildCompletionTextEdit(et,nt,rt){const ot=et.textDocument.getText().substring(et.tokenOffset,et.offset);if(this.fuzzyMatcher.match(ot,nt)){const en=et.textDocument.positionAt(et.tokenOffset),tn=et.position;return{newText:rt,range:{start:en,end:tn}}}else return}}class DefaultDefinitionProvider{constructor(et){this.nameProvider=et.references.NameProvider,this.references=et.references.References,this.grammarConfig=et.parser.GrammarConfig}getDefinition(et,nt,rt){const st=et.parseResult.value;if(st.$cstNode){const ot=st.$cstNode,en=findDeclarationNodeAtOffset(ot,et.textDocument.offsetAt(nt.position),this.grammarConfig.nameRegexp);if(en)return this.collectLocationLinks(en,nt)}}collectLocationLinks(et,nt){var rt;const st=this.findLink(et);if(st)return[mainExports$2.LocationLink.create(st.targetDocument.textDocument.uri,((rt=st.target.astNode.$cstNode)!==null&&rt!==void 0?rt:st.target).range,st.target.range,st.source.range)]}findLink(et){const nt=this.references.findDeclarationNode(et);if(nt?.astNode){const rt=getDocument(nt.astNode);if(nt&&rt)return{source:et,target:nt,targetDocument:rt}}}}class DefaultDocumentHighlightProvider{constructor(et){this.references=et.references.References,this.nameProvider=et.references.NameProvider,this.grammarConfig=et.parser.GrammarConfig}getDocumentHighlight(et,nt,rt){const st=et.parseResult.value.$cstNode;if(!st)return;const ot=findDeclarationNodeAtOffset(st,et.textDocument.offsetAt(nt.position),this.grammarConfig.nameRegexp);if(!ot)return;const en=this.references.findDeclaration(ot);if(en){const tn=UriUtils.equals(getDocument(en).uri,et.uri),nn={documentUri:et.uri,includeDeclaration:tn};return this.references.findReferences(en,nn).map(sn=>this.createDocumentHighlight(sn)).toArray()}}createDocumentHighlight(et){return mainExports$2.DocumentHighlight.create(et.segment.range)}}class DefaultDocumentSymbolProvider{constructor(et){this.nameProvider=et.references.NameProvider,this.nodeKindProvider=et.shared.lsp.NodeKindProvider}getSymbols(et,nt,rt){return this.getSymbol(et,et.parseResult.value)}getSymbol(et,nt){const rt=nt.$cstNode,st=this.nameProvider.getNameNode(nt);if(st&&rt){const ot=this.nameProvider.getName(nt);return[{kind:this.nodeKindProvider.getSymbolKind(nt),name:ot||st.text,range:rt.range,selectionRange:st.range,children:this.getChildSymbols(et,nt)}]}else return this.getChildSymbols(et,nt)||[]}getChildSymbols(et,nt){const rt=[];for(const st of streamContents(nt)){const ot=this.getSymbol(et,st);rt.push(...ot)}if(rt.length>0)return rt}}class DefaultDocumentUpdateHandler{constructor(et){this.workspaceManager=et.workspace.WorkspaceManager,this.documentBuilder=et.workspace.DocumentBuilder,this.workspaceLock=et.workspace.WorkspaceLock,this.serviceRegistry=et.ServiceRegistry;let nt=!1;et.lsp.LanguageServer.onInitialize(rt=>{var st,ot;nt=!!(!((ot=(st=rt.capabilities.workspace)===null||st===void 0?void 0:st.didChangeWatchedFiles)===null||ot===void 0)&&ot.dynamicRegistration)}),et.lsp.LanguageServer.onInitialized(rt=>{nt&&this.registerFileWatcher(et)})}registerFileWatcher(et){const nt=stream(et.ServiceRegistry.all).flatMap(rt=>rt.LanguageMetaData.fileExtensions).map(rt=>rt.startsWith(".")?rt.substring(1):rt).distinct().toArray();if(nt.length>0){const rt=et.lsp.Connection,st={watchers:[{globPattern:nt.length===1?`**/*.${nt[0]}`:`**/*.{${nt.join(",")}}`}]};rt?.client.register(mainExports$2.DidChangeWatchedFilesNotification.type,st)}}fireDocumentUpdate(et,nt){et=et.filter(rt=>this.serviceRegistry.hasServices(rt)),this.workspaceManager.ready.then(()=>{this.workspaceLock.write(rt=>this.documentBuilder.update(et,nt,rt))}).catch(rt=>{console.error("Workspace initialization failed. Could not perform document update.",rt)})}didChangeContent(et){this.fireDocumentUpdate([URI.parse(et.document.uri)],[])}didChangeWatchedFiles(et){const nt=stream(et.changes).filter(st=>st.type!==mainExports$2.FileChangeType.Deleted).distinct(st=>st.uri).map(st=>URI.parse(st.uri)).toArray(),rt=stream(et.changes).filter(st=>st.type===mainExports$2.FileChangeType.Deleted).distinct(st=>st.uri).map(st=>URI.parse(st.uri)).toArray();this.fireDocumentUpdate(nt,rt)}}class DefaultFoldingRangeProvider{constructor(et){this.commentNames=et.parser.GrammarConfig.multilineCommentRules}getFoldingRanges(et,nt,rt){const st=[],ot=en=>st.push(en);return this.collectFolding(et,ot),st}collectFolding(et,nt){var rt;const st=(rt=et.parseResult)===null||rt===void 0?void 0:rt.value;if(st){if(this.shouldProcessContent(st)){const ot=streamAllContents(st).iterator();let en;do if(en=ot.next(),!en.done){const tn=en.value;this.shouldProcess(tn)&&this.collectObjectFolding(et,tn,nt),this.shouldProcessContent(tn)||ot.prune()}while(!en.done)}this.collectCommentFolding(et,st,nt)}}shouldProcess(et){return!0}shouldProcessContent(et){return!0}collectObjectFolding(et,nt,rt){const st=nt.$cstNode;if(st){const ot=this.toFoldingRange(et,st);ot&&rt(ot)}}collectCommentFolding(et,nt,rt){const st=nt.$cstNode;if(st){for(const ot of flattenCst(st))if(this.commentNames.includes(ot.tokenType.name)){const en=this.toFoldingRange(et,ot,mainExports$2.FoldingRangeKind.Comment);en&&rt(en)}}}toFoldingRange(et,nt,rt){const st=nt.range,ot=st.start;let en=st.end;if(!(en.line-ot.line<2))return this.includeLastFoldingLine(nt,rt)||(en=et.textDocument.positionAt(et.textDocument.offsetAt({line:en.line,character:0})-1)),mainExports$2.FoldingRange.create(ot.line,en.line,ot.character,en.character,rt)}includeLastFoldingLine(et,nt){if(nt===mainExports$2.FoldingRangeKind.Comment)return!1;const rt=et.text,st=rt.charAt(rt.length-1);return!(st==="}"||st===")"||st==="]")}}class DefaultFuzzyMatcher{match(et,nt){if(et.length===0)return!0;let rt=!1,st,ot=0;const en=nt.length;for(let tn=0;tn<en;tn++){const nn=nt.charCodeAt(tn),rn=et.charCodeAt(ot);if((nn===rn||this.toUpperCharCode(nn)===this.toUpperCharCode(rn))&&(rt||(rt=st===void 0||this.isWordTransition(st,nn)),rt&&ot++,ot===et.length))return!0;st=nn}return!1}isWordTransition(et,nt){return a$1<=et&&et<=z$1&&A$1<=nt&&nt<=Z||et===_$2&&nt!==_$2}toUpperCharCode(et){return a$1<=et&&et<=z$1?et-32:et}}const a$1=97,z$1=122,A$1=65,Z=90,_$2=95;class AstNodeHoverProvider{constructor(et){this.references=et.references.References,this.grammarConfig=et.parser.GrammarConfig}getHoverContent(et,nt){var rt,st;const ot=(st=(rt=et.parseResult)===null||rt===void 0?void 0:rt.value)===null||st===void 0?void 0:st.$cstNode;if(ot){const en=et.textDocument.offsetAt(nt.position),tn=findDeclarationNodeAtOffset(ot,en,this.grammarConfig.nameRegexp);if(tn&&tn.offset+tn.length>en){const nn=this.references.findDeclaration(tn);if(nn)return this.getAstNodeHoverContent(nn)}}}}class MultilineCommentHoverProvider extends AstNodeHoverProvider{constructor(et){super(et),this.documentationProvider=et.documentation.DocumentationProvider}getAstNodeHoverContent(et){const nt=this.documentationProvider.getDocumentation(et);if(nt)return{contents:{kind:"markdown",value:nt}}}}var mainExports$1=requireMain$1();const AllSemanticTokenTypes={[mainExports$2.SemanticTokenTypes.class]:0,[mainExports$2.SemanticTokenTypes.comment]:1,[mainExports$2.SemanticTokenTypes.enum]:2,[mainExports$2.SemanticTokenTypes.enumMember]:3,[mainExports$2.SemanticTokenTypes.event]:4,[mainExports$2.SemanticTokenTypes.function]:5,[mainExports$2.SemanticTokenTypes.interface]:6,[mainExports$2.SemanticTokenTypes.keyword]:7,[mainExports$2.SemanticTokenTypes.macro]:8,[mainExports$2.SemanticTokenTypes.method]:9,[mainExports$2.SemanticTokenTypes.modifier]:10,[mainExports$2.SemanticTokenTypes.namespace]:11,[mainExports$2.SemanticTokenTypes.number]:12,[mainExports$2.SemanticTokenTypes.operator]:13,[mainExports$2.SemanticTokenTypes.parameter]:14,[mainExports$2.SemanticTokenTypes.property]:15,[mainExports$2.SemanticTokenTypes.regexp]:16,[mainExports$2.SemanticTokenTypes.string]:17,[mainExports$2.SemanticTokenTypes.struct]:18,[mainExports$2.SemanticTokenTypes.type]:19,[mainExports$2.SemanticTokenTypes.typeParameter]:20,[mainExports$2.SemanticTokenTypes.variable]:21,[mainExports$2.SemanticTokenTypes.decorator]:22},AllSemanticTokenModifiers={[mainExports$2.SemanticTokenModifiers.abstract]:1,[mainExports$2.SemanticTokenModifiers.async]:2,[mainExports$2.SemanticTokenModifiers.declaration]:4,[mainExports$2.SemanticTokenModifiers.defaultLibrary]:8,[mainExports$2.SemanticTokenModifiers.definition]:16,[mainExports$2.SemanticTokenModifiers.deprecated]:32,[mainExports$2.SemanticTokenModifiers.documentation]:64,[mainExports$2.SemanticTokenModifiers.modification]:128,[mainExports$2.SemanticTokenModifiers.readonly]:256,[mainExports$2.SemanticTokenModifiers.static]:512};function mergeSemanticTokenProviderOptions(tt){const et=[],nt=[];let rt=!0,st=!0,ot=!0;for(const en of tt)en&&(en.legend.tokenTypes.forEach((tn,nn)=>{const rn=et[nn];if(rn&&rn!==tn)throw new Error(`Cannot merge '${rn}' and '${tn}' token types. They use the same index ${nn}.`);et[nn]=tn}),en.legend.tokenModifiers.forEach((tn,nn)=>{const rn=nt[nn];if(rn&&rn!==tn)throw new Error(`Cannot merge '${rn}' and '${tn}' token modifier. They use the same index ${nn}.`);nt[nn]=tn}),en.full?typeof en.full=="object"&&!en.full.delta&&(st=!1):rt=!1,en.range||(ot=!1));return{legend:{tokenTypes:et,tokenModifiers:nt},full:rt&&{delta:st},range:ot}}class SemanticTokensBuilder extends mainExports$2.SemanticTokensBuilder{constructor(){super(...arguments),this._tokens=[]}push(et,nt,rt,st,ot){this._tokens.push({line:et,char:nt,length:rt,tokenType:st,tokenModifiers:ot})}build(){return this.applyTokens(),super.build()}buildEdits(){return this.applyTokens(),super.buildEdits()}flush(){this.previousResult(this.id)}applyTokens(){for(const et of this._tokens.sort(this.compareTokens))super.push(et.line,et.char,et.length,et.tokenType,et.tokenModifiers);this._tokens=[]}compareTokens(et,nt){return et.line===nt.line?et.char-nt.char:et.line-nt.line}}class AbstractSemanticTokenProvider{constructor(et){this.tokensBuilders=new Map,et.shared.workspace.TextDocuments.onDidClose(nt=>{this.tokensBuilders.delete(nt.document.uri)}),et.shared.lsp.LanguageServer.onInitialize(nt=>{var rt;this.initialize((rt=nt.capabilities.textDocument)===null||rt===void 0?void 0:rt.semanticTokens)})}initialize(et){this.clientCapabilities=et}get tokenTypes(){return AllSemanticTokenTypes}get tokenModifiers(){return AllSemanticTokenModifiers}get semanticTokensOptions(){return{legend:{tokenTypes:Object.keys(this.tokenTypes),tokenModifiers:Object.keys(this.tokenModifiers)},full:{delta:!0},range:!0}}async semanticHighlight(et,nt,rt=cancellationExports.CancellationToken.None){return this.currentRange=void 0,this.currentDocument=et,this.currentTokensBuilder=this.getDocumentTokensBuilder(et),this.currentTokensBuilder.flush(),await this.computeHighlighting(et,this.createAcceptor(),rt),this.currentTokensBuilder.build()}async semanticHighlightRange(et,nt,rt=cancellationExports.CancellationToken.None){return this.currentRange=nt.range,this.currentDocument=et,this.currentTokensBuilder=this.getDocumentTokensBuilder(et),this.currentTokensBuilder.flush(),await this.computeHighlighting(et,this.createAcceptor(),rt),this.currentTokensBuilder.build()}async semanticHighlightDelta(et,nt,rt=cancellationExports.CancellationToken.None){return this.currentRange=void 0,this.currentDocument=et,this.currentTokensBuilder=this.getDocumentTokensBuilder(et),this.currentTokensBuilder.previousResult(nt.previousResultId),await this.computeHighlighting(et,this.createAcceptor(),rt),this.currentTokensBuilder.buildEdits()}createAcceptor(){return nt=>{"line"in nt?this.highlightToken({range:{start:{line:nt.line,character:nt.char},end:{line:nt.line,character:nt.char+nt.length}},type:nt.type,modifier:nt.modifier}):"range"in nt?this.highlightToken(nt):"keyword"in nt?this.highlightKeyword(nt):"property"in nt?this.highlightProperty(nt):this.highlightNode({node:nt.cst,type:nt.type,modifier:nt.modifier})}}getDocumentTokensBuilder(et){const nt=this.tokensBuilders.get(et.uri.toString());if(nt)return nt;const rt=new SemanticTokensBuilder;return this.tokensBuilders.set(et.uri.toString(),rt),rt}async computeHighlighting(et,nt,rt){const st=et.parseResult.value,ot=streamAst(st,{range:this.currentRange}).iterator();let en;do if(en=ot.next(),!en.done){await interruptAndCheck(rt);const tn=en.value;this.highlightElement(tn,nt)==="prune"&&ot.prune()}while(!en.done)}highlightToken(et){var nt;const{range:rt,type:st}=et;let ot=et.modifier;if(this.currentRange&&!inRange(rt,this.currentRange)||!this.currentDocument||!this.currentTokensBuilder)return;const en=this.tokenTypes[st];let tn=0;if(ot!==void 0){typeof ot=="string"&&(ot=[ot]);for(const sn of ot){const an=this.tokenModifiers[sn];tn|=an}}const nn=rt.start.line,rn=rt.end.line;if(nn===rn){const sn=rt.start.character,an=rt.end.character-sn;this.currentTokensBuilder.push(nn,sn,an,en,tn)}else if(!((nt=this.clientCapabilities)===null||nt===void 0)&&nt.multilineTokenSupport){const sn=rt.start.character,an=this.currentDocument.textDocument.offsetAt(rt.start),on=this.currentDocument.textDocument.offsetAt(rt.end);this.currentTokensBuilder.push(nn,sn,on-an,en,tn)}else{const sn=rt.start;let an=this.currentDocument.textDocument.offsetAt({line:nn+1,character:0});this.currentTokensBuilder.push(sn.line,sn.character,an-sn.character-1,en,tn);for(let on=nn+1;on<rn;on++){const cn=an;an=this.currentDocument.textDocument.offsetAt({line:on+1,character:0}),this.currentTokensBuilder.push(on,0,an-cn-1,en,tn)}this.currentTokensBuilder.push(rn,0,rt.end.character,en,tn)}}highlightProperty(et){const nt=[];if(typeof et.index=="number"){const ot=findNodeForProperty(et.node.$cstNode,et.property,et.index);ot&&nt.push(ot)}else nt.push(...findNodesForProperty(et.node.$cstNode,et.property));const{type:rt,modifier:st}=et;for(const ot of nt)this.highlightNode({node:ot,type:rt,modifier:st})}highlightKeyword(et){const{node:nt,keyword:rt,type:st,index:ot,modifier:en}=et,tn=[];if(typeof ot=="number"){const nn=findNodeForKeyword(nt.$cstNode,rt,ot);nn&&tn.push(nn)}else tn.push(...findNodesForKeyword(nt.$cstNode,rt));for(const nn of tn)this.highlightNode({node:nn,type:st,modifier:en})}highlightNode(et){const{node:nt,type:rt,modifier:st}=et,ot=nt.range;this.highlightToken({range:ot,type:rt,modifier:st})}}var SemanticTokensDecoder;(function(tt){function et(rt,st,ot){const en=new Map;Object.entries(st).forEach(([rn,sn])=>en.set(sn,rn));let tn=0,nn=0;return nt(rt.data,5).map(rn=>{tn+=rn[0],rn[0]!==0&&(nn=0),nn+=rn[1];const sn=rn[2];return{offset:ot.textDocument.offsetAt({line:tn,character:nn}),tokenType:en.get(rn[3]),tokenModifiers:rn[4],text:ot.textDocument.getText({start:{line:tn,character:nn},end:{line:tn,character:nn+sn}})}})}tt.decode=et;function nt(rt,st){const ot=[];for(let en=0;en<rt.length;en+=st){const tn=rt.slice(en,en+st);ot.push(tn)}return ot}})(SemanticTokensDecoder||(SemanticTokensDecoder={}));function mergeSignatureHelpOptions(tt){const et=[],nt=[];tt.forEach(st=>{st?.triggerCharacters&&et.push(...st.triggerCharacters),st?.retriggerCharacters&&nt.push(...st.retriggerCharacters)});const rt={triggerCharacters:et.length>0?Array.from(new Set(et)).sort():void 0,retriggerCharacters:nt.length>0?Array.from(new Set(nt)).sort():void 0};return rt.triggerCharacters?rt:void 0}class DefaultLanguageServer{constructor(et){this.onInitializeEmitter=new mainExports$1.Emitter,this.onInitializedEmitter=new mainExports$1.Emitter,this.services=et}get onInitialize(){return this.onInitializeEmitter.event}get onInitialized(){return this.onInitializedEmitter.event}async initialize(et){return this.eagerLoadServices(),this.fireInitializeOnDefaultServices(et),this.onInitializeEmitter.fire(et),this.onInitializeEmitter.dispose(),this.buildInitializeResult(et)}eagerLoadServices(){eagerLoad(this.services),this.services.ServiceRegistry.all.forEach(et=>eagerLoad(et))}hasService(et){return this.services.ServiceRegistry.all.some(rt=>et(rt)!==void 0)}buildInitializeResult(et){var nt,rt,st,ot;const en=this.services.lsp.DocumentUpdateHandler,tn=(nt=this.services.lsp.FileOperationHandler)===null||nt===void 0?void 0:nt.fileOperationOptions,nn=this.services.ServiceRegistry.all,rn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.Formatter}),sn=nn.map(Hn=>{var kn,pr;return(pr=(kn=Hn.lsp)===null||kn===void 0?void 0:kn.Formatter)===null||pr===void 0?void 0:pr.formatOnTypeOptions}).find(Hn=>!!Hn),an=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.CodeActionProvider}),on=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.SemanticTokenProvider}),cn=mergeSemanticTokenProviderOptions(nn.map(Hn=>{var kn,pr;return(pr=(kn=Hn.lsp)===null||kn===void 0?void 0:kn.SemanticTokenProvider)===null||pr===void 0?void 0:pr.semanticTokensOptions})),ln=(st=(rt=this.services.lsp)===null||rt===void 0?void 0:rt.ExecuteCommandHandler)===null||st===void 0?void 0:st.commands,fn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.DocumentLinkProvider}),gn=mergeSignatureHelpOptions(nn.map(Hn=>{var kn,pr;return(pr=(kn=Hn.lsp)===null||kn===void 0?void 0:kn.SignatureHelp)===null||pr===void 0?void 0:pr.signatureHelpOptions})),pn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.TypeProvider}),vn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.ImplementationProvider}),bn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.CompletionProvider}),$n=mergeCompletionProviderOptions(nn.map(Hn=>{var kn,pr;return(pr=(kn=Hn.lsp)===null||kn===void 0?void 0:kn.CompletionProvider)===null||pr===void 0?void 0:pr.completionOptions})),Tn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.ReferencesProvider}),An=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.DocumentSymbolProvider}),On=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.DefinitionProvider}),Bn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.DocumentHighlightProvider}),Un=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.FoldingRangeProvider}),Yn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.HoverProvider}),xn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.RenameProvider}),Rn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.CallHierarchyProvider}),yn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.TypeHierarchyProvider}),Cn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.CodeLensProvider}),Fn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.DeclarationProvider}),Mn=this.hasService(Hn=>{var kn;return(kn=Hn.lsp)===null||kn===void 0?void 0:kn.InlayHintProvider}),zn=(ot=this.services.lsp)===null||ot===void 0?void 0:ot.WorkspaceSymbolProvider;return{capabilities:{workspace:{workspaceFolders:{supported:!0},fileOperations:tn},executeCommandProvider:ln&&{commands:ln},textDocumentSync:{change:mainExports$1.TextDocumentSyncKind.Incremental,openClose:!0,save:!!en.didSaveDocument,willSave:!!en.willSaveDocument,willSaveWaitUntil:!!en.willSaveDocumentWaitUntil},completionProvider:bn?$n:void 0,referencesProvider:Tn,documentSymbolProvider:An,definitionProvider:On,typeDefinitionProvider:pn,documentHighlightProvider:Bn,codeActionProvider:an,documentFormattingProvider:rn,documentRangeFormattingProvider:rn,documentOnTypeFormattingProvider:sn,foldingRangeProvider:Un,hoverProvider:Yn,renameProvider:xn?{prepareProvider:!0}:void 0,semanticTokensProvider:on?cn:void 0,signatureHelpProvider:gn,implementationProvider:vn,callHierarchyProvider:Rn?{}:void 0,typeHierarchyProvider:yn?{}:void 0,documentLinkProvider:fn?{resolveProvider:!1}:void 0,codeLensProvider:Cn?{resolveProvider:!1}:void 0,declarationProvider:Fn,inlayHintProvider:Mn?{resolveProvider:!1}:void 0,workspaceSymbolProvider:zn?{resolveProvider:!!zn.resolveSymbol}:void 0}}}initialized(et){this.fireInitializedOnDefaultServices(et),this.onInitializedEmitter.fire(et),this.onInitializedEmitter.dispose()}fireInitializeOnDefaultServices(et){this.services.workspace.ConfigurationProvider.initialize(et),this.services.workspace.WorkspaceManager.initialize(et)}fireInitializedOnDefaultServices(et){const nt=this.services.lsp.Connection,rt=nt?Object.assign(Object.assign({},et),{register:st=>nt.client.register(mainExports$1.DidChangeConfigurationNotification.type,st),fetchConfiguration:st=>nt.workspace.getConfiguration(st)}):et;this.services.workspace.ConfigurationProvider.initialized(rt).catch(st=>console.error("Error in ConfigurationProvider initialization:",st)),this.services.workspace.WorkspaceManager.initialized(et).catch(st=>console.error("Error in WorkspaceManager initialization:",st))}}class DefaultNodeKindProvider{getSymbolKind(et){return mainExports$2.SymbolKind.Field}getCompletionItemKind(et){return mainExports$2.CompletionItemKind.Reference}}class DefaultReferencesProvider{constructor(et){this.nameProvider=et.references.NameProvider,this.references=et.references.References,this.grammarConfig=et.parser.GrammarConfig}findReferences(et,nt,rt){const st=et.parseResult.value.$cstNode;if(!st)return[];const ot=findDeclarationNodeAtOffset(st,et.textDocument.offsetAt(nt.position),this.grammarConfig.nameRegexp);return ot?this.getReferences(ot,nt,et):[]}getReferences(et,nt,rt){const st=[],ot=this.references.findDeclaration(et);if(ot){const en={includeDeclaration:nt.context.includeDeclaration};this.references.findReferences(ot,en).forEach(tn=>{st.push(mainExports$2.Location.create(tn.sourceUri.toString(),tn.segment.range))})}return st}}class DefaultRenameProvider{constructor(et){this.references=et.references.References,this.nameProvider=et.references.NameProvider,this.grammarConfig=et.parser.GrammarConfig}async rename(et,nt,rt){const st={},ot=et.parseResult.value.$cstNode;if(!ot)return;const en=et.textDocument.offsetAt(nt.position),tn=findDeclarationNodeAtOffset(ot,en,this.grammarConfig.nameRegexp);if(!tn)return;const nn=this.references.findDeclaration(tn);if(!nn)return;const rn={onlyLocal:!1,includeDeclaration:!0};return this.references.findReferences(nn,rn).forEach(an=>{const on=TextEdit.replace(an.segment.range,nt.newName),cn=an.sourceUri.toString();st[cn]?st[cn].push(on):st[cn]=[on]}),{changes:st}}prepareRename(et,nt,rt){return this.renameNodeRange(et,nt.position)}renameNodeRange(et,nt){const rt=et.parseResult.value.$cstNode,st=et.textDocument.offsetAt(nt);if(rt&&st){const ot=findDeclarationNodeAtOffset(rt,st,this.grammarConfig.nameRegexp);if(!ot)return;if(this.references.findDeclaration(ot)||this.isNameNode(ot))return ot.range}}isNameNode(et){return et?.astNode&&isNamed(et.astNode)&&et===this.nameProvider.getNameNode(et.astNode)}}class DefaultWorkspaceSymbolProvider{constructor(et){this.indexManager=et.workspace.IndexManager,this.nodeKindProvider=et.lsp.NodeKindProvider,this.fuzzyMatcher=et.lsp.FuzzyMatcher}async getSymbols(et,nt=cancellationExports.CancellationToken.None){const rt=[],st=et.query.toLowerCase();for(const ot of this.indexManager.allElements())if(await interruptAndCheck(nt),this.fuzzyMatcher.match(st,ot.name)){const en=this.getWorkspaceSymbol(ot);en&&rt.push(en)}return rt}getWorkspaceSymbol(et){const nt=et.nameSegment;if(nt)return{kind:this.nodeKindProvider.getSymbolKind(et),name:et.name,location:{range:nt.range,uri:et.documentUri.toString()}}}}class NormalizedTextDocuments{constructor(et){this._configuration=et,this._syncedDocuments=new Map,this._onDidChangeContent=new mainExports$2.Emitter,this._onDidOpen=new mainExports$2.Emitter,this._onDidClose=new mainExports$2.Emitter,this._onDidSave=new mainExports$2.Emitter,this._onWillSave=new mainExports$2.Emitter}get onDidOpen(){return this._onDidOpen.event}get onDidChangeContent(){return this._onDidChangeContent.event}get onWillSave(){return this._onWillSave.event}onWillSaveWaitUntil(et){this._willSaveWaitUntil=et}get onDidSave(){return this._onDidSave.event}get onDidClose(){return this._onDidClose.event}get(et){return this._syncedDocuments.get(UriUtils.normalize(et))}set(et){const nt=UriUtils.normalize(et.uri);let rt=!0;this._syncedDocuments.has(nt)&&(rt=!1),this._syncedDocuments.set(nt,et);const st=Object.freeze({document:et});return this._onDidOpen.fire(st),this._onDidChangeContent.fire(st),rt}delete(et){const nt=UriUtils.normalize(typeof et=="object"&&"uri"in et?et.uri:et),rt=this._syncedDocuments.get(nt);rt!==void 0&&(this._syncedDocuments.delete(nt),this._onDidClose.fire(Object.freeze({document:rt})))}all(){return Array.from(this._syncedDocuments.values())}keys(){return Array.from(this._syncedDocuments.keys())}listen(et){et.__textDocumentSync=mainExports$2.TextDocumentSyncKind.Incremental;const nt=[];return nt.push(et.onDidOpenTextDocument(rt=>{const st=rt.textDocument,ot=UriUtils.normalize(st.uri),en=this._configuration.create(ot,st.languageId,st.version,st.text);this._syncedDocuments.set(ot,en);const tn=Object.freeze({document:en});this._onDidOpen.fire(tn),this._onDidChangeContent.fire(tn)})),nt.push(et.onDidChangeTextDocument(rt=>{const st=rt.textDocument,ot=rt.contentChanges;if(ot.length===0)return;const{version:en}=st;if(en==null)throw new Error(`Received document change event for ${st.uri} without valid version identifier`);const tn=UriUtils.normalize(st.uri);let nn=this._syncedDocuments.get(tn);nn!==void 0&&(nn=this._configuration.update(nn,ot,en),this._syncedDocuments.set(tn,nn),this._onDidChangeContent.fire(Object.freeze({document:nn})))})),nt.push(et.onDidCloseTextDocument(rt=>{const st=UriUtils.normalize(rt.textDocument.uri),ot=this._syncedDocuments.get(st);ot!==void 0&&(this._syncedDocuments.delete(st),this._onDidClose.fire(Object.freeze({document:ot})))})),nt.push(et.onWillSaveTextDocument(rt=>{const st=this._syncedDocuments.get(UriUtils.normalize(rt.textDocument.uri));st!==void 0&&this._onWillSave.fire(Object.freeze({document:st,reason:rt.reason}))})),nt.push(et.onWillSaveTextDocumentWaitUntil((rt,st)=>{const ot=this._syncedDocuments.get(UriUtils.normalize(rt.textDocument.uri));return ot!==void 0&&this._willSaveWaitUntil?this._willSaveWaitUntil(Object.freeze({document:ot,reason:rt.reason}),st):[]})),nt.push(et.onDidSaveTextDocument(rt=>{const st=this._syncedDocuments.get(UriUtils.normalize(rt.textDocument.uri));st!==void 0&&this._onDidSave.fire(Object.freeze({document:st}))})),mainExports$2.Disposable.create(()=>{nt.forEach(rt=>rt.dispose())})}}function createDefaultModule(tt){return Module.merge(createDefaultCoreModule(tt),createDefaultLSPModule(tt))}function createDefaultLSPModule(tt){return{lsp:{CompletionProvider:et=>new DefaultCompletionProvider(et),DocumentSymbolProvider:et=>new DefaultDocumentSymbolProvider(et),HoverProvider:et=>new MultilineCommentHoverProvider(et),FoldingRangeProvider:et=>new DefaultFoldingRangeProvider(et),ReferencesProvider:et=>new DefaultReferencesProvider(et),DefinitionProvider:et=>new DefaultDefinitionProvider(et),DocumentHighlightProvider:et=>new DefaultDocumentHighlightProvider(et),RenameProvider:et=>new DefaultRenameProvider(et)},shared:()=>tt.shared}}function createDefaultSharedModule(tt){return Module.merge(createDefaultSharedCoreModule(tt),createDefaultSharedLSPModule(tt))}function createDefaultSharedLSPModule(tt){return{lsp:{Connection:()=>tt.connection,LanguageServer:et=>new DefaultLanguageServer(et),DocumentUpdateHandler:et=>new DefaultDocumentUpdateHandler(et),WorkspaceSymbolProvider:et=>new DefaultWorkspaceSymbolProvider(et),NodeKindProvider:()=>new DefaultNodeKindProvider,FuzzyMatcher:()=>new DefaultFuzzyMatcher},workspace:{TextDocuments:()=>new NormalizedTextDocuments(TextDocument)}}}class AbstractFormatter{constructor(){this.collector=()=>{}}getNodeFormatter(et){return new DefaultNodeFormatter(et,this.collector)}formatDocument(et,nt){const rt=et.parseResult;return rt.lexerErrors.length===0&&rt.parserErrors.length===0?this.doDocumentFormat(et,nt.options):[]}isFormatRangeErrorFree(et,nt){const rt=et.parseResult;return rt.lexerErrors.length||rt.parserErrors.length?Math.min(...rt.lexerErrors.map(ot=>{var en;return(en=ot.line)!==null&&en!==void 0?en:Number.MAX_VALUE}),...rt.parserErrors.map(ot=>{var en;return(en=ot.token.startLine)!==null&&en!==void 0?en:Number.MAX_VALUE}))>nt.end.line:!0}formatDocumentRange(et,nt){return this.isFormatRangeErrorFree(et,nt.range)?this.doDocumentFormat(et,nt.options,nt.range):[]}formatDocumentOnType(et,nt){const rt={start:{character:0,line:nt.position.line},end:nt.position};return this.isFormatRangeErrorFree(et,rt)?this.doDocumentFormat(et,nt.options,rt):[]}get formatOnTypeOptions(){}doDocumentFormat(et,nt,rt){const st=new Map,ot=(tn,nn,rn)=>{var sn,an;const on=this.nodeModeToKey(tn,nn),cn=st.get(on),ln=(sn=rn.options.priority)!==null&&sn!==void 0?sn:0,fn=(an=cn?.options.priority)!==null&&an!==void 0?an:0;(!cn||fn<=ln)&&st.set(on,rn)};this.collector=ot,this.iterateAstFormatting(et,rt);const en=this.iterateCstFormatting(et,st,nt,rt);return this.avoidOverlappingEdits(et.textDocument,en)}avoidOverlappingEdits(et,nt){const rt=[];for(const st of nt){let ot=rt[rt.length-1];for(;ot;){const en=et.offsetAt(st.range.start),tn=et.offsetAt(ot.range.end);if(en<tn)rt.pop(),ot=rt[rt.length-1];else break}rt.push(st)}return rt.filter(st=>this.isNecessary(st,et))}iterateAstFormatting(et,nt){const rt=et.parseResult.value;this.format(rt);const st=streamAllContents(rt).iterator();let ot;do if(ot=st.next(),!ot.done){const en=ot.value;this.insideRange(en.$cstNode.range,nt)?this.format(en):st.prune()}while(!ot.done)}nodeModeToKey(et,nt){return`${et.offset}:${et.end}:${nt}`}insideRange(et,nt){return!nt||et.start.line<=nt.start.line&&et.end.line>=nt.end.line||et.start.line>=nt.start.line&&et.end.line<=nt.end.line||et.start.line<=nt.end.line&&et.end.line>=nt.end.line}isNecessary(et,nt){return et.newText!==nt.getText(et.range).replace(/\r/g,"")}iterateCstFormatting(et,nt,rt,st){const ot={indentation:0,options:rt,document:et.textDocument},en=[],nn=this.iterateCstTree(et,ot).iterator();let rn,sn;do if(sn=nn.next(),!sn.done){const an=sn.value,on=isLeafCstNode(an),cn=this.nodeModeToKey(an,"prepend"),ln=nt.get(cn);if(nt.delete(cn),ln){const pn=this.createTextEdit(rn,an,ln,ot);for(const vn of pn)vn&&this.insideRange(vn.range,st)&&en.push(vn)}const fn=this.nodeModeToKey(an,"append"),gn=nt.get(fn);if(nt.delete(fn),gn){const pn=getNextNode(an);if(pn){const vn=this.createTextEdit(an,pn,gn,ot);for(const bn of vn)bn&&this.insideRange(bn.range,st)&&en.push(bn)}}if(!ln&&an.hidden){const pn=this.createHiddenTextEdits(rn,an,void 0,ot);for(const vn of pn)vn&&this.insideRange(vn.range,st)&&en.push(vn)}on&&(rn=an)}while(!sn.done);return en}createHiddenTextEdits(et,nt,rt,st){var ot;const en=nt.range.start.line;if(et&&et.range.end.line===en)return[];const tn=[],nn={start:{character:0,line:en},end:nt.range.start},rn=st.document.getText(nn),sn=this.findFittingMove(nn,(ot=rt?.moves)!==null&&ot!==void 0?ot:[],st),an=this.getExistingIndentationCharacterCount(rn,st),cn=this.getIndentationCharacterCount(st,sn)-an;if(cn===0)return[];let ln="";cn>0&&(ln=(st.options.insertSpaces?" ":" ").repeat(cn));const fn=nt.text.split(`
|
|
180
|
-
`);fn[0]=rn+fn[0];for(let gn=0;gn<fn.length;gn++){const pn=en+gn,vn={character:0,line:pn};if(cn>0)tn.push({newText:ln,range:{start:vn,end:vn}});else{const bn=fn[gn];let $n=0;for(;$n<bn.length;$n++){const Tn=bn.charAt($n);if(Tn!==" "&&Tn!==" ")break}tn.push({newText:"",range:{start:vn,end:{line:pn,character:Math.min($n,Math.abs(cn))}}})}}return tn}getExistingIndentationCharacterCount(et,nt){const rt=" ".repeat(nt.options.tabSize);return(nt.options.insertSpaces?et.replaceAll(" ",rt):et.replaceAll(rt," ")).length}getIndentationCharacterCount(et,nt){let rt=et.indentation;return nt&&nt.tabs&&(rt+=nt.tabs),(et.options.insertSpaces?et.options.tabSize:1)*rt}createTextEdit(et,nt,rt,st){var ot;if(nt.hidden)return this.createHiddenTextEdits(et,nt,rt,st);if(et&&(et.range.end.line>nt.range.start.line||et.range.end.line===nt.range.start.line&&et.range.end.character>nt.range.start.character))return[];const en={start:(ot=et?.range.end)!==null&&ot!==void 0?ot:{character:0,line:0},end:nt.range.start},tn=this.findFittingMove(en,rt.moves,st);if(!tn)return[];const nn=tn.characters,rn=tn.lines,sn=tn.tabs,an=st.indentation;st.indentation+=sn??0;const on=[];return nn!==void 0?et?.hidden||on.push(this.createSpaceTextEdit(en,nn,rt.options)):rn!==void 0?on.push(this.createLineTextEdit(en,rn,st,rt.options)):sn!==void 0&&on.push(this.createTabTextEdit(en,!!et,st)),isLeafCstNode(nt)&&(st.indentation=an),on}createSpaceTextEdit(et,nt,rt){if(et.start.line===et.end.line){const ot=et.end.character-et.start.character;nt=this.fitIntoOptions(nt,ot,rt)}return{newText:" ".repeat(nt),range:et}}createLineTextEdit(et,nt,rt,st){const ot=et.end.line-et.start.line;nt=this.fitIntoOptions(nt,ot,st);const tn=(rt.options.insertSpaces?" ".repeat(rt.options.tabSize):" ").repeat(rt.indentation);return{newText:`${`
|
|
181
|
-
`.repeat(nt)}${tn}`,range:et}}createTabTextEdit(et,nt,rt){const ot=(rt.options.insertSpaces?" ".repeat(rt.options.tabSize):" ").repeat(rt.indentation),en=nt?1:0,tn=Math.max(et.end.line-et.start.line,en);return{newText:`${`
|
|
182
|
-
`.repeat(tn)}${ot}`,range:et}}fitIntoOptions(et,nt,rt){return rt.allowMore?et=Math.max(nt,et):rt.allowLess&&(et=Math.min(nt,et)),et}findFittingMove(et,nt,rt){if(nt.length===0)return;if(nt.length===1)return nt[0];const st=et.end.line-et.start.line;for(const ot of nt){if(ot.lines!==void 0&&st<=ot.lines)return ot;if(ot.lines===void 0&&st===0)return ot}return nt[nt.length-1]}iterateCstTree(et,nt){const st=et.parseResult.value.$cstNode;return st?new TreeStreamImpl(st,ot=>this.iterateCst(ot,nt)):EMPTY_STREAM}iterateCst(et,nt){if(!isCompositeCstNode(et))return EMPTY_STREAM;const rt=nt.indentation;return new StreamImpl(()=>({index:0}),st=>st.index<et.content.length?{done:!1,value:et.content[st.index++]}:(nt.indentation=rt,DONE_RESULT))}}class DefaultNodeFormatter{constructor(et,nt){this.astNode=et,this.collector=nt}node(et){return new FormattingRegion(et.$cstNode?[et.$cstNode]:[],this.collector)}nodes(...et){const nt=[];for(const rt of et)rt.$cstNode&&nt.push(rt.$cstNode);return new FormattingRegion(nt,this.collector)}property(et,nt){const rt=findNodeForProperty(this.astNode.$cstNode,et,nt);return new FormattingRegion(rt?[rt]:[],this.collector)}properties(...et){const nt=[];for(const rt of et){const st=findNodesForProperty(this.astNode.$cstNode,rt);nt.push(...st)}return new FormattingRegion(nt,this.collector)}keyword(et,nt){const rt=findNodeForKeyword(this.astNode.$cstNode,et,nt);return new FormattingRegion(rt?[rt]:[],this.collector)}keywords(...et){const nt=[];for(const rt of et){const st=findNodesForKeyword(this.astNode.$cstNode,rt);nt.push(...st)}return new FormattingRegion(nt,this.collector)}cst(et){return new FormattingRegion([...et],this.collector)}interior(et,nt){const rt=et.nodes,st=nt.nodes;if(rt.length!==1||st.length!==1)return new FormattingRegion([],this.collector);let ot=rt[0],en=st[0];if(ot.offset>en.offset){const tn=ot;ot=en,en=tn}return new FormattingRegion(getInteriorNodes(ot,en),this.collector)}}class FormattingRegion{constructor(et,nt){this.nodes=et,this.collector=nt}prepend(et){for(const nt of this.nodes)this.collector(nt,"prepend",et);return this}append(et){for(const nt of this.nodes)this.collector(nt,"append",et);return this}surround(et){for(const nt of this.nodes)this.collector(nt,"prepend",et),this.collector(nt,"append",et);return this}slice(et,nt){return new FormattingRegion(this.nodes.slice(et,nt),this.collector)}}var Formatting;(function(tt){function et(...sn){return{options:{},moves:sn.flatMap(an=>an.moves).sort(rn)}}tt.fit=et;function nt(sn){return st(0,sn)}tt.noSpace=nt;function rt(sn){return st(1,sn)}tt.oneSpace=rt;function st(sn,an){return{options:an??{},moves:[{characters:sn}]}}tt.spaces=st;function ot(sn){return en(1,sn)}tt.newLine=ot;function en(sn,an){return{options:an??{},moves:[{lines:sn}]}}tt.newLines=en;function tn(sn){return{options:sn??{},moves:[{tabs:1,lines:1}]}}tt.indent=tn;function nn(sn){return{options:sn??{},moves:[{tabs:0}]}}tt.noIndent=nn;function rn(sn,an){var on,cn,ln,fn,gn,pn;const vn=(on=sn.lines)!==null&&on!==void 0?on:0,bn=(cn=an.lines)!==null&&cn!==void 0?cn:0,$n=(ln=sn.tabs)!==null&&ln!==void 0?ln:0,Tn=(fn=an.tabs)!==null&&fn!==void 0?fn:0,An=(gn=sn.characters)!==null&&gn!==void 0?gn:0,On=(pn=an.characters)!==null&&pn!==void 0?pn:0;return vn<bn?-1:vn>bn?1:$n<Tn?-1:$n>Tn?1:An<On?-1:An>On?1:0}})(Formatting||(Formatting={}));var node,hasRequiredNode;function requireNode(){return hasRequiredNode||(hasRequiredNode=1,node=requireMain()),node}requireNode();var dist={},builder={},apiBuilder={},async={},walker={},utils$1={},hasRequiredUtils$1;function requireUtils$1(){if(hasRequiredUtils$1)return utils$1;hasRequiredUtils$1=1,Object.defineProperty(utils$1,"__esModule",{value:!0}),utils$1.normalizePath=utils$1.convertSlashes=utils$1.cleanPath=void 0;const tt=require$$0__default$1;function et(ot){let en=(0,tt.normalize)(ot);return en.length>1&&en[en.length-1]===tt.sep&&(en=en.substring(0,en.length-1)),en}utils$1.cleanPath=et;const nt=/[\\/]/g;function rt(ot,en){return ot.replace(nt,en)}utils$1.convertSlashes=rt;function st(ot,en){const{resolvePaths:tn,normalizePath:nn,pathSeparator:rn}=en,sn=process.platform==="win32"&&ot.includes("/")||ot.startsWith(".");if(tn&&(ot=(0,tt.resolve)(ot)),(nn||sn)&&(ot=et(ot)),ot===".")return"";const an=ot[ot.length-1]!==rn;return rt(an?ot+rn:ot,rn)}return utils$1.normalizePath=st,utils$1}var joinPath={},hasRequiredJoinPath;function requireJoinPath(){if(hasRequiredJoinPath)return joinPath;hasRequiredJoinPath=1,Object.defineProperty(joinPath,"__esModule",{value:!0}),joinPath.build=joinPath.joinDirectoryPath=joinPath.joinPathWithBasePath=void 0;const tt=require$$0__default$1,et=requireUtils$1();function nt(tn,nn){return nn+tn}joinPath.joinPathWithBasePath=nt;function rt(tn,nn){return function(rn,sn){return sn.startsWith(tn)?sn.replace(tn,"")+rn:(0,et.convertSlashes)((0,tt.relative)(tn,sn),nn.pathSeparator)+nn.pathSeparator+rn}}function st(tn){return tn}function ot(tn,nn,rn){return nn+tn+rn}joinPath.joinDirectoryPath=ot;function en(tn,nn){const{relativePaths:rn,includeBasePath:sn}=nn;return rn&&tn?rt(tn,nn):sn?nt:st}return joinPath.build=en,joinPath}var pushDirectory={},hasRequiredPushDirectory;function requirePushDirectory(){if(hasRequiredPushDirectory)return pushDirectory;hasRequiredPushDirectory=1,Object.defineProperty(pushDirectory,"__esModule",{value:!0}),pushDirectory.build=void 0;function tt(en){return function(tn,nn){nn.push(tn.substring(en.length)||".")}}function et(en){return function(tn,nn,rn){const sn=tn.substring(en.length)||".";rn.every(an=>an(sn,!0))&&nn.push(sn)}}const nt=(en,tn)=>{tn.push(en||".")},rt=(en,tn,nn)=>{const rn=en||".";nn.every(sn=>sn(rn,!0))&&tn.push(rn)},st=()=>{};function ot(en,tn){const{includeDirs:nn,filters:rn,relativePaths:sn}=tn;return nn?sn?rn&&rn.length?et(en):tt(en):rn&&rn.length?rt:nt:st}return pushDirectory.build=ot,pushDirectory}var pushFile={},hasRequiredPushFile;function requirePushFile(){if(hasRequiredPushFile)return pushFile;hasRequiredPushFile=1,Object.defineProperty(pushFile,"__esModule",{value:!0}),pushFile.build=void 0;const tt=(en,tn,nn,rn)=>{rn.every(sn=>sn(en,!1))&&nn.files++},et=(en,tn,nn,rn)=>{rn.every(sn=>sn(en,!1))&&tn.push(en)},nt=(en,tn,nn,rn)=>{nn.files++},rt=(en,tn)=>{tn.push(en)},st=()=>{};function ot(en){const{excludeFiles:tn,filters:nn,onlyCounts:rn}=en;return tn?st:nn&&nn.length?rn?tt:et:rn?nt:rt}return pushFile.build=ot,pushFile}var getArray={},hasRequiredGetArray;function requireGetArray(){if(hasRequiredGetArray)return getArray;hasRequiredGetArray=1,Object.defineProperty(getArray,"__esModule",{value:!0}),getArray.build=void 0;const tt=rt=>rt,et=()=>[""].slice(0,0);function nt(rt){return rt.group?et:tt}return getArray.build=nt,getArray}var groupFiles={},hasRequiredGroupFiles;function requireGroupFiles(){if(hasRequiredGroupFiles)return groupFiles;hasRequiredGroupFiles=1,Object.defineProperty(groupFiles,"__esModule",{value:!0}),groupFiles.build=void 0;const tt=(rt,st,ot)=>{rt.push({directory:st,files:ot,dir:st})},et=()=>{};function nt(rt){return rt.group?tt:et}return groupFiles.build=nt,groupFiles}var resolveSymlink={},hasRequiredResolveSymlink;function requireResolveSymlink(){if(hasRequiredResolveSymlink)return resolveSymlink;hasRequiredResolveSymlink=1;var tt=resolveSymlink&&resolveSymlink.__importDefault||function(nn){return nn&&nn.__esModule?nn:{default:nn}};Object.defineProperty(resolveSymlink,"__esModule",{value:!0}),resolveSymlink.build=void 0;const et=tt(require$$0__default$3),nt=require$$0__default$1,rt=function(nn,rn,sn){const{queue:an,options:{suppressErrors:on}}=rn;an.enqueue(),et.default.realpath(nn,(cn,ln)=>{if(cn)return an.dequeue(on?null:cn,rn);et.default.stat(ln,(fn,gn)=>{if(fn)return an.dequeue(on?null:fn,rn);if(gn.isDirectory()&&en(nn,ln,rn))return an.dequeue(null,rn);sn(gn,ln),an.dequeue(null,rn)})})},st=function(nn,rn,sn){const{queue:an,options:{suppressErrors:on}}=rn;an.enqueue();try{const cn=et.default.realpathSync(nn),ln=et.default.statSync(cn);if(ln.isDirectory()&&en(nn,cn,rn))return;sn(ln,cn)}catch(cn){if(!on)throw cn}};function ot(nn,rn){return!nn.resolveSymlinks||nn.excludeSymlinks?null:rn?st:rt}resolveSymlink.build=ot;function en(nn,rn,sn){if(sn.options.useRealPaths)return tn(rn,sn);let an=(0,nt.dirname)(nn),on=1;for(;an!==sn.root&&on<2;){const cn=sn.symlinks.get(an);!!cn&&(cn===rn||cn.startsWith(rn)||rn.startsWith(cn))?on++:an=(0,nt.dirname)(an)}return sn.symlinks.set(nn,rn),on>1}function tn(nn,rn){return rn.visited.includes(nn+rn.options.pathSeparator)}return resolveSymlink}var invokeCallback={},hasRequiredInvokeCallback;function requireInvokeCallback(){if(hasRequiredInvokeCallback)return invokeCallback;hasRequiredInvokeCallback=1,Object.defineProperty(invokeCallback,"__esModule",{value:!0}),invokeCallback.build=void 0;const tt=sn=>sn.counts,et=sn=>sn.groups,nt=sn=>sn.paths,rt=sn=>sn.paths.slice(0,sn.options.maxFiles),st=(sn,an,on)=>(nn(an,on,sn.counts,sn.options.suppressErrors),null),ot=(sn,an,on)=>(nn(an,on,sn.paths,sn.options.suppressErrors),null),en=(sn,an,on)=>(nn(an,on,sn.paths.slice(0,sn.options.maxFiles),sn.options.suppressErrors),null),tn=(sn,an,on)=>(nn(an,on,sn.groups,sn.options.suppressErrors),null);function nn(sn,an,on,cn){an(sn&&!cn?sn:null,on)}function rn(sn,an){const{onlyCounts:on,group:cn,maxFiles:ln}=sn;return on?an?tt:st:cn?an?et:tn:ln?an?rt:en:an?nt:ot}return invokeCallback.build=rn,invokeCallback}var walkDirectory={},hasRequiredWalkDirectory;function requireWalkDirectory(){if(hasRequiredWalkDirectory)return walkDirectory;hasRequiredWalkDirectory=1;var tt=walkDirectory&&walkDirectory.__importDefault||function(en){return en&&en.__esModule?en:{default:en}};Object.defineProperty(walkDirectory,"__esModule",{value:!0}),walkDirectory.build=void 0;const et=tt(require$$0__default$3),nt={withFileTypes:!0},rt=(en,tn,nn,rn,sn)=>{if(rn<0)return en.queue.dequeue(null,en);en.visited.push(tn),en.counts.directories++,en.queue.enqueue(),et.default.readdir(tn||".",nt,(an,on=[])=>{sn(on,nn,rn),en.queue.dequeue(en.options.suppressErrors?null:an,en)})},st=(en,tn,nn,rn,sn)=>{if(rn<0)return;en.visited.push(tn),en.counts.directories++;let an=[];try{an=et.default.readdirSync(tn||".",nt)}catch(on){if(!en.options.suppressErrors)throw on}sn(an,nn,rn)};function ot(en){return en?st:rt}return walkDirectory.build=ot,walkDirectory}var queue={},hasRequiredQueue;function requireQueue(){if(hasRequiredQueue)return queue;hasRequiredQueue=1,Object.defineProperty(queue,"__esModule",{value:!0}),queue.Queue=void 0;class tt{onQueueEmpty;count=0;constructor(nt){this.onQueueEmpty=nt}enqueue(){this.count++}dequeue(nt,rt){(--this.count<=0||nt)&&this.onQueueEmpty(nt,rt)}}return queue.Queue=tt,queue}var counter={},hasRequiredCounter;function requireCounter(){if(hasRequiredCounter)return counter;hasRequiredCounter=1,Object.defineProperty(counter,"__esModule",{value:!0}),counter.Counter=void 0;class tt{_files=0;_directories=0;set files(nt){this._files=nt}get files(){return this._files}set directories(nt){this._directories=nt}get directories(){return this._directories}get dirs(){return this._directories}}return counter.Counter=tt,counter}var hasRequiredWalker;function requireWalker(){if(hasRequiredWalker)return walker;hasRequiredWalker=1;var tt=walker&&walker.__createBinding||(Object.create?function(gn,pn,vn,bn){bn===void 0&&(bn=vn);var $n=Object.getOwnPropertyDescriptor(pn,vn);(!$n||("get"in $n?!pn.__esModule:$n.writable||$n.configurable))&&($n={enumerable:!0,get:function(){return pn[vn]}}),Object.defineProperty(gn,bn,$n)}:function(gn,pn,vn,bn){bn===void 0&&(bn=vn),gn[bn]=pn[vn]}),et=walker&&walker.__setModuleDefault||(Object.create?function(gn,pn){Object.defineProperty(gn,"default",{enumerable:!0,value:pn})}:function(gn,pn){gn.default=pn}),nt=walker&&walker.__importStar||function(gn){if(gn&&gn.__esModule)return gn;var pn={};if(gn!=null)for(var vn in gn)vn!=="default"&&Object.prototype.hasOwnProperty.call(gn,vn)&&tt(pn,gn,vn);return et(pn,gn),pn};Object.defineProperty(walker,"__esModule",{value:!0}),walker.Walker=void 0;const rt=require$$0__default$1,st=requireUtils$1(),ot=nt(requireJoinPath()),en=nt(requirePushDirectory()),tn=nt(requirePushFile()),nn=nt(requireGetArray()),rn=nt(requireGroupFiles()),sn=nt(requireResolveSymlink()),an=nt(requireInvokeCallback()),on=nt(requireWalkDirectory()),cn=requireQueue(),ln=requireCounter();class fn{root;isSynchronous;state;joinPath;pushDirectory;pushFile;getArray;groupFiles;resolveSymlink;walkDirectory;callbackInvoker;constructor(pn,vn,bn){this.isSynchronous=!bn,this.callbackInvoker=an.build(vn,this.isSynchronous),this.root=(0,st.normalizePath)(pn,vn),this.state={root:this.root.slice(0,-1),paths:[""].slice(0,0),groups:[],counts:new ln.Counter,options:vn,queue:new cn.Queue(($n,Tn)=>this.callbackInvoker(Tn,$n,bn)),symlinks:new Map,visited:[""].slice(0,0)},this.joinPath=ot.build(this.root,vn),this.pushDirectory=en.build(this.root,vn),this.pushFile=tn.build(vn),this.getArray=nn.build(vn),this.groupFiles=rn.build(vn),this.resolveSymlink=sn.build(vn,this.isSynchronous),this.walkDirectory=on.build(this.isSynchronous)}start(){return this.walkDirectory(this.state,this.root,this.root,this.state.options.maxDepth,this.walk),this.isSynchronous?this.callbackInvoker(this.state,null):null}walk=(pn,vn,bn)=>{const{paths:$n,options:{filters:Tn,resolveSymlinks:An,excludeSymlinks:On,exclude:Bn,maxFiles:Un,signal:Yn,useRealPaths:xn,pathSeparator:Rn}}=this.state;if(Yn&&Yn.aborted||Un&&$n.length>Un)return;this.pushDirectory(vn,$n,Tn);const yn=this.getArray(this.state.paths);for(let Cn=0;Cn<pn.length;++Cn){const Fn=pn[Cn];if(Fn.isFile()||Fn.isSymbolicLink()&&!An&&!On){const Mn=this.joinPath(Fn.name,vn);this.pushFile(Mn,yn,this.state.counts,Tn)}else if(Fn.isDirectory()){let Mn=ot.joinDirectoryPath(Fn.name,vn,this.state.options.pathSeparator);if(Bn&&Bn(Fn.name,Mn))continue;this.walkDirectory(this.state,Mn,Mn,bn-1,this.walk)}else if(Fn.isSymbolicLink()&&this.resolveSymlink){let Mn=ot.joinPathWithBasePath(Fn.name,vn);this.resolveSymlink(Mn,this.state,(zn,wr)=>{if(zn.isDirectory()){if(wr=(0,st.normalizePath)(wr,this.state.options),Bn&&Bn(Fn.name,xn?wr:Mn+Rn))return;this.walkDirectory(this.state,wr,xn?wr:Mn+Rn,bn-1,this.walk)}else{wr=xn?wr:Mn;const Hn=(0,rt.basename)(wr),kn=(0,st.normalizePath)((0,rt.dirname)(wr),this.state.options);wr=this.joinPath(Hn,kn),this.pushFile(wr,yn,this.state.counts,Tn)}})}}this.groupFiles(this.state.groups,vn,yn)}}return walker.Walker=fn,walker}var hasRequiredAsync;function requireAsync(){if(hasRequiredAsync)return async;hasRequiredAsync=1,Object.defineProperty(async,"__esModule",{value:!0}),async.callback=async.promise=void 0;const tt=requireWalker();function et(rt,st){return new Promise((ot,en)=>{nt(rt,st,(tn,nn)=>{if(tn)return en(tn);ot(nn)})})}async.promise=et;function nt(rt,st,ot){new tt.Walker(rt,st,ot).start()}return async.callback=nt,async}var sync={},hasRequiredSync;function requireSync(){if(hasRequiredSync)return sync;hasRequiredSync=1,Object.defineProperty(sync,"__esModule",{value:!0}),sync.sync=void 0;const tt=requireWalker();function et(nt,rt){return new tt.Walker(nt,rt).start()}return sync.sync=et,sync}var hasRequiredApiBuilder;function requireApiBuilder(){if(hasRequiredApiBuilder)return apiBuilder;hasRequiredApiBuilder=1,Object.defineProperty(apiBuilder,"__esModule",{value:!0}),apiBuilder.APIBuilder=void 0;const tt=requireAsync(),et=requireSync();class nt{root;options;constructor(st,ot){this.root=st,this.options=ot}withPromise(){return(0,tt.promise)(this.root,this.options)}withCallback(st){(0,tt.callback)(this.root,this.options,st)}sync(){return(0,et.sync)(this.root,this.options)}}return apiBuilder.APIBuilder=nt,apiBuilder}var utils={},constants,hasRequiredConstants;function requireConstants(){if(hasRequiredConstants)return constants;hasRequiredConstants=1;const tt="\\\\/",et=`[^${tt}]`,nt="\\.",rt="\\+",st="\\?",ot="\\/",en="(?=.)",tn="[^/]",nn=`(?:${ot}|$)`,rn=`(?:^|${ot})`,sn=`${nt}{1,2}${nn}`,an=`(?!${nt})`,on=`(?!${rn}${sn})`,cn=`(?!${nt}{0,1}${nn})`,ln=`(?!${sn})`,fn=`[^.${ot}]`,gn=`${tn}*?`,vn={DOT_LITERAL:nt,PLUS_LITERAL:rt,QMARK_LITERAL:st,SLASH_LITERAL:ot,ONE_CHAR:en,QMARK:tn,END_ANCHOR:nn,DOTS_SLASH:sn,NO_DOT:an,NO_DOTS:on,NO_DOT_SLASH:cn,NO_DOTS_SLASH:ln,QMARK_NO_DOT:fn,STAR:gn,START_ANCHOR:rn,SEP:"/"},bn={...vn,SLASH_LITERAL:`[${tt}]`,QMARK:et,STAR:`${et}*?`,DOTS_SLASH:`${nt}{1,2}(?:[${tt}]|$)`,NO_DOT:`(?!${nt})`,NO_DOTS:`(?!(?:^|[${tt}])${nt}{1,2}(?:[${tt}]|$))`,NO_DOT_SLASH:`(?!${nt}{0,1}(?:[${tt}]|$))`,NO_DOTS_SLASH:`(?!${nt}{1,2}(?:[${tt}]|$))`,QMARK_NO_DOT:`[^.${tt}]`,START_ANCHOR:`(?:^|[${tt}])`,END_ANCHOR:`(?:[${tt}]|$)`,SEP:"\\"},$n={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};return constants={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:$n,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars(Tn){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${Tn.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(Tn){return Tn===!0?bn:vn}},constants}var hasRequiredUtils;function requireUtils(){return hasRequiredUtils||(hasRequiredUtils=1,function(tt){const{REGEX_BACKSLASH:et,REGEX_REMOVE_BACKSLASH:nt,REGEX_SPECIAL_CHARS:rt,REGEX_SPECIAL_CHARS_GLOBAL:st}=requireConstants();tt.isObject=ot=>ot!==null&&typeof ot=="object"&&!Array.isArray(ot),tt.hasRegexChars=ot=>rt.test(ot),tt.isRegexChar=ot=>ot.length===1&&tt.hasRegexChars(ot),tt.escapeRegex=ot=>ot.replace(st,"\\$1"),tt.toPosixSlashes=ot=>ot.replace(et,"/"),tt.isWindows=()=>{if(typeof navigator<"u"&&navigator.platform){const ot=navigator.platform.toLowerCase();return ot==="win32"||ot==="windows"}return typeof process<"u"&&process.platform?process.platform==="win32":!1},tt.removeBackslashes=ot=>ot.replace(nt,en=>en==="\\"?"":en),tt.escapeLast=(ot,en,tn)=>{const nn=ot.lastIndexOf(en,tn);return nn===-1?ot:ot[nn-1]==="\\"?tt.escapeLast(ot,en,nn-1):`${ot.slice(0,nn)}\\${ot.slice(nn)}`},tt.removePrefix=(ot,en={})=>{let tn=ot;return tn.startsWith("./")&&(tn=tn.slice(2),en.prefix="./"),tn},tt.wrapOutput=(ot,en={},tn={})=>{const nn=tn.contains?"":"^",rn=tn.contains?"":"$";let sn=`${nn}(?:${ot})${rn}`;return en.negated===!0&&(sn=`(?:^(?!${sn}).*$)`),sn},tt.basename=(ot,{windows:en}={})=>{const tn=ot.split(en?/[\\/]/:"/"),nn=tn[tn.length-1];return nn===""?tn[tn.length-2]:nn}}(utils)),utils}var scan_1,hasRequiredScan;function requireScan(){if(hasRequiredScan)return scan_1;hasRequiredScan=1;const tt=requireUtils(),{CHAR_ASTERISK:et,CHAR_AT:nt,CHAR_BACKWARD_SLASH:rt,CHAR_COMMA:st,CHAR_DOT:ot,CHAR_EXCLAMATION_MARK:en,CHAR_FORWARD_SLASH:tn,CHAR_LEFT_CURLY_BRACE:nn,CHAR_LEFT_PARENTHESES:rn,CHAR_LEFT_SQUARE_BRACKET:sn,CHAR_PLUS:an,CHAR_QUESTION_MARK:on,CHAR_RIGHT_CURLY_BRACE:cn,CHAR_RIGHT_PARENTHESES:ln,CHAR_RIGHT_SQUARE_BRACKET:fn}=requireConstants(),gn=bn=>bn===tn||bn===rt,pn=bn=>{bn.isPrefix!==!0&&(bn.depth=bn.isGlobstar?1/0:1)};return scan_1=(bn,$n)=>{const Tn=$n||{},An=bn.length-1,On=Tn.parts===!0||Tn.scanToEnd===!0,Bn=[],Un=[],Yn=[];let xn=bn,Rn=-1,yn=0,Cn=0,Fn=!1,Mn=!1,zn=!1,wr=!1,Hn=!1,kn=!1,pr=!1,br=!1,Ir=!1,Ln=!1,qn=0,Tr,Jn,yr={value:"",depth:0,isGlob:!1};const Rr=()=>Rn>=An,Qn=()=>xn.charCodeAt(Rn+1),_n=()=>(Tr=Jn,xn.charCodeAt(++Rn));for(;Rn<An;){Jn=_n();let Ar;if(Jn===rt){pr=yr.backslashes=!0,Jn=_n(),Jn===nn&&(kn=!0);continue}if(kn===!0||Jn===nn){for(qn++;Rr()!==!0&&(Jn=_n());){if(Jn===rt){pr=yr.backslashes=!0,_n();continue}if(Jn===nn){qn++;continue}if(kn!==!0&&Jn===ot&&(Jn=_n())===ot){if(Fn=yr.isBrace=!0,zn=yr.isGlob=!0,Ln=!0,On===!0)continue;break}if(kn!==!0&&Jn===st){if(Fn=yr.isBrace=!0,zn=yr.isGlob=!0,Ln=!0,On===!0)continue;break}if(Jn===cn&&(qn--,qn===0)){kn=!1,Fn=yr.isBrace=!0,Ln=!0;break}}if(On===!0)continue;break}if(Jn===tn){if(Bn.push(Rn),Un.push(yr),yr={value:"",depth:0,isGlob:!1},Ln===!0)continue;if(Tr===ot&&Rn===yn+1){yn+=2;continue}Cn=Rn+1;continue}if(Tn.noext!==!0&&(Jn===an||Jn===nt||Jn===et||Jn===on||Jn===en)===!0&&Qn()===rn){if(zn=yr.isGlob=!0,wr=yr.isExtglob=!0,Ln=!0,Jn===en&&Rn===yn&&(Ir=!0),On===!0){for(;Rr()!==!0&&(Jn=_n());){if(Jn===rt){pr=yr.backslashes=!0,Jn=_n();continue}if(Jn===ln){zn=yr.isGlob=!0,Ln=!0;break}}continue}break}if(Jn===et){if(Tr===et&&(Hn=yr.isGlobstar=!0),zn=yr.isGlob=!0,Ln=!0,On===!0)continue;break}if(Jn===on){if(zn=yr.isGlob=!0,Ln=!0,On===!0)continue;break}if(Jn===sn){for(;Rr()!==!0&&(Ar=_n());){if(Ar===rt){pr=yr.backslashes=!0,_n();continue}if(Ar===fn){Mn=yr.isBracket=!0,zn=yr.isGlob=!0,Ln=!0;break}}if(On===!0)continue;break}if(Tn.nonegate!==!0&&Jn===en&&Rn===yn){br=yr.negated=!0,yn++;continue}if(Tn.noparen!==!0&&Jn===rn){if(zn=yr.isGlob=!0,On===!0){for(;Rr()!==!0&&(Jn=_n());){if(Jn===rn){pr=yr.backslashes=!0,Jn=_n();continue}if(Jn===ln){Ln=!0;break}}continue}break}if(zn===!0){if(Ln=!0,On===!0)continue;break}}Tn.noext===!0&&(wr=!1,zn=!1);let Nn=xn,fr="",Dn="";yn>0&&(fr=xn.slice(0,yn),xn=xn.slice(yn),Cn-=yn),Nn&&zn===!0&&Cn>0?(Nn=xn.slice(0,Cn),Dn=xn.slice(Cn)):zn===!0?(Nn="",Dn=xn):Nn=xn,Nn&&Nn!==""&&Nn!=="/"&&Nn!==xn&&gn(Nn.charCodeAt(Nn.length-1))&&(Nn=Nn.slice(0,-1)),Tn.unescape===!0&&(Dn&&(Dn=tt.removeBackslashes(Dn)),Nn&&pr===!0&&(Nn=tt.removeBackslashes(Nn)));const Zn={prefix:fr,input:bn,start:yn,base:Nn,glob:Dn,isBrace:Fn,isBracket:Mn,isGlob:zn,isExtglob:wr,isGlobstar:Hn,negated:br,negatedExtglob:Ir};if(Tn.tokens===!0&&(Zn.maxDepth=0,gn(Jn)||Un.push(yr),Zn.tokens=Un),Tn.parts===!0||Tn.tokens===!0){let Ar;for(let Nr=0;Nr<Bn.length;Nr++){const Xn=Ar?Ar+1:yn,$r=Bn[Nr],Kn=bn.slice(Xn,$r);Tn.tokens&&(Nr===0&&yn!==0?(Un[Nr].isPrefix=!0,Un[Nr].value=fr):Un[Nr].value=Kn,pn(Un[Nr]),Zn.maxDepth+=Un[Nr].depth),(Nr!==0||Kn!=="")&&Yn.push(Kn),Ar=$r}if(Ar&&Ar+1<bn.length){const Nr=bn.slice(Ar+1);Yn.push(Nr),Tn.tokens&&(Un[Un.length-1].value=Nr,pn(Un[Un.length-1]),Zn.maxDepth+=Un[Un.length-1].depth)}Zn.slashes=Bn,Zn.parts=Yn}return Zn},scan_1}var parse_1,hasRequiredParse;function requireParse(){if(hasRequiredParse)return parse_1;hasRequiredParse=1;const tt=requireConstants(),et=requireUtils(),{MAX_LENGTH:nt,POSIX_REGEX_SOURCE:rt,REGEX_NON_SPECIAL_CHARS:st,REGEX_SPECIAL_CHARS_BACKREF:ot,REPLACEMENTS:en}=tt,tn=(sn,an)=>{if(typeof an.expandRange=="function")return an.expandRange(...sn,an);sn.sort();const on=`[${sn.join("-")}]`;try{new RegExp(on)}catch{return sn.map(ln=>et.escapeRegex(ln)).join("..")}return on},nn=(sn,an)=>`Missing ${sn}: "${an}" - use "\\\\${an}" to match literal characters`,rn=(sn,an)=>{if(typeof sn!="string")throw new TypeError("Expected a string");sn=en[sn]||sn;const on={...an},cn=typeof on.maxLength=="number"?Math.min(nt,on.maxLength):nt;let ln=sn.length;if(ln>cn)throw new SyntaxError(`Input length: ${ln}, exceeds maximum allowed length: ${cn}`);const fn={type:"bos",value:"",output:on.prepend||""},gn=[fn],pn=on.capture?"":"?:",vn=tt.globChars(on.windows),bn=tt.extglobChars(vn),{DOT_LITERAL:$n,PLUS_LITERAL:Tn,SLASH_LITERAL:An,ONE_CHAR:On,DOTS_SLASH:Bn,NO_DOT:Un,NO_DOT_SLASH:Yn,NO_DOTS_SLASH:xn,QMARK:Rn,QMARK_NO_DOT:yn,STAR:Cn,START_ANCHOR:Fn}=vn,Mn=Xn=>`(${pn}(?:(?!${Fn}${Xn.dot?Bn:$n}).)*?)`,zn=on.dot?"":Un,wr=on.dot?Rn:yn;let Hn=on.bash===!0?Mn(on):Cn;on.capture&&(Hn=`(${Hn})`),typeof on.noext=="boolean"&&(on.noextglob=on.noext);const kn={input:sn,index:-1,start:0,dot:on.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:gn};sn=et.removePrefix(sn,kn),ln=sn.length;const pr=[],br=[],Ir=[];let Ln=fn,qn;const Tr=()=>kn.index===ln-1,Jn=kn.peek=(Xn=1)=>sn[kn.index+Xn],yr=kn.advance=()=>sn[++kn.index]||"",Rr=()=>sn.slice(kn.index+1),Qn=(Xn="",$r=0)=>{kn.consumed+=Xn,kn.index+=$r},_n=Xn=>{kn.output+=Xn.output!=null?Xn.output:Xn.value,Qn(Xn.value)},Nn=()=>{let Xn=1;for(;Jn()==="!"&&(Jn(2)!=="("||Jn(3)==="?");)yr(),kn.start++,Xn++;return Xn%2===0?!1:(kn.negated=!0,kn.start++,!0)},fr=Xn=>{kn[Xn]++,Ir.push(Xn)},Dn=Xn=>{kn[Xn]--,Ir.pop()},Zn=Xn=>{if(Ln.type==="globstar"){const $r=kn.braces>0&&(Xn.type==="comma"||Xn.type==="brace"),Kn=Xn.extglob===!0||pr.length&&(Xn.type==="pipe"||Xn.type==="paren");Xn.type!=="slash"&&Xn.type!=="paren"&&!$r&&!Kn&&(kn.output=kn.output.slice(0,-Ln.output.length),Ln.type="star",Ln.value="*",Ln.output=Hn,kn.output+=Ln.output)}if(pr.length&&Xn.type!=="paren"&&(pr[pr.length-1].inner+=Xn.value),(Xn.value||Xn.output)&&_n(Xn),Ln&&Ln.type==="text"&&Xn.type==="text"){Ln.output=(Ln.output||Ln.value)+Xn.value,Ln.value+=Xn.value;return}Xn.prev=Ln,gn.push(Xn),Ln=Xn},Ar=(Xn,$r)=>{const Kn={...bn[$r],conditions:1,inner:""};Kn.prev=Ln,Kn.parens=kn.parens,Kn.output=kn.output;const vr=(on.capture?"(":"")+Kn.open;fr("parens"),Zn({type:Xn,value:$r,output:kn.output?"":On}),Zn({type:"paren",extglob:!0,value:yr(),output:vr}),pr.push(Kn)},Nr=Xn=>{let $r=Xn.close+(on.capture?")":""),Kn;if(Xn.type==="negate"){let vr=Hn;if(Xn.inner&&Xn.inner.length>1&&Xn.inner.includes("/")&&(vr=Mn(on)),(vr!==Hn||Tr()||/^\)+$/.test(Rr()))&&($r=Xn.close=`)$))${vr}`),Xn.inner.includes("*")&&(Kn=Rr())&&/^\.[^\\/.]+$/.test(Kn)){const Sr=rn(Kn,{...an,fastpaths:!1}).output;$r=Xn.close=`)${Sr})${vr})`}Xn.prev.type==="bos"&&(kn.negatedExtglob=!0)}Zn({type:"paren",extglob:!0,value:qn,output:$r}),Dn("parens")};if(on.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(sn)){let Xn=!1,$r=sn.replace(ot,(Kn,vr,Sr,Or,Cr,Mr)=>Or==="\\"?(Xn=!0,Kn):Or==="?"?vr?vr+Or+(Cr?Rn.repeat(Cr.length):""):Mr===0?wr+(Cr?Rn.repeat(Cr.length):""):Rn.repeat(Sr.length):Or==="."?$n.repeat(Sr.length):Or==="*"?vr?vr+Or+(Cr?Hn:""):Hn:vr?Kn:`\\${Kn}`);return Xn===!0&&(on.unescape===!0?$r=$r.replace(/\\/g,""):$r=$r.replace(/\\+/g,Kn=>Kn.length%2===0?"\\\\":Kn?"\\":"")),$r===sn&&on.contains===!0?(kn.output=sn,kn):(kn.output=et.wrapOutput($r,kn,an),kn)}for(;!Tr();){if(qn=yr(),qn==="\0")continue;if(qn==="\\"){const Kn=Jn();if(Kn==="/"&&on.bash!==!0||Kn==="."||Kn===";")continue;if(!Kn){qn+="\\",Zn({type:"text",value:qn});continue}const vr=/^\\+/.exec(Rr());let Sr=0;if(vr&&vr[0].length>2&&(Sr=vr[0].length,kn.index+=Sr,Sr%2!==0&&(qn+="\\")),on.unescape===!0?qn=yr():qn+=yr(),kn.brackets===0){Zn({type:"text",value:qn});continue}}if(kn.brackets>0&&(qn!=="]"||Ln.value==="["||Ln.value==="[^")){if(on.posix!==!1&&qn===":"){const Kn=Ln.value.slice(1);if(Kn.includes("[")&&(Ln.posix=!0,Kn.includes(":"))){const vr=Ln.value.lastIndexOf("["),Sr=Ln.value.slice(0,vr),Or=Ln.value.slice(vr+2),Cr=rt[Or];if(Cr){Ln.value=Sr+Cr,kn.backtrack=!0,yr(),!fn.output&&gn.indexOf(Ln)===1&&(fn.output=On);continue}}}(qn==="["&&Jn()!==":"||qn==="-"&&Jn()==="]")&&(qn=`\\${qn}`),qn==="]"&&(Ln.value==="["||Ln.value==="[^")&&(qn=`\\${qn}`),on.posix===!0&&qn==="!"&&Ln.value==="["&&(qn="^"),Ln.value+=qn,_n({value:qn});continue}if(kn.quotes===1&&qn!=='"'){qn=et.escapeRegex(qn),Ln.value+=qn,_n({value:qn});continue}if(qn==='"'){kn.quotes=kn.quotes===1?0:1,on.keepQuotes===!0&&Zn({type:"text",value:qn});continue}if(qn==="("){fr("parens"),Zn({type:"paren",value:qn});continue}if(qn===")"){if(kn.parens===0&&on.strictBrackets===!0)throw new SyntaxError(nn("opening","("));const Kn=pr[pr.length-1];if(Kn&&kn.parens===Kn.parens+1){Nr(pr.pop());continue}Zn({type:"paren",value:qn,output:kn.parens?")":"\\)"}),Dn("parens");continue}if(qn==="["){if(on.nobracket===!0||!Rr().includes("]")){if(on.nobracket!==!0&&on.strictBrackets===!0)throw new SyntaxError(nn("closing","]"));qn=`\\${qn}`}else fr("brackets");Zn({type:"bracket",value:qn});continue}if(qn==="]"){if(on.nobracket===!0||Ln&&Ln.type==="bracket"&&Ln.value.length===1){Zn({type:"text",value:qn,output:`\\${qn}`});continue}if(kn.brackets===0){if(on.strictBrackets===!0)throw new SyntaxError(nn("opening","["));Zn({type:"text",value:qn,output:`\\${qn}`});continue}Dn("brackets");const Kn=Ln.value.slice(1);if(Ln.posix!==!0&&Kn[0]==="^"&&!Kn.includes("/")&&(qn=`/${qn}`),Ln.value+=qn,_n({value:qn}),on.literalBrackets===!1||et.hasRegexChars(Kn))continue;const vr=et.escapeRegex(Ln.value);if(kn.output=kn.output.slice(0,-Ln.value.length),on.literalBrackets===!0){kn.output+=vr,Ln.value=vr;continue}Ln.value=`(${pn}${vr}|${Ln.value})`,kn.output+=Ln.value;continue}if(qn==="{"&&on.nobrace!==!0){fr("braces");const Kn={type:"brace",value:qn,output:"(",outputIndex:kn.output.length,tokensIndex:kn.tokens.length};br.push(Kn),Zn(Kn);continue}if(qn==="}"){const Kn=br[br.length-1];if(on.nobrace===!0||!Kn){Zn({type:"text",value:qn,output:qn});continue}let vr=")";if(Kn.dots===!0){const Sr=gn.slice(),Or=[];for(let Cr=Sr.length-1;Cr>=0&&(gn.pop(),Sr[Cr].type!=="brace");Cr--)Sr[Cr].type!=="dots"&&Or.unshift(Sr[Cr].value);vr=tn(Or,on),kn.backtrack=!0}if(Kn.comma!==!0&&Kn.dots!==!0){const Sr=kn.output.slice(0,Kn.outputIndex),Or=kn.tokens.slice(Kn.tokensIndex);Kn.value=Kn.output="\\{",qn=vr="\\}",kn.output=Sr;for(const Cr of Or)kn.output+=Cr.output||Cr.value}Zn({type:"brace",value:qn,output:vr}),Dn("braces"),br.pop();continue}if(qn==="|"){pr.length>0&&pr[pr.length-1].conditions++,Zn({type:"text",value:qn});continue}if(qn===","){let Kn=qn;const vr=br[br.length-1];vr&&Ir[Ir.length-1]==="braces"&&(vr.comma=!0,Kn="|"),Zn({type:"comma",value:qn,output:Kn});continue}if(qn==="/"){if(Ln.type==="dot"&&kn.index===kn.start+1){kn.start=kn.index+1,kn.consumed="",kn.output="",gn.pop(),Ln=fn;continue}Zn({type:"slash",value:qn,output:An});continue}if(qn==="."){if(kn.braces>0&&Ln.type==="dot"){Ln.value==="."&&(Ln.output=$n);const Kn=br[br.length-1];Ln.type="dots",Ln.output+=qn,Ln.value+=qn,Kn.dots=!0;continue}if(kn.braces+kn.parens===0&&Ln.type!=="bos"&&Ln.type!=="slash"){Zn({type:"text",value:qn,output:$n});continue}Zn({type:"dot",value:qn,output:$n});continue}if(qn==="?"){if(!(Ln&&Ln.value==="(")&&on.noextglob!==!0&&Jn()==="("&&Jn(2)!=="?"){Ar("qmark",qn);continue}if(Ln&&Ln.type==="paren"){const vr=Jn();let Sr=qn;(Ln.value==="("&&!/[!=<:]/.test(vr)||vr==="<"&&!/<([!=]|\w+>)/.test(Rr()))&&(Sr=`\\${qn}`),Zn({type:"text",value:qn,output:Sr});continue}if(on.dot!==!0&&(Ln.type==="slash"||Ln.type==="bos")){Zn({type:"qmark",value:qn,output:yn});continue}Zn({type:"qmark",value:qn,output:Rn});continue}if(qn==="!"){if(on.noextglob!==!0&&Jn()==="("&&(Jn(2)!=="?"||!/[!=<:]/.test(Jn(3)))){Ar("negate",qn);continue}if(on.nonegate!==!0&&kn.index===0){Nn();continue}}if(qn==="+"){if(on.noextglob!==!0&&Jn()==="("&&Jn(2)!=="?"){Ar("plus",qn);continue}if(Ln&&Ln.value==="("||on.regex===!1){Zn({type:"plus",value:qn,output:Tn});continue}if(Ln&&(Ln.type==="bracket"||Ln.type==="paren"||Ln.type==="brace")||kn.parens>0){Zn({type:"plus",value:qn});continue}Zn({type:"plus",value:Tn});continue}if(qn==="@"){if(on.noextglob!==!0&&Jn()==="("&&Jn(2)!=="?"){Zn({type:"at",extglob:!0,value:qn,output:""});continue}Zn({type:"text",value:qn});continue}if(qn!=="*"){(qn==="$"||qn==="^")&&(qn=`\\${qn}`);const Kn=st.exec(Rr());Kn&&(qn+=Kn[0],kn.index+=Kn[0].length),Zn({type:"text",value:qn});continue}if(Ln&&(Ln.type==="globstar"||Ln.star===!0)){Ln.type="star",Ln.star=!0,Ln.value+=qn,Ln.output=Hn,kn.backtrack=!0,kn.globstar=!0,Qn(qn);continue}let Xn=Rr();if(on.noextglob!==!0&&/^\([^?]/.test(Xn)){Ar("star",qn);continue}if(Ln.type==="star"){if(on.noglobstar===!0){Qn(qn);continue}const Kn=Ln.prev,vr=Kn.prev,Sr=Kn.type==="slash"||Kn.type==="bos",Or=vr&&(vr.type==="star"||vr.type==="globstar");if(on.bash===!0&&(!Sr||Xn[0]&&Xn[0]!=="/")){Zn({type:"star",value:qn,output:""});continue}const Cr=kn.braces>0&&(Kn.type==="comma"||Kn.type==="brace"),Mr=pr.length&&(Kn.type==="pipe"||Kn.type==="paren");if(!Sr&&Kn.type!=="paren"&&!Cr&&!Mr){Zn({type:"star",value:qn,output:""});continue}for(;Xn.slice(0,3)==="/**";){const Fr=sn[kn.index+4];if(Fr&&Fr!=="/")break;Xn=Xn.slice(3),Qn("/**",3)}if(Kn.type==="bos"&&Tr()){Ln.type="globstar",Ln.value+=qn,Ln.output=Mn(on),kn.output=Ln.output,kn.globstar=!0,Qn(qn);continue}if(Kn.type==="slash"&&Kn.prev.type!=="bos"&&!Or&&Tr()){kn.output=kn.output.slice(0,-(Kn.output+Ln.output).length),Kn.output=`(?:${Kn.output}`,Ln.type="globstar",Ln.output=Mn(on)+(on.strictSlashes?")":"|$)"),Ln.value+=qn,kn.globstar=!0,kn.output+=Kn.output+Ln.output,Qn(qn);continue}if(Kn.type==="slash"&&Kn.prev.type!=="bos"&&Xn[0]==="/"){const Fr=Xn[1]!==void 0?"|$":"";kn.output=kn.output.slice(0,-(Kn.output+Ln.output).length),Kn.output=`(?:${Kn.output}`,Ln.type="globstar",Ln.output=`${Mn(on)}${An}|${An}${Fr})`,Ln.value+=qn,kn.output+=Kn.output+Ln.output,kn.globstar=!0,Qn(qn+yr()),Zn({type:"slash",value:"/",output:""});continue}if(Kn.type==="bos"&&Xn[0]==="/"){Ln.type="globstar",Ln.value+=qn,Ln.output=`(?:^|${An}|${Mn(on)}${An})`,kn.output=Ln.output,kn.globstar=!0,Qn(qn+yr()),Zn({type:"slash",value:"/",output:""});continue}kn.output=kn.output.slice(0,-Ln.output.length),Ln.type="globstar",Ln.output=Mn(on),Ln.value+=qn,kn.output+=Ln.output,kn.globstar=!0,Qn(qn);continue}const $r={type:"star",value:qn,output:Hn};if(on.bash===!0){$r.output=".*?",(Ln.type==="bos"||Ln.type==="slash")&&($r.output=zn+$r.output),Zn($r);continue}if(Ln&&(Ln.type==="bracket"||Ln.type==="paren")&&on.regex===!0){$r.output=qn,Zn($r);continue}(kn.index===kn.start||Ln.type==="slash"||Ln.type==="dot")&&(Ln.type==="dot"?(kn.output+=Yn,Ln.output+=Yn):on.dot===!0?(kn.output+=xn,Ln.output+=xn):(kn.output+=zn,Ln.output+=zn),Jn()!=="*"&&(kn.output+=On,Ln.output+=On)),Zn($r)}for(;kn.brackets>0;){if(on.strictBrackets===!0)throw new SyntaxError(nn("closing","]"));kn.output=et.escapeLast(kn.output,"["),Dn("brackets")}for(;kn.parens>0;){if(on.strictBrackets===!0)throw new SyntaxError(nn("closing",")"));kn.output=et.escapeLast(kn.output,"("),Dn("parens")}for(;kn.braces>0;){if(on.strictBrackets===!0)throw new SyntaxError(nn("closing","}"));kn.output=et.escapeLast(kn.output,"{"),Dn("braces")}if(on.strictSlashes!==!0&&(Ln.type==="star"||Ln.type==="bracket")&&Zn({type:"maybe_slash",value:"",output:`${An}?`}),kn.backtrack===!0){kn.output="";for(const Xn of kn.tokens)kn.output+=Xn.output!=null?Xn.output:Xn.value,Xn.suffix&&(kn.output+=Xn.suffix)}return kn};return rn.fastpaths=(sn,an)=>{const on={...an},cn=typeof on.maxLength=="number"?Math.min(nt,on.maxLength):nt,ln=sn.length;if(ln>cn)throw new SyntaxError(`Input length: ${ln}, exceeds maximum allowed length: ${cn}`);sn=en[sn]||sn;const{DOT_LITERAL:fn,SLASH_LITERAL:gn,ONE_CHAR:pn,DOTS_SLASH:vn,NO_DOT:bn,NO_DOTS:$n,NO_DOTS_SLASH:Tn,STAR:An,START_ANCHOR:On}=tt.globChars(on.windows),Bn=on.dot?$n:bn,Un=on.dot?Tn:bn,Yn=on.capture?"":"?:",xn={negated:!1,prefix:""};let Rn=on.bash===!0?".*?":An;on.capture&&(Rn=`(${Rn})`);const yn=zn=>zn.noglobstar===!0?Rn:`(${Yn}(?:(?!${On}${zn.dot?vn:fn}).)*?)`,Cn=zn=>{switch(zn){case"*":return`${Bn}${pn}${Rn}`;case".*":return`${fn}${pn}${Rn}`;case"*.*":return`${Bn}${Rn}${fn}${pn}${Rn}`;case"*/*":return`${Bn}${Rn}${gn}${pn}${Un}${Rn}`;case"**":return Bn+yn(on);case"**/*":return`(?:${Bn}${yn(on)}${gn})?${Un}${pn}${Rn}`;case"**/*.*":return`(?:${Bn}${yn(on)}${gn})?${Un}${Rn}${fn}${pn}${Rn}`;case"**/.*":return`(?:${Bn}${yn(on)}${gn})?${fn}${pn}${Rn}`;default:{const wr=/^(.*?)\.(\w+)$/.exec(zn);if(!wr)return;const Hn=Cn(wr[1]);return Hn?Hn+fn+wr[2]:void 0}}},Fn=et.removePrefix(sn,xn);let Mn=Cn(Fn);return Mn&&on.strictSlashes!==!0&&(Mn+=`${gn}?`),Mn},parse_1=rn,parse_1}var picomatch_1$1,hasRequiredPicomatch$1;function requirePicomatch$1(){if(hasRequiredPicomatch$1)return picomatch_1$1;hasRequiredPicomatch$1=1;const tt=requireScan(),et=requireParse(),nt=requireUtils(),rt=requireConstants(),st=en=>en&&typeof en=="object"&&!Array.isArray(en),ot=(en,tn,nn=!1)=>{if(Array.isArray(en)){const gn=en.map(vn=>ot(vn,tn,nn));return vn=>{for(const bn of gn){const $n=bn(vn);if($n)return $n}return!1}}const rn=st(en)&&en.tokens&&en.input;if(en===""||typeof en!="string"&&!rn)throw new TypeError("Expected pattern to be a non-empty string");const sn=tn||{},an=sn.windows,on=rn?ot.compileRe(en,tn):ot.makeRe(en,tn,!1,!0),cn=on.state;delete on.state;let ln=()=>!1;if(sn.ignore){const gn={...tn,ignore:null,onMatch:null,onResult:null};ln=ot(sn.ignore,gn,nn)}const fn=(gn,pn=!1)=>{const{isMatch:vn,match:bn,output:$n}=ot.test(gn,on,tn,{glob:en,posix:an}),Tn={glob:en,state:cn,regex:on,posix:an,input:gn,output:$n,match:bn,isMatch:vn};return typeof sn.onResult=="function"&&sn.onResult(Tn),vn===!1?(Tn.isMatch=!1,pn?Tn:!1):ln(gn)?(typeof sn.onIgnore=="function"&&sn.onIgnore(Tn),Tn.isMatch=!1,pn?Tn:!1):(typeof sn.onMatch=="function"&&sn.onMatch(Tn),pn?Tn:!0)};return nn&&(fn.state=cn),fn};return ot.test=(en,tn,nn,{glob:rn,posix:sn}={})=>{if(typeof en!="string")throw new TypeError("Expected input to be a string");if(en==="")return{isMatch:!1,output:""};const an=nn||{},on=an.format||(sn?nt.toPosixSlashes:null);let cn=en===rn,ln=cn&&on?on(en):en;return cn===!1&&(ln=on?on(en):en,cn=ln===rn),(cn===!1||an.capture===!0)&&(an.matchBase===!0||an.basename===!0?cn=ot.matchBase(en,tn,nn,sn):cn=tn.exec(ln)),{isMatch:!!cn,match:cn,output:ln}},ot.matchBase=(en,tn,nn)=>(tn instanceof RegExp?tn:ot.makeRe(tn,nn)).test(nt.basename(en)),ot.isMatch=(en,tn,nn)=>ot(tn,nn)(en),ot.parse=(en,tn)=>Array.isArray(en)?en.map(nn=>ot.parse(nn,tn)):et(en,{...tn,fastpaths:!1}),ot.scan=(en,tn)=>tt(en,tn),ot.compileRe=(en,tn,nn=!1,rn=!1)=>{if(nn===!0)return en.output;const sn=tn||{},an=sn.contains?"":"^",on=sn.contains?"":"$";let cn=`${an}(?:${en.output})${on}`;en&&en.negated===!0&&(cn=`^(?!${cn}).*$`);const ln=ot.toRegex(cn,tn);return rn===!0&&(ln.state=en),ln},ot.makeRe=(en,tn={},nn=!1,rn=!1)=>{if(!en||typeof en!="string")throw new TypeError("Expected a non-empty string");let sn={negated:!1,fastpaths:!0};return tn.fastpaths!==!1&&(en[0]==="."||en[0]==="*")&&(sn.output=et.fastpaths(en,tn)),sn.output||(sn=et(en,tn)),ot.compileRe(sn,tn,nn,rn)},ot.toRegex=(en,tn)=>{try{const nn=tn||{};return new RegExp(en,nn.flags||(nn.nocase?"i":""))}catch(nn){if(tn&&tn.debug===!0)throw nn;return/$^/}},ot.constants=rt,picomatch_1$1=ot,picomatch_1$1}var picomatch_1,hasRequiredPicomatch;function requirePicomatch(){if(hasRequiredPicomatch)return picomatch_1;hasRequiredPicomatch=1;const tt=requirePicomatch$1(),et=requireUtils();function nt(rt,st,ot=!1){return st&&(st.windows===null||st.windows===void 0)&&(st={...st,windows:et.isWindows()}),tt(rt,st,ot)}return Object.assign(nt,tt),picomatch_1=nt,picomatch_1}var hasRequiredBuilder;function requireBuilder(){if(hasRequiredBuilder)return builder;hasRequiredBuilder=1,Object.defineProperty(builder,"__esModule",{value:!0}),builder.Builder=void 0;const tt=require$$0__default$1,et=requireApiBuilder();var nt=null;try{require.resolve("picomatch"),nt=requirePicomatch()}catch{}class rt{globCache={};options={maxDepth:1/0,suppressErrors:!0,pathSeparator:tt.sep,filters:[]};globFunction;constructor(ot){this.options={...this.options,...ot},this.globFunction=this.options.globFunction}group(){return this.options.group=!0,this}withPathSeparator(ot){return this.options.pathSeparator=ot,this}withBasePath(){return this.options.includeBasePath=!0,this}withRelativePaths(){return this.options.relativePaths=!0,this}withDirs(){return this.options.includeDirs=!0,this}withMaxDepth(ot){return this.options.maxDepth=ot,this}withMaxFiles(ot){return this.options.maxFiles=ot,this}withFullPaths(){return this.options.resolvePaths=!0,this.options.includeBasePath=!0,this}withErrors(){return this.options.suppressErrors=!1,this}withSymlinks({resolvePaths:ot=!0}={}){return this.options.resolveSymlinks=!0,this.options.useRealPaths=ot,this.withFullPaths()}withAbortSignal(ot){return this.options.signal=ot,this}normalize(){return this.options.normalizePath=!0,this}filter(ot){return this.options.filters.push(ot),this}onlyDirs(){return this.options.excludeFiles=!0,this.options.includeDirs=!0,this}exclude(ot){return this.options.exclude=ot,this}onlyCounts(){return this.options.onlyCounts=!0,this}crawl(ot){return new et.APIBuilder(ot||".",this.options)}withGlobFunction(ot){return this.globFunction=ot,this}crawlWithOptions(ot,en){return this.options={...this.options,...en},new et.APIBuilder(ot||".",this.options)}glob(...ot){return this.globFunction?this.globWithOptions(ot):this.globWithOptions(ot,{dot:!0})}globWithOptions(ot,...en){const tn=this.globFunction||nt;if(!tn)throw new Error("Please specify a glob function to use glob matching.");var nn=this.globCache[ot.join("\0")];return nn||(nn=tn(ot,...en),this.globCache[ot.join("\0")]=nn),this.options.filters.push(rn=>nn(rn)),this}}return builder.Builder=rt,builder}var types={},hasRequiredTypes;function requireTypes(){return hasRequiredTypes||(hasRequiredTypes=1,Object.defineProperty(types,"__esModule",{value:!0})),types}var hasRequiredDist;function requireDist(){return hasRequiredDist||(hasRequiredDist=1,function(tt){var et=dist&&dist.__createBinding||(Object.create?function(st,ot,en,tn){tn===void 0&&(tn=en);var nn=Object.getOwnPropertyDescriptor(ot,en);(!nn||("get"in nn?!ot.__esModule:nn.writable||nn.configurable))&&(nn={enumerable:!0,get:function(){return ot[en]}}),Object.defineProperty(st,tn,nn)}:function(st,ot,en,tn){tn===void 0&&(tn=en),st[tn]=ot[en]}),nt=dist&&dist.__exportStar||function(st,ot){for(var en in st)en!=="default"&&!Object.prototype.hasOwnProperty.call(ot,en)&&et(ot,st,en)};Object.defineProperty(tt,"__esModule",{value:!0}),tt.fdir=void 0;const rt=requireBuilder();Object.defineProperty(tt,"fdir",{enumerable:!0,get:function(){return rt.Builder}}),nt(requireTypes(),tt)}(dist)),dist}var distExports=requireDist();class NodeFileSystemProvider{constructor(){this.encoding="utf-8"}readFile(et){return fs__namespace.promises.readFile(et.fsPath,this.encoding)}async readDirectory(et){return(await fs__namespace.promises.readdir(et.fsPath,{withFileTypes:!0})).map(rt=>({dirent:rt,isFile:rt.isFile(),isDirectory:rt.isDirectory(),uri:UriUtils.joinPath(et,rt.name)}))}}const DeploymentElement="DeploymentElement";function isDeploymentElement(tt){return reflection.isInstance(tt,DeploymentElement)}const DeploymentNodeOrElementKind="DeploymentNodeOrElementKind",DeploymentViewRule="DeploymentViewRule";function isDeploymentViewRule(tt){return reflection.isInstance(tt,DeploymentViewRule)}const DynamicViewRule="DynamicViewRule";function isDynamicViewRule(tt){return reflection.isInstance(tt,DynamicViewRule)}const ElementExpression="ElementExpression";function isElementExpression(tt){return reflection.isInstance(tt,ElementExpression)}const ElementPredicate="ElementPredicate";function isElementPredicate(tt){return reflection.isInstance(tt,ElementPredicate)}const ElementPredicateOrWhere="ElementPredicateOrWhere";function isElementPredicateOrWhere(tt){return reflection.isInstance(tt,ElementPredicateOrWhere)}const ElementPredicateOrWhereV2="ElementPredicateOrWhereV2";function isElementPredicateOrWhereV2(tt){return reflection.isInstance(tt,ElementPredicateOrWhereV2)}const ElementProperty="ElementProperty";function isElementProperty(tt){return reflection.isInstance(tt,ElementProperty)}const ExpressionV2="ExpressionV2";function isExpressionV2(tt){return reflection.isInstance(tt,ExpressionV2)}const ExtendElementProperty="ExtendElementProperty",FqnExpr="FqnExpr";function isFqnExpr(tt){return reflection.isInstance(tt,FqnExpr)}const FqnReferenceable="FqnReferenceable",LikeC4View="LikeC4View";function isLikeC4View(tt){return reflection.isInstance(tt,LikeC4View)}const MetadataProperty="MetadataProperty";function isMetadataProperty(tt){return reflection.isInstance(tt,MetadataProperty)}const Predicate="Predicate";function isPredicate(tt){return reflection.isInstance(tt,Predicate)}const Referenceable="Referenceable",RelationExpr="RelationExpr";function isRelationExpr(tt){return reflection.isInstance(tt,RelationExpr)}const RelationExpression="RelationExpression";function isRelationExpression(tt){return reflection.isInstance(tt,RelationExpression)}const RelationPredicate="RelationPredicate";function isRelationPredicate(tt){return reflection.isInstance(tt,RelationPredicate)}const RelationPredicateOrWhere="RelationPredicateOrWhere";function isRelationPredicateOrWhere(tt){return reflection.isInstance(tt,RelationPredicateOrWhere)}const RelationPredicateOrWhereV2="RelationPredicateOrWhereV2";function isRelationPredicateOrWhereV2(tt){return reflection.isInstance(tt,RelationPredicateOrWhereV2)}const RelationProperty="RelationProperty",RelationshipStyleProperty="RelationshipStyleProperty";function isRelationshipStyleProperty(tt){return reflection.isInstance(tt,RelationshipStyleProperty)}const SizeProperty="SizeProperty";function isSizeProperty(tt){return reflection.isInstance(tt,SizeProperty)}const StringProperty="StringProperty";function isStringProperty(tt){return reflection.isInstance(tt,StringProperty)}const StyleProperty="StyleProperty";function isStyleProperty(tt){return reflection.isInstance(tt,StyleProperty)}const ViewProperty="ViewProperty";function isViewProperty(tt){return reflection.isInstance(tt,ViewProperty)}const ViewRule="ViewRule";function isViewRule(tt){return reflection.isInstance(tt,ViewRule)}const ViewRulePredicate="ViewRulePredicate";function isViewRulePredicate(tt){return reflection.isInstance(tt,ViewRulePredicate)}const ViewRuleStyleOrGlobalRef="ViewRuleStyleOrGlobalRef";function isViewRuleStyleOrGlobalRef(tt){return reflection.isInstance(tt,ViewRuleStyleOrGlobalRef)}const WhereElement="WhereElement";function isWhereElement(tt){return reflection.isInstance(tt,WhereElement)}const WhereElementExpression="WhereElementExpression";function isWhereElementExpression(tt){return reflection.isInstance(tt,WhereElementExpression)}const WhereExpression="WhereExpression",WhereKindEqual="WhereKindEqual";function isWhereKindEqual(tt){return reflection.isInstance(tt,WhereKindEqual)}const WhereRelation="WhereRelation";function isWhereRelation(tt){return reflection.isInstance(tt,WhereRelation)}const WhereRelationExpression="WhereRelationExpression";function isWhereRelationExpression(tt){return reflection.isInstance(tt,WhereRelationExpression)}const WhereTagEqual="WhereTagEqual";function isWhereTagEqual(tt){return reflection.isInstance(tt,WhereTagEqual)}const ArrowProperty="ArrowProperty";function isArrowProperty(tt){return reflection.isInstance(tt,ArrowProperty)}const BorderProperty="BorderProperty";function isBorderProperty(tt){return reflection.isInstance(tt,BorderProperty)}const ColorProperty="ColorProperty";function isColorProperty(tt){return reflection.isInstance(tt,ColorProperty)}const CustomColor="CustomColor",CustomElementProperties="CustomElementProperties";function isCustomElementProperties(tt){return reflection.isInstance(tt,CustomElementProperties)}const CustomRelationProperties="CustomRelationProperties";function isCustomRelationProperties(tt){return reflection.isInstance(tt,CustomRelationProperties)}const DeployedInstance="DeployedInstance";function isDeployedInstance(tt){return reflection.isInstance(tt,DeployedInstance)}const DeployedInstanceBody="DeployedInstanceBody";function isDeployedInstanceBody(tt){return reflection.isInstance(tt,DeployedInstanceBody)}const DeploymentNode="DeploymentNode";function isDeploymentNode(tt){return reflection.isInstance(tt,DeploymentNode)}const DeploymentNodeBody="DeploymentNodeBody";function isDeploymentNodeBody(tt){return reflection.isInstance(tt,DeploymentNodeBody)}const DeploymentNodeKind="DeploymentNodeKind",DeploymentRelation="DeploymentRelation";function isDeploymentRelation(tt){return reflection.isInstance(tt,DeploymentRelation)}const DeploymentRelationBody="DeploymentRelationBody";function isDeploymentRelationBody(tt){return reflection.isInstance(tt,DeploymentRelationBody)}const DeploymentView="DeploymentView";function isDeploymentView(tt){return reflection.isInstance(tt,DeploymentView)}const DeploymentViewBody="DeploymentViewBody";function isDeploymentViewBody(tt){return reflection.isInstance(tt,DeploymentViewBody)}const DeploymentViewRulePredicate="DeploymentViewRulePredicate";function isDeploymentViewRulePredicate(tt){return reflection.isInstance(tt,DeploymentViewRulePredicate)}const DeploymentViewRulePredicateExpression="DeploymentViewRulePredicateExpression";function isDeploymentViewRulePredicateExpression(tt){return reflection.isInstance(tt,DeploymentViewRulePredicateExpression)}const DeploymentViewRuleStyle="DeploymentViewRuleStyle";function isDeploymentViewRuleStyle(tt){return reflection.isInstance(tt,DeploymentViewRuleStyle)}const DirectedRelationExpr="DirectedRelationExpr";function isDirectedRelationExpr(tt){return reflection.isInstance(tt,DirectedRelationExpr)}const DirectedRelationExpression="DirectedRelationExpression";function isDirectedRelationExpression(tt){return reflection.isInstance(tt,DirectedRelationExpression)}const DynamicView="DynamicView";function isDynamicView(tt){return reflection.isInstance(tt,DynamicView)}const DynamicViewBody="DynamicViewBody";function isDynamicViewBody(tt){return reflection.isInstance(tt,DynamicViewBody)}const DynamicViewGlobalPredicateRef="DynamicViewGlobalPredicateRef";function isDynamicViewGlobalPredicateRef(tt){return reflection.isInstance(tt,DynamicViewGlobalPredicateRef)}const DynamicViewIncludePredicate="DynamicViewIncludePredicate";function isDynamicViewIncludePredicate(tt){return reflection.isInstance(tt,DynamicViewIncludePredicate)}const DynamicViewParallelSteps="DynamicViewParallelSteps";function isDynamicViewParallelSteps(tt){return reflection.isInstance(tt,DynamicViewParallelSteps)}const DynamicViewPredicateIterator="DynamicViewPredicateIterator";function isDynamicViewPredicateIterator(tt){return reflection.isInstance(tt,DynamicViewPredicateIterator)}const DynamicViewRef="DynamicViewRef",DynamicViewStep="DynamicViewStep";function isDynamicViewStep(tt){return reflection.isInstance(tt,DynamicViewStep)}const Element="Element";function isElement(tt){return reflection.isInstance(tt,Element)}const ElementBody="ElementBody";function isElementBody(tt){return reflection.isInstance(tt,ElementBody)}const ElementDescedantsExpression="ElementDescedantsExpression";function isElementDescedantsExpression(tt){return reflection.isInstance(tt,ElementDescedantsExpression)}const ElementExpressionsIterator="ElementExpressionsIterator";function isElementExpressionsIterator(tt){return reflection.isInstance(tt,ElementExpressionsIterator)}const ElementKind="ElementKind";function isElementKind(tt){return reflection.isInstance(tt,ElementKind)}const ElementKindExpression="ElementKindExpression";function isElementKindExpression(tt){return reflection.isInstance(tt,ElementKindExpression)}const ElementPredicateWhere="ElementPredicateWhere";function isElementPredicateWhere(tt){return reflection.isInstance(tt,ElementPredicateWhere)}const ElementPredicateWhereV2="ElementPredicateWhereV2";function isElementPredicateWhereV2(tt){return reflection.isInstance(tt,ElementPredicateWhereV2)}const ElementPredicateWith="ElementPredicateWith";function isElementPredicateWith(tt){return reflection.isInstance(tt,ElementPredicateWith)}const ElementRef="ElementRef";function isElementRef(tt){return reflection.isInstance(tt,ElementRef)}const ElementStringProperty="ElementStringProperty";function isElementStringProperty(tt){return reflection.isInstance(tt,ElementStringProperty)}const ElementStyleProperty="ElementStyleProperty";function isElementStyleProperty(tt){return reflection.isInstance(tt,ElementStyleProperty)}const ElementTagExpression="ElementTagExpression";function isElementTagExpression(tt){return reflection.isInstance(tt,ElementTagExpression)}const ElementView="ElementView";function isElementView(tt){return reflection.isInstance(tt,ElementView)}const ElementViewBody="ElementViewBody";function isElementViewBody(tt){return reflection.isInstance(tt,ElementViewBody)}const ElementViewRef="ElementViewRef",ExcludePredicate="ExcludePredicate";function isExcludePredicate(tt){return reflection.isInstance(tt,ExcludePredicate)}const ExpandElementExpression="ExpandElementExpression";function isExpandElementExpression(tt){return reflection.isInstance(tt,ExpandElementExpression)}const ExtendElement="ExtendElement";function isExtendElement(tt){return reflection.isInstance(tt,ExtendElement)}const ExtendElementBody="ExtendElementBody";function isExtendElementBody(tt){return reflection.isInstance(tt,ExtendElementBody)}const FqnExpressions="FqnExpressions";function isFqnExpressions(tt){return reflection.isInstance(tt,FqnExpressions)}const FqnRef="FqnRef";function isFqnRef(tt){return reflection.isInstance(tt,FqnRef)}const FqnRefExpr="FqnRefExpr";function isFqnRefExpr(tt){return reflection.isInstance(tt,FqnRefExpr)}const GlobalDynamicPredicateGroup="GlobalDynamicPredicateGroup";function isGlobalDynamicPredicateGroup(tt){return reflection.isInstance(tt,GlobalDynamicPredicateGroup)}const GlobalPredicateGroup="GlobalPredicateGroup";function isGlobalPredicateGroup(tt){return reflection.isInstance(tt,GlobalPredicateGroup)}const Globals="Globals";function isGlobals(tt){return reflection.isInstance(tt,Globals)}const GlobalStyle="GlobalStyle";function isGlobalStyle(tt){return reflection.isInstance(tt,GlobalStyle)}const GlobalStyleGroup="GlobalStyleGroup";function isGlobalStyleGroup(tt){return reflection.isInstance(tt,GlobalStyleGroup)}const GlobalStyleId="GlobalStyleId",IconProperty="IconProperty";function isIconProperty(tt){return reflection.isInstance(tt,IconProperty)}const IncludePredicate="IncludePredicate";function isIncludePredicate(tt){return reflection.isInstance(tt,IncludePredicate)}const IncomingRelationExpr="IncomingRelationExpr";function isIncomingRelationExpr(tt){return reflection.isInstance(tt,IncomingRelationExpr)}const IncomingRelationExpression="IncomingRelationExpression";function isIncomingRelationExpression(tt){return reflection.isInstance(tt,IncomingRelationExpression)}const InOutRelationExpr="InOutRelationExpr";function isInOutRelationExpr(tt){return reflection.isInstance(tt,InOutRelationExpr)}const InOutRelationExpression="InOutRelationExpression";function isInOutRelationExpression(tt){return reflection.isInstance(tt,InOutRelationExpression)}const LibIcon="LibIcon";function isLibIcon(tt){return reflection.isInstance(tt,LibIcon)}const LikeC4Grammar$1="LikeC4Grammar";function isLikeC4Grammar(tt){return reflection.isInstance(tt,LikeC4Grammar$1)}const LikeC4Lib="LikeC4Lib";function isLikeC4Lib(tt){return reflection.isInstance(tt,LikeC4Lib)}const LineProperty="LineProperty";function isLineProperty(tt){return reflection.isInstance(tt,LineProperty)}const LinkProperty="LinkProperty";function isLinkProperty(tt){return reflection.isInstance(tt,LinkProperty)}const MetadataAttribute="MetadataAttribute";function isMetadataAttribute(tt){return reflection.isInstance(tt,MetadataAttribute)}const MetadataBody="MetadataBody";function isMetadataBody(tt){return reflection.isInstance(tt,MetadataBody)}const Model="Model";function isModel(tt){return reflection.isInstance(tt,Model)}const ModelDeployments="ModelDeployments";function isModelDeployments(tt){return reflection.isInstance(tt,ModelDeployments)}const ModelViews="ModelViews";function isModelViews(tt){return reflection.isInstance(tt,ModelViews)}const MultipleProperty="MultipleProperty";function isMultipleProperty(tt){return reflection.isInstance(tt,MultipleProperty)}const NavigateToProperty="NavigateToProperty";function isNavigateToProperty(tt){return reflection.isInstance(tt,NavigateToProperty)}const NotationProperty="NotationProperty";function isNotationProperty(tt){return reflection.isInstance(tt,NotationProperty)}const NotesProperty="NotesProperty";function isNotesProperty(tt){return reflection.isInstance(tt,NotesProperty)}const OpacityProperty="OpacityProperty";function isOpacityProperty(tt){return reflection.isInstance(tt,OpacityProperty)}const OutgoingRelationExpr="OutgoingRelationExpr";function isOutgoingRelationExpr(tt){return reflection.isInstance(tt,OutgoingRelationExpr)}const OutgoingRelationExpression="OutgoingRelationExpression";function isOutgoingRelationExpression(tt){return reflection.isInstance(tt,OutgoingRelationExpression)}const PaddingSizeProperty="PaddingSizeProperty";function isPaddingSizeProperty(tt){return reflection.isInstance(tt,PaddingSizeProperty)}const Predicates="Predicates";function isPredicates(tt){return reflection.isInstance(tt,Predicates)}const Relation="Relation";function isRelation(tt){return reflection.isInstance(tt,Relation)}const RelationBody="RelationBody";function isRelationBody(tt){return reflection.isInstance(tt,RelationBody)}const RelationNavigateToProperty="RelationNavigateToProperty";function isRelationNavigateToProperty(tt){return reflection.isInstance(tt,RelationNavigateToProperty)}const RelationPredicateWhere="RelationPredicateWhere";function isRelationPredicateWhere(tt){return reflection.isInstance(tt,RelationPredicateWhere)}const RelationPredicateWhereV2="RelationPredicateWhereV2";function isRelationPredicateWhereV2(tt){return reflection.isInstance(tt,RelationPredicateWhereV2)}const RelationPredicateWith="RelationPredicateWith";function isRelationPredicateWith(tt){return reflection.isInstance(tt,RelationPredicateWith)}const RelationshipKind="RelationshipKind";function isRelationshipKind(tt){return reflection.isInstance(tt,RelationshipKind)}const RelationStringProperty="RelationStringProperty";function isRelationStringProperty(tt){return reflection.isInstance(tt,RelationStringProperty)}const RelationStyleProperty="RelationStyleProperty";function isRelationStyleProperty(tt){return reflection.isInstance(tt,RelationStyleProperty)}const ShapeProperty="ShapeProperty";function isShapeProperty(tt){return reflection.isInstance(tt,ShapeProperty)}const ShapeSizeProperty="ShapeSizeProperty";function isShapeSizeProperty(tt){return reflection.isInstance(tt,ShapeSizeProperty)}const SpecificationColor="SpecificationColor";function isSpecificationColor(tt){return reflection.isInstance(tt,SpecificationColor)}const SpecificationDeploymentNodeKind="SpecificationDeploymentNodeKind";function isSpecificationDeploymentNodeKind(tt){return reflection.isInstance(tt,SpecificationDeploymentNodeKind)}const SpecificationElementKind="SpecificationElementKind";function isSpecificationElementKind(tt){return reflection.isInstance(tt,SpecificationElementKind)}const SpecificationElementStringProperty="SpecificationElementStringProperty";function isSpecificationElementStringProperty(tt){return reflection.isInstance(tt,SpecificationElementStringProperty)}const SpecificationRelationshipKind="SpecificationRelationshipKind";function isSpecificationRelationshipKind(tt){return reflection.isInstance(tt,SpecificationRelationshipKind)}const SpecificationRelationshipStringProperty="SpecificationRelationshipStringProperty";function isSpecificationRelationshipStringProperty(tt){return reflection.isInstance(tt,SpecificationRelationshipStringProperty)}const SpecificationRule="SpecificationRule";function isSpecificationRule(tt){return reflection.isInstance(tt,SpecificationRule)}const SpecificationTag="SpecificationTag";function isSpecificationTag(tt){return reflection.isInstance(tt,SpecificationTag)}const StrictFqnElementRef="StrictFqnElementRef";function isStrictFqnElementRef(tt){return reflection.isInstance(tt,StrictFqnElementRef)}const Tag="Tag";function isTag(tt){return reflection.isInstance(tt,Tag)}const Tags="Tags";function isTags(tt){return reflection.isInstance(tt,Tags)}const TextSizeProperty="TextSizeProperty";function isTextSizeProperty(tt){return reflection.isInstance(tt,TextSizeProperty)}const ViewRef="ViewRef",ViewRuleAutoLayout="ViewRuleAutoLayout";function isViewRuleAutoLayout(tt){return reflection.isInstance(tt,ViewRuleAutoLayout)}const ViewRuleGlobalPredicateRef="ViewRuleGlobalPredicateRef";function isViewRuleGlobalPredicateRef(tt){return reflection.isInstance(tt,ViewRuleGlobalPredicateRef)}const ViewRuleGlobalStyle="ViewRuleGlobalStyle";function isViewRuleGlobalStyle(tt){return reflection.isInstance(tt,ViewRuleGlobalStyle)}const ViewRuleGroup="ViewRuleGroup";function isViewRuleGroup(tt){return reflection.isInstance(tt,ViewRuleGroup)}const ViewRuleStyle="ViewRuleStyle";function isViewRuleStyle(tt){return reflection.isInstance(tt,ViewRuleStyle)}const ViewStringProperty="ViewStringProperty";function isViewStringProperty(tt){return reflection.isInstance(tt,ViewStringProperty)}const WhereBinaryExpression="WhereBinaryExpression";function isWhereBinaryExpression(tt){return reflection.isInstance(tt,WhereBinaryExpression)}const WhereElementKind="WhereElementKind";function isWhereElementKind(tt){return reflection.isInstance(tt,WhereElementKind)}const WhereElementNegation="WhereElementNegation";function isWhereElementNegation(tt){return reflection.isInstance(tt,WhereElementNegation)}const WhereElementTag="WhereElementTag";function isWhereElementTag(tt){return reflection.isInstance(tt,WhereElementTag)}const WhereRelationKind="WhereRelationKind";function isWhereRelationKind(tt){return reflection.isInstance(tt,WhereRelationKind)}const WhereRelationNegation="WhereRelationNegation";function isWhereRelationNegation(tt){return reflection.isInstance(tt,WhereRelationNegation)}const WhereRelationParticipantKind="WhereRelationParticipantKind";function isWhereRelationParticipantKind(tt){return reflection.isInstance(tt,WhereRelationParticipantKind)}const WhereRelationParticipantTag="WhereRelationParticipantTag";function isWhereRelationParticipantTag(tt){return reflection.isInstance(tt,WhereRelationParticipantTag)}const WhereRelationTag="WhereRelationTag";function isWhereRelationTag(tt){return reflection.isInstance(tt,WhereRelationTag)}const WildcardExpression="WildcardExpression";function isWildcardExpression(tt){return reflection.isInstance(tt,WildcardExpression)}class LikeC4AstReflection extends AbstractAstReflection{getAllTypes(){return[ArrowProperty,BorderProperty,ColorProperty,CustomColor,CustomElementProperties,CustomRelationProperties,DeployedInstance,DeployedInstanceBody,DeploymentElement,DeploymentNode,DeploymentNodeBody,DeploymentNodeKind,DeploymentNodeOrElementKind,DeploymentRelation,DeploymentRelationBody,DeploymentView,DeploymentViewBody,DeploymentViewRule,DeploymentViewRulePredicate,DeploymentViewRulePredicateExpression,DeploymentViewRuleStyle,DirectedRelationExpr,DirectedRelationExpression,DynamicView,DynamicViewBody,DynamicViewGlobalPredicateRef,DynamicViewIncludePredicate,DynamicViewParallelSteps,DynamicViewPredicateIterator,DynamicViewRef,DynamicViewRule,DynamicViewStep,Element,ElementBody,ElementDescedantsExpression,ElementExpression,ElementExpressionsIterator,ElementKind,ElementKindExpression,ElementPredicate,ElementPredicateOrWhere,ElementPredicateOrWhereV2,ElementPredicateWhere,ElementPredicateWhereV2,ElementPredicateWith,ElementProperty,ElementRef,ElementStringProperty,ElementStyleProperty,ElementTagExpression,ElementView,ElementViewBody,ElementViewRef,ExcludePredicate,ExpandElementExpression,ExpressionV2,ExtendElement,ExtendElementBody,ExtendElementProperty,FqnExpr,FqnExpressions,FqnRef,FqnRefExpr,FqnReferenceable,GlobalDynamicPredicateGroup,GlobalPredicateGroup,GlobalStyle,GlobalStyleGroup,GlobalStyleId,Globals,IconProperty,InOutRelationExpr,InOutRelationExpression,IncludePredicate,IncomingRelationExpr,IncomingRelationExpression,LibIcon,LikeC4Grammar$1,LikeC4Lib,LikeC4View,LineProperty,LinkProperty,MetadataAttribute,MetadataBody,MetadataProperty,Model,ModelDeployments,ModelViews,MultipleProperty,NavigateToProperty,NotationProperty,NotesProperty,OpacityProperty,OutgoingRelationExpr,OutgoingRelationExpression,PaddingSizeProperty,Predicate,Predicates,Referenceable,Relation,RelationBody,RelationExpr,RelationExpression,RelationNavigateToProperty,RelationPredicate,RelationPredicateOrWhere,RelationPredicateOrWhereV2,RelationPredicateWhere,RelationPredicateWhereV2,RelationPredicateWith,RelationProperty,RelationStringProperty,RelationStyleProperty,RelationshipKind,RelationshipStyleProperty,ShapeProperty,ShapeSizeProperty,SizeProperty,SpecificationColor,SpecificationDeploymentNodeKind,SpecificationElementKind,SpecificationElementStringProperty,SpecificationRelationshipKind,SpecificationRelationshipStringProperty,SpecificationRule,SpecificationTag,StrictFqnElementRef,StringProperty,StyleProperty,Tag,Tags,TextSizeProperty,ViewProperty,ViewRef,ViewRule,ViewRuleAutoLayout,ViewRuleGlobalPredicateRef,ViewRuleGlobalStyle,ViewRuleGroup,ViewRulePredicate,ViewRuleStyle,ViewRuleStyleOrGlobalRef,ViewStringProperty,WhereBinaryExpression,WhereElement,WhereElementExpression,WhereElementKind,WhereElementNegation,WhereElementTag,WhereExpression,WhereKindEqual,WhereRelation,WhereRelationExpression,WhereRelationKind,WhereRelationNegation,WhereRelationParticipantKind,WhereRelationParticipantTag,WhereRelationTag,WhereTagEqual,WildcardExpression]}computeIsSubtype(et,nt){switch(et){case ArrowProperty:case LineProperty:return this.isSubtype(RelationshipStyleProperty,nt);case BorderProperty:case MultipleProperty:case OpacityProperty:case ShapeProperty:return this.isSubtype(StyleProperty,nt);case ColorProperty:return this.isSubtype(RelationshipStyleProperty,nt)||this.isSubtype(StyleProperty,nt);case DeployedInstance:case DeploymentNode:return this.isSubtype(DeploymentElement,nt)||this.isSubtype(Referenceable,nt);case DeploymentNodeKind:case ElementKind:return this.isSubtype(DeploymentNodeOrElementKind,nt);case DeploymentView:case DynamicView:case ElementView:return this.isSubtype(LikeC4View,nt);case DeploymentViewRulePredicate:case DeploymentViewRuleStyle:return this.isSubtype(DeploymentViewRule,nt);case DirectedRelationExpr:case IncomingRelationExpr:case InOutRelationExpr:case OutgoingRelationExpr:return this.isSubtype(RelationExpr,nt);case DirectedRelationExpression:case IncomingRelationExpression:case InOutRelationExpression:case OutgoingRelationExpression:return this.isSubtype(RelationExpression,nt);case DynamicViewGlobalPredicateRef:case DynamicViewIncludePredicate:return this.isSubtype(DynamicViewRule,nt);case Element:return this.isSubtype(FqnReferenceable,nt)||this.isSubtype(Referenceable,nt);case ElementDescedantsExpression:case ElementKindExpression:case ElementRef:case ElementTagExpression:case ExpandElementExpression:return this.isSubtype(ElementExpression,nt);case ElementExpression:case ElementPredicateWhere:return this.isSubtype(ElementPredicateOrWhere,nt);case ElementPredicate:case RelationPredicate:return this.isSubtype(Predicate,nt);case ElementPredicateOrWhere:case ElementPredicateWith:return this.isSubtype(ElementPredicate,nt);case ElementPredicateOrWhereV2:case RelationPredicateOrWhereV2:return this.isSubtype(ExpressionV2,nt);case ElementPredicateWhereV2:case FqnExpr:return this.isSubtype(ElementPredicateOrWhereV2,nt);case ElementStringProperty:return this.isSubtype(ElementProperty,nt)||this.isSubtype(StringProperty,nt);case ElementStyleProperty:return this.isSubtype(ElementProperty,nt);case ExcludePredicate:case IncludePredicate:return this.isSubtype(ViewRulePredicate,nt);case ExtendElement:case Referenceable:return this.isSubtype(FqnReferenceable,nt);case FqnRefExpr:return this.isSubtype(FqnExpr,nt);case IconProperty:return this.isSubtype(ElementProperty,nt)||this.isSubtype(StyleProperty,nt);case LinkProperty:return this.isSubtype(ElementProperty,nt)||this.isSubtype(ExtendElementProperty,nt)||this.isSubtype(RelationProperty,nt)||this.isSubtype(ViewProperty,nt);case MetadataAttribute:case NotationProperty:case NotesProperty:case SpecificationElementStringProperty:case SpecificationRelationshipStringProperty:return this.isSubtype(StringProperty,nt);case MetadataBody:return this.isSubtype(MetadataProperty,nt);case MetadataProperty:return this.isSubtype(ElementProperty,nt)||this.isSubtype(ExtendElementProperty,nt)||this.isSubtype(RelationProperty,nt);case PaddingSizeProperty:case ShapeSizeProperty:case TextSizeProperty:return this.isSubtype(SizeProperty,nt)||this.isSubtype(StyleProperty,nt);case RelationExpr:case RelationPredicateWhereV2:return this.isSubtype(RelationPredicateOrWhereV2,nt);case RelationExpression:case RelationPredicateWhere:return this.isSubtype(RelationPredicateOrWhere,nt);case RelationNavigateToProperty:case RelationStyleProperty:return this.isSubtype(RelationProperty,nt);case RelationPredicateOrWhere:case RelationPredicateWith:return this.isSubtype(RelationPredicate,nt);case RelationStringProperty:return this.isSubtype(RelationProperty,nt)||this.isSubtype(StringProperty,nt);case ViewRuleAutoLayout:return this.isSubtype(DeploymentViewRule,nt)||this.isSubtype(DynamicViewRule,nt)||this.isSubtype(ViewRule,nt);case ViewRuleGlobalPredicateRef:case ViewRuleGroup:case ViewRulePredicate:return this.isSubtype(ViewRule,nt);case ViewRuleGlobalStyle:case ViewRuleStyle:return this.isSubtype(ViewRuleStyleOrGlobalRef,nt);case ViewRuleStyleOrGlobalRef:return this.isSubtype(DynamicViewRule,nt)||this.isSubtype(ViewRule,nt);case ViewStringProperty:return this.isSubtype(StringProperty,nt)||this.isSubtype(ViewProperty,nt);case WhereBinaryExpression:return this.isSubtype(WhereElementExpression,nt)||this.isSubtype(WhereRelationExpression,nt);case WhereElement:case WhereElementNegation:return this.isSubtype(WhereElementExpression,nt);case WhereElementExpression:case WhereRelationExpression:return this.isSubtype(WhereExpression,nt);case WhereElementKind:return this.isSubtype(WhereElement,nt)||this.isSubtype(WhereKindEqual,nt);case WhereElementTag:return this.isSubtype(WhereElement,nt)||this.isSubtype(WhereTagEqual,nt);case WhereRelation:case WhereRelationNegation:return this.isSubtype(WhereRelationExpression,nt);case WhereRelationKind:case WhereRelationParticipantKind:return this.isSubtype(WhereKindEqual,nt)||this.isSubtype(WhereRelation,nt);case WhereRelationParticipantTag:case WhereRelationTag:return this.isSubtype(WhereRelation,nt)||this.isSubtype(WhereTagEqual,nt);case WildcardExpression:return this.isSubtype(ElementExpression,nt)||this.isSubtype(FqnExpr,nt);default:return!1}}getReferenceType(et){const nt=`${et.container.$type}:${et.property}`;switch(nt){case"ColorProperty:customColor":return CustomColor;case"DeploymentNode:kind":return DeploymentNodeKind;case"DeploymentRelation:kind":case"DynamicViewStep:kind":case"OutgoingRelationExpr:kind":case"OutgoingRelationExpression:kind":case"Relation:kind":case"WhereRelationKind:value":return RelationshipKind;case"DynamicViewGlobalPredicateRef:predicate":return GlobalDynamicPredicateGroup;case"DynamicViewRef:view":return DynamicView;case"Element:kind":case"ElementKindExpression:kind":return ElementKind;case"ElementRef:el":case"StrictFqnElementRef:el":return Element;case"ElementTagExpression:tag":case"Tags:values":case"WhereElementTag:value":case"WhereRelationParticipantTag:value":case"WhereRelationTag:value":return Tag;case"ElementViewRef:view":return ElementView;case"FqnRef:value":return Referenceable;case"IconProperty:libicon":return LibIcon;case"ViewRef:view":return LikeC4View;case"ViewRuleGlobalPredicateRef:predicate":return GlobalPredicateGroup;case"ViewRuleGlobalStyle:style":return GlobalStyleId;case"WhereElementKind:value":case"WhereRelationParticipantKind:value":return DeploymentNodeOrElementKind;default:throw new Error(`${nt} is not a valid reference id.`)}}getTypeMetaData(et){switch(et){case ArrowProperty:return{name:ArrowProperty,properties:[{name:"key"},{name:"value"}]};case BorderProperty:return{name:BorderProperty,properties:[{name:"key"},{name:"value"}]};case ColorProperty:return{name:ColorProperty,properties:[{name:"customColor"},{name:"key"},{name:"themeColor"}]};case CustomColor:return{name:CustomColor,properties:[{name:"name"}]};case CustomElementProperties:return{name:CustomElementProperties,properties:[{name:"props",defaultValue:[]}]};case CustomRelationProperties:return{name:CustomRelationProperties,properties:[{name:"props",defaultValue:[]}]};case DeployedInstance:return{name:DeployedInstance,properties:[{name:"body"},{name:"element"},{name:"name"},{name:"title"}]};case DeployedInstanceBody:return{name:DeployedInstanceBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentNode:return{name:DeploymentNode,properties:[{name:"body"},{name:"kind"},{name:"name"},{name:"title"}]};case DeploymentNodeBody:return{name:DeploymentNodeBody,properties:[{name:"elements",defaultValue:[]},{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentNodeKind:return{name:DeploymentNodeKind,properties:[{name:"name"}]};case DeploymentRelation:return{name:DeploymentRelation,properties:[{name:"body"},{name:"kind"},{name:"source"},{name:"tags"},{name:"target"},{name:"technology"},{name:"title"}]};case DeploymentRelationBody:return{name:DeploymentRelationBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentView:return{name:DeploymentView,properties:[{name:"body"},{name:"name"}]};case DeploymentViewBody:return{name:DeploymentViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"tags"}]};case DeploymentViewRulePredicate:return{name:DeploymentViewRulePredicate,properties:[{name:"expr"},{name:"isInclude",defaultValue:!1}]};case DeploymentViewRulePredicateExpression:return{name:DeploymentViewRulePredicateExpression,properties:[{name:"prev"},{name:"value"}]};case DeploymentViewRuleStyle:return{name:DeploymentViewRuleStyle,properties:[{name:"props",defaultValue:[]},{name:"targets"}]};case DirectedRelationExpr:return{name:DirectedRelationExpr,properties:[{name:"source"},{name:"target"}]};case DirectedRelationExpression:return{name:DirectedRelationExpression,properties:[{name:"source"},{name:"target"}]};case DynamicView:return{name:DynamicView,properties:[{name:"body"},{name:"name"}]};case DynamicViewBody:return{name:DynamicViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"steps",defaultValue:[]},{name:"tags"}]};case DynamicViewGlobalPredicateRef:return{name:DynamicViewGlobalPredicateRef,properties:[{name:"predicate"}]};case DynamicViewIncludePredicate:return{name:DynamicViewIncludePredicate,properties:[{name:"predicates"}]};case DynamicViewParallelSteps:return{name:DynamicViewParallelSteps,properties:[{name:"steps",defaultValue:[]}]};case DynamicViewPredicateIterator:return{name:DynamicViewPredicateIterator,properties:[{name:"prev"},{name:"value"}]};case DynamicViewRef:return{name:DynamicViewRef,properties:[{name:"view"}]};case DynamicViewStep:return{name:DynamicViewStep,properties:[{name:"custom"},{name:"isBackward",defaultValue:!1},{name:"kind"},{name:"source"},{name:"target"},{name:"title"}]};case Element:return{name:Element,properties:[{name:"body"},{name:"kind"},{name:"name"},{name:"props",defaultValue:[]}]};case ElementBody:return{name:ElementBody,properties:[{name:"elements",defaultValue:[]},{name:"props",defaultValue:[]},{name:"tags"}]};case ElementDescedantsExpression:return{name:ElementDescedantsExpression,properties:[{name:"parent"},{name:"suffix"}]};case ElementExpressionsIterator:return{name:ElementExpressionsIterator,properties:[{name:"prev"},{name:"value"}]};case ElementKind:return{name:ElementKind,properties:[{name:"name"}]};case ElementKindExpression:return{name:ElementKindExpression,properties:[{name:"isEqual",defaultValue:!1},{name:"kind"}]};case ElementPredicateWhere:return{name:ElementPredicateWhere,properties:[{name:"subject"},{name:"where"}]};case ElementPredicateWhereV2:return{name:ElementPredicateWhereV2,properties:[{name:"subject"},{name:"where"}]};case ElementPredicateWith:return{name:ElementPredicateWith,properties:[{name:"custom"},{name:"subject"}]};case ElementRef:return{name:ElementRef,properties:[{name:"el"},{name:"parent"}]};case ElementStringProperty:return{name:ElementStringProperty,properties:[{name:"key"},{name:"value"}]};case ElementStyleProperty:return{name:ElementStyleProperty,properties:[{name:"key"},{name:"props",defaultValue:[]}]};case ElementTagExpression:return{name:ElementTagExpression,properties:[{name:"isEqual",defaultValue:!1},{name:"tag"}]};case ElementView:return{name:ElementView,properties:[{name:"body"},{name:"extends"},{name:"name"},{name:"viewOf"}]};case ElementViewBody:return{name:ElementViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"tags"}]};case ElementViewRef:return{name:ElementViewRef,properties:[{name:"view"}]};case ExcludePredicate:return{name:ExcludePredicate,properties:[{name:"predicates"}]};case ExpandElementExpression:return{name:ExpandElementExpression,properties:[{name:"expand"}]};case ExtendElement:return{name:ExtendElement,properties:[{name:"body"},{name:"element"}]};case ExtendElementBody:return{name:ExtendElementBody,properties:[{name:"elements",defaultValue:[]},{name:"props",defaultValue:[]},{name:"tags"}]};case FqnExpressions:return{name:FqnExpressions,properties:[{name:"prev"},{name:"value"}]};case FqnRef:return{name:FqnRef,properties:[{name:"parent"},{name:"value"}]};case FqnRefExpr:return{name:FqnRefExpr,properties:[{name:"ref"},{name:"selector"}]};case GlobalDynamicPredicateGroup:return{name:GlobalDynamicPredicateGroup,properties:[{name:"name"},{name:"predicates",defaultValue:[]}]};case GlobalPredicateGroup:return{name:GlobalPredicateGroup,properties:[{name:"name"},{name:"predicates",defaultValue:[]}]};case Globals:return{name:Globals,properties:[{name:"name"},{name:"predicates",defaultValue:[]},{name:"styles",defaultValue:[]}]};case GlobalStyle:return{name:GlobalStyle,properties:[{name:"id"},{name:"props",defaultValue:[]},{name:"target"}]};case GlobalStyleGroup:return{name:GlobalStyleGroup,properties:[{name:"id"},{name:"styles",defaultValue:[]}]};case GlobalStyleId:return{name:GlobalStyleId,properties:[{name:"name"}]};case IconProperty:return{name:IconProperty,properties:[{name:"key"},{name:"libicon"},{name:"value"}]};case IncludePredicate:return{name:IncludePredicate,properties:[{name:"predicates"}]};case IncomingRelationExpr:return{name:IncomingRelationExpr,properties:[{name:"to"}]};case IncomingRelationExpression:return{name:IncomingRelationExpression,properties:[{name:"to"}]};case InOutRelationExpr:return{name:InOutRelationExpr,properties:[{name:"inout"}]};case InOutRelationExpression:return{name:InOutRelationExpression,properties:[{name:"inout"}]};case LibIcon:return{name:LibIcon,properties:[{name:"name"}]};case LikeC4Grammar$1:return{name:LikeC4Grammar$1,properties:[{name:"deployments",defaultValue:[]},{name:"globals",defaultValue:[]},{name:"likec4lib",defaultValue:[]},{name:"models",defaultValue:[]},{name:"specifications",defaultValue:[]},{name:"views",defaultValue:[]}]};case LikeC4Lib:return{name:LikeC4Lib,properties:[{name:"icons",defaultValue:[]}]};case LineProperty:return{name:LineProperty,properties:[{name:"key"},{name:"value"}]};case LinkProperty:return{name:LinkProperty,properties:[{name:"key"},{name:"title"},{name:"value"}]};case MetadataAttribute:return{name:MetadataAttribute,properties:[{name:"key"},{name:"value"}]};case MetadataBody:return{name:MetadataBody,properties:[{name:"props",defaultValue:[]}]};case Model:return{name:Model,properties:[{name:"elements",defaultValue:[]},{name:"name"}]};case ModelDeployments:return{name:ModelDeployments,properties:[{name:"elements",defaultValue:[]},{name:"name"}]};case ModelViews:return{name:ModelViews,properties:[{name:"name"},{name:"styles",defaultValue:[]},{name:"views",defaultValue:[]}]};case MultipleProperty:return{name:MultipleProperty,properties:[{name:"key"},{name:"value"}]};case NavigateToProperty:return{name:NavigateToProperty,properties:[{name:"key"},{name:"value"}]};case NotationProperty:return{name:NotationProperty,properties:[{name:"key"},{name:"value"}]};case NotesProperty:return{name:NotesProperty,properties:[{name:"key"},{name:"value"}]};case OpacityProperty:return{name:OpacityProperty,properties:[{name:"key"},{name:"value"}]};case OutgoingRelationExpr:return{name:OutgoingRelationExpr,properties:[{name:"from"},{name:"isBidirectional",defaultValue:!1},{name:"kind"}]};case OutgoingRelationExpression:return{name:OutgoingRelationExpression,properties:[{name:"from"},{name:"isBidirectional",defaultValue:!1},{name:"kind"}]};case PaddingSizeProperty:return{name:PaddingSizeProperty,properties:[{name:"key"},{name:"value"}]};case Predicates:return{name:Predicates,properties:[{name:"prev"},{name:"value"}]};case Relation:return{name:Relation,properties:[{name:"body"},{name:"kind"},{name:"source"},{name:"tags"},{name:"target"},{name:"technology"},{name:"title"}]};case RelationBody:return{name:RelationBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case RelationNavigateToProperty:return{name:RelationNavigateToProperty,properties:[{name:"key"},{name:"value"}]};case RelationPredicateWhere:return{name:RelationPredicateWhere,properties:[{name:"subject"},{name:"where"}]};case RelationPredicateWhereV2:return{name:RelationPredicateWhereV2,properties:[{name:"subject"},{name:"where"}]};case RelationPredicateWith:return{name:RelationPredicateWith,properties:[{name:"custom"},{name:"subject"}]};case RelationshipKind:return{name:RelationshipKind,properties:[{name:"name"}]};case RelationStringProperty:return{name:RelationStringProperty,properties:[{name:"key"},{name:"value"}]};case RelationStyleProperty:return{name:RelationStyleProperty,properties:[{name:"key"},{name:"props",defaultValue:[]}]};case ShapeProperty:return{name:ShapeProperty,properties:[{name:"key"},{name:"value"}]};case ShapeSizeProperty:return{name:ShapeSizeProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationColor:return{name:SpecificationColor,properties:[{name:"color"},{name:"name"}]};case SpecificationDeploymentNodeKind:return{name:SpecificationDeploymentNodeKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationElementKind:return{name:SpecificationElementKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationElementStringProperty:return{name:SpecificationElementStringProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationRelationshipKind:return{name:SpecificationRelationshipKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationRelationshipStringProperty:return{name:SpecificationRelationshipStringProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationRule:return{name:SpecificationRule,properties:[{name:"colors",defaultValue:[]},{name:"deploymentNodes",defaultValue:[]},{name:"elements",defaultValue:[]},{name:"name"},{name:"relationships",defaultValue:[]},{name:"tags",defaultValue:[]}]};case SpecificationTag:return{name:SpecificationTag,properties:[{name:"tag"}]};case StrictFqnElementRef:return{name:StrictFqnElementRef,properties:[{name:"el"},{name:"parent"}]};case Tag:return{name:Tag,properties:[{name:"name"}]};case Tags:return{name:Tags,properties:[{name:"prev"},{name:"values",defaultValue:[]}]};case TextSizeProperty:return{name:TextSizeProperty,properties:[{name:"key"},{name:"value"}]};case ViewRef:return{name:ViewRef,properties:[{name:"view"}]};case ViewRuleAutoLayout:return{name:ViewRuleAutoLayout,properties:[{name:"direction"},{name:"nodeSep"},{name:"rankSep"}]};case ViewRuleGlobalPredicateRef:return{name:ViewRuleGlobalPredicateRef,properties:[{name:"predicate"}]};case ViewRuleGlobalStyle:return{name:ViewRuleGlobalStyle,properties:[{name:"style"}]};case ViewRuleGroup:return{name:ViewRuleGroup,properties:[{name:"groupRules",defaultValue:[]},{name:"props",defaultValue:[]},{name:"title"}]};case ViewRuleStyle:return{name:ViewRuleStyle,properties:[{name:"props",defaultValue:[]},{name:"target"}]};case ViewStringProperty:return{name:ViewStringProperty,properties:[{name:"key"},{name:"value"}]};case WhereBinaryExpression:return{name:WhereBinaryExpression,properties:[{name:"left"},{name:"operator"},{name:"right"}]};case WhereElementKind:return{name:WhereElementKind,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereElementNegation:return{name:WhereElementNegation,properties:[{name:"value"}]};case WhereElementTag:return{name:WhereElementTag,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereRelationKind:return{name:WhereRelationKind,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereRelationNegation:return{name:WhereRelationNegation,properties:[{name:"value"}]};case WhereRelationParticipantKind:return{name:WhereRelationParticipantKind,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"participant"},{name:"value"}]};case WhereRelationParticipantTag:return{name:WhereRelationParticipantTag,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"participant"},{name:"value"}]};case WhereRelationTag:return{name:WhereRelationTag,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WildcardExpression:return{name:WildcardExpression,properties:[{name:"isWildcard",defaultValue:!1}]};default:return{name:et,properties:[]}}}}const reflection=new LikeC4AstReflection;let e;const LikeC4Grammar=()=>e??(e=loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"LikeC4","rules":[{"$type":"ParserRule","entry":true,"name":"LikeC4Grammar","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"specifications","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"models","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]}},{"$type":"Assignment","feature":"globals","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@121"},"arguments":[]}},{"$type":"Assignment","feature":"deployments","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]}},{"$type":"Assignment","feature":"likec4lib","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4Lib","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"likec4lib"},{"$type":"Keyword","value":"{"},{"$type":"Keyword","value":"icons"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"icons","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LibIcon","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@151"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tag","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColor","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@155"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRule","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"specification"}},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"relationships","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"colors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"deploymentNodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"element"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationDeploymentNodeKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deploymentNode"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationTag","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"tag"},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationColor","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"color"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"color","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@150"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"relationship"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Model","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"model"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Element","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@172"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}}]}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":false},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElement","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"extend"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElementProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"StrictFqnElementRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"StrictFqnElementRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@169"},"arguments":[]},{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@169"},"arguments":[]},{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tags","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Tags"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Relation","parameters":[{"$type":"Parameter","name":"isExplicit"}],"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","guardCondition":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@27/parameters@0"}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]}}]},{"$type":"Group","guardCondition":{"$type":"Negation","value":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@27/parameters@0"}}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"}]}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Keyword","value":"->"}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"wildcard":false},{"$type":"ParserRule","name":"RelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataProperty","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"metadata"},{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataAttribute","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@175"},"arguments":[]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelViews","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"views"}},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]}},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4ViewRule","returnType":{"$ref":"#/types@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@104"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"extends"},{"$type":"Assignment","feature":"extends","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@40"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"of"},{"$type":"Assignment","feature":"viewOf","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]}}]}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamic"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@0"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@37"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@38"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@47"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]},"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]}]}},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@49"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewLayoutDirection","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"TopBottom"},{"$type":"Keyword","value":"LeftRight"},{"$type":"Keyword","value":"BottomTop"},{"$type":"Keyword","value":"RightLeft"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@134"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@129"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"groupRules","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@83"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@84"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewParallelSteps","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"parallel"},{"$type":"Keyword","value":"par"}]},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewStep","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBackward","operator":"?=","terminal":{"$type":"Keyword","value":"<-"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@93"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRulePredicate","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"IncludePredicate"}},{"$type":"Keyword","value":"include"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@53"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ExcludePredicate"}},{"$type":"Keyword","value":"exclude"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@53"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Predicates","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@54"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Predicates"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@54"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Predicate","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@68"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@56"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@122"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicate","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@57"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicates","inferredType":{"$type":"InferredType","name":"ElementPredicate"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementPredicateWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@92"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicateOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementPredicateWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@59"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@60"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementOr","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementAnd","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@62"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@62"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementPrimary","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@59"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@63"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@59"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElement","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@2"},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementExpression","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@66"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@67"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementSelectorExpression","inferredType":{"$type":"InferredType","name":"ElementExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WildcardExpression"}},{"$type":"Assignment","feature":"isWildcard","operator":"?=","terminal":{"$type":"Keyword","value":"*"}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementTagExpression"}},{"$type":"Keyword","value":"element.tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@158"},"arguments":[]},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementKindExpression"}},{"$type":"Keyword","value":"element.kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@158"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementDescedantsExpression","inferredType":{"$type":"InferredType","name":"ElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ExpandElementExpression"},"feature":"expand","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementDescedantsExpression"},"feature":"parent","operator":"="},{"$type":"Assignment","feature":"suffix","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@167"},"arguments":[]}}]}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicate","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@69"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicates","inferredType":{"$type":"InferredType","name":"RelationPredicate"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@93"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicateOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@77"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@71"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@72"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationOr","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@73"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@73"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationAnd","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@74"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@74"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationPrimary","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@71"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@75"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@71"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelation","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationParticipantTag"}},{"$type":"Assignment","feature":"participant","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@169"},"arguments":[]},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationParticipantKind"}},{"$type":"Assignment","feature":"participant","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@169"},"arguments":[]},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExpression","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@78"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@80"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"InOutRelationExpressions","inferredType":{"$type":"InferredType","name":"RelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@79"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"InOutRelationExpression"},"feature":"inout","operator":"="},{"$type":"Keyword","value":"->"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IncomingRelationExpression","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DirectedRelationExpressions","inferredType":{"$type":"InferredType","name":"RelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@81"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DirectedRelationExpression"},"feature":"source","operator":"="},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OutgoingRelationExpression","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBidirectional","operator":"?=","terminal":{"$type":"Keyword","value":"<->"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementExpressionsIterator","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementExpressionsIterator"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewIncludePredicate","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"include"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@85"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@123"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewPredicateIterator","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@56"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DynamicViewPredicateIterator"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@56"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"style","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@124"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyleOrGlobalRef","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@86"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleAutoLayout","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"autoLayout"},{"$type":"Assignment","feature":"direction","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"rankSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@176"},"arguments":[]}},{"$type":"Assignment","feature":"nodeSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@176"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotationProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notation"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotesProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notes"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomElementProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@94"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomRelationProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@91"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationNavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelDeployments","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"deployment"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@97"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@102"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNode","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@172"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}}]}]},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@98"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@99"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@102"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@97"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstance","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@172"},"arguments":[]}],"cardinality":"?"},{"$type":"Keyword","value":"instanceOf"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstanceBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@169"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelation","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@103"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@105"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@106"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@108"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@107"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"targets","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@120"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRulePredicate","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isInclude","operator":"?=","terminal":{"$type":"Keyword","value":"include"}},{"$type":"Keyword","value":"exclude"}]},{"$type":"Assignment","feature":"expr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRulePredicateExpression","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DeploymentViewRulePredicateExpression"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExpressionV2","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@112"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicateOrWhereV2","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementPredicateWhereV2"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@59"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicateOrWhereV2","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@115"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWhereV2"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@71"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpr","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WildcardExpression"}},{"$type":"Assignment","feature":"isWildcard","operator":"?=","terminal":{"$type":"Keyword","value":"*"}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@114"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRefExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"ref","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]}},{"$type":"Assignment","feature":"selector","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@167"},"arguments":[]}]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExpr","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@116"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@118"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"InOutRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@117"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"InOutRelationExpr"},"feature":"inout","operator":"="},{"$type":"Keyword","value":"->"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IncomingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DirectedRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@119"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DirectedRelationExpr"},"feature":"source","operator":"="},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OutgoingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBidirectional","operator":"?=","terminal":{"$type":"Keyword","value":"<->"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpressions","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnExpressions"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Globals","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"global"}},{"$type":"Keyword","value":"{"},{"$type":"Group","elements":[{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@122"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@123"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@126"},"arguments":[]}]},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"predicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@175"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalDynamicPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamicPredicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@175"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@83"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleId","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@175"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@124"},"arguments":[]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"styleGroup"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@124"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@86"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LinkProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"link"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@152"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ColorProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"color"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"themeColor","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},{"$type":"Assignment","feature":"customColor","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@155"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OpacityProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"opacity"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@173"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MultipleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"multiple"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"icon"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"libicon","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@151"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"RuleCall","rule":{"$ref":"#/rules@152"},"arguments":[]}]}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ShapeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"shape"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderStyleValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},{"$type":"Keyword","value":"none"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"border"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@133"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SizeValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"xs"},{"$type":"Keyword","value":"sm"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"lg"},{"$type":"Keyword","value":"xl"},{"$type":"Keyword","value":"xsmall"},{"$type":"Keyword","value":"small"},{"$type":"Keyword","value":"medium"},{"$type":"Keyword","value":"large"},{"$type":"Keyword","value":"xlarge"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ShapeSizeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"size"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PaddingSizeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"padding"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TextSizeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"textSize"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"StyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@134"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@129"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@130"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@138"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"line"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"head"},{"$type":"Keyword","value":"tail"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipStyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@141"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@142"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Boolean","dataType":"boolean","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"true"},{"$type":"Keyword","value":"false"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineOptions","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"solid"},{"$type":"Keyword","value":"dashed"},{"$type":"Keyword","value":"dotted"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"Keyword","value":"normal"},{"$type":"Keyword","value":"onormal"},{"$type":"Keyword","value":"dot"},{"$type":"Keyword","value":"odot"},{"$type":"Keyword","value":"diamond"},{"$type":"Keyword","value":"odiamond"},{"$type":"Keyword","value":"crow"},{"$type":"Keyword","value":"open"},{"$type":"Keyword","value":"vee"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ThemeColor","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"primary"},{"$type":"Keyword","value":"secondary"},{"$type":"Keyword","value":"muted"},{"$type":"Keyword","value":"slate"},{"$type":"Keyword","value":"blue"},{"$type":"Keyword","value":"indigo"},{"$type":"Keyword","value":"sky"},{"$type":"Keyword","value":"red"},{"$type":"Keyword","value":"gray"},{"$type":"Keyword","value":"green"},{"$type":"Keyword","value":"amber"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementShape","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rectangle"},{"$type":"Keyword","value":"person"},{"$type":"Keyword","value":"browser"},{"$type":"Keyword","value":"mobile"},{"$type":"Keyword","value":"cylinder"},{"$type":"Keyword","value":"storage"},{"$type":"Keyword","value":"queue"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Participant","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"source"},{"$type":"Keyword","value":"target"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColorValue","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@168"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@177"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@176"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconId","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Uri","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TagId","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@168"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DotId","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@170"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColorId","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@175"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Id","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@175"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"},{"$type":"Keyword","value":"group"},{"$type":"Keyword","value":"node"},{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"instance"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EqOperator","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@172"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@171"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"is"}},{"$type":"Assignment","feature":"not","operator":"?=","terminal":{"$type":"Keyword","value":"not"},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"IsEqual","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isEqual","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@172"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@171"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","hidden":true,"name":"BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/[\\\\r\\\\n]+/"},"fragment":false},{"$type":"TerminalRule","name":"LIB_ICON","definition":{"$type":"RegexToken","regex":"/(aws|azure|gcp|tech):[-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_WITH_SCHEMA","definition":{"$type":"RegexToken","regex":"/\\\\w+:\\\\/\\\\/\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_RELATIVE","definition":{"$type":"RegexToken","regex":"/\\\\.{0,2}\\\\/[^\\\\/]\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotUnderscore","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\._(?![_a-zA-Z])/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotWildcard","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\.\\\\*{1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hash","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"#"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"StickyDot","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\./"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Dot","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"."}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NotEqual","definition":{"$type":"RegexToken","regex":"/\\\\!\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Eq","definition":{"$type":"RegexToken","regex":"/\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Percent","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+%/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"String","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"IdTerminal","definition":{"$type":"RegexToken","regex":"/[_]*[a-zA-Z][-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Number","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+\\\\b/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hex","definition":{"$type":"RegexToken","regex":"/\\\\b[a-zA-Z0-9]+\\\\b/"},"fragment":false,"hidden":false}],"types":[{"$type":"Type","name":"LikeC4View","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@37"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@38"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@104"}}]}},{"$type":"Type","name":"StringProperty","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@20"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@45"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@30"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@34"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@10"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@90"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@91"}}]}},{"$type":"Type","name":"DeploymentNodeOrElementKind","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@3"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@7"}}]}},{"$type":"Type","name":"WhereTagEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@64/definition/elements@0/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@76/definition/elements@0/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@76/definition/elements@2/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereKindEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@64/definition/elements@1/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@76/definition/elements@1/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@76/definition/elements@3/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereExpression","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@59"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@71"}}]}},{"$type":"Type","name":"DeploymentElement","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@97"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@99"}}]}},{"$type":"Type","name":"Referenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@97"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@99"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}}]}},{"$type":"Type","name":"FqnReferenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/types@7"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@21"}}]}},{"$type":"Type","name":"SizeProperty","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@136"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@137"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@138"}}]}}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"interfaces":[],"usedGrammars":[]}`)),LikeC4LanguageMetaData={languageId:"likec4",fileExtensions:[".c4",".likec4",".like-c4"],caseInsensitive:!1,mode:"production"},parserConfig={skipValidations:!0,recoveryEnabled:!0,nodeLocationTracking:"full"},LikeC4GeneratedSharedModule={AstReflection:()=>new LikeC4AstReflection},LikeC4GeneratedModule={Grammar:()=>LikeC4Grammar(),LanguageMetaData:()=>LikeC4LanguageMetaData,parser:{ParserConfig:()=>parserConfig}},logger$1=m$3.getChild("server");function logError(tt){logger$1.error(ir(tt))}function logWarnError(tt){logger$1.warn(ir(tt))}const LikeC4FileSystem={fileSystemProvider:()=>new c},f$3=tt=>LikeC4LanguageMetaData.fileExtensions.some(et=>tt.endsWith(et));class c extends NodeFileSystemProvider{async readDirectory(et){const nt=[];try{const rt=await new distExports.fdir().withSymlinks().withFullPaths().filter(f$3).crawl(et.fsPath).withPromise();for(const st of rt)nt.push({isFile:!0,isDirectory:!1,uri:URI.file(st)})}catch(rt){logError(rt)}return nt}}var getOwnPropertyNames=Object.getOwnPropertyNames,getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty=Object.prototype.hasOwnProperty;function combineComparators(tt,et){return function(rt,st,ot){return tt(rt,st,ot)&&et(rt,st,ot)}}function createIsCircular(tt){return function(nt,rt,st){if(!nt||!rt||typeof nt!="object"||typeof rt!="object")return tt(nt,rt,st);var ot=st.cache,en=ot.get(nt),tn=ot.get(rt);if(en&&tn)return en===rt&&tn===nt;ot.set(nt,rt),ot.set(rt,nt);var nn=tt(nt,rt,st);return ot.delete(nt),ot.delete(rt),nn}}function getStrictProperties(tt){return getOwnPropertyNames(tt).concat(getOwnPropertySymbols(tt))}var hasOwn=Object.hasOwn||function(tt,et){return hasOwnProperty.call(tt,et)};function sameValueZeroEqual(tt,et){return tt===et||!tt&&!et&&tt!==tt&&et!==et}var PREACT_VNODE="__v",PREACT_OWNER="__o",REACT_OWNER="_owner",getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,keys=Object.keys;function areArraysEqual(tt,et,nt){var rt=tt.length;if(et.length!==rt)return!1;for(;rt-- >0;)if(!nt.equals(tt[rt],et[rt],rt,rt,tt,et,nt))return!1;return!0}function areDatesEqual(tt,et){return sameValueZeroEqual(tt.getTime(),et.getTime())}function areErrorsEqual(tt,et){return tt.name===et.name&&tt.message===et.message&&tt.cause===et.cause&&tt.stack===et.stack}function areFunctionsEqual(tt,et){return tt===et}function areMapsEqual(tt,et,nt){var rt=tt.size;if(rt!==et.size)return!1;if(!rt)return!0;for(var st=new Array(rt),ot=tt.entries(),en,tn,nn=0;(en=ot.next())&&!en.done;){for(var rn=et.entries(),sn=!1,an=0;(tn=rn.next())&&!tn.done;){if(st[an]){an++;continue}var on=en.value,cn=tn.value;if(nt.equals(on[0],cn[0],nn,an,tt,et,nt)&&nt.equals(on[1],cn[1],on[0],cn[0],tt,et,nt)){sn=st[an]=!0;break}an++}if(!sn)return!1;nn++}return!0}var areNumbersEqual=sameValueZeroEqual;function areObjectsEqual(tt,et,nt){var rt=keys(tt),st=rt.length;if(keys(et).length!==st)return!1;for(;st-- >0;)if(!isPropertyEqual(tt,et,nt,rt[st]))return!1;return!0}function areObjectsEqualStrict(tt,et,nt){var rt=getStrictProperties(tt),st=rt.length;if(getStrictProperties(et).length!==st)return!1;for(var ot,en,tn;st-- >0;)if(ot=rt[st],!isPropertyEqual(tt,et,nt,ot)||(en=getOwnPropertyDescriptor(tt,ot),tn=getOwnPropertyDescriptor(et,ot),(en||tn)&&(!en||!tn||en.configurable!==tn.configurable||en.enumerable!==tn.enumerable||en.writable!==tn.writable)))return!1;return!0}function arePrimitiveWrappersEqual(tt,et){return sameValueZeroEqual(tt.valueOf(),et.valueOf())}function areRegExpsEqual(tt,et){return tt.source===et.source&&tt.flags===et.flags}function areSetsEqual(tt,et,nt){var rt=tt.size;if(rt!==et.size)return!1;if(!rt)return!0;for(var st=new Array(rt),ot=tt.values(),en,tn;(en=ot.next())&&!en.done;){for(var nn=et.values(),rn=!1,sn=0;(tn=nn.next())&&!tn.done;){if(!st[sn]&&nt.equals(en.value,tn.value,en.value,tn.value,tt,et,nt)){rn=st[sn]=!0;break}sn++}if(!rn)return!1}return!0}function areTypedArraysEqual(tt,et){var nt=tt.length;if(et.length!==nt)return!1;for(;nt-- >0;)if(tt[nt]!==et[nt])return!1;return!0}function areUrlsEqual(tt,et){return tt.hostname===et.hostname&&tt.pathname===et.pathname&&tt.protocol===et.protocol&&tt.port===et.port&&tt.hash===et.hash&&tt.username===et.username&&tt.password===et.password}function isPropertyEqual(tt,et,nt,rt){return(rt===REACT_OWNER||rt===PREACT_OWNER||rt===PREACT_VNODE)&&(tt.$$typeof||et.$$typeof)?!0:hasOwn(et,rt)&&nt.equals(tt[rt],et[rt],rt,rt,tt,et,nt)}var ARGUMENTS_TAG="[object Arguments]",BOOLEAN_TAG="[object Boolean]",DATE_TAG="[object Date]",ERROR_TAG="[object Error]",MAP_TAG="[object Map]",NUMBER_TAG="[object Number]",OBJECT_TAG="[object Object]",REG_EXP_TAG="[object RegExp]",SET_TAG="[object Set]",STRING_TAG="[object String]",URL_TAG="[object URL]",isArray=Array.isArray,isTypedArray=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,assign$1=Object.assign,getTag=Object.prototype.toString.call.bind(Object.prototype.toString);function createEqualityComparator(tt){var et=tt.areArraysEqual,nt=tt.areDatesEqual,rt=tt.areErrorsEqual,st=tt.areFunctionsEqual,ot=tt.areMapsEqual,en=tt.areNumbersEqual,tn=tt.areObjectsEqual,nn=tt.arePrimitiveWrappersEqual,rn=tt.areRegExpsEqual,sn=tt.areSetsEqual,an=tt.areTypedArraysEqual,on=tt.areUrlsEqual;return function(ln,fn,gn){if(ln===fn)return!0;if(ln==null||fn==null)return!1;var pn=typeof ln;if(pn!==typeof fn)return!1;if(pn!=="object")return pn==="number"?en(ln,fn,gn):pn==="function"?st(ln,fn,gn):!1;var vn=ln.constructor;if(vn!==fn.constructor)return!1;if(vn===Object)return tn(ln,fn,gn);if(isArray(ln))return et(ln,fn,gn);if(isTypedArray!=null&&isTypedArray(ln))return an(ln,fn,gn);if(vn===Date)return nt(ln,fn,gn);if(vn===RegExp)return rn(ln,fn,gn);if(vn===Map)return ot(ln,fn,gn);if(vn===Set)return sn(ln,fn,gn);var bn=getTag(ln);return bn===DATE_TAG?nt(ln,fn,gn):bn===REG_EXP_TAG?rn(ln,fn,gn):bn===MAP_TAG?ot(ln,fn,gn):bn===SET_TAG?sn(ln,fn,gn):bn===OBJECT_TAG?typeof ln.then!="function"&&typeof fn.then!="function"&&tn(ln,fn,gn):bn===URL_TAG?on(ln,fn,gn):bn===ERROR_TAG?rt(ln,fn,gn):bn===ARGUMENTS_TAG?tn(ln,fn,gn):bn===BOOLEAN_TAG||bn===NUMBER_TAG||bn===STRING_TAG?nn(ln,fn,gn):!1}}function createEqualityComparatorConfig(tt){var et=tt.circular,nt=tt.createCustomConfig,rt=tt.strict,st={areArraysEqual:rt?areObjectsEqualStrict:areArraysEqual,areDatesEqual,areErrorsEqual,areFunctionsEqual,areMapsEqual:rt?combineComparators(areMapsEqual,areObjectsEqualStrict):areMapsEqual,areNumbersEqual,areObjectsEqual:rt?areObjectsEqualStrict:areObjectsEqual,arePrimitiveWrappersEqual,areRegExpsEqual,areSetsEqual:rt?combineComparators(areSetsEqual,areObjectsEqualStrict):areSetsEqual,areTypedArraysEqual:rt?areObjectsEqualStrict:areTypedArraysEqual,areUrlsEqual};if(nt&&(st=assign$1({},st,nt(st))),et){var ot=createIsCircular(st.areArraysEqual),en=createIsCircular(st.areMapsEqual),tn=createIsCircular(st.areObjectsEqual),nn=createIsCircular(st.areSetsEqual);st=assign$1({},st,{areArraysEqual:ot,areMapsEqual:en,areObjectsEqual:tn,areSetsEqual:nn})}return st}function createInternalEqualityComparator(tt){return function(et,nt,rt,st,ot,en,tn){return tt(et,nt,tn)}}function createIsEqual(tt){var et=tt.circular,nt=tt.comparator,rt=tt.createState,st=tt.equals,ot=tt.strict;if(rt)return function(nn,rn){var sn=rt(),an=sn.cache,on=an===void 0?et?new WeakMap:void 0:an,cn=sn.meta;return nt(nn,rn,{cache:on,equals:st,meta:cn,strict:ot})};if(et)return function(nn,rn){return nt(nn,rn,{cache:new WeakMap,equals:st,meta:void 0,strict:ot})};var en={cache:void 0,equals:st,meta:void 0,strict:ot};return function(nn,rn){return nt(nn,rn,en)}}var deepEqual=createCustomEqual();createCustomEqual({strict:!0}),createCustomEqual({circular:!0}),createCustomEqual({circular:!0,strict:!0}),createCustomEqual({createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({strict:!0,createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual},strict:!0});function createCustomEqual(tt){tt===void 0&&(tt={});var et=tt.circular,nt=et===void 0?!1:et,rt=tt.createInternalComparator,st=tt.createState,ot=tt.strict,en=ot===void 0?!1:ot,tn=createEqualityComparatorConfig(tt),nn=createEqualityComparator(tn),rn=rt?rt(nn):createInternalEqualityComparator(nn);return createIsEqual({circular:nt,comparator:nn,createState:st,equals:rn,strict:en})}function n(tt,et){const nt=tt.nodes.map(st=>{const ot=et.nodes[st.id];if(!ot)return st;const{x:en,y:tn,width:nn,height:rn}=ot;return{...st,width:nn,height:rn,position:[en,tn]}}),rt=tt.edges.map(st=>{const ot=et.edges[st.id];return ot?{...st,...ot}:st});return{...tt,bounds:{x:et.x,y:et.y,width:et.width,height:et.height},nodes:nt,edges:rt}}const d$3=(tt,et)=>tt.width>et.width+10||tt.height>et.height+10;function applyManualLayout(tt,et){if(tt.hash===et.hash)return{diagram:n(tt,et)};if(deepEqual(tt.autoLayout,et.autoLayout)&&tt.nodes.every(rt=>{const st=et.nodes[rt.id];return!!st&&(rt.children.length>0&&st.isCompound||rt.children.length===0&&!st.isCompound)&&(st.isCompound||d$3(rt,st)===!1)})&&tt.edges.every(rt=>{const st=et.edges[rt.id];return!!st&&(!rt.labelBBox&&!st.labelBBox||!!rt.labelBBox&&!!st.labelBBox&&rt.labelBBox.width<=st.labelBBox.width&&rt.labelBBox.height<=st.labelBBox.height)}))return{diagram:n(tt,et)};const nt=tt.nodes.reduce((rt,st)=>{const ot=et.nodes[st.id];if(st.children.length>0||!ot)return rt;const en={id:st.id,center:{x:Math.round(ot.x+ot.width/2),y:Math.round(ot.y+ot.height/2)}};return ot.isCompound||d$3(st,ot)||(en.fixedsize={width:ot.width,height:ot.height}),rt.push(en),rt},[]);return{relayout:{x:et.x,y:et.y,height:et.height,nodes:nt,edges:t$1(et.edges).flatMap(([rt,st])=>st.dotpos?{id:rt,dotpos:st.dotpos}:[])}}}function isForwardRefNode(tt){return typeof tt=="object"&&tt!==null&&typeof tt.id=="string"}function isNodeModel(tt){return typeof tt=="object"&&tt!==null&&tt.$$type==="Node"&&typeof tt.id=="string"}function isNodeRef(tt){return isNodeModel(tt)||isForwardRefNode(tt)}function isNodeRefLike(tt){return typeof tt=="string"||isNodeRef(tt)}function isNodeRefGroupLike(tt){return Array.isArray(tt)&&tt.every(isNodeRefLike)}function isCompass(tt){return["n","ne","e","se","s","sw","w","nw","c"].includes(tt)}function toNodeRef(tt){if(isNodeRef(tt))return tt;const[et,nt,rt]=tt.split(":");return isCompass(rt)?{id:et,port:nt,compass:rt}:{id:et,port:nt}}function toNodeRefGroup(tt){if(tt.length<2&&(isNodeRefLike(tt[0])&&isNodeRefLike(tt[1]))===!1)throw Error("EdgeTargets must have at least 2 elements.");return tt.map(et=>toNodeRef(et))}const RootModelsContext=Object.seal({Graph:null,Digraph:null,Subgraph:null,Node:null,Edge:null});function createModelsContext(tt){return Object.assign(Object.seal(Object.assign({},RootModelsContext)),tt)}function _pipe(...tt){const[et,...nt]=tt;return(...rt)=>nt.reduce((st,ot)=>ot(st),et(...rt))}function pipe(tt,...et){return _pipe(tt,...et)}const defer=tt=>(...et)=>nt=>tt(nt,...et),toIterable=tt=>({[Symbol.iterator]:tt}),map=defer((tt,et)=>Array.from(toIterable(function*(){for(const nt of tt)yield et(nt)})));class Builder{options;getLocation(){return this.options?.locationFunction?.()??null}constructor(et){this.options=et}createElement(et,nt,rt=[]){return{location:this.getLocation(),...nt,type:et,children:rt}}}const createElement=Builder.prototype.createElement.bind(new Builder),EOL=/\r?\n/;function joinBy(tt){return et=>et.join(tt)}function wrapWith(tt){return et=>tt+et+tt}function wrapByPair(tt,et){return nt=>tt+nt+et}function leftPadWith(tt){return et=>tt+et}const escape=tt=>tt.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/"/g,'\\"'),splitByLine=tt=>tt.split(EOL),indent=(tt,et,nt)=>pipe(splitByLine,map(leftPadWith(tt==="space"?" ".repeat(et):`
|
|
183
|
-
`)),joinBy(nt)),endOfLine=tt=>{switch(tt){case"crlf":return`\r
|
|
184
|
-
`;case"lf":return`
|
|
185
|
-
`}},AttributeListPrintPlugin={match(tt){return tt.type==="AttributeList"},print(tt,et){if(et.children.length===0)return`${et.kind.toLocaleLowerCase()} [];`;const nt=endOfLine(tt.endOfLine);return pipe(map(tt.print),joinBy(nt),indent(tt.indentStyle,tt.indentSize,nt),wrapByPair(`${et.kind.toLocaleLowerCase()} [${nt}`,`${nt}];`))(et.children)}},AttributePrintPlugin={match(tt){return tt.type==="Attribute"},print(tt,et){return`${tt.print(et.key)} = ${tt.print(et.value)};`}},CommentPrintPlugin={match(tt){return tt.type==="Comment"},print(tt,et){const nt=endOfLine(tt.endOfLine);switch(et.kind){case"Block":return pipe(splitByLine,map(leftPadWith(" * ")),joinBy(nt),wrapByPair(`/**${nt}`,`${nt} */`))(et.value);case"Macro":return pipe(splitByLine,map(leftPadWith("# ")),joinBy(nt))(et.value);case"Slash":default:return pipe(splitByLine,map(leftPadWith("// ")),joinBy(nt))(et.value)}}},DotPrintPlugin={match(tt){return tt.type==="Dot"},print(tt,et){return et.children.map(tt.print).join(endOfLine(tt.endOfLine))}},EdgePrintPlugin={match(tt){return tt.type==="Edge"},print(tt,et){const nt=pipe(map(tt.print),joinBy(tt.directed?" -> ":" -- "))(et.targets);if(et.children.length===0)return`${nt};`;const rt=endOfLine(tt.endOfLine),st=pipe(map(tt.print),joinBy(rt),indent(tt.indentStyle,tt.indentSize,rt),wrapByPair(`[${rt}`,`${rt}];`))(et.children);return`${nt} ${st}`}},GraphPrintPlugin={match(tt){return tt.type==="Graph"},print(tt,et){tt.directed=et.directed;const nt=[];if(et.strict&&nt.push("strict"),nt.push(et.directed?"digraph":"graph"),et.id&&nt.push(tt.print(et.id)),et.children.length===0)return`${nt.join(" ")} {}`;const rt=endOfLine(tt.endOfLine),st=pipe(map(tt.print),joinBy(rt),indent(tt.indentStyle,tt.indentSize,rt),wrapByPair(`{${rt}`,`${rt}}`))(et.children);return`${nt.join(" ")} ${st}`}},quoteLiteralValue=pipe(escape,wrapWith('"')),quoteHTMLLikeLiteralValue=wrapByPair("<",">"),LiteralPrintPlugin={match(tt){return tt.type==="Literal"},print(tt,et){switch(et.quoted){case"html":return quoteHTMLLikeLiteralValue(et.value);case!0:return quoteLiteralValue(et.value);case!1:default:return escape(et.value)}}},NodePrintPlugin={match(tt){return tt.type==="Node"},print(tt,et){const nt=tt.print(et.id);if(et.children.length===0)return`${nt};`;const rt=endOfLine(tt.endOfLine),st=pipe(map(tt.print),joinBy(rt),indent(tt.indentStyle,tt.indentSize,rt),wrapByPair(`[${rt}`,`${rt}];`))(et.children);return`${nt} ${st}`}},NodeRefGroupPrintPlugin={match(tt){return tt.type==="NodeRefGroup"},print(tt,et){return pipe(map(tt.print),joinBy(" "),wrapByPair("{","}"))(et.children)}},NodeRefPrintPlugin={match(tt){return tt.type==="NodeRef"},print(tt,et){const nt=[tt.print(et.id)];return et.port&&nt.push(tt.print(et.port)),et.compass&&nt.push(tt.print(et.compass)),nt.join(":")}},SubgraphPrintPlugin={match(tt){return tt.type==="Subgraph"},print(tt,et){const nt=["subgraph"];if(et.id&&nt.push(tt.print(et.id)),et.children.length===0)return`${nt.join(" ")} {}`;const rt=endOfLine(tt.endOfLine),st=pipe(map(tt.print),joinBy(rt),indent(tt.indentStyle,tt.indentSize,rt),wrapByPair(`{${rt}`,`${rt}}`))(et.children);return`${nt.join(" ")} ${st}`}},defaultPlugins$2=[AttributeListPrintPlugin,AttributePrintPlugin,CommentPrintPlugin,DotPrintPlugin,EdgePrintPlugin,GraphPrintPlugin,LiteralPrintPlugin,NodePrintPlugin,NodeRefGroupPrintPlugin,NodeRefPrintPlugin,SubgraphPrintPlugin];class Printer{options;#e=[...defaultPlugins$2];constructor(et={}){this.options=et}print(et){const nt=[...this.#e],{indentSize:rt=2,indentStyle:st="space",endOfLine:ot="lf"}=this.options,en={directed:!0,indentSize:rt,indentStyle:st,endOfLine:ot,print(tn){for(const nn of nt)if(nn.match(tn))return nn.print(en,tn);throw Error()}};return en.print(et)}}function stringify(tt,et){const nt=new Printer(et).print(tt);if(!nt)throw new Error;return nt}function convertAttribute(tt,et){if(typeof et=="string"){const nt=et.trim();return/^<.+>$/ms.test(nt)?createElement("Attribute",{key:createElement("Literal",{value:tt,quoted:!1},[]),value:createElement("Literal",{value:nt.slice(1,nt.length-1),quoted:"html"},[])},[]):createElement("Attribute",{key:createElement("Literal",{value:tt,quoted:!1},[]),value:createElement("Literal",{value:et,quoted:!0},[])},[])}return createElement("Attribute",{key:createElement("Literal",{value:tt,quoted:!1},[]),value:createElement("Literal",{value:String(et),quoted:!1},[])},[])}function convertComment(tt,et){return createElement("Comment",{kind:et,value:tt},[])}function convertClusterChildren(tt,et){return Array.from(function*(){for(const[nt,rt]of et.values)yield convertAttribute(nt,rt);for(const nt of Object.values(et.attributes))nt.size>0&&(nt.comment&&(yield convertComment(nt.comment,tt.commentKind)),yield tt.convert(nt));for(const nt of et.nodes)nt.comment&&(yield convertComment(nt.comment,tt.commentKind)),yield tt.convert(nt);for(const nt of et.subgraphs)nt.comment&&(yield convertComment(nt.comment,tt.commentKind)),yield tt.convert(nt);for(const nt of et.edges)nt.comment&&(yield convertComment(nt.comment,tt.commentKind)),yield tt.convert(nt)}())}const AttributeListPlugin={match(tt){return tt.$$type==="AttributeList"},convert(tt,et){return createElement("AttributeList",{kind:et.$$kind},et.values.map(([nt,rt])=>convertAttribute(nt,rt)))}},EdgePlugin$1={match(tt){return tt.$$type==="Edge"},convert(tt,et){return createElement("Edge",{targets:et.targets.map(nt=>isNodeModel(nt)?createElement("NodeRef",{id:createElement("Literal",{value:nt.id,quoted:!0},[])},[]):isForwardRefNode(nt)?createElement("NodeRef",{id:createElement("Literal",{value:nt.id,quoted:!0},[]),port:nt.port?createElement("Literal",{value:nt.port,quoted:!0},[]):void 0,compass:nt.compass?createElement("Literal",{value:nt.compass,quoted:!0},[]):void 0},[]):createElement("NodeRefGroup",{},nt.map(rt=>isNodeModel(rt)?createElement("NodeRef",{id:createElement("Literal",{value:rt.id,quoted:!0},[])},[]):createElement("NodeRef",{id:createElement("Literal",{value:rt.id,quoted:!0},[]),port:rt.port?createElement("Literal",{value:rt.port,quoted:!0},[]):void 0,compass:rt.compass?createElement("Literal",{value:rt.compass,quoted:!0},[]):void 0},[]))))},[...et.attributes.comment?[convertComment(et.attributes.comment,tt.commentKind)]:[],...et.attributes.values.map(([nt,rt])=>convertAttribute(nt,rt))])}},GraphPlugin$1={match(tt){return tt.$$type==="Graph"},convert(tt,et){return createElement("Dot",{},[...et.comment?[convertComment(et.comment,tt.commentKind)]:[],createElement("Graph",{directed:et.directed,strict:et.strict,id:et.id?createElement("Literal",{value:et.id,quoted:!0},[]):void 0},convertClusterChildren(tt,et))])}},NodePlugin$1={match(tt){return tt.$$type==="Node"},convert(tt,et){return createElement("Node",{id:createElement("Literal",{value:et.id,quoted:!0},[])},[...et.attributes.comment?[convertComment(et.attributes.comment,tt.commentKind)]:[],...et.attributes.values.map(([nt,rt])=>convertAttribute(nt,rt))])}},SubgraphPlugin$1={match(tt){return tt.$$type==="Subgraph"},convert(tt,et){return createElement("Subgraph",{id:et.id?createElement("Literal",{value:et.id,quoted:!0},[]):void 0},convertClusterChildren(tt,et))}},defaultPlugins$1=[AttributeListPlugin,EdgePlugin$1,NodePlugin$1,GraphPlugin$1,SubgraphPlugin$1];class FromModelConverter{options;#e=[...defaultPlugins$1];constructor(et={}){this.options=et}convert(et){const nt=[...this.#e],{commentKind:rt="Slash"}=this.options,st={commentKind:rt,convert(ot){for(const en of nt)if(en.match(ot))return en.convert(st,ot);throw Error()}};return st.convert(et)}}function fromModel(tt,et){return new FromModelConverter(et).convert(tt)}const attribute=new Proxy(Object.freeze({}),{get:(tt,et)=>et});class DotObject{}class AttributesBase extends DotObject{#e=new Map;constructor(et){super(),et!==void 0&&this.apply(et)}get values(){return Array.from(this.#e.entries())}get size(){return this.#e.size}get(et){return this.#e.get(et)}set(et,nt){nt!=null&&this.#e.set(et,nt)}delete(et){this.#e.delete(et)}apply(et){const nt=Array.isArray(et)?et:Object.entries(et);for(const[rt,st]of nt)this.set(rt,st)}clear(){this.#e.clear()}}class AttributeList extends AttributesBase{$$kind;get $$type(){return"AttributeList"}comment;constructor(et,nt){super(nt),this.$$kind=et}}class GraphBase extends AttributesBase{#e=RootModelsContext;id;comment;attributes=Object.freeze({graph:new AttributeList("Graph"),edge:new AttributeList("Edge"),node:new AttributeList("Node")});get nodes(){return Array.from(this.#t.nodes.values())}get edges(){return Array.from(this.#t.edges.values())}get subgraphs(){return Array.from(this.#t.subgraphs.values())}#t={nodes:new Map,edges:new Set,subgraphs:new Set};with(et){this.#e=createModelsContext(et)}addNode(et){this.#t.nodes.set(et.id,et)}addEdge(et){this.#t.edges.add(et)}addSubgraph(et){this.#t.subgraphs.add(et)}existNode(et){return this.#t.nodes.has(et)}existEdge(et){return this.#t.edges.has(et)}existSubgraph(et){return this.#t.subgraphs.has(et)}createSubgraph(...et){const nt=new this.#e.Subgraph(...et);return nt.with(this.#e),this.addSubgraph(nt),nt}removeNode(et){this.#t.nodes.delete(typeof et=="string"?et:et.id)}removeEdge(et){this.#t.edges.delete(et)}removeSubgraph(et){this.#t.subgraphs.delete(et)}createNode(et,nt){const rt=new this.#e.Node(et,nt);return this.addNode(rt),rt}getSubgraph(et){return Array.from(this.#t.subgraphs.values()).find(nt=>nt.id===et)}getNode(et){return this.#t.nodes.get(et)}createEdge(et,nt){const rt=et.map(ot=>isNodeRefGroupLike(ot)?toNodeRefGroup(ot):toNodeRef(ot)),st=new this.#e.Edge(rt,nt);return this.addEdge(st),st}subgraph(...et){const nt=et.find(en=>typeof en=="string"),rt=et.find(en=>typeof en=="object"&&en!==null),st=et.find(en=>typeof en=="function"),ot=nt?this.getSubgraph(nt)??this.createSubgraph(nt):this.createSubgraph();return rt!==void 0&&ot.apply(rt),st!==void 0&&st(ot),ot}node(et,...nt){if(typeof et=="string"){const rt=et,st=nt.find(tn=>typeof tn=="object"&&tn!==null),ot=nt.find(tn=>typeof tn=="function"),en=this.getNode(rt)??this.createNode(rt);return st!==void 0&&en.attributes.apply(st),ot!==void 0&&ot(en),en}typeof et=="object"&&et!==null&&this.attributes.node.apply(et)}edge(et,...nt){if(Array.isArray(et)){const rt=et,st=nt.find(tn=>typeof tn=="object"),ot=nt.find(tn=>typeof tn=="function"),en=this.createEdge(rt,st);return ot!==void 0&&ot(en),en}typeof et=="object"&&et!==null&&this.attributes.edge.apply(et)}graph(et){this.attributes.graph.apply(et)}}class RootGraph extends GraphBase{get $$type(){return"Graph"}id;strict;constructor(...et){super(),this.id=et.find(rt=>typeof rt=="string"),this.strict=et.find(rt=>typeof rt=="boolean")??!1;const nt=et.find(rt=>typeof rt=="object"&&rt!==null);nt!==void 0&&this.apply(nt)}}class Digraph extends RootGraph{get directed(){return!0}}let Graph$1=class extends RootGraph{get directed(){return!1}};class Subgraph extends GraphBase{get $$type(){return"Subgraph"}id;constructor(...et){super(),this.id=et.find(rt=>typeof rt=="string");const nt=et.find(rt=>typeof rt=="object"&&rt!==null);nt!==void 0&&this.apply(nt)}isSubgraphCluster(){return typeof this.id=="string"?this.id.startsWith("cluster"):!1}}class AttributesGroup extends AttributesBase{comment}let Node$1=class extends DotObject{id;get $$type(){return"Node"}comment;attributes;constructor(et,nt){super(),this.id=et,this.attributes=new AttributesGroup(nt)}port(et){return typeof et=="string"?{id:this.id,port:et}:{id:this.id,...et}}};class Edge extends DotObject{targets;get $$type(){return"Edge"}comment;attributes;constructor(et,nt){if(super(),this.targets=et,et.length<2&&(isNodeRefLike(et[0])&&isNodeRefLike(et[1]))===!1)throw Error("The element of Edge target is missing or not satisfied as Edge target.");this.attributes=new AttributesGroup(nt)}}Object.assign(RootModelsContext,{Graph:Graph$1,Digraph,Subgraph,Node:Node$1,Edge});function ModelFactoryBuilder(tt,et){return(...nt)=>{const rt=tt?this.Digraph:this.Graph,st=nt.find(nn=>typeof nn=="string"),ot=nt.find(nn=>typeof nn=="object"),en=nt.find(nn=>typeof nn=="function"),tn=new rt(st,et,ot);return tn.with(this),typeof en=="function"&&en(tn),tn}}function createModelFactories(tt,et=RootModelsContext){return Object.freeze({digraph:ModelFactoryBuilder.call(et,!0,tt),graph:ModelFactoryBuilder.call(et,!1,tt)})}const noStrict=createModelFactories(!1),digraph=noStrict.digraph;noStrict.graph;const strict=createModelFactories(!0);function toDot(tt,et){const nt=fromModel(tt,et?.convert);return stringify(nt,et?.print)}var wordWrap,hasRequiredWordWrap;function requireWordWrap(){if(hasRequiredWordWrap)return wordWrap;hasRequiredWordWrap=1;function tt(rt){let st=rt.length-1,ot=rt[st];for(;ot===" "||ot===" ";)ot=rt[--st];return rt.substring(0,st+1)}function et(rt){return rt.split(`
|
|
186
|
-
`).map(en=>tt(en)).join(`
|
|
187
|
-
`)}wordWrap=function(rt,st){if(st=st||{},rt==null)return rt;var ot=st.width||50,en=typeof st.indent=="string"?st.indent:" ",tn=st.newline||`
|
|
188
|
-
`+en,nn=typeof st.escape=="function"?st.escape:nt,rn=".{1,"+ot+"}";st.cut!==!0&&(rn+="([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)");var sn=new RegExp(rn,"g"),an=rt.match(sn)||[],on=en+an.map(function(cn){return cn.slice(-1)===`
|
|
189
|
-
`&&(cn=cn.slice(0,cn.length-1)),nn(cn)}).join(tn);return st.trim===!0&&(on=et(on)),on};function nt(rt){return rt}return wordWrap}var wordWrapExports=requireWordWrap();const N=getDefaultExportFromCjs(wordWrapExports),Channel={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:tt=>tt>=255?255:tt<0?0:tt,g:tt=>tt>=255?255:tt<0?0:tt,b:tt=>tt>=255?255:tt<0?0:tt,h:tt=>tt%360,s:tt=>tt>=100?100:tt<0?0:tt,l:tt=>tt>=100?100:tt<0?0:tt,a:tt=>tt>=1?1:tt<0?0:tt},toLinear:tt=>{const et=tt/255;return tt>.03928?Math.pow((et+.055)/1.055,2.4):et/12.92},hue2rgb:(tt,et,nt)=>(nt<0&&(nt+=1),nt>1&&(nt-=1),nt<1/6?tt+(et-tt)*6*nt:nt<1/2?et:nt<2/3?tt+(et-tt)*(2/3-nt)*6:tt),hsl2rgb:({h:tt,s:et,l:nt},rt)=>{if(!et)return nt*2.55;tt/=360,et/=100,nt/=100;const st=nt<.5?nt*(1+et):nt+et-nt*et,ot=2*nt-st;switch(rt){case"r":return Channel.hue2rgb(ot,st,tt+1/3)*255;case"g":return Channel.hue2rgb(ot,st,tt)*255;case"b":return Channel.hue2rgb(ot,st,tt-1/3)*255}},rgb2hsl:({r:tt,g:et,b:nt},rt)=>{tt/=255,et/=255,nt/=255;const st=Math.max(tt,et,nt),ot=Math.min(tt,et,nt),en=(st+ot)/2;if(rt==="l")return en*100;if(st===ot)return 0;const tn=st-ot,nn=en>.5?tn/(2-st-ot):tn/(st+ot);if(rt==="s")return nn*100;switch(st){case tt:return((et-nt)/tn+(et<nt?6:0))*60;case et:return((nt-tt)/tn+2)*60;case nt:return((tt-et)/tn+4)*60;default:return-1}}},Lang={clamp:(tt,et,nt)=>et>nt?Math.min(et,Math.max(nt,tt)):Math.min(nt,Math.max(et,tt)),round:tt=>Math.round(tt*1e10)/1e10},Unit={dec2hex:tt=>{const et=Math.round(tt).toString(16);return et.length>1?et:`0${et}`}},Utils={channel:Channel,lang:Lang,unit:Unit},DEC2HEX={};for(let tt=0;tt<=255;tt++)DEC2HEX[tt]=Utils.unit.dec2hex(tt);const TYPE={ALL:0,RGB:1,HSL:2};class Type{constructor(){this.type=TYPE.ALL}get(){return this.type}set(et){if(this.type&&this.type!==et)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=et}reset(){this.type=TYPE.ALL}is(et){return this.type===et}}class Channels{constructor(et,nt){this.color=nt,this.changed=!1,this.data=et,this.type=new Type}set(et,nt){return this.color=nt,this.changed=!1,this.data=et,this.type.type=TYPE.ALL,this}_ensureHSL(){const et=this.data,{h:nt,s:rt,l:st}=et;nt===void 0&&(et.h=Utils.channel.rgb2hsl(et,"h")),rt===void 0&&(et.s=Utils.channel.rgb2hsl(et,"s")),st===void 0&&(et.l=Utils.channel.rgb2hsl(et,"l"))}_ensureRGB(){const et=this.data,{r:nt,g:rt,b:st}=et;nt===void 0&&(et.r=Utils.channel.hsl2rgb(et,"r")),rt===void 0&&(et.g=Utils.channel.hsl2rgb(et,"g")),st===void 0&&(et.b=Utils.channel.hsl2rgb(et,"b"))}get r(){const et=this.data,nt=et.r;return!this.type.is(TYPE.HSL)&&nt!==void 0?nt:(this._ensureHSL(),Utils.channel.hsl2rgb(et,"r"))}get g(){const et=this.data,nt=et.g;return!this.type.is(TYPE.HSL)&&nt!==void 0?nt:(this._ensureHSL(),Utils.channel.hsl2rgb(et,"g"))}get b(){const et=this.data,nt=et.b;return!this.type.is(TYPE.HSL)&&nt!==void 0?nt:(this._ensureHSL(),Utils.channel.hsl2rgb(et,"b"))}get h(){const et=this.data,nt=et.h;return!this.type.is(TYPE.RGB)&&nt!==void 0?nt:(this._ensureRGB(),Utils.channel.rgb2hsl(et,"h"))}get s(){const et=this.data,nt=et.s;return!this.type.is(TYPE.RGB)&&nt!==void 0?nt:(this._ensureRGB(),Utils.channel.rgb2hsl(et,"s"))}get l(){const et=this.data,nt=et.l;return!this.type.is(TYPE.RGB)&&nt!==void 0?nt:(this._ensureRGB(),Utils.channel.rgb2hsl(et,"l"))}get a(){return this.data.a}set r(et){this.type.set(TYPE.RGB),this.changed=!0,this.data.r=et}set g(et){this.type.set(TYPE.RGB),this.changed=!0,this.data.g=et}set b(et){this.type.set(TYPE.RGB),this.changed=!0,this.data.b=et}set h(et){this.type.set(TYPE.HSL),this.changed=!0,this.data.h=et}set s(et){this.type.set(TYPE.HSL),this.changed=!0,this.data.s=et}set l(et){this.type.set(TYPE.HSL),this.changed=!0,this.data.l=et}set a(et){this.changed=!0,this.data.a=et}}const channels=new Channels({r:0,g:0,b:0,a:0},"transparent"),Hex={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:tt=>{if(tt.charCodeAt(0)!==35)return;const et=tt.match(Hex.re);if(!et)return;const nt=et[1],rt=parseInt(nt,16),st=nt.length,ot=st%4===0,en=st>4,tn=en?1:17,nn=en?8:4,rn=ot?0:-1,sn=en?255:15;return channels.set({r:(rt>>nn*(rn+3)&sn)*tn,g:(rt>>nn*(rn+2)&sn)*tn,b:(rt>>nn*(rn+1)&sn)*tn,a:ot?(rt&sn)*tn/255:1},tt)},stringify:tt=>{const{r:et,g:nt,b:rt,a:st}=tt;return st<1?`#${DEC2HEX[Math.round(et)]}${DEC2HEX[Math.round(nt)]}${DEC2HEX[Math.round(rt)]}${DEC2HEX[Math.round(st*255)]}`:`#${DEC2HEX[Math.round(et)]}${DEC2HEX[Math.round(nt)]}${DEC2HEX[Math.round(rt)]}`}},HSL={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:tt=>{const et=tt.match(HSL.hueRe);if(et){const[,nt,rt]=et;switch(rt){case"grad":return Utils.channel.clamp.h(parseFloat(nt)*.9);case"rad":return Utils.channel.clamp.h(parseFloat(nt)*180/Math.PI);case"turn":return Utils.channel.clamp.h(parseFloat(nt)*360)}}return Utils.channel.clamp.h(parseFloat(tt))},parse:tt=>{const et=tt.charCodeAt(0);if(et!==104&&et!==72)return;const nt=tt.match(HSL.re);if(!nt)return;const[,rt,st,ot,en,tn]=nt;return channels.set({h:HSL._hue2deg(rt),s:Utils.channel.clamp.s(parseFloat(st)),l:Utils.channel.clamp.l(parseFloat(ot)),a:en?Utils.channel.clamp.a(tn?parseFloat(en)/100:parseFloat(en)):1},tt)},stringify:tt=>{const{h:et,s:nt,l:rt,a:st}=tt;return st<1?`hsla(${Utils.lang.round(et)}, ${Utils.lang.round(nt)}%, ${Utils.lang.round(rt)}%, ${st})`:`hsl(${Utils.lang.round(et)}, ${Utils.lang.round(nt)}%, ${Utils.lang.round(rt)}%)`}},Keyword={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:tt=>{tt=tt.toLowerCase();const et=Keyword.colors[tt];if(et)return Hex.parse(et)},stringify:tt=>{const et=Hex.stringify(tt);for(const nt in Keyword.colors)if(Keyword.colors[nt]===et)return nt}},RGB={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:tt=>{const et=tt.charCodeAt(0);if(et!==114&&et!==82)return;const nt=tt.match(RGB.re);if(!nt)return;const[,rt,st,ot,en,tn,nn,rn,sn]=nt;return channels.set({r:Utils.channel.clamp.r(st?parseFloat(rt)*2.55:parseFloat(rt)),g:Utils.channel.clamp.g(en?parseFloat(ot)*2.55:parseFloat(ot)),b:Utils.channel.clamp.b(nn?parseFloat(tn)*2.55:parseFloat(tn)),a:rn?Utils.channel.clamp.a(sn?parseFloat(rn)/100:parseFloat(rn)):1},tt)},stringify:tt=>{const{r:et,g:nt,b:rt,a:st}=tt;return st<1?`rgba(${Utils.lang.round(et)}, ${Utils.lang.round(nt)}, ${Utils.lang.round(rt)}, ${Utils.lang.round(st)})`:`rgb(${Utils.lang.round(et)}, ${Utils.lang.round(nt)}, ${Utils.lang.round(rt)})`}},Color={format:{keyword:Keyword,hex:Hex,rgb:RGB,rgba:RGB,hsl:HSL,hsla:HSL},parse:tt=>{if(typeof tt!="string")return tt;const et=Hex.parse(tt)||RGB.parse(tt)||HSL.parse(tt)||Keyword.parse(tt);if(et)return et;throw new Error(`Unsupported color format: "${tt}"`)},stringify:tt=>!tt.changed&&tt.color?tt.color:tt.type.is(TYPE.HSL)||tt.data.r===void 0?HSL.stringify(tt):tt.a<1||!Number.isInteger(tt.r)||!Number.isInteger(tt.g)||!Number.isInteger(tt.b)?RGB.stringify(tt):Hex.stringify(tt)},change=(tt,et)=>{const nt=Color.parse(tt);for(const rt in et)nt[rt]=Utils.channel.clamp[rt](et[rt]);return Color.stringify(nt)},toHex=tt=>Color.format.hex.stringify(Color.parse(tt)),adjustChannel=(tt,et,nt)=>{const rt=Color.parse(tt),st=rt[et],ot=Utils.channel.clamp[et](st+nt);return st!==ot&&(rt[et]=ot),Color.stringify(rt)},transparentize=(tt,et)=>adjustChannel(tt,"a",-.3),adjust=(tt,et)=>{const nt=Color.parse(tt),rt={};for(const st in et)et[st]&&(rt[st]=nt[st]+et[st]);return change(tt,rt)},scale=(tt,et)=>{const nt=Color.parse(tt),rt={},st=(ot,en,tn)=>en>0?(tn-ot)*en/100:ot*en/100;for(const ot in et)rt[ot]=st(nt[ot],et[ot],Utils.channel.max[ot]);return adjust(tt,rt)};function isCompound(tt){return tt.children.length>0}function toArrowType(tt){switch(tt){case"open":return"vee";default:return tt}}function pointToPx(tt){return Array.isArray(tt)?[pointToPx(tt[0]),pointToPx(tt[1])]:(core.invariant(isFinite(tt),`Invalid not finite point value ${tt}`),Math.round(tt))}const inchToPx=tt=>(core.invariant(isFinite(tt),`Invalid not finite inch value ${tt}`),Math.floor(tt*72)),pxToInch=tt=>Math.ceil(tt/72*1e3)/1e3,pxToPoints=tt=>Math.ceil(tt);pxToPoints(40).toString();function compoundColor(tt,et){return toHex(scale(tt,{l:-35-5*et,s:-15-5*et}))}function compoundLabelColor(tt){return toHex(transparentize(tt))}function sanitize(tt){return tt.trim().replaceAll("&","&").replaceAll("<","<").replaceAll(">",">")}function wrap(tt,{maxchars:et,maxLines:nt,sanitize:rt=e$2()}){let st=N(tt,{width:et,indent:"",escape:rt}).split(`
|
|
190
|
-
`);return n$3(nt)&&nt>0&&st.length>nt&&(st=st.slice(0,nt-1)),st}function s$1({text:tt,maxchars:et,fontsize:nt,maxLines:rt,bold:st,color:ot}){let en=wrap(tt,{maxchars:et,maxLines:rt,sanitize}).join("<BR/>");st&&(en=`<B>${en}</B>`);const tn=ot?` COLOR="${ot}"`:"";return`<FONT POINT-SIZE="${pxToPoints(nt)}"${tn}>${en}</FONT>`}function E(tt){return core.defaultTheme.textSizes[tt]}function G$1(tt){switch(tt){case"xs":case"sm":return 25;case"md":return 35;case"lg":case"xl":return 45;default:core.nonexhaustive(tt)}}function nodeLabel(tt,et,nt){const rt=["sm","xs"].includes(nt.shape),st=n$7(tt.icon),ot=[s$1({text:tt.title,fontsize:E(nt.text),maxchars:G$1(nt.shape),maxLines:rt?1:3})];if(nt.shape!=="xs"&&(n$7(tt.technology?.trim())&&ot.push(s$1({text:tt.technology,fontsize:Math.ceil(E(nt.text)*.65),maxchars:st?35:45,maxLines:1,color:et.loContrast})),n$7(tt.description?.trim())&&ot.push(s$1({text:tt.description,fontsize:Math.ceil(E(nt.text)*.75),maxchars:st?35:45,maxLines:rt?3:5,color:et.loContrast}))),ot.length===1&&!st)return`<${ot[0]}>`;const en=st?(tn,nn,rn)=>{let sn=`<TD ALIGN="TEXT" BALIGN="LEFT">${tn}</TD>`;if(nn===0){const an=rn.length>1?` ROWSPAN="${rn.length}"`:"";let on=76;["xs","sm"].includes(nt.shape)&&(on=16),(tt.shape==="queue"||tt.shape==="mobile")&&(on+=20),sn=`<TD${an} WIDTH="${on}"> </TD>${sn}`,sn=`${sn}<TD${an} WIDTH="16"> </TD>`}return`<TR>${sn}</TR>`}:tn=>`<TR><TD>${tn}</TD></TR>`;return`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="4">${ot.map(en).join("")}</TABLE>>`}function compoundLabel(tt,et){const nt=s$1({text:tt.title.toUpperCase(),maxchars:50,fontsize:11,maxLines:1,bold:!0,color:et});return nt.includes("<BR/>")?`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD ALIGN="TEXT" BALIGN="LEFT">${nt}</TD></TR></TABLE>>`:`<${nt}>`}const EDGE_LABEL_MAX_CHARS=40,EDGE_LABEL_MAX_LINES=5,D=`BGCOLOR="${core.defaultTheme.relationships[core.DefaultRelationshipColor].labelBgColor}A0"`;function edgelabel({label:tt,technology:et}){const nt=[];if(n$7(tt?.trim())&&nt.push(s$1({text:tt,maxchars:EDGE_LABEL_MAX_CHARS,fontsize:14,maxLines:EDGE_LABEL_MAX_LINES,bold:tt==="[...]"})),n$7(et?.trim())&&nt.push(s$1({text:`[ ${et} ]`,fontsize:12,maxLines:1,maxchars:EDGE_LABEL_MAX_CHARS})),nt.length===0)return null;const rt=nt.map(st=>`<TR><TD ALIGN="TEXT" BALIGN="LEFT">${st}</TD></TR>`).join("");return`<<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" ${D}>${rt}</TABLE>>`}function stepEdgeLabel(tt,et){const nt=`<TABLE BORDER="0" CELLPADDING="6" ${D}><TR><TD WIDTH="20" HEIGHT="20"><FONT POINT-SIZE="${pxToPoints(14)}"><B>${tt}</B></FONT></TD></TR></TABLE>`;return n$7(et?.trim())?`<${['<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">',"<TR>",`<TD>${nt}</TD>`,`<TD ${D} CELLPADDING="3">`,s$1({text:et,maxchars:EDGE_LABEL_MAX_CHARS,fontsize:14,maxLines:5}),"</TD>","</TR>","</TABLE>"].join("")}>`:`<${nt}>`}var iterator,hasRequiredIterator;function requireIterator(){if(hasRequiredIterator)return iterator;hasRequiredIterator=1;function tt(et){if(typeof et!="function")throw new Error("obliterator/iterator: expecting a function!");this.next=et}return typeof Symbol<"u"&&(tt.prototype[Symbol.iterator]=function(){return this}),tt.of=function(){var et=arguments,nt=et.length,rt=0;return new tt(function(){return rt>=nt?{done:!0}:{done:!1,value:et[rt++]}})},tt.empty=function(){var et=new tt(function(){return{done:!0}});return et},tt.fromSequence=function(et){var nt=0,rt=et.length;return new tt(function(){return nt>=rt?{done:!0}:{done:!1,value:et[nt++]}})},tt.is=function(et){return et instanceof tt?!0:typeof et=="object"&&et!==null&&typeof et.next=="function"},iterator=tt,iterator}var iteratorExports=requireIterator();const Iterator=getDefaultExportFromCjs(iteratorExports);var support={},hasRequiredSupport;function requireSupport(){return hasRequiredSupport||(hasRequiredSupport=1,support.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u",support.SYMBOL_SUPPORT=typeof Symbol<"u"),support}var iter,hasRequiredIter;function requireIter(){if(hasRequiredIter)return iter;hasRequiredIter=1;var tt=requireIterator(),et=requireSupport(),nt=et.ARRAY_BUFFER_SUPPORT,rt=et.SYMBOL_SUPPORT;function st(ot){return typeof ot=="string"||Array.isArray(ot)||nt&&ArrayBuffer.isView(ot)?tt.fromSequence(ot):typeof ot!="object"||ot===null?null:rt&&typeof ot[Symbol.iterator]=="function"?ot[Symbol.iterator]():typeof ot.next=="function"?ot:null}return iter=function(en){var tn=st(en);if(!tn)throw new Error("obliterator: target is not iterable nor a valid iterator.");return tn},iter}var take$1,hasRequiredTake;function requireTake(){if(hasRequiredTake)return take$1;hasRequiredTake=1;var tt=requireIter();return take$1=function(nt,rt){for(var st=arguments.length>1?rt:1/0,ot=st!==1/0?new Array(st):[],en,tn=0,nn=tt(nt);;){if(tn===st)return ot;if(en=nn.next(),en.done)return tn!==rt&&(ot.length=tn),ot;ot[tn++]=en.value}},take$1}var takeExports=requireTake();const take=getDefaultExportFromCjs(takeExports);var chain$1,hasRequiredChain;function requireChain(){if(hasRequiredChain)return chain$1;hasRequiredChain=1;var tt=requireIterator(),et=requireIter();return chain$1=function(){var rt=arguments,st=null,ot=-1;return new tt(function(){var tn=null;do{if(st===null){if(ot++,ot>=rt.length)return{done:!0};st=et(rt[ot])}if(tn=st.next(),tn.done===!0){st=null;continue}break}while(!0);return tn})},chain$1}var chainExports=requireChain();const chain=getDefaultExportFromCjs(chainExports);function assignPolyfill(){const tt=arguments[0];for(let et=1,nt=arguments.length;et<nt;et++)if(arguments[et])for(const rt in arguments[et])tt[rt]=arguments[et][rt];return tt}let assign=assignPolyfill;typeof Object.assign=="function"&&(assign=Object.assign);function getMatchingEdge(tt,et,nt,rt){const st=tt._nodes.get(et);let ot=null;return st&&(rt==="mixed"?ot=st.out&&st.out[nt]||st.undirected&&st.undirected[nt]:rt==="directed"?ot=st.out&&st.out[nt]:ot=st.undirected&&st.undirected[nt]),ot}function isPlainObject(tt){return typeof tt=="object"&&tt!==null}function isEmpty(tt){let et;for(et in tt)return!1;return!0}function privateProperty(tt,et,nt){Object.defineProperty(tt,et,{enumerable:!1,configurable:!1,writable:!0,value:nt})}function readOnlyProperty(tt,et,nt){const rt={enumerable:!0,configurable:!0};typeof nt=="function"?rt.get=nt:(rt.value=nt,rt.writable=!1),Object.defineProperty(tt,et,rt)}function validateHints(tt){return!(!isPlainObject(tt)||tt.attributes&&!Array.isArray(tt.attributes))}function incrementalIdStartingFromRandomByte(){let tt=Math.floor(Math.random()*256)&255;return()=>tt++}class GraphError extends Error{constructor(et){super(),this.name="GraphError",this.message=et}}class InvalidArgumentsGraphError extends GraphError{constructor(et){super(et),this.name="InvalidArgumentsGraphError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,InvalidArgumentsGraphError.prototype.constructor)}}class NotFoundGraphError extends GraphError{constructor(et){super(et),this.name="NotFoundGraphError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,NotFoundGraphError.prototype.constructor)}}class UsageGraphError extends GraphError{constructor(et){super(et),this.name="UsageGraphError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,UsageGraphError.prototype.constructor)}}function MixedNodeData(tt,et){this.key=tt,this.attributes=et,this.clear()}MixedNodeData.prototype.clear=function(){this.inDegree=0,this.outDegree=0,this.undirectedDegree=0,this.undirectedLoops=0,this.directedLoops=0,this.in={},this.out={},this.undirected={}};function DirectedNodeData(tt,et){this.key=tt,this.attributes=et,this.clear()}DirectedNodeData.prototype.clear=function(){this.inDegree=0,this.outDegree=0,this.directedLoops=0,this.in={},this.out={}};function UndirectedNodeData(tt,et){this.key=tt,this.attributes=et,this.clear()}UndirectedNodeData.prototype.clear=function(){this.undirectedDegree=0,this.undirectedLoops=0,this.undirected={}};function EdgeData(tt,et,nt,rt,st){this.key=et,this.attributes=st,this.undirected=tt,this.source=nt,this.target=rt}EdgeData.prototype.attach=function(){let tt="out",et="in";this.undirected&&(tt=et="undirected");const nt=this.source.key,rt=this.target.key;this.source[tt][rt]=this,!(this.undirected&&nt===rt)&&(this.target[et][nt]=this)},EdgeData.prototype.attachMulti=function(){let tt="out",et="in";const nt=this.source.key,rt=this.target.key;this.undirected&&(tt=et="undirected");const st=this.source[tt],ot=st[rt];if(typeof ot>"u"){st[rt]=this,this.undirected&&nt===rt||(this.target[et][nt]=this);return}ot.previous=this,this.next=ot,st[rt]=this,this.target[et][nt]=this},EdgeData.prototype.detach=function(){const tt=this.source.key,et=this.target.key;let nt="out",rt="in";this.undirected&&(nt=rt="undirected"),delete this.source[nt][et],delete this.target[rt][tt]},EdgeData.prototype.detachMulti=function(){const tt=this.source.key,et=this.target.key;let nt="out",rt="in";this.undirected&&(nt=rt="undirected"),this.previous===void 0?this.next===void 0?(delete this.source[nt][et],delete this.target[rt][tt]):(this.next.previous=void 0,this.source[nt][et]=this.next,this.target[rt][tt]=this.next):(this.previous.next=this.next,this.next!==void 0&&(this.next.previous=this.previous))};const NODE=0,SOURCE=1,TARGET=2,OPPOSITE=3;function findRelevantNodeData(tt,et,nt,rt,st,ot,en){let tn,nn,rn,sn;if(rt=""+rt,nt===NODE){if(tn=tt._nodes.get(rt),!tn)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" node in the graph.`);rn=st,sn=ot}else if(nt===OPPOSITE){if(st=""+st,nn=tt._edges.get(st),!nn)throw new NotFoundGraphError(`Graph.${et}: could not find the "${st}" edge in the graph.`);const an=nn.source.key,on=nn.target.key;if(rt===an)tn=nn.target;else if(rt===on)tn=nn.source;else throw new NotFoundGraphError(`Graph.${et}: the "${rt}" node is not attached to the "${st}" edge (${an}, ${on}).`);rn=ot,sn=en}else{if(nn=tt._edges.get(rt),!nn)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`);nt===SOURCE?tn=nn.source:tn=nn.target,rn=st,sn=ot}return[tn,rn,sn]}function attachNodeAttributeGetter(tt,et,nt){tt.prototype[et]=function(rt,st,ot){const[en,tn]=findRelevantNodeData(this,et,nt,rt,st,ot);return en.attributes[tn]}}function attachNodeAttributesGetter(tt,et,nt){tt.prototype[et]=function(rt,st){const[ot]=findRelevantNodeData(this,et,nt,rt,st);return ot.attributes}}function attachNodeAttributeChecker(tt,et,nt){tt.prototype[et]=function(rt,st,ot){const[en,tn]=findRelevantNodeData(this,et,nt,rt,st,ot);return en.attributes.hasOwnProperty(tn)}}function attachNodeAttributeSetter(tt,et,nt){tt.prototype[et]=function(rt,st,ot,en){const[tn,nn,rn]=findRelevantNodeData(this,et,nt,rt,st,ot,en);return tn.attributes[nn]=rn,this.emit("nodeAttributesUpdated",{key:tn.key,type:"set",attributes:tn.attributes,name:nn}),this}}function attachNodeAttributeUpdater(tt,et,nt){tt.prototype[et]=function(rt,st,ot,en){const[tn,nn,rn]=findRelevantNodeData(this,et,nt,rt,st,ot,en);if(typeof rn!="function")throw new InvalidArgumentsGraphError(`Graph.${et}: updater should be a function.`);const sn=tn.attributes,an=rn(sn[nn]);return sn[nn]=an,this.emit("nodeAttributesUpdated",{key:tn.key,type:"set",attributes:tn.attributes,name:nn}),this}}function attachNodeAttributeRemover(tt,et,nt){tt.prototype[et]=function(rt,st,ot){const[en,tn]=findRelevantNodeData(this,et,nt,rt,st,ot);return delete en.attributes[tn],this.emit("nodeAttributesUpdated",{key:en.key,type:"remove",attributes:en.attributes,name:tn}),this}}function attachNodeAttributesReplacer(tt,et,nt){tt.prototype[et]=function(rt,st,ot){const[en,tn]=findRelevantNodeData(this,et,nt,rt,st,ot);if(!isPlainObject(tn))throw new InvalidArgumentsGraphError(`Graph.${et}: provided attributes are not a plain object.`);return en.attributes=tn,this.emit("nodeAttributesUpdated",{key:en.key,type:"replace",attributes:en.attributes}),this}}function attachNodeAttributesMerger(tt,et,nt){tt.prototype[et]=function(rt,st,ot){const[en,tn]=findRelevantNodeData(this,et,nt,rt,st,ot);if(!isPlainObject(tn))throw new InvalidArgumentsGraphError(`Graph.${et}: provided attributes are not a plain object.`);return assign(en.attributes,tn),this.emit("nodeAttributesUpdated",{key:en.key,type:"merge",attributes:en.attributes,data:tn}),this}}function attachNodeAttributesUpdater(tt,et,nt){tt.prototype[et]=function(rt,st,ot){const[en,tn]=findRelevantNodeData(this,et,nt,rt,st,ot);if(typeof tn!="function")throw new InvalidArgumentsGraphError(`Graph.${et}: provided updater is not a function.`);return en.attributes=tn(en.attributes),this.emit("nodeAttributesUpdated",{key:en.key,type:"update",attributes:en.attributes}),this}}const NODE_ATTRIBUTES_METHODS=[{name:tt=>`get${tt}Attribute`,attacher:attachNodeAttributeGetter},{name:tt=>`get${tt}Attributes`,attacher:attachNodeAttributesGetter},{name:tt=>`has${tt}Attribute`,attacher:attachNodeAttributeChecker},{name:tt=>`set${tt}Attribute`,attacher:attachNodeAttributeSetter},{name:tt=>`update${tt}Attribute`,attacher:attachNodeAttributeUpdater},{name:tt=>`remove${tt}Attribute`,attacher:attachNodeAttributeRemover},{name:tt=>`replace${tt}Attributes`,attacher:attachNodeAttributesReplacer},{name:tt=>`merge${tt}Attributes`,attacher:attachNodeAttributesMerger},{name:tt=>`update${tt}Attributes`,attacher:attachNodeAttributesUpdater}];function attachNodeAttributesMethods(tt){NODE_ATTRIBUTES_METHODS.forEach(function({name:et,attacher:nt}){nt(tt,et("Node"),NODE),nt(tt,et("Source"),SOURCE),nt(tt,et("Target"),TARGET),nt(tt,et("Opposite"),OPPOSITE)})}function attachEdgeAttributeGetter(tt,et,nt){tt.prototype[et]=function(rt,st){let ot;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const en=""+rt,tn=""+st;if(st=arguments[2],ot=getMatchingEdge(this,en,tn,nt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${en}" - "${tn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,ot=this._edges.get(rt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}return ot.attributes[st]}}function attachEdgeAttributesGetter(tt,et,nt){tt.prototype[et]=function(rt){let st;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>1){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const ot=""+rt,en=""+arguments[1];if(st=getMatchingEdge(this,ot,en,nt),!st)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${ot}" - "${en}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,st=this._edges.get(rt),!st)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}return st.attributes}}function attachEdgeAttributeChecker(tt,et,nt){tt.prototype[et]=function(rt,st){let ot;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const en=""+rt,tn=""+st;if(st=arguments[2],ot=getMatchingEdge(this,en,tn,nt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${en}" - "${tn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,ot=this._edges.get(rt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}return ot.attributes.hasOwnProperty(st)}}function attachEdgeAttributeSetter(tt,et,nt){tt.prototype[et]=function(rt,st,ot){let en;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>3){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const tn=""+rt,nn=""+st;if(st=arguments[2],ot=arguments[3],en=getMatchingEdge(this,tn,nn,nt),!en)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${tn}" - "${nn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,en=this._edges.get(rt),!en)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}return en.attributes[st]=ot,this.emit("edgeAttributesUpdated",{key:en.key,type:"set",attributes:en.attributes,name:st}),this}}function attachEdgeAttributeUpdater(tt,et,nt){tt.prototype[et]=function(rt,st,ot){let en;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>3){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const tn=""+rt,nn=""+st;if(st=arguments[2],ot=arguments[3],en=getMatchingEdge(this,tn,nn,nt),!en)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${tn}" - "${nn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,en=this._edges.get(rt),!en)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}if(typeof ot!="function")throw new InvalidArgumentsGraphError(`Graph.${et}: updater should be a function.`);return en.attributes[st]=ot(en.attributes[st]),this.emit("edgeAttributesUpdated",{key:en.key,type:"set",attributes:en.attributes,name:st}),this}}function attachEdgeAttributeRemover(tt,et,nt){tt.prototype[et]=function(rt,st){let ot;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const en=""+rt,tn=""+st;if(st=arguments[2],ot=getMatchingEdge(this,en,tn,nt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${en}" - "${tn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,ot=this._edges.get(rt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}return delete ot.attributes[st],this.emit("edgeAttributesUpdated",{key:ot.key,type:"remove",attributes:ot.attributes,name:st}),this}}function attachEdgeAttributesReplacer(tt,et,nt){tt.prototype[et]=function(rt,st){let ot;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const en=""+rt,tn=""+st;if(st=arguments[2],ot=getMatchingEdge(this,en,tn,nt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${en}" - "${tn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,ot=this._edges.get(rt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}if(!isPlainObject(st))throw new InvalidArgumentsGraphError(`Graph.${et}: provided attributes are not a plain object.`);return ot.attributes=st,this.emit("edgeAttributesUpdated",{key:ot.key,type:"replace",attributes:ot.attributes}),this}}function attachEdgeAttributesMerger(tt,et,nt){tt.prototype[et]=function(rt,st){let ot;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const en=""+rt,tn=""+st;if(st=arguments[2],ot=getMatchingEdge(this,en,tn,nt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${en}" - "${tn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,ot=this._edges.get(rt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}if(!isPlainObject(st))throw new InvalidArgumentsGraphError(`Graph.${et}: provided attributes are not a plain object.`);return assign(ot.attributes,st),this.emit("edgeAttributesUpdated",{key:ot.key,type:"merge",attributes:ot.attributes,data:st}),this}}function attachEdgeAttributesUpdater(tt,et,nt){tt.prototype[et]=function(rt,st){let ot;if(this.type!=="mixed"&&nt!=="mixed"&&nt!==this.type)throw new UsageGraphError(`Graph.${et}: cannot find this type of edges in your ${this.type} graph.`);if(arguments.length>2){if(this.multi)throw new UsageGraphError(`Graph.${et}: cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.`);const en=""+rt,tn=""+st;if(st=arguments[2],ot=getMatchingEdge(this,en,tn,nt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find an edge for the given path ("${en}" - "${tn}").`)}else{if(nt!=="mixed")throw new UsageGraphError(`Graph.${et}: calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.`);if(rt=""+rt,ot=this._edges.get(rt),!ot)throw new NotFoundGraphError(`Graph.${et}: could not find the "${rt}" edge in the graph.`)}if(typeof st!="function")throw new InvalidArgumentsGraphError(`Graph.${et}: provided updater is not a function.`);return ot.attributes=st(ot.attributes),this.emit("edgeAttributesUpdated",{key:ot.key,type:"update",attributes:ot.attributes}),this}}const EDGE_ATTRIBUTES_METHODS=[{name:tt=>`get${tt}Attribute`,attacher:attachEdgeAttributeGetter},{name:tt=>`get${tt}Attributes`,attacher:attachEdgeAttributesGetter},{name:tt=>`has${tt}Attribute`,attacher:attachEdgeAttributeChecker},{name:tt=>`set${tt}Attribute`,attacher:attachEdgeAttributeSetter},{name:tt=>`update${tt}Attribute`,attacher:attachEdgeAttributeUpdater},{name:tt=>`remove${tt}Attribute`,attacher:attachEdgeAttributeRemover},{name:tt=>`replace${tt}Attributes`,attacher:attachEdgeAttributesReplacer},{name:tt=>`merge${tt}Attributes`,attacher:attachEdgeAttributesMerger},{name:tt=>`update${tt}Attributes`,attacher:attachEdgeAttributesUpdater}];function attachEdgeAttributesMethods(tt){EDGE_ATTRIBUTES_METHODS.forEach(function({name:et,attacher:nt}){nt(tt,et("Edge"),"mixed"),nt(tt,et("DirectedEdge"),"directed"),nt(tt,et("UndirectedEdge"),"undirected")})}const EDGES_ITERATION=[{name:"edges",type:"mixed"},{name:"inEdges",type:"directed",direction:"in"},{name:"outEdges",type:"directed",direction:"out"},{name:"inboundEdges",type:"mixed",direction:"in"},{name:"outboundEdges",type:"mixed",direction:"out"},{name:"directedEdges",type:"directed"},{name:"undirectedEdges",type:"undirected"}];function forEachSimple(tt,et,nt,rt){let st=!1;for(const ot in et){if(ot===rt)continue;const en=et[ot];if(st=nt(en.key,en.attributes,en.source.key,en.target.key,en.source.attributes,en.target.attributes,en.undirected),tt&&st)return en.key}}function forEachMulti(tt,et,nt,rt){let st,ot,en,tn=!1;for(const nn in et)if(nn!==rt){st=et[nn];do{if(ot=st.source,en=st.target,tn=nt(st.key,st.attributes,ot.key,en.key,ot.attributes,en.attributes,st.undirected),tt&&tn)return st.key;st=st.next}while(st!==void 0)}}function createIterator(tt,et){const nt=Object.keys(tt),rt=nt.length;let st,ot=0;return new Iterator(function(){do if(st)st=st.next;else{if(ot>=rt)return{done:!0};const tn=nt[ot++];if(tn===et){st=void 0;continue}st=tt[tn]}while(!st);return{done:!1,value:{edge:st.key,attributes:st.attributes,source:st.source.key,target:st.target.key,sourceAttributes:st.source.attributes,targetAttributes:st.target.attributes,undirected:st.undirected}}})}function forEachForKeySimple(tt,et,nt,rt){const st=et[nt];if(!st)return;const ot=st.source,en=st.target;if(rt(st.key,st.attributes,ot.key,en.key,ot.attributes,en.attributes,st.undirected)&&tt)return st.key}function forEachForKeyMulti(tt,et,nt,rt){let st=et[nt];if(!st)return;let ot=!1;do{if(ot=rt(st.key,st.attributes,st.source.key,st.target.key,st.source.attributes,st.target.attributes,st.undirected),tt&&ot)return st.key;st=st.next}while(st!==void 0)}function createIteratorForKey(tt,et){let nt=tt[et];return nt.next!==void 0?new Iterator(function(){if(!nt)return{done:!0};const rt={edge:nt.key,attributes:nt.attributes,source:nt.source.key,target:nt.target.key,sourceAttributes:nt.source.attributes,targetAttributes:nt.target.attributes,undirected:nt.undirected};return nt=nt.next,{done:!1,value:rt}}):Iterator.of({edge:nt.key,attributes:nt.attributes,source:nt.source.key,target:nt.target.key,sourceAttributes:nt.source.attributes,targetAttributes:nt.target.attributes,undirected:nt.undirected})}function createEdgeArray(tt,et){if(tt.size===0)return[];if(et==="mixed"||et===tt.type)return typeof Array.from=="function"?Array.from(tt._edges.keys()):take(tt._edges.keys(),tt._edges.size);const nt=et==="undirected"?tt.undirectedSize:tt.directedSize,rt=new Array(nt),st=et==="undirected",ot=tt._edges.values();let en=0,tn,nn;for(;tn=ot.next(),tn.done!==!0;)nn=tn.value,nn.undirected===st&&(rt[en++]=nn.key);return rt}function forEachEdge(tt,et,nt,rt){if(et.size===0)return;const st=nt!=="mixed"&&nt!==et.type,ot=nt==="undirected";let en,tn,nn=!1;const rn=et._edges.values();for(;en=rn.next(),en.done!==!0;){if(tn=en.value,st&&tn.undirected!==ot)continue;const{key:sn,attributes:an,source:on,target:cn}=tn;if(nn=rt(sn,an,on.key,cn.key,on.attributes,cn.attributes,tn.undirected),tt&&nn)return sn}}function createEdgeIterator(tt,et){if(tt.size===0)return Iterator.empty();const nt=et!=="mixed"&&et!==tt.type,rt=et==="undirected",st=tt._edges.values();return new Iterator(function(){let en,tn;for(;;){if(en=st.next(),en.done)return en;if(tn=en.value,!(nt&&tn.undirected!==rt))break}return{value:{edge:tn.key,attributes:tn.attributes,source:tn.source.key,target:tn.target.key,sourceAttributes:tn.source.attributes,targetAttributes:tn.target.attributes,undirected:tn.undirected},done:!1}})}function forEachEdgeForNode(tt,et,nt,rt,st,ot){const en=et?forEachMulti:forEachSimple;let tn;if(nt!=="undirected"&&(rt!=="out"&&(tn=en(tt,st.in,ot),tt&&tn)||rt!=="in"&&(tn=en(tt,st.out,ot,rt?void 0:st.key),tt&&tn))||nt!=="directed"&&(tn=en(tt,st.undirected,ot),tt&&tn))return tn}function createEdgeArrayForNode(tt,et,nt,rt){const st=[];return forEachEdgeForNode(!1,tt,et,nt,rt,function(ot){st.push(ot)}),st}function createEdgeIteratorForNode(tt,et,nt){let rt=Iterator.empty();return tt!=="undirected"&&(et!=="out"&&typeof nt.in<"u"&&(rt=chain(rt,createIterator(nt.in))),et!=="in"&&typeof nt.out<"u"&&(rt=chain(rt,createIterator(nt.out,et?void 0:nt.key)))),tt!=="directed"&&typeof nt.undirected<"u"&&(rt=chain(rt,createIterator(nt.undirected))),rt}function forEachEdgeForPath(tt,et,nt,rt,st,ot,en){const tn=nt?forEachForKeyMulti:forEachForKeySimple;let nn;if(et!=="undirected"&&(typeof st.in<"u"&&rt!=="out"&&(nn=tn(tt,st.in,ot,en),tt&&nn)||typeof st.out<"u"&&rt!=="in"&&(rt||st.key!==ot)&&(nn=tn(tt,st.out,ot,en),tt&&nn))||et!=="directed"&&typeof st.undirected<"u"&&(nn=tn(tt,st.undirected,ot,en),tt&&nn))return nn}function createEdgeArrayForPath(tt,et,nt,rt,st){const ot=[];return forEachEdgeForPath(!1,tt,et,nt,rt,st,function(en){ot.push(en)}),ot}function createEdgeIteratorForPath(tt,et,nt,rt){let st=Iterator.empty();return tt!=="undirected"&&(typeof nt.in<"u"&&et!=="out"&&rt in nt.in&&(st=chain(st,createIteratorForKey(nt.in,rt))),typeof nt.out<"u"&&et!=="in"&&rt in nt.out&&(et||nt.key!==rt)&&(st=chain(st,createIteratorForKey(nt.out,rt)))),tt!=="directed"&&typeof nt.undirected<"u"&&rt in nt.undirected&&(st=chain(st,createIteratorForKey(nt.undirected,rt))),st}function attachEdgeArrayCreator(tt,et){const{name:nt,type:rt,direction:st}=et;tt.prototype[nt]=function(ot,en){if(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)return[];if(!arguments.length)return createEdgeArray(this,rt);if(arguments.length===1){ot=""+ot;const tn=this._nodes.get(ot);if(typeof tn>"u")throw new NotFoundGraphError(`Graph.${nt}: could not find the "${ot}" node in the graph.`);return createEdgeArrayForNode(this.multi,rt==="mixed"?this.type:rt,st,tn)}if(arguments.length===2){ot=""+ot,en=""+en;const tn=this._nodes.get(ot);if(!tn)throw new NotFoundGraphError(`Graph.${nt}: could not find the "${ot}" source node in the graph.`);if(!this._nodes.has(en))throw new NotFoundGraphError(`Graph.${nt}: could not find the "${en}" target node in the graph.`);return createEdgeArrayForPath(rt,this.multi,st,tn,en)}throw new InvalidArgumentsGraphError(`Graph.${nt}: too many arguments (expecting 0, 1 or 2 and got ${arguments.length}).`)}}function attachForEachEdge(tt,et){const{name:nt,type:rt,direction:st}=et,ot="forEach"+nt[0].toUpperCase()+nt.slice(1,-1);tt.prototype[ot]=function(rn,sn,an){if(!(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)){if(arguments.length===1)return an=rn,forEachEdge(!1,this,rt,an);if(arguments.length===2){rn=""+rn,an=sn;const on=this._nodes.get(rn);if(typeof on>"u")throw new NotFoundGraphError(`Graph.${ot}: could not find the "${rn}" node in the graph.`);return forEachEdgeForNode(!1,this.multi,rt==="mixed"?this.type:rt,st,on,an)}if(arguments.length===3){rn=""+rn,sn=""+sn;const on=this._nodes.get(rn);if(!on)throw new NotFoundGraphError(`Graph.${ot}: could not find the "${rn}" source node in the graph.`);if(!this._nodes.has(sn))throw new NotFoundGraphError(`Graph.${ot}: could not find the "${sn}" target node in the graph.`);return forEachEdgeForPath(!1,rt,this.multi,st,on,sn,an)}throw new InvalidArgumentsGraphError(`Graph.${ot}: too many arguments (expecting 1, 2 or 3 and got ${arguments.length}).`)}};const en="map"+nt[0].toUpperCase()+nt.slice(1);tt.prototype[en]=function(){const rn=Array.prototype.slice.call(arguments),sn=rn.pop();let an;if(rn.length===0){let on=0;rt!=="directed"&&(on+=this.undirectedSize),rt!=="undirected"&&(on+=this.directedSize),an=new Array(on);let cn=0;rn.push((ln,fn,gn,pn,vn,bn,$n)=>{an[cn++]=sn(ln,fn,gn,pn,vn,bn,$n)})}else an=[],rn.push((on,cn,ln,fn,gn,pn,vn)=>{an.push(sn(on,cn,ln,fn,gn,pn,vn))});return this[ot].apply(this,rn),an};const tn="filter"+nt[0].toUpperCase()+nt.slice(1);tt.prototype[tn]=function(){const rn=Array.prototype.slice.call(arguments),sn=rn.pop(),an=[];return rn.push((on,cn,ln,fn,gn,pn,vn)=>{sn(on,cn,ln,fn,gn,pn,vn)&&an.push(on)}),this[ot].apply(this,rn),an};const nn="reduce"+nt[0].toUpperCase()+nt.slice(1);tt.prototype[nn]=function(){let rn=Array.prototype.slice.call(arguments);if(rn.length<2||rn.length>4)throw new InvalidArgumentsGraphError(`Graph.${nn}: invalid number of arguments (expecting 2, 3 or 4 and got ${rn.length}).`);if(typeof rn[rn.length-1]=="function"&&typeof rn[rn.length-2]!="function")throw new InvalidArgumentsGraphError(`Graph.${nn}: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.`);let sn,an;rn.length===2?(sn=rn[0],an=rn[1],rn=[]):rn.length===3?(sn=rn[1],an=rn[2],rn=[rn[0]]):rn.length===4&&(sn=rn[2],an=rn[3],rn=[rn[0],rn[1]]);let on=an;return rn.push((cn,ln,fn,gn,pn,vn,bn)=>{on=sn(on,cn,ln,fn,gn,pn,vn,bn)}),this[ot].apply(this,rn),on}}function attachFindEdge(tt,et){const{name:nt,type:rt,direction:st}=et,ot="find"+nt[0].toUpperCase()+nt.slice(1,-1);tt.prototype[ot]=function(nn,rn,sn){if(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)return!1;if(arguments.length===1)return sn=nn,forEachEdge(!0,this,rt,sn);if(arguments.length===2){nn=""+nn,sn=rn;const an=this._nodes.get(nn);if(typeof an>"u")throw new NotFoundGraphError(`Graph.${ot}: could not find the "${nn}" node in the graph.`);return forEachEdgeForNode(!0,this.multi,rt==="mixed"?this.type:rt,st,an,sn)}if(arguments.length===3){nn=""+nn,rn=""+rn;const an=this._nodes.get(nn);if(!an)throw new NotFoundGraphError(`Graph.${ot}: could not find the "${nn}" source node in the graph.`);if(!this._nodes.has(rn))throw new NotFoundGraphError(`Graph.${ot}: could not find the "${rn}" target node in the graph.`);return forEachEdgeForPath(!0,rt,this.multi,st,an,rn,sn)}throw new InvalidArgumentsGraphError(`Graph.${ot}: too many arguments (expecting 1, 2 or 3 and got ${arguments.length}).`)};const en="some"+nt[0].toUpperCase()+nt.slice(1,-1);tt.prototype[en]=function(){const nn=Array.prototype.slice.call(arguments),rn=nn.pop();return nn.push((an,on,cn,ln,fn,gn,pn)=>rn(an,on,cn,ln,fn,gn,pn)),!!this[ot].apply(this,nn)};const tn="every"+nt[0].toUpperCase()+nt.slice(1,-1);tt.prototype[tn]=function(){const nn=Array.prototype.slice.call(arguments),rn=nn.pop();return nn.push((an,on,cn,ln,fn,gn,pn)=>!rn(an,on,cn,ln,fn,gn,pn)),!this[ot].apply(this,nn)}}function attachEdgeIteratorCreator(tt,et){const{name:nt,type:rt,direction:st}=et,ot=nt.slice(0,-1)+"Entries";tt.prototype[ot]=function(en,tn){if(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)return Iterator.empty();if(!arguments.length)return createEdgeIterator(this,rt);if(arguments.length===1){en=""+en;const nn=this._nodes.get(en);if(!nn)throw new NotFoundGraphError(`Graph.${ot}: could not find the "${en}" node in the graph.`);return createEdgeIteratorForNode(rt,st,nn)}if(arguments.length===2){en=""+en,tn=""+tn;const nn=this._nodes.get(en);if(!nn)throw new NotFoundGraphError(`Graph.${ot}: could not find the "${en}" source node in the graph.`);if(!this._nodes.has(tn))throw new NotFoundGraphError(`Graph.${ot}: could not find the "${tn}" target node in the graph.`);return createEdgeIteratorForPath(rt,st,nn,tn)}throw new InvalidArgumentsGraphError(`Graph.${ot}: too many arguments (expecting 0, 1 or 2 and got ${arguments.length}).`)}}function attachEdgeIterationMethods(tt){EDGES_ITERATION.forEach(et=>{attachEdgeArrayCreator(tt,et),attachForEachEdge(tt,et),attachFindEdge(tt,et),attachEdgeIteratorCreator(tt,et)})}const NEIGHBORS_ITERATION=[{name:"neighbors",type:"mixed"},{name:"inNeighbors",type:"directed",direction:"in"},{name:"outNeighbors",type:"directed",direction:"out"},{name:"inboundNeighbors",type:"mixed",direction:"in"},{name:"outboundNeighbors",type:"mixed",direction:"out"},{name:"directedNeighbors",type:"directed"},{name:"undirectedNeighbors",type:"undirected"}];function CompositeSetWrapper(){this.A=null,this.B=null}CompositeSetWrapper.prototype.wrap=function(tt){this.A===null?this.A=tt:this.B===null&&(this.B=tt)},CompositeSetWrapper.prototype.has=function(tt){return this.A!==null&&tt in this.A||this.B!==null&&tt in this.B};function forEachInObjectOnce(tt,et,nt,rt,st){for(const ot in rt){const en=rt[ot],tn=en.source,nn=en.target,rn=tn===nt?nn:tn;if(et&&et.has(rn.key))continue;const sn=st(rn.key,rn.attributes);if(tt&&sn)return rn.key}}function forEachNeighbor(tt,et,nt,rt,st){if(et!=="mixed"){if(et==="undirected")return forEachInObjectOnce(tt,null,rt,rt.undirected,st);if(typeof nt=="string")return forEachInObjectOnce(tt,null,rt,rt[nt],st)}const ot=new CompositeSetWrapper;let en;if(et!=="undirected"){if(nt!=="out"){if(en=forEachInObjectOnce(tt,null,rt,rt.in,st),tt&&en)return en;ot.wrap(rt.in)}if(nt!=="in"){if(en=forEachInObjectOnce(tt,ot,rt,rt.out,st),tt&&en)return en;ot.wrap(rt.out)}}if(et!=="directed"&&(en=forEachInObjectOnce(tt,ot,rt,rt.undirected,st),tt&&en))return en}function createNeighborArrayForNode(tt,et,nt){if(tt!=="mixed"){if(tt==="undirected")return Object.keys(nt.undirected);if(typeof et=="string")return Object.keys(nt[et])}const rt=[];return forEachNeighbor(!1,tt,et,nt,function(st){rt.push(st)}),rt}function createDedupedObjectIterator(tt,et,nt){const rt=Object.keys(nt),st=rt.length;let ot=0;return new Iterator(function(){let tn=null;do{if(ot>=st)return tt&&tt.wrap(nt),{done:!0};const nn=nt[rt[ot++]],rn=nn.source,sn=nn.target;if(tn=rn===et?sn:rn,tt&&tt.has(tn.key)){tn=null;continue}}while(tn===null);return{done:!1,value:{neighbor:tn.key,attributes:tn.attributes}}})}function createNeighborIterator(tt,et,nt){if(tt!=="mixed"){if(tt==="undirected")return createDedupedObjectIterator(null,nt,nt.undirected);if(typeof et=="string")return createDedupedObjectIterator(null,nt,nt[et])}let rt=Iterator.empty();const st=new CompositeSetWrapper;return tt!=="undirected"&&(et!=="out"&&(rt=chain(rt,createDedupedObjectIterator(st,nt,nt.in))),et!=="in"&&(rt=chain(rt,createDedupedObjectIterator(st,nt,nt.out)))),tt!=="directed"&&(rt=chain(rt,createDedupedObjectIterator(st,nt,nt.undirected))),rt}function attachNeighborArrayCreator(tt,et){const{name:nt,type:rt,direction:st}=et;tt.prototype[nt]=function(ot){if(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)return[];ot=""+ot;const en=this._nodes.get(ot);if(typeof en>"u")throw new NotFoundGraphError(`Graph.${nt}: could not find the "${ot}" node in the graph.`);return createNeighborArrayForNode(rt==="mixed"?this.type:rt,st,en)}}function attachForEachNeighbor(tt,et){const{name:nt,type:rt,direction:st}=et,ot="forEach"+nt[0].toUpperCase()+nt.slice(1,-1);tt.prototype[ot]=function(rn,sn){if(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)return;rn=""+rn;const an=this._nodes.get(rn);if(typeof an>"u")throw new NotFoundGraphError(`Graph.${ot}: could not find the "${rn}" node in the graph.`);forEachNeighbor(!1,rt==="mixed"?this.type:rt,st,an,sn)};const en="map"+nt[0].toUpperCase()+nt.slice(1);tt.prototype[en]=function(rn,sn){const an=[];return this[ot](rn,(on,cn)=>{an.push(sn(on,cn))}),an};const tn="filter"+nt[0].toUpperCase()+nt.slice(1);tt.prototype[tn]=function(rn,sn){const an=[];return this[ot](rn,(on,cn)=>{sn(on,cn)&&an.push(on)}),an};const nn="reduce"+nt[0].toUpperCase()+nt.slice(1);tt.prototype[nn]=function(rn,sn,an){if(arguments.length<3)throw new InvalidArgumentsGraphError(`Graph.${nn}: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.`);let on=an;return this[ot](rn,(cn,ln)=>{on=sn(on,cn,ln)}),on}}function attachFindNeighbor(tt,et){const{name:nt,type:rt,direction:st}=et,ot=nt[0].toUpperCase()+nt.slice(1,-1),en="find"+ot;tt.prototype[en]=function(rn,sn){if(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)return;rn=""+rn;const an=this._nodes.get(rn);if(typeof an>"u")throw new NotFoundGraphError(`Graph.${en}: could not find the "${rn}" node in the graph.`);return forEachNeighbor(!0,rt==="mixed"?this.type:rt,st,an,sn)};const tn="some"+ot;tt.prototype[tn]=function(rn,sn){return!!this[en](rn,sn)};const nn="every"+ot;tt.prototype[nn]=function(rn,sn){return!this[en](rn,(on,cn)=>!sn(on,cn))}}function attachNeighborIteratorCreator(tt,et){const{name:nt,type:rt,direction:st}=et,ot=nt.slice(0,-1)+"Entries";tt.prototype[ot]=function(en){if(rt!=="mixed"&&this.type!=="mixed"&&rt!==this.type)return Iterator.empty();en=""+en;const tn=this._nodes.get(en);if(typeof tn>"u")throw new NotFoundGraphError(`Graph.${ot}: could not find the "${en}" node in the graph.`);return createNeighborIterator(rt==="mixed"?this.type:rt,st,tn)}}function attachNeighborIterationMethods(tt){NEIGHBORS_ITERATION.forEach(et=>{attachNeighborArrayCreator(tt,et),attachForEachNeighbor(tt,et),attachFindNeighbor(tt,et),attachNeighborIteratorCreator(tt,et)})}function forEachAdjacency(tt,et,nt,rt,st){const ot=rt._nodes.values(),en=rt.type;let tn,nn,rn,sn,an,on;for(;tn=ot.next(),tn.done!==!0;){let cn=!1;if(nn=tn.value,en!=="undirected"){sn=nn.out;for(rn in sn){an=sn[rn];do on=an.target,cn=!0,st(nn.key,on.key,nn.attributes,on.attributes,an.key,an.attributes,an.undirected),an=an.next;while(an)}}if(en!=="directed"){sn=nn.undirected;for(rn in sn)if(!(et&&nn.key>rn)){an=sn[rn];do on=an.target,on.key!==rn&&(on=an.source),cn=!0,st(nn.key,on.key,nn.attributes,on.attributes,an.key,an.attributes,an.undirected),an=an.next;while(an)}}nt&&!cn&&st(nn.key,null,nn.attributes,null,null,null,null)}}function serializeNode(tt,et){const nt={key:tt};return isEmpty(et.attributes)||(nt.attributes=assign({},et.attributes)),nt}function serializeEdge(tt,et,nt){const rt={key:et,source:nt.source.key,target:nt.target.key};return isEmpty(nt.attributes)||(rt.attributes=assign({},nt.attributes)),tt==="mixed"&&nt.undirected&&(rt.undirected=!0),rt}function validateSerializedNode(tt){if(!isPlainObject(tt))throw new InvalidArgumentsGraphError('Graph.import: invalid serialized node. A serialized node should be a plain object with at least a "key" property.');if(!("key"in tt))throw new InvalidArgumentsGraphError("Graph.import: serialized node is missing its key.");if("attributes"in tt&&(!isPlainObject(tt.attributes)||tt.attributes===null))throw new InvalidArgumentsGraphError("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted.")}function validateSerializedEdge(tt){if(!isPlainObject(tt))throw new InvalidArgumentsGraphError('Graph.import: invalid serialized edge. A serialized edge should be a plain object with at least a "source" & "target" property.');if(!("source"in tt))throw new InvalidArgumentsGraphError("Graph.import: serialized edge is missing its source.");if(!("target"in tt))throw new InvalidArgumentsGraphError("Graph.import: serialized edge is missing its target.");if("attributes"in tt&&(!isPlainObject(tt.attributes)||tt.attributes===null))throw new InvalidArgumentsGraphError("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted.");if("undirected"in tt&&typeof tt.undirected!="boolean")throw new InvalidArgumentsGraphError("Graph.import: invalid undirectedness information. Undirected should be boolean or omitted.")}const INSTANCE_ID=incrementalIdStartingFromRandomByte(),TYPES=new Set(["directed","undirected","mixed"]),EMITTER_PROPS=new Set(["domain","_events","_eventsCount","_maxListeners"]),EDGE_ADD_METHODS=[{name:tt=>`${tt}Edge`,generateKey:!0},{name:tt=>`${tt}DirectedEdge`,generateKey:!0,type:"directed"},{name:tt=>`${tt}UndirectedEdge`,generateKey:!0,type:"undirected"},{name:tt=>`${tt}EdgeWithKey`},{name:tt=>`${tt}DirectedEdgeWithKey`,type:"directed"},{name:tt=>`${tt}UndirectedEdgeWithKey`,type:"undirected"}],DEFAULTS={allowSelfLoops:!0,multi:!1,type:"mixed"};function addNode(tt,et,nt){if(nt&&!isPlainObject(nt))throw new InvalidArgumentsGraphError(`Graph.addNode: invalid attributes. Expecting an object but got "${nt}"`);if(et=""+et,nt=nt||{},tt._nodes.has(et))throw new UsageGraphError(`Graph.addNode: the "${et}" node already exist in the graph.`);const rt=new tt.NodeDataClass(et,nt);return tt._nodes.set(et,rt),tt.emit("nodeAdded",{key:et,attributes:nt}),rt}function unsafeAddNode(tt,et,nt){const rt=new tt.NodeDataClass(et,nt);return tt._nodes.set(et,rt),tt.emit("nodeAdded",{key:et,attributes:nt}),rt}function addEdge(tt,et,nt,rt,st,ot,en,tn){if(!rt&&tt.type==="undirected")throw new UsageGraphError(`Graph.${et}: you cannot add a directed edge to an undirected graph. Use the #.addEdge or #.addUndirectedEdge instead.`);if(rt&&tt.type==="directed")throw new UsageGraphError(`Graph.${et}: you cannot add an undirected edge to a directed graph. Use the #.addEdge or #.addDirectedEdge instead.`);if(tn&&!isPlainObject(tn))throw new InvalidArgumentsGraphError(`Graph.${et}: invalid attributes. Expecting an object but got "${tn}"`);if(ot=""+ot,en=""+en,tn=tn||{},!tt.allowSelfLoops&&ot===en)throw new UsageGraphError(`Graph.${et}: source & target are the same ("${ot}"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`);const nn=tt._nodes.get(ot),rn=tt._nodes.get(en);if(!nn)throw new NotFoundGraphError(`Graph.${et}: source node "${ot}" not found.`);if(!rn)throw new NotFoundGraphError(`Graph.${et}: target node "${en}" not found.`);const sn={key:null,undirected:rt,source:ot,target:en,attributes:tn};if(nt)st=tt._edgeKeyGenerator();else if(st=""+st,tt._edges.has(st))throw new UsageGraphError(`Graph.${et}: the "${st}" edge already exists in the graph.`);if(!tt.multi&&(rt?typeof nn.undirected[en]<"u":typeof nn.out[en]<"u"))throw new UsageGraphError(`Graph.${et}: an edge linking "${ot}" to "${en}" already exists. If you really want to add multiple edges linking those nodes, you should create a multi graph by using the 'multi' option.`);const an=new EdgeData(rt,st,nn,rn,tn);tt._edges.set(st,an);const on=ot===en;return rt?(nn.undirectedDegree++,rn.undirectedDegree++,on&&(nn.undirectedLoops++,tt._undirectedSelfLoopCount++)):(nn.outDegree++,rn.inDegree++,on&&(nn.directedLoops++,tt._directedSelfLoopCount++)),tt.multi?an.attachMulti():an.attach(),rt?tt._undirectedSize++:tt._directedSize++,sn.key=st,tt.emit("edgeAdded",sn),st}function mergeEdge(tt,et,nt,rt,st,ot,en,tn,nn){if(!rt&&tt.type==="undirected")throw new UsageGraphError(`Graph.${et}: you cannot merge/update a directed edge to an undirected graph. Use the #.mergeEdge/#.updateEdge or #.addUndirectedEdge instead.`);if(rt&&tt.type==="directed")throw new UsageGraphError(`Graph.${et}: you cannot merge/update an undirected edge to a directed graph. Use the #.mergeEdge/#.updateEdge or #.addDirectedEdge instead.`);if(tn){if(nn){if(typeof tn!="function")throw new InvalidArgumentsGraphError(`Graph.${et}: invalid updater function. Expecting a function but got "${tn}"`)}else if(!isPlainObject(tn))throw new InvalidArgumentsGraphError(`Graph.${et}: invalid attributes. Expecting an object but got "${tn}"`)}ot=""+ot,en=""+en;let rn;if(nn&&(rn=tn,tn=void 0),!tt.allowSelfLoops&&ot===en)throw new UsageGraphError(`Graph.${et}: source & target are the same ("${ot}"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`);let sn=tt._nodes.get(ot),an=tt._nodes.get(en),on,cn;if(!nt&&(on=tt._edges.get(st),on)){if((on.source.key!==ot||on.target.key!==en)&&(!rt||on.source.key!==en||on.target.key!==ot))throw new UsageGraphError(`Graph.${et}: inconsistency detected when attempting to merge the "${st}" edge with "${ot}" source & "${en}" target vs. ("${on.source.key}", "${on.target.key}").`);cn=on}if(!cn&&!tt.multi&&sn&&(cn=rt?sn.undirected[en]:sn.out[en]),cn){const vn=[cn.key,!1,!1,!1];if(nn?!rn:!tn)return vn;if(nn){const bn=cn.attributes;cn.attributes=rn(bn),tt.emit("edgeAttributesUpdated",{type:"replace",key:cn.key,attributes:cn.attributes})}else assign(cn.attributes,tn),tt.emit("edgeAttributesUpdated",{type:"merge",key:cn.key,attributes:cn.attributes,data:tn});return vn}tn=tn||{},nn&&rn&&(tn=rn(tn));const ln={key:null,undirected:rt,source:ot,target:en,attributes:tn};if(nt)st=tt._edgeKeyGenerator();else if(st=""+st,tt._edges.has(st))throw new UsageGraphError(`Graph.${et}: the "${st}" edge already exists in the graph.`);let fn=!1,gn=!1;sn||(sn=unsafeAddNode(tt,ot,{}),fn=!0,ot===en&&(an=sn,gn=!0)),an||(an=unsafeAddNode(tt,en,{}),gn=!0),on=new EdgeData(rt,st,sn,an,tn),tt._edges.set(st,on);const pn=ot===en;return rt?(sn.undirectedDegree++,an.undirectedDegree++,pn&&(sn.undirectedLoops++,tt._undirectedSelfLoopCount++)):(sn.outDegree++,an.inDegree++,pn&&(sn.directedLoops++,tt._directedSelfLoopCount++)),tt.multi?on.attachMulti():on.attach(),rt?tt._undirectedSize++:tt._directedSize++,ln.key=st,tt.emit("edgeAdded",ln),[st,!0,fn,gn]}function dropEdgeFromData(tt,et){tt._edges.delete(et.key);const{source:nt,target:rt,attributes:st}=et,ot=et.undirected,en=nt===rt;ot?(nt.undirectedDegree--,rt.undirectedDegree--,en&&(nt.undirectedLoops--,tt._undirectedSelfLoopCount--)):(nt.outDegree--,rt.inDegree--,en&&(nt.directedLoops--,tt._directedSelfLoopCount--)),tt.multi?et.detachMulti():et.detach(),ot?tt._undirectedSize--:tt._directedSize--,tt.emit("edgeDropped",{key:et.key,attributes:st,source:nt.key,target:rt.key,undirected:ot})}class Graph extends require$$4$1.EventEmitter{constructor(et){if(super(),et=assign({},DEFAULTS,et),typeof et.multi!="boolean")throw new InvalidArgumentsGraphError(`Graph.constructor: invalid 'multi' option. Expecting a boolean but got "${et.multi}".`);if(!TYPES.has(et.type))throw new InvalidArgumentsGraphError(`Graph.constructor: invalid 'type' option. Should be one of "mixed", "directed" or "undirected" but got "${et.type}".`);if(typeof et.allowSelfLoops!="boolean")throw new InvalidArgumentsGraphError(`Graph.constructor: invalid 'allowSelfLoops' option. Expecting a boolean but got "${et.allowSelfLoops}".`);const nt=et.type==="mixed"?MixedNodeData:et.type==="directed"?DirectedNodeData:UndirectedNodeData;privateProperty(this,"NodeDataClass",nt);const rt="geid_"+INSTANCE_ID()+"_";let st=0;const ot=()=>{let en;do en=rt+st++;while(this._edges.has(en));return en};privateProperty(this,"_attributes",{}),privateProperty(this,"_nodes",new Map),privateProperty(this,"_edges",new Map),privateProperty(this,"_directedSize",0),privateProperty(this,"_undirectedSize",0),privateProperty(this,"_directedSelfLoopCount",0),privateProperty(this,"_undirectedSelfLoopCount",0),privateProperty(this,"_edgeKeyGenerator",ot),privateProperty(this,"_options",et),EMITTER_PROPS.forEach(en=>privateProperty(this,en,this[en])),readOnlyProperty(this,"order",()=>this._nodes.size),readOnlyProperty(this,"size",()=>this._edges.size),readOnlyProperty(this,"directedSize",()=>this._directedSize),readOnlyProperty(this,"undirectedSize",()=>this._undirectedSize),readOnlyProperty(this,"selfLoopCount",()=>this._directedSelfLoopCount+this._undirectedSelfLoopCount),readOnlyProperty(this,"directedSelfLoopCount",()=>this._directedSelfLoopCount),readOnlyProperty(this,"undirectedSelfLoopCount",()=>this._undirectedSelfLoopCount),readOnlyProperty(this,"multi",this._options.multi),readOnlyProperty(this,"type",this._options.type),readOnlyProperty(this,"allowSelfLoops",this._options.allowSelfLoops),readOnlyProperty(this,"implementation",()=>"graphology")}_resetInstanceCounters(){this._directedSize=0,this._undirectedSize=0,this._directedSelfLoopCount=0,this._undirectedSelfLoopCount=0}hasNode(et){return this._nodes.has(""+et)}hasDirectedEdge(et,nt){if(this.type==="undirected")return!1;if(arguments.length===1){const rt=""+et,st=this._edges.get(rt);return!!st&&!st.undirected}else if(arguments.length===2){et=""+et,nt=""+nt;const rt=this._nodes.get(et);return rt?rt.out.hasOwnProperty(nt):!1}throw new InvalidArgumentsGraphError(`Graph.hasDirectedEdge: invalid arity (${arguments.length}, instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.`)}hasUndirectedEdge(et,nt){if(this.type==="directed")return!1;if(arguments.length===1){const rt=""+et,st=this._edges.get(rt);return!!st&&st.undirected}else if(arguments.length===2){et=""+et,nt=""+nt;const rt=this._nodes.get(et);return rt?rt.undirected.hasOwnProperty(nt):!1}throw new InvalidArgumentsGraphError(`Graph.hasDirectedEdge: invalid arity (${arguments.length}, instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.`)}hasEdge(et,nt){if(arguments.length===1){const rt=""+et;return this._edges.has(rt)}else if(arguments.length===2){et=""+et,nt=""+nt;const rt=this._nodes.get(et);return rt?typeof rt.out<"u"&&rt.out.hasOwnProperty(nt)||typeof rt.undirected<"u"&&rt.undirected.hasOwnProperty(nt):!1}throw new InvalidArgumentsGraphError(`Graph.hasEdge: invalid arity (${arguments.length}, instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.`)}directedEdge(et,nt){if(this.type==="undirected")return;if(et=""+et,nt=""+nt,this.multi)throw new UsageGraphError("Graph.directedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.directedEdges instead.");const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.directedEdge: could not find the "${et}" source node in the graph.`);if(!this._nodes.has(nt))throw new NotFoundGraphError(`Graph.directedEdge: could not find the "${nt}" target node in the graph.`);const st=rt.out&&rt.out[nt]||void 0;if(st)return st.key}undirectedEdge(et,nt){if(this.type==="directed")return;if(et=""+et,nt=""+nt,this.multi)throw new UsageGraphError("Graph.undirectedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.undirectedEdges instead.");const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.undirectedEdge: could not find the "${et}" source node in the graph.`);if(!this._nodes.has(nt))throw new NotFoundGraphError(`Graph.undirectedEdge: could not find the "${nt}" target node in the graph.`);const st=rt.undirected&&rt.undirected[nt]||void 0;if(st)return st.key}edge(et,nt){if(this.multi)throw new UsageGraphError("Graph.edge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.edges instead.");et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.edge: could not find the "${et}" source node in the graph.`);if(!this._nodes.has(nt))throw new NotFoundGraphError(`Graph.edge: could not find the "${nt}" target node in the graph.`);const st=rt.out&&rt.out[nt]||rt.undirected&&rt.undirected[nt]||void 0;if(st)return st.key}areDirectedNeighbors(et,nt){et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.areDirectedNeighbors: could not find the "${et}" node in the graph.`);return this.type==="undirected"?!1:nt in rt.in||nt in rt.out}areOutNeighbors(et,nt){et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.areOutNeighbors: could not find the "${et}" node in the graph.`);return this.type==="undirected"?!1:nt in rt.out}areInNeighbors(et,nt){et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.areInNeighbors: could not find the "${et}" node in the graph.`);return this.type==="undirected"?!1:nt in rt.in}areUndirectedNeighbors(et,nt){et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.areUndirectedNeighbors: could not find the "${et}" node in the graph.`);return this.type==="directed"?!1:nt in rt.undirected}areNeighbors(et,nt){et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.areNeighbors: could not find the "${et}" node in the graph.`);return this.type!=="undirected"&&(nt in rt.in||nt in rt.out)||this.type!=="directed"&&nt in rt.undirected}areInboundNeighbors(et,nt){et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.areInboundNeighbors: could not find the "${et}" node in the graph.`);return this.type!=="undirected"&&nt in rt.in||this.type!=="directed"&&nt in rt.undirected}areOutboundNeighbors(et,nt){et=""+et,nt=""+nt;const rt=this._nodes.get(et);if(!rt)throw new NotFoundGraphError(`Graph.areOutboundNeighbors: could not find the "${et}" node in the graph.`);return this.type!=="undirected"&&nt in rt.out||this.type!=="directed"&&nt in rt.undirected}inDegree(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.inDegree: could not find the "${et}" node in the graph.`);return this.type==="undirected"?0:nt.inDegree}outDegree(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.outDegree: could not find the "${et}" node in the graph.`);return this.type==="undirected"?0:nt.outDegree}directedDegree(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.directedDegree: could not find the "${et}" node in the graph.`);return this.type==="undirected"?0:nt.inDegree+nt.outDegree}undirectedDegree(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.undirectedDegree: could not find the "${et}" node in the graph.`);return this.type==="directed"?0:nt.undirectedDegree}inboundDegree(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.inboundDegree: could not find the "${et}" node in the graph.`);let rt=0;return this.type!=="directed"&&(rt+=nt.undirectedDegree),this.type!=="undirected"&&(rt+=nt.inDegree),rt}outboundDegree(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.outboundDegree: could not find the "${et}" node in the graph.`);let rt=0;return this.type!=="directed"&&(rt+=nt.undirectedDegree),this.type!=="undirected"&&(rt+=nt.outDegree),rt}degree(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.degree: could not find the "${et}" node in the graph.`);let rt=0;return this.type!=="directed"&&(rt+=nt.undirectedDegree),this.type!=="undirected"&&(rt+=nt.inDegree+nt.outDegree),rt}inDegreeWithoutSelfLoops(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.inDegreeWithoutSelfLoops: could not find the "${et}" node in the graph.`);return this.type==="undirected"?0:nt.inDegree-nt.directedLoops}outDegreeWithoutSelfLoops(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.outDegreeWithoutSelfLoops: could not find the "${et}" node in the graph.`);return this.type==="undirected"?0:nt.outDegree-nt.directedLoops}directedDegreeWithoutSelfLoops(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.directedDegreeWithoutSelfLoops: could not find the "${et}" node in the graph.`);return this.type==="undirected"?0:nt.inDegree+nt.outDegree-nt.directedLoops*2}undirectedDegreeWithoutSelfLoops(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.undirectedDegreeWithoutSelfLoops: could not find the "${et}" node in the graph.`);return this.type==="directed"?0:nt.undirectedDegree-nt.undirectedLoops*2}inboundDegreeWithoutSelfLoops(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.inboundDegreeWithoutSelfLoops: could not find the "${et}" node in the graph.`);let rt=0,st=0;return this.type!=="directed"&&(rt+=nt.undirectedDegree,st+=nt.undirectedLoops*2),this.type!=="undirected"&&(rt+=nt.inDegree,st+=nt.directedLoops),rt-st}outboundDegreeWithoutSelfLoops(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.outboundDegreeWithoutSelfLoops: could not find the "${et}" node in the graph.`);let rt=0,st=0;return this.type!=="directed"&&(rt+=nt.undirectedDegree,st+=nt.undirectedLoops*2),this.type!=="undirected"&&(rt+=nt.outDegree,st+=nt.directedLoops),rt-st}degreeWithoutSelfLoops(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.degreeWithoutSelfLoops: could not find the "${et}" node in the graph.`);let rt=0,st=0;return this.type!=="directed"&&(rt+=nt.undirectedDegree,st+=nt.undirectedLoops*2),this.type!=="undirected"&&(rt+=nt.inDegree+nt.outDegree,st+=nt.directedLoops*2),rt-st}source(et){et=""+et;const nt=this._edges.get(et);if(!nt)throw new NotFoundGraphError(`Graph.source: could not find the "${et}" edge in the graph.`);return nt.source.key}target(et){et=""+et;const nt=this._edges.get(et);if(!nt)throw new NotFoundGraphError(`Graph.target: could not find the "${et}" edge in the graph.`);return nt.target.key}extremities(et){et=""+et;const nt=this._edges.get(et);if(!nt)throw new NotFoundGraphError(`Graph.extremities: could not find the "${et}" edge in the graph.`);return[nt.source.key,nt.target.key]}opposite(et,nt){et=""+et,nt=""+nt;const rt=this._edges.get(nt);if(!rt)throw new NotFoundGraphError(`Graph.opposite: could not find the "${nt}" edge in the graph.`);const st=rt.source.key,ot=rt.target.key;if(et===st)return ot;if(et===ot)return st;throw new NotFoundGraphError(`Graph.opposite: the "${et}" node is not attached to the "${nt}" edge (${st}, ${ot}).`)}hasExtremity(et,nt){et=""+et,nt=""+nt;const rt=this._edges.get(et);if(!rt)throw new NotFoundGraphError(`Graph.hasExtremity: could not find the "${et}" edge in the graph.`);return rt.source.key===nt||rt.target.key===nt}isUndirected(et){et=""+et;const nt=this._edges.get(et);if(!nt)throw new NotFoundGraphError(`Graph.isUndirected: could not find the "${et}" edge in the graph.`);return nt.undirected}isDirected(et){et=""+et;const nt=this._edges.get(et);if(!nt)throw new NotFoundGraphError(`Graph.isDirected: could not find the "${et}" edge in the graph.`);return!nt.undirected}isSelfLoop(et){et=""+et;const nt=this._edges.get(et);if(!nt)throw new NotFoundGraphError(`Graph.isSelfLoop: could not find the "${et}" edge in the graph.`);return nt.source===nt.target}addNode(et,nt){return addNode(this,et,nt).key}mergeNode(et,nt){if(nt&&!isPlainObject(nt))throw new InvalidArgumentsGraphError(`Graph.mergeNode: invalid attributes. Expecting an object but got "${nt}"`);et=""+et,nt=nt||{};let rt=this._nodes.get(et);return rt?(nt&&(assign(rt.attributes,nt),this.emit("nodeAttributesUpdated",{type:"merge",key:et,attributes:rt.attributes,data:nt})),[et,!1]):(rt=new this.NodeDataClass(et,nt),this._nodes.set(et,rt),this.emit("nodeAdded",{key:et,attributes:nt}),[et,!0])}updateNode(et,nt){if(nt&&typeof nt!="function")throw new InvalidArgumentsGraphError(`Graph.updateNode: invalid updater function. Expecting a function but got "${nt}"`);et=""+et;let rt=this._nodes.get(et);if(rt){if(nt){const ot=rt.attributes;rt.attributes=nt(ot),this.emit("nodeAttributesUpdated",{type:"replace",key:et,attributes:rt.attributes})}return[et,!1]}const st=nt?nt({}):{};return rt=new this.NodeDataClass(et,st),this._nodes.set(et,rt),this.emit("nodeAdded",{key:et,attributes:st}),[et,!0]}dropNode(et){et=""+et;const nt=this._nodes.get(et);if(!nt)throw new NotFoundGraphError(`Graph.dropNode: could not find the "${et}" node in the graph.`);let rt;if(this.type!=="undirected"){for(const st in nt.out){rt=nt.out[st];do dropEdgeFromData(this,rt),rt=rt.next;while(rt)}for(const st in nt.in){rt=nt.in[st];do dropEdgeFromData(this,rt),rt=rt.next;while(rt)}}if(this.type!=="directed")for(const st in nt.undirected){rt=nt.undirected[st];do dropEdgeFromData(this,rt),rt=rt.next;while(rt)}this._nodes.delete(et),this.emit("nodeDropped",{key:et,attributes:nt.attributes})}dropEdge(et){let nt;if(arguments.length>1){const rt=""+arguments[0],st=""+arguments[1];if(nt=getMatchingEdge(this,rt,st,this.type),!nt)throw new NotFoundGraphError(`Graph.dropEdge: could not find the "${rt}" -> "${st}" edge in the graph.`)}else if(et=""+et,nt=this._edges.get(et),!nt)throw new NotFoundGraphError(`Graph.dropEdge: could not find the "${et}" edge in the graph.`);return dropEdgeFromData(this,nt),this}dropDirectedEdge(et,nt){if(arguments.length<2)throw new UsageGraphError("Graph.dropDirectedEdge: it does not make sense to try and drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead.");if(this.multi)throw new UsageGraphError("Graph.dropDirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones.");et=""+et,nt=""+nt;const rt=getMatchingEdge(this,et,nt,"directed");if(!rt)throw new NotFoundGraphError(`Graph.dropDirectedEdge: could not find a "${et}" -> "${nt}" edge in the graph.`);return dropEdgeFromData(this,rt),this}dropUndirectedEdge(et,nt){if(arguments.length<2)throw new UsageGraphError("Graph.dropUndirectedEdge: it does not make sense to drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead.");if(this.multi)throw new UsageGraphError("Graph.dropUndirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones.");const rt=getMatchingEdge(this,et,nt,"undirected");if(!rt)throw new NotFoundGraphError(`Graph.dropUndirectedEdge: could not find a "${et}" -> "${nt}" edge in the graph.`);return dropEdgeFromData(this,rt),this}clear(){this._edges.clear(),this._nodes.clear(),this._resetInstanceCounters(),this.emit("cleared")}clearEdges(){const et=this._nodes.values();let nt;for(;nt=et.next(),nt.done!==!0;)nt.value.clear();this._edges.clear(),this._resetInstanceCounters(),this.emit("edgesCleared")}getAttribute(et){return this._attributes[et]}getAttributes(){return this._attributes}hasAttribute(et){return this._attributes.hasOwnProperty(et)}setAttribute(et,nt){return this._attributes[et]=nt,this.emit("attributesUpdated",{type:"set",attributes:this._attributes,name:et}),this}updateAttribute(et,nt){if(typeof nt!="function")throw new InvalidArgumentsGraphError("Graph.updateAttribute: updater should be a function.");const rt=this._attributes[et];return this._attributes[et]=nt(rt),this.emit("attributesUpdated",{type:"set",attributes:this._attributes,name:et}),this}removeAttribute(et){return delete this._attributes[et],this.emit("attributesUpdated",{type:"remove",attributes:this._attributes,name:et}),this}replaceAttributes(et){if(!isPlainObject(et))throw new InvalidArgumentsGraphError("Graph.replaceAttributes: provided attributes are not a plain object.");return this._attributes=et,this.emit("attributesUpdated",{type:"replace",attributes:this._attributes}),this}mergeAttributes(et){if(!isPlainObject(et))throw new InvalidArgumentsGraphError("Graph.mergeAttributes: provided attributes are not a plain object.");return assign(this._attributes,et),this.emit("attributesUpdated",{type:"merge",attributes:this._attributes,data:et}),this}updateAttributes(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.updateAttributes: provided updater is not a function.");return this._attributes=et(this._attributes),this.emit("attributesUpdated",{type:"update",attributes:this._attributes}),this}updateEachNodeAttributes(et,nt){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.updateEachNodeAttributes: expecting an updater function.");if(nt&&!validateHints(nt))throw new InvalidArgumentsGraphError("Graph.updateEachNodeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}");const rt=this._nodes.values();let st,ot;for(;st=rt.next(),st.done!==!0;)ot=st.value,ot.attributes=et(ot.key,ot.attributes);this.emit("eachNodeAttributesUpdated",{hints:nt||null})}updateEachEdgeAttributes(et,nt){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.updateEachEdgeAttributes: expecting an updater function.");if(nt&&!validateHints(nt))throw new InvalidArgumentsGraphError("Graph.updateEachEdgeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}");const rt=this._edges.values();let st,ot,en,tn;for(;st=rt.next(),st.done!==!0;)ot=st.value,en=ot.source,tn=ot.target,ot.attributes=et(ot.key,ot.attributes,en.key,tn.key,en.attributes,tn.attributes,ot.undirected);this.emit("eachEdgeAttributesUpdated",{hints:nt||null})}forEachAdjacencyEntry(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.forEachAdjacencyEntry: expecting a callback.");forEachAdjacency(!1,!1,!1,this,et)}forEachAdjacencyEntryWithOrphans(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.forEachAdjacencyEntryWithOrphans: expecting a callback.");forEachAdjacency(!1,!1,!0,this,et)}forEachAssymetricAdjacencyEntry(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.forEachAssymetricAdjacencyEntry: expecting a callback.");forEachAdjacency(!1,!0,!1,this,et)}forEachAssymetricAdjacencyEntryWithOrphans(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.forEachAssymetricAdjacencyEntryWithOrphans: expecting a callback.");forEachAdjacency(!1,!0,!0,this,et)}nodes(){return typeof Array.from=="function"?Array.from(this._nodes.keys()):take(this._nodes.keys(),this._nodes.size)}forEachNode(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.forEachNode: expecting a callback.");const nt=this._nodes.values();let rt,st;for(;rt=nt.next(),rt.done!==!0;)st=rt.value,et(st.key,st.attributes)}findNode(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.findNode: expecting a callback.");const nt=this._nodes.values();let rt,st;for(;rt=nt.next(),rt.done!==!0;)if(st=rt.value,et(st.key,st.attributes))return st.key}mapNodes(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.mapNode: expecting a callback.");const nt=this._nodes.values();let rt,st;const ot=new Array(this.order);let en=0;for(;rt=nt.next(),rt.done!==!0;)st=rt.value,ot[en++]=et(st.key,st.attributes);return ot}someNode(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.someNode: expecting a callback.");const nt=this._nodes.values();let rt,st;for(;rt=nt.next(),rt.done!==!0;)if(st=rt.value,et(st.key,st.attributes))return!0;return!1}everyNode(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.everyNode: expecting a callback.");const nt=this._nodes.values();let rt,st;for(;rt=nt.next(),rt.done!==!0;)if(st=rt.value,!et(st.key,st.attributes))return!1;return!0}filterNodes(et){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.filterNodes: expecting a callback.");const nt=this._nodes.values();let rt,st;const ot=[];for(;rt=nt.next(),rt.done!==!0;)st=rt.value,et(st.key,st.attributes)&&ot.push(st.key);return ot}reduceNodes(et,nt){if(typeof et!="function")throw new InvalidArgumentsGraphError("Graph.reduceNodes: expecting a callback.");if(arguments.length<2)throw new InvalidArgumentsGraphError("Graph.reduceNodes: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.");let rt=nt;const st=this._nodes.values();let ot,en;for(;ot=st.next(),ot.done!==!0;)en=ot.value,rt=et(rt,en.key,en.attributes);return rt}nodeEntries(){const et=this._nodes.values();return new Iterator(()=>{const nt=et.next();if(nt.done)return nt;const rt=nt.value;return{value:{node:rt.key,attributes:rt.attributes},done:!1}})}export(){const et=new Array(this._nodes.size);let nt=0;this._nodes.forEach((st,ot)=>{et[nt++]=serializeNode(ot,st)});const rt=new Array(this._edges.size);return nt=0,this._edges.forEach((st,ot)=>{rt[nt++]=serializeEdge(this.type,ot,st)}),{options:{type:this.type,multi:this.multi,allowSelfLoops:this.allowSelfLoops},attributes:this.getAttributes(),nodes:et,edges:rt}}import(et,nt=!1){if(et instanceof Graph)return et.forEachNode((nn,rn)=>{nt?this.mergeNode(nn,rn):this.addNode(nn,rn)}),et.forEachEdge((nn,rn,sn,an,on,cn,ln)=>{nt?ln?this.mergeUndirectedEdgeWithKey(nn,sn,an,rn):this.mergeDirectedEdgeWithKey(nn,sn,an,rn):ln?this.addUndirectedEdgeWithKey(nn,sn,an,rn):this.addDirectedEdgeWithKey(nn,sn,an,rn)}),this;if(!isPlainObject(et))throw new InvalidArgumentsGraphError("Graph.import: invalid argument. Expecting a serialized graph or, alternatively, a Graph instance.");if(et.attributes){if(!isPlainObject(et.attributes))throw new InvalidArgumentsGraphError("Graph.import: invalid attributes. Expecting a plain object.");nt?this.mergeAttributes(et.attributes):this.replaceAttributes(et.attributes)}let rt,st,ot,en,tn;if(et.nodes){if(ot=et.nodes,!Array.isArray(ot))throw new InvalidArgumentsGraphError("Graph.import: invalid nodes. Expecting an array.");for(rt=0,st=ot.length;rt<st;rt++){en=ot[rt],validateSerializedNode(en);const{key:nn,attributes:rn}=en;nt?this.mergeNode(nn,rn):this.addNode(nn,rn)}}if(et.edges){let nn=!1;if(this.type==="undirected"&&(nn=!0),ot=et.edges,!Array.isArray(ot))throw new InvalidArgumentsGraphError("Graph.import: invalid edges. Expecting an array.");for(rt=0,st=ot.length;rt<st;rt++){tn=ot[rt],validateSerializedEdge(tn);const{source:rn,target:sn,attributes:an,undirected:on=nn}=tn;let cn;"key"in tn?(cn=nt?on?this.mergeUndirectedEdgeWithKey:this.mergeDirectedEdgeWithKey:on?this.addUndirectedEdgeWithKey:this.addDirectedEdgeWithKey,cn.call(this,tn.key,rn,sn,an)):(cn=nt?on?this.mergeUndirectedEdge:this.mergeDirectedEdge:on?this.addUndirectedEdge:this.addDirectedEdge,cn.call(this,rn,sn,an))}}return this}nullCopy(et){const nt=new Graph(assign({},this._options,et));return nt.replaceAttributes(assign({},this.getAttributes())),nt}emptyCopy(et){const nt=this.nullCopy(et);return this._nodes.forEach((rt,st)=>{const ot=assign({},rt.attributes);rt=new nt.NodeDataClass(st,ot),nt._nodes.set(st,rt)}),nt}copy(et){if(et=et||{},typeof et.type=="string"&&et.type!==this.type&&et.type!=="mixed")throw new UsageGraphError(`Graph.copy: cannot create an incompatible copy from "${this.type}" type to "${et.type}" because this would mean losing information about the current graph.`);if(typeof et.multi=="boolean"&&et.multi!==this.multi&&et.multi!==!0)throw new UsageGraphError("Graph.copy: cannot create an incompatible copy by downgrading a multi graph to a simple one because this would mean losing information about the current graph.");if(typeof et.allowSelfLoops=="boolean"&&et.allowSelfLoops!==this.allowSelfLoops&&et.allowSelfLoops!==!0)throw new UsageGraphError("Graph.copy: cannot create an incompatible copy from a graph allowing self loops to one that does not because this would mean losing information about the current graph.");const nt=this.emptyCopy(et),rt=this._edges.values();let st,ot;for(;st=rt.next(),st.done!==!0;)ot=st.value,addEdge(nt,"copy",!1,ot.undirected,ot.key,ot.source.key,ot.target.key,assign({},ot.attributes));return nt}toJSON(){return this.export()}toString(){return"[object Graph]"}inspect(){const et={};this._nodes.forEach((ot,en)=>{et[en]=ot.attributes});const nt={},rt={};this._edges.forEach((ot,en)=>{const tn=ot.undirected?"--":"->";let nn="",rn=ot.source.key,sn=ot.target.key,an;ot.undirected&&rn>sn&&(an=rn,rn=sn,sn=an);const on=`(${rn})${tn}(${sn})`;en.startsWith("geid_")?this.multi&&(typeof rt[on]>"u"?rt[on]=0:rt[on]++,nn+=`${rt[on]}. `):nn+=`[${en}]: `,nn+=on,nt[nn]=ot.attributes});const st={};for(const ot in this)this.hasOwnProperty(ot)&&!EMITTER_PROPS.has(ot)&&typeof this[ot]!="function"&&typeof ot!="symbol"&&(st[ot]=this[ot]);return st.attributes=this._attributes,st.nodes=et,st.edges=nt,privateProperty(st,"constructor",this.constructor),st}}typeof Symbol<"u"&&(Graph.prototype[Symbol.for("nodejs.util.inspect.custom")]=Graph.prototype.inspect),EDGE_ADD_METHODS.forEach(tt=>{["add","merge","update"].forEach(et=>{const nt=tt.name(et),rt=et==="add"?addEdge:mergeEdge;tt.generateKey?Graph.prototype[nt]=function(st,ot,en){return rt(this,nt,!0,(tt.type||this.type)==="undirected",null,st,ot,en,et==="update")}:Graph.prototype[nt]=function(st,ot,en,tn){return rt(this,nt,!1,(tt.type||this.type)==="undirected",st,ot,en,tn,et==="update")}})}),attachNodeAttributesMethods(Graph),attachEdgeAttributesMethods(Graph),attachEdgeIterationMethods(Graph),attachNeighborIterationMethods(Graph);class DirectedGraph extends Graph{constructor(et){const nt=assign({type:"directed"},et);if("multi"in nt&&nt.multi!==!1)throw new InvalidArgumentsGraphError("DirectedGraph.from: inconsistent indication that the graph should be multi in given options!");if(nt.type!=="directed")throw new InvalidArgumentsGraphError('DirectedGraph.from: inconsistent "'+nt.type+'" type in given options!');super(nt)}}class UndirectedGraph extends Graph{constructor(et){const nt=assign({type:"undirected"},et);if("multi"in nt&&nt.multi!==!1)throw new InvalidArgumentsGraphError("UndirectedGraph.from: inconsistent indication that the graph should be multi in given options!");if(nt.type!=="undirected")throw new InvalidArgumentsGraphError('UndirectedGraph.from: inconsistent "'+nt.type+'" type in given options!');super(nt)}}class MultiGraph extends Graph{constructor(et){const nt=assign({multi:!0},et);if("multi"in nt&&nt.multi!==!0)throw new InvalidArgumentsGraphError("MultiGraph.from: inconsistent indication that the graph should be simple in given options!");super(nt)}}class MultiDirectedGraph extends Graph{constructor(et){const nt=assign({type:"directed",multi:!0},et);if("multi"in nt&&nt.multi!==!0)throw new InvalidArgumentsGraphError("MultiDirectedGraph.from: inconsistent indication that the graph should be simple in given options!");if(nt.type!=="directed")throw new InvalidArgumentsGraphError('MultiDirectedGraph.from: inconsistent "'+nt.type+'" type in given options!');super(nt)}}class MultiUndirectedGraph extends Graph{constructor(et){const nt=assign({type:"undirected",multi:!0},et);if("multi"in nt&&nt.multi!==!0)throw new InvalidArgumentsGraphError("MultiUndirectedGraph.from: inconsistent indication that the graph should be simple in given options!");if(nt.type!=="undirected")throw new InvalidArgumentsGraphError('MultiUndirectedGraph.from: inconsistent "'+nt.type+'" type in given options!');super(nt)}}function attachStaticFromMethod(tt){tt.from=function(et,nt){const rt=assign({},et.options,nt),st=new tt(rt);return st.import(et),st}}attachStaticFromMethod(Graph),attachStaticFromMethod(DirectedGraph),attachStaticFromMethod(UndirectedGraph),attachStaticFromMethod(MultiGraph),attachStaticFromMethod(MultiDirectedGraph),attachStaticFromMethod(MultiUndirectedGraph),Graph.Graph=Graph,Graph.DirectedGraph=DirectedGraph,Graph.UndirectedGraph=UndirectedGraph,Graph.MultiGraph=MultiGraph,Graph.MultiDirectedGraph=MultiDirectedGraph,Graph.MultiUndirectedGraph=MultiUndirectedGraph,Graph.InvalidArgumentsGraphError=InvalidArgumentsGraphError,Graph.NotFoundGraphError=NotFoundGraphError,Graph.UsageGraphError=UsageGraphError;const DefaultEdgeStyle="dashed",v$2=core.defaultTheme.font,S$1=gr("dot");class DotPrinter{constructor(et){this.view=et,this.compoundIds=new Set(et.nodes.filter(isCompound).map(rt=>rt.id)),this.edgesWithCompounds=new Set(this.compoundIds.size>0?et.edges.filter(rt=>this.compoundIds.has(rt.source)||this.compoundIds.has(rt.target)).map(rt=>rt.id):[]);for(const rt of et.nodes)this.graphology.addNode(rt.id,{origin:rt,level:rt.level,depth:rt.depth??0,modelRef:types$1.ComputedNode.modelRef(rt),deploymentRef:types$1.ComputedNode.deploymentRef(rt),maxConnectedHierarchyDistance:0});for(const rt of et.edges){let st=this.graphology.getNodeAttribute(rt.source,"deploymentRef"),ot=this.graphology.getNodeAttribute(rt.target,"deploymentRef");(st===null||ot===null)&&(st=this.graphology.getNodeAttribute(rt.source,"modelRef"),ot=this.graphology.getNodeAttribute(rt.target,"modelRef"));let en=-1;st!==null&&ot!==null?en=core.hierarchyDistance(st,ot):S$1.warn(`Edge ${rt.id} of view ${et.id} is invalid, sourceFqn: ${st}, targetFqn: ${ot}`),this.graphology.addEdgeWithKey(rt.id,rt.source,rt.target,{origin:rt,hierarchyDistance:en,weight:1}),en>this.graphology.getNodeAttribute(rt.source,"maxConnectedHierarchyDistance")&&this.graphology.mergeNodeAttributes(rt.source,{maxConnectedHierarchyDistance:en}),en>this.graphology.getNodeAttribute(rt.target,"maxConnectedHierarchyDistance")&&this.graphology.mergeNodeAttributes(rt.target,{maxConnectedHierarchyDistance:en})}this.graphology.forEachEdge((rt,{hierarchyDistance:st},ot,en,tn,nn)=>{const rn=Math.max(tn.maxConnectedHierarchyDistance,nn.maxConnectedHierarchyDistance);if(rn>st)this.graphology.mergeEdgeAttributes(rt,{weight:rn-st+1});else{const sn=this.graphology.directedDegree(ot),an=this.graphology.directedDegree(en);sn===1&&an===1&&st>1&&this.graphology.mergeEdgeAttributes(rt,{weight:st})}});const nt=this.graphvizModel=this.createGraph();this.applyNodeAttributes(nt.attributes.node),this.applyEdgeAttributes(nt.attributes.edge)}ids=new Set;subgraphs=new Map;nodes=new Map;edges=new Map;compoundIds;edgesWithCompounds;graphology=new Graph({allowSelfLoops:!0,multi:!0,type:"directed"});graphvizModel;get hasEdgesWithCompounds(){return this.edgesWithCompounds.size>0}postBuild(et){}build(et){const nt=(st,ot)=>{const en=this.generateGraphvizId(st),tn=this.elementToSubgraph(st,ot.subgraph(en));this.subgraphs.set(st.id,tn);for(const nn of st.children){const rn=this.computedNode(nn);if(isCompound(rn))nt(rn,tn);else{const sn=core.nonNullable(this.getGraphNode(rn.id),`Graphviz Node not found for ${rn.id}`);tn.node(sn.id)}}},rt=[];for(const st of this.view.nodes)if(isCompound(st))n$4(st.parent)&&rt.push(st);else{const ot=this.generateGraphvizId(st),en=this.elementToNode(st,et.node(ot));this.nodes.set(st.id,en)}for(const st of rt)nt(st,et);for(const st of this.view.edges){const ot=this.addEdge(st,et);ot&&this.edges.set(st.id,ot)}}print(){const et=this.graphvizModel;return this.build(et),this.postBuild(et),toDot(this.graphvizModel,{print:{indentStyle:"space",indentSize:2}})}createGraph(){const et=this.view.autoLayout,nt=digraph({[attribute.bgcolor]:"transparent",[attribute.layout]:"dot",[attribute.compound]:!0,[attribute.rankdir]:et.direction,[attribute.TBbalance]:"min",[attribute.splines]:"spline",[attribute.outputorder]:"nodesfirst",[attribute.nodesep]:pxToInch(et.nodeSep??110),[attribute.ranksep]:pxToInch(et.rankSep??120),[attribute.pad]:pxToInch(15),[attribute.fontname]:v$2});return nt.attributes.graph.apply({[attribute.fontsize]:pxToPoints(15),[attribute.labeljust]:et.direction==="RL"?"r":"l",[attribute.labelloc]:et.direction==="BT"?"b":"t",[attribute.margin]:50.1}),nt}applyNodeAttributes(et){et.apply({[attribute.fontname]:v$2,[attribute.shape]:"rect",[attribute.fillcolor]:core.defaultTheme.elements[core.DefaultThemeColor].fill,[attribute.fontcolor]:core.defaultTheme.elements[core.DefaultThemeColor].hiContrast,[attribute.color]:core.defaultTheme.elements[core.DefaultThemeColor].stroke,[attribute.style]:"filled",[attribute.penwidth]:0})}applyEdgeAttributes(et){et.apply({[attribute.arrowsize]:.75,[attribute.fontname]:v$2,[attribute.fontsize]:pxToPoints(14),[attribute.penwidth]:pxToPoints(2),[attribute.color]:core.defaultTheme.relationships[core.DefaultRelationshipColor].lineColor,[attribute.fontcolor]:core.defaultTheme.relationships[core.DefaultRelationshipColor].labelColor})}checkNodeId(et,nt=!1){return nt?et="cluster_"+et:et.toLowerCase().startsWith("cluster")&&(et="nd_"+et),this.ids.has(et)?null:(this.ids.add(et),et)}generateGraphvizId(et){const nt=isCompound(et);let rt=core.nameFromFqn(et.id).toLowerCase(),st=this.checkNodeId(rt,nt);if(st!==null)return st;rt=core.nameFromFqn(et.id).toLowerCase();let ot=1;do st=this.checkNodeId(rt+"_"+ot++,nt);while(st===null);return st}elementToSubgraph(et,nt){core.invariant(isCompound(et),"node should be compound"),core.invariant(e$5(et.depth),"node.depth should be defined");const rt=this.getElementColorValues(et.color),st=compoundLabelColor(rt.loContrast);return nt.apply({[attribute.likec4_id]:et.id,[attribute.likec4_level]:et.level,[attribute.likec4_depth]:et.depth,[attribute.fillcolor]:compoundColor(rt.fill,et.depth),[attribute.color]:compoundColor(rt.stroke,et.depth),[attribute.style]:"filled",[attribute.margin]:pxToPoints(et.children.length>1?40:32)}),n$5(et.title.trim())||nt.set(attribute.label,compoundLabel(et,st)),nt}elementToNode(et,nt){core.invariant(!isCompound(et),"node should not be compound");const rt=n$7(et.icon),st=this.getElementColorValues(et.color);let ot=et.style.size,en=et.style.textSize,tn=et.style.padding;!ot&&en&&(ot=en),!en&&ot&&(en=ot),!tn&&ot&&(tn=ot),ot??=types$1.DefaultShapeSize,en??=types$1.DefaultTextSize,tn??=types$1.DefaultPaddingSize;const nn=core.defaultTheme.spacing[tn];switch(nt.attributes.apply({[attribute.likec4_id]:et.id,[attribute.likec4_level]:et.level,[attribute.label]:nodeLabel(et,st,{shape:ot,text:en}),[attribute.margin]:`${pxToInch(rt?8:nn)},${pxToInch(nn)}`}),nt.attributes.set(attribute.width,pxToInch(core.defaultTheme.sizes[ot].width)),nt.attributes.set(attribute.height,pxToInch(core.defaultTheme.sizes[ot].height)),et.color!==core.DefaultThemeColor&&nt.attributes.apply({[attribute.fillcolor]:st.fill,[attribute.fontcolor]:st.hiContrast,[attribute.color]:st.stroke}),et.shape){case"cylinder":case"storage":{nt.attributes.apply({[attribute.margin]:`${pxToInch(rt?8:nn)},${pxToInch(0)}`,[attribute.penwidth]:pxToPoints(2),[attribute.shape]:"cylinder"});break}case"browser":{nt.attributes.apply({[attribute.margin]:`${pxToInch(rt?8:nn+4)},${pxToInch(nn+6)}`});break}case"mobile":{nt.attributes.apply({[attribute.margin]:`${pxToInch(rt?8:nn+4)},${pxToInch(nn)}`});break}case"queue":{nt.attributes.apply({[attribute.width]:pxToInch(core.defaultTheme.sizes[ot].width),[attribute.height]:pxToInch(core.defaultTheme.sizes[ot].height-8),[attribute.margin]:`${pxToInch(rt?8:nn+4)},${pxToInch(nn)}`});break}}return nt}leafElements(et){return et===null?this.view.nodes.filter(nt=>!isCompound(nt)):this.computedNode(et).children.flatMap(nt=>{const rt=this.computedNode(nt);return isCompound(rt)?this.leafElements(rt.id):rt})}descendants(et){return et===null?this.view.nodes.slice():this.computedNode(et).children.flatMap(nt=>{const rt=this.computedNode(nt);return[rt,...this.descendants(rt.id)]})}computedNode(et){return core.nonNullable(this.view.nodes.find(nt=>nt.id===et),`Node ${et} not found`)}getGraphNode(et){return this.nodes.get(et)??null}getSubgraph(et){return this.subgraphs.get(et)??null}edgeEndpoint(et,nt){let rt=this.computedNode(et),st=this.getGraphNode(et),ot;return st||(core.invariant(isCompound(rt),"endpoint node should be compound"),ot=this.getSubgraph(et)?.id,core.invariant(ot,`subgraph ${et} not found`),rt=core.nonNullable(nt(this.leafElements(et)),`leaf element in ${et} not found`),st=core.nonNullable(this.getGraphNode(rt.id),`source graphviz node ${rt.id} not found`)),[rt,st,ot]}findInternalEdges(et){if(et===null)return this.view.edges.slice();const nt=this.computedNode(et);return C$1(this.descendants(et),u$4(rt=>a$3(rt.inEdges,rt.outEdges)),i$8(),d$4(a$3(nt.inEdges,nt.outEdges)),m$1(rt=>this.view.edges.find(st=>st.id===rt)),T(n$7))}withoutCompoundEdges(et){return this.edgesWithCompounds.size===0?et:{...et,inEdges:et.inEdges.filter(nt=>!this.edgesWithCompounds.has(nt)),outEdges:et.outEdges.filter(nt=>!this.edgesWithCompounds.has(nt))}}assignGroups(){const et=C$1(this.view.nodes,T(isCompound),m$1(rt=>rt.id),m$2(core.compareFqnHierarchically),t$4(),m$1(rt=>{const st=this.findInternalEdges(rt).filter(ot=>ot.source!==ot.target&&!this.compoundIds.has(ot.source)&&!this.compoundIds.has(ot.target));return{id:rt,edges:st}}),T(({edges:rt})=>rt.length>1&&rt.length<8),l$7(4)),nt=new Set;for(const rt of et){const st=rt.edges.filter(ot=>!nt.has(ot.source)&&!nt.has(ot.target));for(const ot of st)try{const en=core.nonNullable(this.getGraphNode(ot.source),`Graphviz Node not found for ${ot.source}`),tn=core.nonNullable(this.getGraphNode(ot.target),`Graphviz Node not found for ${ot.target}`);nt.add(ot.source),nt.add(ot.target),en.attributes.set(attribute.group,rt.id),tn.attributes.set(attribute.group,rt.id)}catch(en){S$1.error(`Failed to assign group to edge ${ot.id}`,{error:en})}}}applyManualLayout({height:et,...nt}){const rt=nt.x<0?-nt.x:0,st=nt.y<0?-nt.y:0,ot=rt>0||st>0;for(const{id:en,...tn}of nt.nodes){const nn=this.getGraphNode(en);if(!nn)continue;const rn=pxToInch(tn.center.x)+rt,sn=pxToInch(et-tn.center.y);tn.fixedsize?nn.attributes.apply({[attribute.pos]:`${rn},${sn}!`,[attribute.pin]:!0,[attribute.width]:pxToInch(tn.fixedsize.width),[attribute.height]:pxToInch(tn.fixedsize.height),[attribute.fixedsize]:!0}):nn.attributes.set(attribute.pos,`${rn},${sn}`)}for(const[en,tn]of this.edges.entries()){tn.attributes.delete(attribute.weight),tn.attributes.delete(attribute.minlen),tn.attributes.delete(attribute.constraint);const nn=nt.edges.find(rn=>rn.id===en)?.dotpos;nn&&!ot&&tn.attributes.set(attribute.pos,nn)}return this.graphvizModel.apply({[attribute.layout]:"fdp",[attribute.overlap]:"vpsc",[attribute.sep]:"+50,50",[attribute.esep]:"+10,10",[attribute.start]:"random2",[attribute.splines]:"compound"}),this.graphvizModel.delete(attribute.compound),this.graphvizModel.delete(attribute.rankdir),this.graphvizModel.delete(attribute.nodesep),this.graphvizModel.delete(attribute.ranksep),this.graphvizModel.delete(attribute.pack),this.graphvizModel.delete(attribute.pad),this.graphvizModel.delete(attribute.packmode),this.graphvizModel.attributes.graph.delete(attribute.margin),this}getRelationshipColorValues(et){return core.isThemeColor(et)?core.defaultTheme.relationships[et]:this.view.customColorDefinitions[et]?.relationships??core.defaultTheme.relationships[core.DefaultThemeColor]}getElementColorValues(et){return core.isThemeColor(et)?core.defaultTheme.elements[et]:this.view.customColorDefinitions[et]?.elements??core.defaultTheme.elements[core.DefaultThemeColor]}}class DeploymentViewPrinter extends DotPrinter{createGraph(){const et=super.createGraph(),nt=this.view.autoLayout;return et.delete(attribute.TBbalance),et.apply({[attribute.nodesep]:pxToInch(nt.nodeSep??130),[attribute.ranksep]:pxToInch(nt.rankSep??130)}),et}postBuild(et){C$1(this.view.nodes,m$1(nt=>({node:nt,graphvizNode:this.getGraphNode(nt.id)})),i$5(({node:nt,graphvizNode:rt})=>{if(rt!=null)return core.ComputedNode.modelRef(nt)??void 0}),r$9(),T(i$7(2)),u$3(nt=>{et.subgraph({[attribute.rank]:"same"},rt=>{for(const{graphvizNode:st}of nt)rt.node(core.nonNullable(st).id)})}),r$7(()=>{et.set(attribute.newrank,!0),et.set(attribute.clusterrank,"global"),et.delete(attribute.pack),et.delete(attribute.packmode)}))}elementToSubgraph(et,nt){const rt=super.elementToSubgraph(et,nt);return et.children.length>1&&rt.set(attribute.margin,pxToPoints(50)),rt}addEdge(et,nt){const[rt,st]=[et.source,et.target],[ot,en,tn]=this.edgeEndpoint(rt,pn=>a$6(pn)),[nn,rn,sn]=this.edgeEndpoint(st,d$5),an=l$4(sn)||l$4(tn),on=nt.edge([en,rn],{[attribute.likec4_id]:et.id,[attribute.style]:et.line??DefaultEdgeStyle});sn&&on.attributes.set(attribute.lhead,sn),tn&&on.attributes.set(attribute.ltail,tn);const cn=this.graphology.getEdgeAttribute(et.id,"weight");cn>1&&!this.graphology.hasDirectedEdge(et.target,et.source)&&on.attributes.set(attribute.weight,cn);const ln=edgelabel(et);if(ln&&on.attributes.set(an?attribute.xlabel:attribute.label,ln),et.color){const pn=this.getRelationshipColorValues(et.color);on.attributes.apply({[attribute.color]:pn.lineColor,[attribute.fontcolor]:pn.labelColor})}let[fn,gn]=[et.head??core.DefaultArrowType,et.tail??"none"];return fn==="none"&&gn==="none"?(on.attributes.apply({[attribute.arrowtail]:"none",[attribute.arrowhead]:"none",[attribute.dir]:"none"}),on):et.dir==="both"?(on.attributes.apply({[attribute.arrowhead]:toArrowType(fn),[attribute.arrowtail]:toArrowType(et.tail??fn),[attribute.dir]:"both"}),!an&&core.ComputedNode.modelRef(ot)!==core.ComputedNode.modelRef(nn)&&on.attributes.set(attribute.constraint,!1),on):(fn!==core.DefaultArrowType&&on.attributes.set(attribute.arrowhead,toArrowType(fn)),gn!=="none"&&on.attributes.set(attribute.arrowtail,toArrowType(gn)),on)}}class DynamicViewPrinter extends DotPrinter{static toDot(et){return new DynamicViewPrinter(et).print()}postBuild(et){et.set(attribute.TBbalance,"max")}addEdge(et,nt){const{nodes:rt}=this.view,[st,ot]=et.dir==="back"?[et.target,et.source]:[et.source,et.target],[en,tn,nn]=this.edgeEndpoint(st,$n=>a$6($n)),[rn,sn,an]=this.edgeEndpoint(ot,d$5),on=nt.edge([tn,sn],{[attribute.likec4_id]:et.id,[attribute.style]:et.line??DefaultEdgeStyle});if(an&&on.attributes.set(attribute.lhead,an),nn&&on.attributes.set(attribute.ltail,nn),et.color&&et.color!==core.DefaultRelationshipColor){const $n=this.getRelationshipColorValues(et.color);on.attributes.apply({[attribute.color]:$n.lineColor,[attribute.fontcolor]:$n.labelColor})}const cn=[et.label?.trim(),et.technology?.trim()].filter(n$7).join(`
|
|
191
|
-
`),ln=core.extractStep(et.id),fn=stepEdgeLabel(ln,cn);on.attributes.set(attribute.label,fn);const gn=this.graphology.getEdgeAttribute(et.id,"weight");et.source!==et.target&&gn>1&&on.attributes.set(attribute.weight,gn);const pn=rt.findIndex($n=>$n.id===st);rt.findIndex($n=>$n.id===ot)<pn&&et.dir!=="back"&&on.attributes.apply({[attribute.constraint]:!1});let[vn,bn]=[et.head??core.DefaultArrowType,et.tail??"none"];return et.dir==="back"?(on.attributes.apply({[attribute.arrowtail]:toArrowType(vn),[attribute.minlen]:0,[attribute.dir]:"back"}),bn!=="none"&&on.attributes.apply({[attribute.arrowhead]:toArrowType(bn),[attribute.dir]:"both"}),on):vn==="none"&&bn==="none"||vn!=="none"&&bn!=="none"?(on.attributes.apply({[attribute.arrowhead]:toArrowType(vn),[attribute.arrowtail]:toArrowType(bn),[attribute.dir]:"both"}),on):vn==="none"?(on.attributes.delete(attribute.arrowhead),on.attributes.apply({[attribute.arrowtail]:toArrowType(bn),[attribute.minlen]:0,[attribute.dir]:"back"}),on):(vn!==core.DefaultArrowType&&on.attributes.set(attribute.arrowhead,toArrowType(vn)),on)}}class ElementViewPrinter extends DotPrinter{postBuild(et){this.assignGroups();const nt=new Set,rt=this.view.nodes.reduce((ot,en)=>(isCompound(en)&&(nt.add(en.id),ot.push(en)),ot),[]);let st=!1;for(const ot of rt){const en=C$1(ot.children,T(sn=>!this.compoundIds.has(sn)),m$1(sn=>this.computedNode(sn)),T(sn=>sn.inEdges.length===0&&sn.outEdges.length===0));if(en.length<=2)continue;let tn=2;switch(!0){case en.length>11:tn=4;break;case en.length>4:tn=3;break}const nn=core.nonNullable(this.getSubgraph(ot.id),`Subgraph not found for ${ot.id}`);let rn=null;f$5(en,tn).forEach(sn=>{const an=sn.length>1?nn.createSubgraph({[attribute.rank]:"same"}):null;sn.forEach((on,cn)=>{const ln=this.getGraphNode(on.id);ln&&(an?.node(ln.id),cn===0&&(rn&&nn.edge([rn,ln],{[attribute.style]:"invis"}),rn=ln))}),st=st||!!an})}st&&(et.set(attribute.newrank,!0),et.set(attribute.clusterrank,"global"))}addEdge(et,nt){const[rt,st]=et.dir==="back"?[et.target,et.source]:[et.source,et.target],[ot,en,tn]=this.edgeEndpoint(rt,bn=>a$6(bn)),[nn,rn,sn]=this.edgeEndpoint(st,d$5),an=et.parent,on=this.graphology.getEdgeAttributes(et.id),cn=nt.edge([en,rn],{[attribute.likec4_id]:et.id,[attribute.style]:et.line??DefaultEdgeStyle});sn&&cn.attributes.set(attribute.lhead,sn),tn&&cn.attributes.set(attribute.ltail,tn);const ln=l$4(sn)||l$4(tn);!this.graphology.hasDirectedEdge(et.target,et.source)&&on.weight>1&&cn.attributes.set(attribute.weight,on.weight);const fn=edgelabel(et);if(fn&&cn.attributes.set(ln?attribute.xlabel:attribute.label,fn),et.color){const bn=this.getRelationshipColorValues(et.color);cn.attributes.apply({[attribute.color]:bn.lineColor,[attribute.fontcolor]:bn.labelColor})}let[gn,pn]=[et.head??core.DefaultArrowType,et.tail??"none"];if(et.dir==="back")return cn.attributes.apply({[attribute.arrowtail]:toArrowType(gn),[attribute.dir]:"back"}),pn!=="none"&&cn.attributes.apply({[attribute.arrowhead]:toArrowType(pn),[attribute.dir]:"both",[attribute.minlen]:0}),cn;if(gn==="none"&&pn==="none")return cn.attributes.apply({[attribute.arrowtail]:"none",[attribute.arrowhead]:"none",[attribute.dir]:"none",[attribute.minlen]:0,[attribute.constraint]:!1}),cn;if(gn!=="none"&&pn!=="none")return cn.attributes.apply({[attribute.arrowhead]:toArrowType(gn),[attribute.arrowtail]:toArrowType(pn),[attribute.dir]:"both",[attribute.minlen]:0}),cn;if(gn!==core.DefaultArrowType&&cn.attributes.set(attribute.arrowhead,toArrowType(gn)),pn!=="none"&&cn.attributes.set(attribute.arrowtail,toArrowType(pn)),this.view.edges.length===1)return cn;let vn;return an===null&&ot.parent==null&&nn.parent==null?vn=this.view.edges.filter(bn=>{if(bn.id===et.id||bn.parent!==null||bn.source===et.source&&bn.target===et.target||bn.source===et.target&&bn.target===et.source)return!1;const $n=this.computedNode(bn.source),Tn=this.computedNode(bn.target);return isCompound($n)||isCompound(Tn)?!1:$n.parent==null&&Tn.parent==null}):vn=this.findInternalEdges(an).filter(bn=>!(bn.id===et.id||bn.source===et.source&&bn.target===et.target||bn.source===et.target&&bn.target===et.source)),vn.length===0&&(an===null||this.leafElements(an).length<=3)&&cn.attributes.set(attribute.minlen,0),cn}}function x(tt){const[et,nt,rt,st]=tt?tt.split(",").map(tn=>pointToPx(+tn)):[0,0,0,0],ot=Math.round(rt-et),en=Math.round(nt-st);return{x:Math.round(et),y:Math.round(st),width:ot,height:en}}function G(tt){try{const[et,nt]=tt.split(",");return{x:pointToPx(parseFloat(et)),y:pointToPx(parseFloat(nt))}}catch(et){throw new Error(`Failed on parsing pos: ${tt}`,{cause:et})}}function M$1(tt){const{x:et,y:nt}=G(tt.pos),rt=inchToPx(parseFloat(tt.width)),st=inchToPx(parseFloat(tt.height));return{x:et-Math.round(rt/2),y:nt-Math.round(st/2),width:rt,height:st}}function L(tt,[et,nt]=[0,0]){if(!tt||tt.length===0)return null;let rt=1/0,st=1/0,ot=-1/0,en=-1/0,tn=13;try{for(const rn of tt){if(rn.op==="F"){tn=pointToPx(rn.size);continue}if(rn.op==="T"){let sn=pointToPx(rn.pt[0])-et,an=pointToPx(rn.width);switch(rn.align){case"r":sn-=an;break;case"c":sn-=Math.round(an/2);break}rt=Math.min(rt,sn),ot=Math.max(ot,sn+an);let on=pointToPx(rn.pt[1])-nt;st=Math.min(st,Math.round(on-tn)),en=Math.max(en,on)}}}catch(rn){return m$3.warn(`Failed on parsing label draw ops:
|
|
192
|
-
{labelDrawOps}`,{e:rn,labelDrawOps:tt}),null}if(rt===1/0)return null;const nn=2;return{x:rt-nn,y:st-nn,width:ot-rt+2*nn,height:en-st+2*nn}}function B({_draw_:tt,likec4_id:et="???"},nt="<unknown view>"){try{const rt=tt.filter(ot=>ot.op.toLowerCase()==="b");core.invariant(i$7(rt,1),`view ${nt} edge ${et} should have at least one bezier draw op`),rt.length>1&&m$3.warn(`view ${nt} edge ${et} has more than one bezier draw op, using the first one only`);const st=rt[0].points.map(ot=>pointToPx(ot));return core.invariant(i$7(st,2),`view ${nt} edge ${et} should have at least two points`),st}catch(rt){throw new Error(`failed on parsing view ${nt} edge ${et} _draw_:
|
|
193
|
-
${JSON.stringify(tt,null,2)}`,{cause:rt})}}function S(tt,{id:et,source:nt,target:rt,dir:st,label:ot,description:en,...tn},nn){const rn=L(tt._ldraw_??tt._tldraw_??tt._hldraw_),sn=tt.dir==="back"||st==="back";return ot=ot&&rn?wrap(ot,{maxchars:EDGE_LABEL_MAX_CHARS,maxLines:EDGE_LABEL_MAX_LINES}).join(`
|
|
194
|
-
`):null,{id:et,source:nt,target:rt,label:ot,...n$7(en)&&{description:en},...n$7(tt.pos)&&{dotpos:tt.pos},points:B(tt,nn),labelBBox:rn,...sn?{dir:"back"}:{},...tn}}function parseGraphvizJson(tt,et){const nt=x(tt.bb),{nodes:rt,edges:st,manualLayout:ot,...en}=et,tn={...en,bounds:nt,nodes:[],edges:[]},nn=tt.objects??[];for(const sn of rt){const an=nn.find(on=>on.likec4_id===sn.id);core.invariant(an,`View ${en.id} node ${sn.id} not found in graphviz output`);try{const{x:on,y:cn,width:ln,height:fn}="bb"in an?x(an.bb):M$1(an),gn=[on,cn];tn.nodes.push({...sn,position:gn,width:ln,height:fn,labelBBox:L(an._ldraw_,gn)??{x:on,y:cn,width:ln,height:fn}})}catch(on){throw new Error(`Failed on parsing node ${sn.id}:
|
|
195
|
-
${JSON.stringify(an,null,2)}`,{cause:on})}}const rn=tt.edges??[];for(const sn of st){const an=rn.find(on=>on.likec4_id===sn.id);if(!an){m$3.warn`View ${en.id} edge ${sn.id} not found in graphviz output, skipping`;continue}tn.edges.push(S(an,sn,en.id))}return tn}const _$1=tt=>String(tt+1).padStart(2,"0");function parseOverviewGraphvizJson(tt){const et=x(tt.bb),nt={nodes:[],edges:[],bounds:et},rt=new Map,st=tt.objects??[];for(const ot of st){if(!ot.likec4_type)continue;const en=_$1(ot._gvid),tn=ot.likec4_path??"",nn=rt.get(ot._gvid),{x:rn,y:sn,width:an,height:on}="bb"in ot?x(ot.bb):M$1(ot),cn={x:rn,y:sn};if(ot.likec4_type==="view")core.invariant(ot.likec4_id,`View ${ot} has no likec4_id`),nt.nodes.push({id:en,type:"view",parentId:nn?.id??null,height:on,width:an,position:cn,label:ot.label??"",viewId:ot.likec4_id});else{const ln={id:en,type:ot.likec4_type,parentId:nn?.id??null,height:on,width:an,position:cn,path:tn,label:ot.label??""},fn=[..."subgraphs"in ot?ot.subgraphs:[],..."nodes"in ot?ot.nodes:[]];for(const gn of fn)rt.set(gn,ln);nt.nodes.push(ln)}}for(const ot of tt.edges??[])try{const en=_$1(ot.tail),tn=_$1(ot.head);nt.edges.push({id:`link${_$1(ot._gvid)}`,source:en,target:tn,points:B(ot)})}catch(en){m$3.warn(`Failed on parsing edge:
|
|
196
|
-
{edge}`,{error:en,edge:ot})}return nt}const z=core.defaultTheme.font,d$2="/";class OverviewDiagramsPrinter{static toDot(et){return new OverviewDiagramsPrinter(et).print()}subgraphs=new Map;graphvizModel;constructor(et){const nt=this.graphvizModel=strict.graph({[attribute.layout]:"osage",[attribute.pack]:pxToPoints(100),[attribute.packmode]:"array_ltc",[attribute.pad]:pxToInch(15),[attribute.fontname]:z,[attribute.splines]:"polyline",[attribute.esep]:"+20"});nt.attributes.graph.apply({[attribute.fontsize]:pxToPoints(20),[attribute.labeljust]:"l",[attribute.labelloc]:"t"}),nt.attributes.node.apply({[attribute.fontname]:z,[attribute.shape]:"rect",[attribute.width]:pxToInch(400),[attribute.height]:pxToInch(300),[attribute.fixedsize]:!0,[attribute.fontsize]:10}),nt.attributes.edge.apply({[attribute.penwidth]:pxToPoints(2)});const rt=new Set(et.map(nn=>nn.relativePath??""));let st=0,ot=[...et];const en=rt.size>1;en&&ot.sort((nn,rn)=>{const sn=nn.relativePath?.split(d$2)??[""],an=rn.relativePath?.split(d$2)??[""];sn.push(nn.title??"Untitled"),an.push(rn.title??"Untitled");const on=sn.length,cn=an.length;switch(st=Math.max(st,on,cn),!0){case on>cn:return-1;case on<cn:return 1;default:{for(let ln=0;ln<on;ln++){const fn=sn[ln].localeCompare(an[ln]);if(fn!==0)return fn}return 0}}});const tn=new Map;ot.forEach((nn,rn)=>{this.addView(en?nn:{...nn,relativePath:""},rn+st);const sn=nn.nodes.reduce((an,on)=>(on.navigateTo&&an.add(on.navigateTo),an),new Set);sn.size>0&&tn.set(nn.id,sn)});for(const[nn,rn]of tn)for(const sn of rn)nt.edge([nn,sn])}getParentForPath(et){if(et==="")return this.graphvizModel;const nt=et.toLowerCase();let rt=this.subgraphs.get(nt);if(!rt){const st=nt.endsWith(".c4")||nt.endsWith(".likec4"),ot=et.includes(d$2)?et.slice(0,et.lastIndexOf(d$2)):"";rt=this.getParentForPath(ot).subgraph("cluster"+String(this.subgraphs.size+1),{[attribute.likec4_type]:st?"file":"folder",[attribute.likec4_path]:et,[attribute.sortv]:this.subgraphs.size,[attribute.label]:n$7(ot)?et.slice(ot.length+1):et}),this.subgraphs.set(nt,rt)}return rt}addView(et,nt=0){return this.getParentForPath(et.relativePath??"").node(et.id,{[attribute.likec4_type]:"view",[attribute.likec4_id]:et.id,[attribute.sortv]:nt,[attribute.label]:et.title||"Untitled"})}print(){return toDot(this.graphvizModel,{print:{indentStyle:"space",indentSize:2}})}}const g$3=tt=>{switch(!0){case core.ComputedView.isDynamic(tt):return new DynamicViewPrinter(tt);case core.ComputedView.isDeployment(tt):return new DeploymentViewPrinter(tt);case core.ComputedView.isElement(tt):return new ElementViewPrinter(tt);default:core.nonexhaustive(tt)}},i=m$3.getChild("graphviz-layouter");class GraphvizLayouter{constructor(et){this.graphviz=et}get port(){return this.graphviz}changePort(et){this.graphviz=et}async dotToJson(et){let nt;try{nt=await this.graphviz.layoutJson(et)}catch(rt){throw i.error(ir(rt)),i.error`Failed to convert DOT to JSON:\n${et}`,rt}try{return JSON.parse(nt)}catch(rt){throw i.error(ir(rt)),i.error`Failed to parse JSON:\n${nt}\n. Generated from DOT:\n${et}`,rt}}async layout(et){try{let nt=await this.dot(et);const rt=await this.dotToJson(nt);let st=parseGraphvizJson(rt,et);if(et.manualLayout){const ot=applyManualLayout(st,et.manualLayout);if(ot.diagram)st=ot.diagram;else{if(ot.relayout.nodes.length>0){const en=g$3(et);if(en.hasEdgesWithCompounds)i.warn(`Manual layout for view ${et.id} is ignored, as edges with compounds are not supported`);else{en.applyManualLayout(ot.relayout);const tn=await this.dotToJson(en.print());st=parseGraphvizJson(tn,et)}}st.hasLayoutDrift=!0}}return nt=nt.split(`
|
|
197
|
-
`).filter(ot=>!(ot.includes("margin")&&ot.includes("50.1"))).join(`
|
|
198
|
-
`),{dot:nt,diagram:st}}catch(nt){throw new Error(`Error during layout: ${et.id}`,{cause:nt})}}async svg(et){let nt=await this.dot(et);return nt=nt.split(`
|
|
199
|
-
`).filter(rt=>!(rt.includes("margin")&&rt.includes("50.1"))).join(`
|
|
200
|
-
`),{svg:await this.graphviz.svg(nt),dot:nt}}async dot(et){let nt=g$3(et).print();if(!core.ComputedView.isElement(et))return nt;try{return await this.graphviz.unflatten(nt)}catch(rt){return i.warn(`Error during unflatten: ${et.id}`,{error:rt}),nt}}async layoutOverviewGraph(et){if(et.length===0)return Promise.resolve({nodes:[],edges:[],bounds:{x:0,y:0,width:10,height:10}});const nt=OverviewDiagramsPrinter.toDot(et),rt=await this.dotToJson(nt);return parseOverviewGraphvizJson(rt)}}class Node{value;next;constructor(et){this.value=et}}class Queue{#e;#t;#n;constructor(){this.clear()}enqueue(et){const nt=new Node(et);this.#e?(this.#t.next=nt,this.#t=nt):(this.#e=nt,this.#t=nt),this.#n++}dequeue(){const et=this.#e;if(et)return this.#e=this.#e.next,this.#n--,et.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#n=0}get size(){return this.#n}*[Symbol.iterator](){let et=this.#e;for(;et;)yield et.value,et=et.next}}function pLimit(tt){validateConcurrency(tt);const et=new Queue;let nt=0;const rt=()=>{nt<tt&&et.size>0&&(et.dequeue()(),nt++)},st=()=>{nt--,rt()},ot=async(nn,rn,sn)=>{const an=(async()=>nn(...sn))();rn(an);try{await an}catch{}st()},en=(nn,rn,sn)=>{new Promise(an=>{et.enqueue(an)}).then(ot.bind(void 0,nn,rn,sn)),(async()=>(await Promise.resolve(),nt<tt&&rt()))()},tn=(nn,...rn)=>new Promise(sn=>{en(nn,sn,rn)});return Object.defineProperties(tn,{activeCount:{get:()=>nt},pendingCount:{get:()=>et.size},clearQueue:{value(){et.clear()}},concurrency:{get:()=>tt,set(nn){validateConcurrency(nn),tt=nn,queueMicrotask(()=>{for(;nt<tt&&et.size>0;)rt()})}}}),tn}function validateConcurrency(tt){if(!((Number.isInteger(tt)||tt===Number.POSITIVE_INFINITY)&&tt>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}const h=pLimit(1);class GraphvizWasmAdapter{static _graphviz=null;graphviz(){return Promise.resolve().then(()=>GraphvizWasmAdapter._graphviz??=wasmGraphviz.Graphviz.load())}async attempt(et,nt,rt){return await h(async()=>{const st=m$3.getChild("graphviz-wasm");try{return await rt()}catch(ot){st.error(`FAILED GraphvizWasm.${et}`,{error:ot}),st.warn(`FAILED DOT:
|
|
201
|
-
${nt}`),wasmGraphviz.Graphviz.unload(),GraphvizWasmAdapter._graphviz=null}st.warn("Retrying..."),await core.delay(50,300);try{return await rt()}finally{wasmGraphviz.Graphviz.unload(),GraphvizWasmAdapter._graphviz=null}})}async unflatten(et){return await this.attempt("unflatten",et,async()=>(await this.graphviz()).unflatten(et,1,!1,3).replaceAll(/\t\[/g," [").replaceAll(/\t/g," "))}async acyclic(et){return await this.attempt("acyclic",et,async()=>{const nt=(await this.graphviz()).acyclic(et,!0);return nt.acyclic&&nt.outFile||et})}async layoutJson(et){return await this.attempt("layout",et,async()=>(await this.graphviz()).layout(et,"json",void 0,{yInvert:!0}))}async svg(et){return await this.attempt("svg",et,async()=>(await this.graphviz()).layout(et,"svg"))}}function elementRef(tt){return tt.el.ref}function getFqnElementRef(tt){const et=[tt.el.$refText];let nt=tt.parent;for(;nt;)et.push(nt.el.$refText),nt=nt.parent;return et.length===1?et[0]:et.reverse().join(".")}const l$1=Symbol.for("idattr"),ViewOps={writeId(tt,et){return tt[l$1]=et,tt},readId(tt){return tt[l$1]}},ElementOps={writeId(tt,et){return n$4(et)?tt[l$1]=void 0:tt[l$1]=et,tt},readId(tt){return tt[l$1]}};function isLikeC4LangiumDocument(tt){return tt.textDocument.languageId===LikeC4LanguageMetaData.languageId}function isFqnIndexedDocument(tt){return isLikeC4LangiumDocument(tt)&&tt.state>=DocumentState.IndexedContent&&!!tt.c4fqnIndex}function isParsedLikeC4LangiumDocument(tt){return isLikeC4LangiumDocument(tt)&&tt.state==DocumentState.Validated&&!!tt.c4Specification&&!!tt.c4Elements&&!!tt.c4ExtendElements&&!!tt.c4Relations&&!!tt.c4Views&&!!tt.c4fqnIndex&&!!tt.c4Deployments&&!!tt.c4DeploymentRelations}function*streamModel(tt){const et=core.LinkedList.from(tt.parseResult.value.models.flatMap(st=>st.elements)),nt=[];let rt;for(;rt=et.shift();){if(isRelation(rt)){nt.push(rt);continue}if(rt.body&&rt.body.elements&&rt.body.elements.length>0)for(const st of rt.body.elements)et.push(st);yield rt}yield*nt}function*streamDeploymentModel(tt){const et=core.LinkedList.from(tt.parseResult.value.deployments.flatMap(st=>st.elements)),nt=[];let rt;for(;rt=et.shift();){if(isDeploymentRelation(rt)){nt.push(rt);continue}if(isDeploymentNode(rt)&&rt.body&&rt.body.elements.length>0)for(const st of rt.body.elements)et.push(st);yield rt}yield*nt}function resolveRelationPoints(tt){const et=elementRef(tt.target);if(!et)throw new Error("RelationRefError: Invalid reference to target");if(n$3(tt.source)){const nt=elementRef(tt.source);if(!nt)throw new Error("RelationRefError: Invalid reference to source");return{source:nt,target:et}}if(!isElementBody(tt.$container))throw new Error("RelationRefError: Invalid container for sourceless relation");return{source:tt.$container.$container,target:et}}function parseAstOpacityProperty({value:tt}){const et=parseFloat(tt);return isNaN(et)?100:u$1(et,{min:0,max:100})}function parseAstSizeValue({value:tt}){switch(tt){case"xs":case"sm":case"md":case"lg":case"xl":return tt;case"xsmall":return"xs";case"small":return"sm";case"medium":return"md";case"large":return"lg";case"xlarge":return"xl";default:core.nonexhaustive(tt)}}function toElementStyle(tt,et){const nt={};if(!tt||tt.length===0)return nt;for(const rt of tt)if(et(rt))switch(!0){case isBorderProperty(rt):{n$7(rt.value)&&(nt.border=rt.value);break}case isColorProperty(rt):{const st=toColor(rt);n$7(st)&&(nt.color=st);break}case isShapeProperty(rt):{n$7(rt.value)&&(nt.shape=rt.value);break}case isIconProperty(rt):{const st=rt.libicon?.ref?.name??rt.value;n$7(st)&&(nt.icon=st);break}case isOpacityProperty(rt):{nt.opacity=parseAstOpacityProperty(rt);break}case isMultipleProperty(rt):{nt.multiple=e$3(rt.value)?rt.value:!1;break}case isShapeSizeProperty(rt):{n$7(rt.value)&&(nt.size=parseAstSizeValue(rt));break}case isPaddingSizeProperty(rt):{n$7(rt.value)&&(nt.padding=parseAstSizeValue(rt));break}case isTextSizeProperty(rt):{n$7(rt.value)&&(nt.textSize=parseAstSizeValue(rt));break}default:core.nonexhaustive(rt)}return nt}function toRelationshipStyle(tt,et){const nt={};if(!tt||tt.length===0)return nt;for(const rt of tt)if(et(rt))switch(!0){case isColorProperty(rt):{const st=toColor(rt);n$7(st)&&(nt.color=st);break}case isLineProperty(rt):{nt.line=rt.value;break}case isArrowProperty(rt):{switch(rt.key){case"head":{nt.head=rt.value;break}case"tail":{nt.tail=rt.value;break}default:core.nonexhaustive(rt)}break}default:core.nonexhaustive(rt)}return nt}function toRelationshipStyleExcludeDefaults(tt,et){const{color:nt,line:rt,head:st,tail:ot}=toRelationshipStyle(tt?.filter(isRelationshipStyleProperty),et);return{...nt&&nt!==core.DefaultRelationshipColor?{color:nt}:{},...rt&&rt!==core.DefaultLineStyle?{line:rt}:{},...st&&st!==core.DefaultArrowType?{head:st}:{},...ot?{tail:ot}:{}}}function toColor(tt){return tt?.themeColor??tt?.customColor?.$refText}function toAutoLayout(tt){const et=tt.rankSep,nt=tt.nodeSep;let rt;switch(tt.direction){case"TopBottom":{rt="TB";break}case"BottomTop":{rt="BT";break}case"LeftRight":{rt="LR";break}case"RightLeft":{rt="RL";break}default:core.nonexhaustive(tt.direction)}return{direction:rt,...nt&&{nodeSep:nt},...et&&{rankSep:et}}}function toAstViewLayoutDirection(tt){switch(tt){case"TB":return"TopBottom";case"BT":return"BottomTop";case"LR":return"LeftRight";case"RL":return"RightLeft";default:core.nonexhaustive(tt)}}function elementExpressionFromPredicate(tt){if(isElementExpression(tt))return tt;if(isElementPredicateWhere(tt))return tt.subject;if(isElementPredicateWith(tt))return elementExpressionFromPredicate(tt.subject);core.nonexhaustive(tt)}class LikeC4DocumentationProvider{parser;locator;constructor(et){this.parser=et.likec4.ModelParser,this.locator=et.likec4.ModelLocator}getDocumentation(et){try{if(isDeploymentNode(et)){const nt=getDocument(et),rt=this.parser.forDocument(nt).parseDeploymentNode(et),st=[rt.id];return rt.title!==et.name&&st.push(" ",`**${rt.title}**`),st.join(`
|
|
202
|
-
`)}if(isDeployedInstance(et)){const nt=getDocument(et),rt=this.parser.forDocument(nt).parseDeployedInstance(et),st=this.locator.getParsedElement(rt.element),ot=[rt.id,`_instance of_ ${rt.element}`];return st&&ot.push(" ",`**${st.title}**`),ot.join(`
|
|
203
|
-
`)}if(isElement(et)){const nt=getDocument(et),rt=this.parser.forDocument(nt).parseElement(et);return rt?[rt.id," ",`**${rt.title}**`].join(`
|
|
204
|
-
`):void 0}}catch(nt){logWarnError(nt)}}}function areOverlap(tt,et){return[tt,et]=compareRanges(tt,et)>0?[et,tt]:[tt,et],isInRagne(tt.range,et.range.start)}function compareRanges(tt,et){const nt=tt.range.start.line-et.range.start.line;return nt!==0?nt:tt.range.start.character-et.range.start.character}function isInRagne(tt,et){return!(et.line<tt.start.line||et.line>tt.end.line||et.line==tt.start.line&&et.character<tt.start.character||et.line==tt.end.line&&et.character>tt.end.character)}function isMultiline(tt){return tt.range.start.line!=tt.range.end.line}const o={newLine:Formatting.newLine({allowMore:!0}),oneSpace:Formatting.oneSpace(),noSpace:Formatting.noSpace(),indent:Formatting.indent({allowMore:!0}),noIndent:Formatting.noIndent()};class LikeC4Formatter extends AbstractFormatter{format(et){this.removeIndentFromTopLevelStatements(et),this.indentContentInBraces(et),this.formatSpecificationRule(et),this.formatGlobals(et),this.formatElementDeclaration(et),this.formatRelation(et),this.formatMetadataProperty(et),this.formatDeploymentNodeDeclaration(et),this.formatDeployedInstance(et),this.formatDeploymentRelation(et),this.formatView(et),this.formatViewRuleGroup(et),this.formatViewRuleGlobalStyle(et),this.formatViewRuleGlobalPredicate(et),this.formatIncludeExcludeExpressions(et),this.formatDeploymentViewRulePredicateExpressions(et),this.formatWhereExpression(et),this.formatWhereExpressionV2(et),this.formatWhereRelationExpression(et),this.formatWhereElementExpression(et),this.formatRelationExpression(et),this.formatAutolayoutProperty(et),this.formatWithPredicate(et),this.formatViewRuleStyle(et),this.formatLeafProperty(et),this.formatLinkProperty(et),this.formatNavigateToProperty(et),this.formatTags(et)}formatTags(et){this.on(et,isTags,(nt,rt)=>{rt.cst(findNodesForProperty(nt.$cstNode,"values").slice(1)).prepend(o.oneSpace),rt.keywords(",").prepend(o.noSpace).append(o.oneSpace)})}formatDeploymentRelation(et){this.on(et,isDeploymentRelation,(nt,rt)=>{const st=nt?.source?.$cstNode?[nt?.source?.$cstNode]:[];rt.cst(st).append(o.oneSpace),rt.keywords("]->").prepend(o.noSpace),rt.keywords("-[").append(o.noSpace),rt.nodes(...T([nt.target,nt.tags],n$7)).prepend(o.oneSpace),rt.properties("title","technology").prepend(o.oneSpace)})}formatRelation(et){this.on(et,isRelation,(nt,rt)=>{const st=nt?.source?.$cstNode?[nt?.source?.$cstNode]:[];rt.cst(st).append(o.oneSpace),rt.keywords("]->").prepend(o.noSpace),rt.keywords("-[").append(o.noSpace),rt.nodes(...T([nt.target,nt.tags],n$7)).prepend(o.oneSpace),rt.properties("title","technology").prepend(o.oneSpace)}),this.on(et,isDynamicViewStep,(nt,rt)=>{rt.keywords("->","<-").surround(o.oneSpace);const st=rt.property("kind");st.nodes[0]?.text.startsWith(".")&&st.surround(o.oneSpace),rt.keywords("]->").prepend(o.noSpace).append(o.oneSpace),rt.keywords("-[").prepend(o.oneSpace).append(o.noSpace),rt.properties("title").prepend(o.oneSpace)}),this.on(et,isDirectedRelationExpression)?.property("target").prepend(o.oneSpace),this.on(et,isOutgoingRelationExpression,(nt,rt)=>{rt.property("from").append(o.oneSpace),rt.keywords("]->").prepend(o.noSpace),rt.keywords("-[").append(o.noSpace)}),this.on(et,isIncomingRelationExpression)?.keywords("->").append(o.oneSpace),this.on(et,isInOutRelationExpression)?.keyword("->").prepend(o.oneSpace)}removeIndentFromTopLevelStatements(et){(isModel(et)||isSpecificationRule(et)||isModelViews(et)||isLikeC4Lib(et)||isGlobals(et)||isModelDeployments(et))&&this.getNodeFormatter(et).keywords("specification","model","views","likec4lib","global","deployments").prepend(o.noIndent)}indentContentInBraces(et){if(isLikeC4Lib(et)||isSpecificationRule(et)||isSpecificationElementKind(et)||isSpecificationRelationshipKind(et)||isSpecificationDeploymentNodeKind(et)||isGlobals(et)||isGlobalStyle(et)||isGlobalStyleGroup(et)||isGlobalPredicateGroup(et)||isGlobalDynamicPredicateGroup(et)||isGlobalStyleGroup(et)||isModel(et)||isElementBody(et)||isExtendElementBody(et)||isRelationBody(et)||isRelationStyleProperty(et)||isMetadataBody(et)||isModelViews(et)||isElementViewBody(et)||isDynamicViewBody(et)||isDeploymentViewBody(et)||isViewRuleStyle(et)||isViewRuleGroup(et)||isCustomElementProperties(et)||isCustomRelationProperties(et)||isElementStyleProperty(et)||isDynamicViewParallelSteps(et)||isModelDeployments(et)||isDeploymentNodeBody(et)||isDeploymentRelationBody(et)||isDeployedInstanceBody(et)){const nt=this.getNodeFormatter(et),rt=nt.keywords("{"),st=nt.keywords("}"),ot=nt.interior(rt,st);let en=null;for(const tn of ot.nodes)(!en||!areOverlap(en,tn))&&nt.cst([tn]).prepend(o.indent),en=tn;rt.prepend(o.noIndent).prepend(o.oneSpace),st.prepend(o.noIndent).prepend(Formatting.newLine({allowMore:!0}))}}appendKeywordsWithSpace(et){this.on(et,isElementKind)?.keywords("element").append(o.oneSpace)}formatView(et){this.on(et,isElementView,(nt,rt)=>{(nt.extends||nt.viewOf||nt.name)&&rt.keywords("view").append(o.oneSpace),rt.keywords("of","extends").surround(o.oneSpace)}),this.on(et,isDynamicView)?.keywords("dynamic","view").append(o.oneSpace),this.on(et,isDeploymentView)?.keywords("deployment","view").append(o.oneSpace)}formatLeafProperty(et){if(isElementStringProperty(et)||isRelationStringProperty(et)||isViewStringProperty(et)||isNotationProperty(et)||isSpecificationElementStringProperty(et)||isSpecificationRelationshipStringProperty(et)||isColorProperty(et)||isLineProperty(et)||isArrowProperty(et)||isIconProperty(et)||isShapeProperty(et)||isBorderProperty(et)||isOpacityProperty(et)||isMultipleProperty(et)||isShapeSizeProperty(et)||isPaddingSizeProperty(et)||isTextSizeProperty(et)){const nt=this.getNodeFormatter(et),rt=nt.keyword(":"),st=nt.keywords("title","description","technology","notation","color","line","head","tail","icon","shape","border","opacity","multiple","size","padding","textSize");rt.nodes.length===0?st.append(o.oneSpace):rt.prepend(o.noSpace).append(o.oneSpace),nt.keyword(";").prepend(o.noSpace).append(o.newLine)}}formatLinkProperty(et){this.on(et,isLinkProperty,(nt,rt)=>{rt.keyword("link").append(o.oneSpace),rt.property("value").append(o.oneSpace),rt.keyword(":").prepend(o.noSpace).append(o.oneSpace),rt.keyword(";").prepend(o.noSpace).append(o.newLine)})}formatNavigateToProperty(et){this.on(et,isNavigateToProperty)?.property("key").append(o.oneSpace)}formatAutolayoutProperty(et){this.on(et,isViewRuleAutoLayout,(nt,rt)=>{rt.keyword("autoLayout").append(o.oneSpace),rt.property("rankSep").prepend(o.oneSpace),rt.property("nodeSep").prepend(o.oneSpace)})}formatMetadataProperty(et){this.on(et,isMetadataAttribute,(nt,rt)=>{rt.property("key").append(o.oneSpace),rt.keyword(":").prepend(o.noSpace).append(o.oneSpace),rt.keyword(";").prepend(o.noSpace).append(o.newLine)})}formatElementDeclaration(et){this.on(et,isElement,(nt,rt)=>{const st=findNodeForProperty(nt.$cstNode,"kind"),ot=findNodeForProperty(nt.$cstNode,"name");ot&&st&&(compareRanges(ot,st)>0?rt.cst([st]).append(o.oneSpace):(rt.cst([ot]).append(o.oneSpace),rt.cst([st]).prepend(o.oneSpace))),rt.properties("props").prepend(o.oneSpace)})}formatGlobals(et){this.on(et,isGlobalStyle,(nt,rt)=>{rt.keyword("style").append(o.oneSpace),rt.property("id").append(o.oneSpace)}),this.on(et,isGlobalStyleGroup,(nt,rt)=>{rt.keyword("styleGroup").append(o.oneSpace)}),this.on(et,isGlobalPredicateGroup,(nt,rt)=>{rt.keyword("predicateGroup").append(o.oneSpace)}),this.on(et,isGlobalDynamicPredicateGroup,(nt,rt)=>{rt.keyword("dynamicPredicateGroup").append(o.oneSpace)})}formatSpecificationRule(et){if((isSpecificationElementKind(et)||isSpecificationRelationshipKind(et)||isSpecificationTag(et)||isSpecificationDeploymentNodeKind(et))&&this.getNodeFormatter(et).keywords("element","relationship","tag","deploymentNode").append(o.oneSpace),isSpecificationColor(et)){const nt=this.getNodeFormatter(et);nt.keyword("color").append(o.oneSpace),nt.property("name").append(o.oneSpace)}}formatWithPredicate(et){const nt=this.getNodeFormatter(et);(isElementPredicateWith(et)||isRelationPredicateWith(et))&&nt.keyword("with").prepend(o.oneSpace)}formatDeploymentNodeDeclaration(et){this.on(et,isDeploymentNode,(nt,rt)=>{const st=findNodeForProperty(nt.$cstNode,"kind"),ot=findNodeForProperty(nt.$cstNode,"name");ot&&st&&(compareRanges(ot,st)>0?rt.cst([st]).append(o.oneSpace):(rt.cst([ot]).append(o.oneSpace),rt.cst([st]).prepend(o.oneSpace))),rt.properties("title").prepend(o.oneSpace)})}formatDeployedInstance(et){this.on(et,isDeployedInstance,(nt,rt)=>{const st=nt.$cstNode?.content.find(ot=>ot.text==="=");st&&rt.cst([st]).surround(o.oneSpace),rt.keyword("instanceOf").append(o.oneSpace),rt.property("title").prepend(o.oneSpace)})}formatViewRuleGlobalStyle(et){this.on(et,isViewRuleGlobalStyle,(nt,rt)=>{rt.keywords("global","style").append(o.oneSpace)})}formatViewRuleGlobalPredicate(et){const nt=this.getNodeFormatter(et);(isViewRuleGlobalPredicateRef(et)||isDynamicViewGlobalPredicateRef(et))&&nt.keywords("global","predicate").append(o.oneSpace)}formatViewRuleGroup(et){this.on(et,isViewRuleGroup,(nt,rt)=>{rt.keyword("group").append(o.oneSpace)})}formatViewRuleStyle(et){this.on(et,isViewRuleStyle)?.keyword("style").append(o.oneSpace),this.on(et,isDeploymentViewRuleStyle)?.keyword("style").append(o.oneSpace),this.on(et,isElementExpressionsIterator)?.keyword(",").prepend(o.noSpace).append(o.oneSpace),this.on(et,isFqnExpressions)?.keyword(",").prepend(o.noSpace).append(o.oneSpace)}formatWhereExpression(et){(isRelationPredicateOrWhere(et)||isElementPredicateOrWhere(et))&&this.getNodeFormatter(et).keyword("where").append(o.oneSpace)}formatWhereExpressionV2(et){(isRelationPredicateOrWhereV2(et)||isElementPredicateOrWhereV2(et))&&this.getNodeFormatter(et).keyword("where").append(o.oneSpace)}formatWhereRelationExpression(et){if(this.on(et,isWhereRelationExpression,(nt,rt)=>{rt.property("operator").surround(o.oneSpace)}),this.on(et,isWhereRelationNegation,(nt,rt)=>{rt.keyword("not").append(o.oneSpace)}),isWhereRelation(et)||isWhereRelationTag(et)||isWhereRelationKind(et)){const nt=this.getNodeFormatter(et);nt.property("operator").surround(o.oneSpace),nt.property("not").surround(o.oneSpace)}}formatWhereElementExpression(et){if(this.on(et,isWhereElementExpression,(nt,rt)=>{rt.property("operator").surround(o.oneSpace)}),this.on(et,isWhereElementNegation,(nt,rt)=>{rt.keyword("not").append(o.oneSpace)}),isWhereElement(et)||isWhereElementTag(et)||isWhereElementKind(et)){const nt=this.getNodeFormatter(et);nt.property("operator").surround(o.oneSpace),nt.property("not").surround(o.oneSpace)}}formatIncludeExcludeExpressions(et){if(isDynamicViewRule(et)||isIncludePredicate(et)||isExcludePredicate(et)||isDeploymentViewRulePredicate(et)){const nt=this.getNodeFormatter(et);(!et.$cstNode||!isMultiline(et.$cstNode))&&nt.keywords("include","exclude").append(o.oneSpace)}if(isDynamicViewPredicateIterator(et)||isPredicates(et)||isPredicates(et)){const nt=this.getNodeFormatter(et),rt=this.findPredicateExpressionRoot(et),st=rt?.$cstNode&&isMultiline(rt?.$cstNode);st&&nt.property("value").prepend(o.indent),nt.keyword(",").prepend(o.noSpace).append(st?o.newLine:o.oneSpace)}}formatRelationExpression(et){this.on(et,isIncomingRelationExpr,(nt,rt)=>{rt.keyword("->").append(o.oneSpace)}),this.on(et,isInOutRelationExpr,(nt,rt)=>{rt.keyword("->").prepend(o.oneSpace)}),this.on(et,isOutgoingRelationExpr,(nt,rt)=>{rt.keywords("->","<->").prepend(o.oneSpace),rt.keywords("-[").prepend(o.oneSpace).append(o.noSpace),rt.keywords("]->").prepend(o.noSpace).append(o.oneSpace);const st=rt.property("kind");st.nodes[0]?.text.startsWith(".")&&st.surround(o.oneSpace)}),this.on(et,isDirectedRelationExpr,(nt,rt)=>{rt.property("target").prepend(o.oneSpace)})}formatDeploymentViewRulePredicateExpressions(et){if(isDynamicViewRule(et)||isIncludePredicate(et)||isExcludePredicate(et)||isDeploymentViewRulePredicate(et)){const nt=this.getNodeFormatter(et);(!et.$cstNode||!isMultiline(et.$cstNode))&&nt.keywords("include","exclude").append(o.oneSpace)}if(isDeploymentViewRulePredicateExpression(et)){const nt=this.getNodeFormatter(et),rt=this.findPredicateExpressionRoot(et),st=rt?.$cstNode&&isMultiline(rt?.$cstNode);st&&nt.property("value").prepend(o.indent),nt.keyword(",").prepend(o.noSpace).append(st?o.newLine:o.oneSpace)}}findPredicateExpressionRoot(et){let nt=et.$container;for(;;){if(!nt||isDynamicViewRule(nt)||isIncludePredicate(nt)||isExcludePredicate(nt)||isDeploymentViewRulePredicate(nt))return nt;nt=nt.$container}}on(et,nt,rt){const st=nt(et)?this.getNodeFormatter(et):void 0;return rt&&st&&rt(et,st),st}}class LikeC4CodeLensProvider{constructor(et){this.services=et}async provideCodeLens(et,nt,rt){return et.state!==DocumentState.Validated&&(logger$1.debug(`Waiting for document ${et.uri.path} to be validated`),await this.services.shared.workspace.DocumentBuilder.waitUntil(DocumentState.Validated,et.uri,rt),logger$1.debug(`Document ${et.uri.path} is validated`)),isParsedLikeC4LangiumDocument(et)?et.parseResult.value.views.flatMap(st=>st.views).flatMap(st=>{const ot=ViewOps.readId(st),en=st.$cstNode?.range;return!en||!ot?[]:{range:{start:en.start,end:{line:en.start.line,character:en.start.character+4}},command:{command:"likec4.open-preview",arguments:[ot],title:"open preview"}}}):void 0}}const r$1=["color","shape","icon","border","opacity","multiple","size"].join(",");class LikeC4CompletionProvider extends DefaultCompletionProvider{completionOptions={triggerCharacters:["."]};completionForKeyword(et,nt,rt){if(this.filterKeyword(et,nt)){if(nt.value==="deployment"&&hasContainerOfType(et.node,isModelViews))return rt(et,{label:nt.value,detail:"Insert deployment view",kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:["deployment view ${1:view_${TM_FILENAME_BASE}_${CURRENT_SECOND}} {"," title '${2:Untitled}'"," "," include $0","}"].join(`
|
|
205
|
-
`)});if(["title","description","technology"].includes(nt.value))return rt(et,{label:nt.value,kind:CompletionItemKind.Property,insertTextFormat:InsertTextFormat.Snippet,insertText:`${nt.value} '\${0}'`});if(["views","specification","model","deployment","with"].includes(nt.value))return rt(et,{label:nt.value,detail:`Insert ${nt.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${nt.value} {
|
|
206
|
-
$0
|
|
207
|
-
}`});if(nt.value==="group")return rt(et,{label:nt.value,detail:"Insert group block",kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:["group '${1:Title}' {"," $0","}"].join(`
|
|
208
|
-
`)});if(nt.value==="dynamic"&&hasContainerOfType(et.node,isModelViews))return rt(et,{label:nt.value,detail:"Insert dynamic view",kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:["dynamic view ${1:view_${TM_FILENAME_BASE}_${CURRENT_SECOND}} {"," title '${2:Untitled}'"," "," $0","}"].join(`
|
|
209
|
-
`)});if(nt.value==="style"&&et.node)return hasContainerOfType(et.node,isGlobalStyle)?rt(et,{label:nt.value,detail:`Insert ${nt.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${nt.value} \${1:name} \${2:*} {
|
|
210
|
-
\${3|${r$1}|} $0
|
|
211
|
-
}`}):hasContainerOfType(et.node,y$2([isModelViews,isGlobalStyleGroup]))?rt(et,{label:nt.value,detail:`Insert ${nt.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${nt.value} \${1:*} {
|
|
212
|
-
\${2|${r$1}|} $0
|
|
213
|
-
}`}):rt(et,{label:nt.value,detail:`Insert ${nt.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${nt.value} {
|
|
214
|
-
\${1|${r$1}|} $0
|
|
215
|
-
}`});if(nt.value==="extend")return rt(et,{label:nt.value,detail:"Extend another view",kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:`extend \${1:element} {
|
|
216
|
-
$0
|
|
217
|
-
}`});if(nt.value==="autoLayout")return rt(et,{label:nt.value,kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:"autoLayout ${1|TopBottom,BottomTop,LeftRight,RightLeft|}$0"});rt(et,{label:nt.value,kind:this.getKeywordCompletionItemKind(nt),detail:"Keyword",sortText:"1"})}}}class LikeC4DocumentHighlightProvider extends DefaultDocumentHighlightProvider{createDocumentHighlight(et){return mainExports$2.DocumentHighlight.create(et.segment.range,mainExports$2.DocumentHighlightKind.Read)}}const PROTOCOL_STRICT_REGEX=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,PROTOCOL_REGEX=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,PROTOCOL_RELATIVE_REGEX=/^([/\\]\s*){2,}[^/\\]/;function isRelative(tt){return["./","../"].some(et=>tt.startsWith(et))}function hasProtocol(tt,et={}){return typeof et=="boolean"&&(et={acceptRelative:et}),et.strict?PROTOCOL_STRICT_REGEX.test(tt):PROTOCOL_REGEX.test(tt)||(et.acceptRelative?PROTOCOL_RELATIVE_REGEX.test(tt):!1)}function hasTrailingSlash(tt="",et){return tt.endsWith("/")}function withoutTrailingSlash(tt="",et){return(hasTrailingSlash(tt)?tt.slice(0,-1):tt)||"/"}function withTrailingSlash(tt="",et){return tt.endsWith("/")?tt:tt+"/"}function hasLeadingSlash(tt=""){return tt.startsWith("/")}function withoutLeadingSlash(tt=""){return(hasLeadingSlash(tt)?tt.slice(1):tt)||"/"}function withLeadingSlash(tt=""){return hasLeadingSlash(tt)?tt:"/"+tt}function withoutBase(tt,et){if(isEmptyURL(et))return tt;const nt=withoutTrailingSlash(et);if(!tt.startsWith(nt))return tt;const rt=tt.slice(nt.length);return rt[0]==="/"?rt:"/"+rt}function isEmptyURL(tt){return!tt||tt==="/"}function parsePath(tt=""){const[et="",nt="",rt=""]=(tt.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:et,search:nt,hash:rt}}class LikeC4DocumentLinkProvider{constructor(et){this.services=et}getDocumentLinks(et,nt){return isParsedLikeC4LangiumDocument(et)?streamAllContents(et.parseResult.value).filter(isLinkProperty).map(rt=>{try{const st=findNodeForProperty(rt.$cstNode,"value")?.range,ot=this.resolveLink(et,rt.value);if(st&&hasProtocol(ot))return{range:st,target:ot}}catch(st){logWarnError(st)}return null}).nonNullable().toArray():[]}resolveLink(et,nt){if(hasProtocol(nt)||hasLeadingSlash(nt))return nt;const rt=isRelative(nt)?new URL(et.uri.toString(!0)):this.services.shared.workspace.WorkspaceManager.workspaceURL;return new URL(nt,rt).toString()}relativeLink(et,nt){if(hasLeadingSlash(nt))return withoutLeadingSlash(nt);if(isRelative(nt)){const rt=new URL(et.uri.toString(!0)),st=new URL(nt,rt).toString();return withoutLeadingSlash(withoutBase(st,this.services.shared.workspace.WorkspaceManager.workspaceURL.toString()))}return null}}class LikeC4DocumentSymbolProvider{constructor(et){this.services=et,this.nodeKindProvider=et.shared.lsp.NodeKindProvider,this.parser=et.likec4.ModelParser,this.locator=et.likec4.ModelLocator,this.nameProvider=et.references.NameProvider}nodeKindProvider;nameProvider;parser;locator;getSymbols({parseResult:{value:{specifications:et,models:nt,deployments:rt,views:st,likec4lib:ot}}}){return[...ot.map(en=>()=>this.getLikec4LibSymbol(en)),...et.map(en=>()=>this.getSpecSymbol(en)),...nt.map(en=>()=>this.getModelSymbol(en)),...rt.map(en=>()=>this.getDeploymentModelSymbol(en)),...st.map(en=>()=>this.getModelViewsSymbol(en))].flatMap(en=>{try{return en()??[]}catch(tn){return logWarnError(tn),[]}})}getLikec4LibSymbol(et){const nt=et?.$cstNode;if(!nt)return[];const rt=et.icons.map(st=>this.getLibIconSymbol(st)).filter(n$7);return rt.length===0?[]:[{kind:SymbolKind.Namespace,name:"icons",range:nt.range,selectionRange:findNodeForKeyword(nt,"icons")?.range??nt.range,children:rt}]}getSpecSymbol(et){const nt=et?.$cstNode;if(!nt)return[];const rt=findNodeForProperty(nt,"name");if(!rt)return[];const st=C$1([...et.elements,...et.tags,...et.relationships],m$1(ot=>{try{if(isSpecificationElementKind(ot)||isSpecificationRelationshipKind(ot)||isSpecificationDeploymentNodeKind(ot))return this.getKindSymbol(ot);if(isSpecificationTag(ot))return this.getTagSymbol(ot)}catch(en){return logWarnError(en),null}core.nonexhaustive(ot)}),T(n$7));return st.length===0?[]:[{kind:SymbolKind.Namespace,name:et.name,range:nt.range,selectionRange:rt.range,children:st}]}getModelSymbol(et){const nt=et.$cstNode;if(!nt)return[];const rt=findNodeForProperty(nt,"name");return rt?[{kind:this.symbolKind(et),name:et.name,range:nt.range,selectionRange:rt.range,children:et.elements.flatMap(st=>this.getElementsSymbol(st))}]:[]}getDeploymentModelSymbol(et){const nt=et.$cstNode;if(!nt)return[];const rt=findNodeForProperty(nt,"name");return rt?[{kind:this.symbolKind(et),name:et.name,range:nt.range,selectionRange:rt.range,children:et.elements.flatMap(st=>this.getDeploymentElementSymbol(st))}]:[]}getElementsSymbol(et){try{if(isExtendElement(et))return this.getExtendElementSymbol(et);if(isElement(et))return this.getElementSymbol(et)}catch(nt){logWarnError(nt)}return[]}getExtendElementSymbol(et){const nt=et.$cstNode,rt=et.element.$cstNode,st=et.body;return!nt||!rt?[]:[{kind:this.symbolKind(et),name:getFqnElementRef(et.element),range:nt.range,selectionRange:rt.range,children:st.elements.flatMap(ot=>this.getElementsSymbol(ot))}]}getElementSymbol(et){const nt=et.$cstNode,rt=findNodeForProperty(nt,"name");if(!rt||!nt)return[];const st=et.name,ot=et.kind.$refText;return[{kind:this.symbolKind(et),name:st,range:nt.range,selectionRange:rt.range,detail:ot,children:et.body?.elements.flatMap(en=>this.getElementsSymbol(en))??[]}]}getModelViewsSymbol(et){const nt=et.$cstNode,rt=findNodeForProperty(nt,"name");return!rt||!nt?[]:[{kind:this.symbolKind(et),name:et.name,range:nt.range,selectionRange:rt.range,children:et.views.flatMap(st=>this.getViewSymbol(st))}]}getKindSymbol(et){return!et.$cstNode||!et.kind.$cstNode||n$5(et.kind.name)?null:{kind:this.symbolKind(et),name:et.kind.name,range:et.$cstNode.range,selectionRange:et.kind.$cstNode.range}}getTagSymbol(et){return!et.$cstNode||!et.tag.$cstNode||n$5(et.tag.name)?null:{kind:this.symbolKind(et),name:"#"+et.tag.name,range:et.$cstNode.range,selectionRange:et.tag.$cstNode.range}}getLibIconSymbol(et){return!et.$cstNode||n$5(et.name)?null:{kind:this.symbolKind(et),name:et.name,range:et.$cstNode.range,selectionRange:et.$cstNode.range}}getViewSymbol(et){const nt=et?.$cstNode;if(!nt)return[];const rt=et.name?findNodeForProperty(nt,"name"):null;return rt?[{kind:this.symbolKind(et),name:rt.text,range:nt.range,selectionRange:rt.range,children:[]}]:[]}getDeploymentElementSymbol(et){try{if(isDeploymentNode(et))return this.getDeploymentNodeSymbol(et);if(isDeployedInstance(et))return this.getDeployedInstanceSymbol(et)}catch(nt){logWarnError(nt)}return[]}getDeploymentNodeSymbol(et){const nt=et.$cstNode,rt=this.nameProvider.getNameNode(et);if(!rt||!nt)return[];const st=this.nameProvider.getNameStrict(et),ot=et.kind.$refText;return[{kind:this.symbolKind(et),name:st,range:nt.range,selectionRange:rt.range,detail:ot,children:et.body?.elements.flatMap(en=>this.getDeploymentElementSymbol(en))??[]}]}getDeployedInstanceSymbol(et){const nt=et.$cstNode,rt=this.nameProvider.getNameNode(et);if(!rt||!nt)return[];const st=getDocument(et),ot=this.parser.forDocument(st).parseDeployedInstance(et),en=this.nameProvider.getNameStrict(et),tn="instance of "+ot.element;return[{kind:this.symbolKind(et),name:en,range:nt.range,selectionRange:rt.range,detail:tn,children:[]}]}symbolKind(et){return this.nodeKindProvider.getSymbolKind(et)}}var minIndent$1,hasRequiredMinIndent;function requireMinIndent(){return hasRequiredMinIndent||(hasRequiredMinIndent=1,minIndent$1=tt=>{const et=tt.match(/^[ \t]*(?=\S)/gm);return et?et.reduce((nt,rt)=>Math.min(nt,rt.length),1/0):0}),minIndent$1}var minIndentExports=requireMinIndent();const minIndent=getDefaultExportFromCjs(minIndentExports);function stripIndent(tt){const et=minIndent(tt);if(et===0)return tt;const nt=new RegExp(`^[ \\t]{${et}}`,"gm");return tt.replace(nt,"")}class LikeC4HoverProvider extends AstNodeHoverProvider{parser;locator;constructor(et){super(et),this.parser=et.likec4.ModelParser,this.locator=et.likec4.ModelLocator}getAstNodeHoverContent(et){if(isTag(et))return{contents:{kind:"markdown",value:stripIndent(`
|
|
218
|
-
tag: \`${et.name}\`
|
|
219
|
-
`)}};if(isDeploymentNode(et)){const nt=getDocument(et),rt=this.parser.forDocument(nt).parseDeploymentNode(et),st=[rt.id+" "];return rt.title!==et.name&&st.push(`### ${rt.title}`),st.push("Deployment: `"+rt.kind+"` "),{contents:{kind:"markdown",value:st.join(`
|
|
220
|
-
`)}}}if(isDeployedInstance(et)){const nt=getDocument(et),rt=this.parser.forDocument(nt).parseDeployedInstance(et),st=this.locator.getParsedElement(rt.element),ot=[rt.id+" ",`instance of \`${rt.element}\``];return st&&ot.push(`### ${st.title}`,"Element: `"+st.kind+"` "),{contents:{kind:"markdown",value:ot.join(`
|
|
221
|
-
`)}}}if(isElement(et)){const nt=this.locator.getParsedElement(et);return nt?{contents:{kind:"markdown",value:[nt.id,`### ${nt.title}`,"Element: `"+nt.kind+"` "].join(`
|
|
222
|
-
`)}}:void 0}}}class LikeC4SemanticTokenProvider extends AbstractSemanticTokenProvider{highlightElement(et,nt){if(isElement(et)||isDeploymentNode(et))return this.highlightNameAndKind(et,nt);if(isDeployedInstance(et)){"name"in et&&nt({node:et,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isLikeC4View(et))return this.highlightView(et,nt);if(isRelationshipKind(et))return nt({node:et,property:"name",type:SemanticTokenTypes.function});if(isLibIcon(et))return nt({node:et,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isOutgoingRelationExpression(et)&&"kind"in et){nt({node:et,property:"kind",type:SemanticTokenTypes.function});return}if(isRelation(et)&&"kind"in et&&nt({node:et,property:"kind",type:SemanticTokenTypes.function}),isNavigateToProperty(et)||isRelationNavigateToProperty(et))return nt({node:et,property:"key",type:SemanticTokenTypes.property}),nt({node:et,property:"value",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),"prune";if((isElementDescedantsExpression(et)||isWildcardExpression(et))&&et.$cstNode)return nt({cst:et.$cstNode,type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),"prune";if(isFqnRefExpr(et)){et.selector&&nt({node:et,property:"selector",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isWhereRelationKind(et)&&n$7(et.value)){nt({node:et,property:"value",type:SemanticTokenTypes.function});return}if((isWhereElement(et)||isWhereRelation(et))&&n$7(et.value)){nt({node:et,property:"value",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if((isWhereRelationParticipantKind(et)||isWhereRelationParticipantTag(et))&&nt({node:et,property:"participant",type:SemanticTokenTypes.keyword}),isElementKindExpression(et)&&n$7(et.kind))return nt({node:et,property:"kind",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isGlobalStyleGroup(et)||isGlobalStyle(et)){nt({node:et,property:"id",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isViewRuleGlobalStyle(et)){nt({node:et,property:"style",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isGlobalPredicateGroup(et)||isGlobalDynamicPredicateGroup(et)){nt({node:et,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isViewRuleGlobalPredicateRef(et)){nt({node:et,property:"predicate",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isElementTagExpression(et)&&n$7(et.tag))return nt({node:et,property:"tag",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isFqnRef(et))return nt({node:et,property:"value",type:et.parent?SemanticTokenTypes.property:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),et.parent?void 0:"prune";if(isElementRef(et)||isStrictFqnElementRef(et))return nt({node:et,property:"el",type:et.parent?SemanticTokenTypes.property:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),et.parent?void 0:"prune";if(isSpecificationColor(et)){nt({node:et,keyword:"color",type:SemanticTokenTypes.keyword}),nt({node:et,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]});return}if((isSpecificationElementKind(et)||isSpecificationRelationshipKind(et)||isSpecificationDeploymentNodeKind(et))&&nt({node:et,property:"kind",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]}),isTags(et))return nt({node:et,property:"values",type:SemanticTokenTypes.interface});if(isTag(et))return nt({node:et,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]});if((isRelationStyleProperty(et)||isElementStyleProperty(et)&&isElementBody(et.$container))&&nt({node:et,property:"key",type:SemanticTokenTypes.property}),isOpacityProperty(et))return nt({node:et,property:"key",type:SemanticTokenTypes.property}),nt({node:et,property:"value",type:SemanticTokenTypes.number}),"prune";if(isLinkProperty(et)||isIconProperty(et)||isStringProperty(et))return nt({node:et,property:"key",type:SemanticTokenTypes.property}),isIconProperty(et)&&(et.libicon||et.value==="none")?(nt({node:et,property:et.libicon?"libicon":"value",type:SemanticTokenTypes.enum,modifier:[SemanticTokenModifiers.defaultLibrary]}),"prune"):("value"in et&&et.value&&nt({node:et,property:"value",type:SemanticTokenTypes.string}),"prune");if(isColorProperty(et)||isShapeProperty(et)||isArrowProperty(et)||isLineProperty(et)||isBorderProperty(et)||isSizeProperty(et))return nt({node:et,property:"key",type:SemanticTokenTypes.property}),"value"in et&&nt({node:et,property:"value",type:SemanticTokenTypes.enum}),"prune"}highlightNameAndKind(et,nt){nt({node:et,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]}),nt({node:et,property:"kind",type:SemanticTokenTypes.keyword,modifier:[]})}highlightView(et,nt){et.name&&nt({node:et,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly,"local"]})}}class DeploymentsIndex{constructor(et){this.services=et,this.Names=et.references.NameProvider,this.langiumDocuments=et.shared.workspace.LangiumDocuments,this.documentCache=et.DocumentCache}Names;langiumDocuments;documentCache;documents(){return this.langiumDocuments.all.filter(et=>isLikeC4LangiumDocument(et)&&et.state>=DocumentState.IndexedContent)}get(et){return et.state<DocumentState.IndexedContent&&logWarnError(`Document ${et.uri.path} is not indexed`),this.documentCache.get(et.uri,"DeploymentsIndex",()=>this.createDocumentIndex(et))}nested(et){const nt=this.getFqn(et);return this.documents().flatMap(rt=>this.get(rt).nested(nt))}byFqn(et){return this.documents().flatMap(nt=>this.get(nt).byFqn(et))}getFqn(et){let nt=ElementOps.readId(et);if(n$7(nt))return nt;const rt=[this.Names.getNameStrict(et)];let st=et,ot;for(;ot=getContainerOfType(st.$container,isDeploymentNode);)rt.push(this.Names.getNameStrict(ot)),st=ot;return nt=rt.reduceRight((en,tn)=>`${en}.${tn}`),ElementOps.writeId(et,nt),nt}createDocumentIndex(et){const nt=et.parseResult.value.deployments.flatMap(sn=>sn.elements);if(nt.length===0)return DocumentDeploymentsIndex.EMPTY;const rt=new Array,st=new MultiMap,ot=new MultiMap,en=this.Names,tn=this.services.workspace.AstNodeDescriptionProvider,nn=sn=>{const an={...tn.createDescription(sn.node,sn.name,et),fqn:sn.fqn};return ElementOps.writeId(sn.node,sn.fqn),ot.add(sn.fqn,an),an},rn=(sn,an)=>{const on=[],cn=sn.body?.elements;if(!cn||cn.length===0)return[];const ln=new Set;for(const fn of cn)if(!isDeploymentRelation(fn))try{const gn=en.getName(fn);if(n$7(gn)){const pn=`${an}.${gn}`,vn=nn({node:fn,name:gn,fqn:pn});st.add(an,vn),ln.add(vn.name),isDeploymentNode(fn)&&fn.body&&on.push(...rn(fn,pn))}}catch(gn){logWarnError(gn)}return on.length>0&&C$1(on,i$5(p$6("name")),i$3((fn,gn)=>{fn.length>1||ln.has(gn)||st.add(an,fn[0])})),st.get(an)};for(const sn of nt)try{if(isDeploymentRelation(sn))continue;const an=en.getName(sn);n$7(an)&&(rt.push(nn({node:sn,name:an,fqn:an})),rn(sn,an))}catch(an){logWarnError(an)}return new DocumentDeploymentsIndex(rt,st,ot)}}class DocumentDeploymentsIndex{constructor(et,nt,rt){this._rootNodes=et,this._nested=nt,this._byfqn=rt}static EMPTY=new DocumentDeploymentsIndex([],new MultiMap,new MultiMap);rootNodes(){return this._rootNodes}byFqn(et){return this._byfqn.get(et)}nested(et){return this._nested.get(et)}unique(){const et=[];return C$1([...this._byfqn.values()],i$5(p$6("name")),i$3(nt=>{nt.length===1&&et.push(nt[0])})),et}}const{findNodeForProperty:R}=c$2,{toDocumentSegment:d$1}=q;function w$3(tt,et,nt){const rt=R(et.$cstNode,"name");return{documentUri:nt.uri,name:et.name,...et.$cstNode&&{selectionSegment:d$1(et.$cstNode)},...rt&&{nameSegment:d$1(rt)},path:tt.getAstNodePath(et),type:Element}}function computeDocumentFqn(tt,et){const nt=tt.c4fqnIndex=new MultiMap,rt=tt.parseResult.value.models.flatMap(tn=>tn.elements);if(rt.length===0)return;const st=et.workspace.AstNodeLocator,ot=core.LinkedList.from(rt.map(tn=>[tn,null]));let en;for(;en=ot.shift();)try{const[tn,nn]=en;if(isRelation(tn))continue;if(isExtendElement(tn)){if(n$3(tn.body)&&!n$5(tn.body.elements)){const rn=getFqnElementRef(tn.element);for(const sn of tn.body.elements)isRelation(sn)||ot.push([sn,rn])}continue}if(isElement(tn)){const rn=core.AsFqn(tn.name,nn);if(nt.add(rn,{...w$3(st,tn,tt),fqn:rn}),ElementOps.writeId(tn,rn),n$3(tn.body)&&!n$5(tn.body.elements))for(const sn of tn.body.elements)isRelation(sn)||ot.push([sn,rn]);continue}core.nonexhaustive(tn)}catch(tn){logWarnError(tn)}}class ADisposable{toDispose=[];isDisposed=!1;onDispose(...et){this.toDispose.push(...et)}dispose(){this.throwIfDisposed(),this.isDisposed=!0;let et;for(;et=this.toDispose.pop();)try{et.dispose()}catch(nt){logError(nt)}}throwIfDisposed(){if(this.isDisposed)throw new Error("This has already been disposed")}}function stringHash(...tt){var et=tt.length>1?tt.join(":::"):tt[0];return core.stringHash(et)}class FqnIndex extends ADisposable{constructor(et){super(),this.services=et,this.langiumDocuments=et.shared.workspace.LangiumDocuments,this.onDispose(et.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.IndexedContent,async(nt,rt)=>{for(const st of nt)if(isLikeC4LangiumDocument(st)){delete st.c4fqnIndex,delete st.c4Elements,delete st.c4Specification,delete st.c4Relations,delete st.c4Deployments,delete st.c4DeploymentRelations,delete st.c4Globals,delete st.c4Views;try{computeDocumentFqn(st,et)}catch(ot){logWarnError(ot)}}return await Promise.resolve()})),logger$1.debug("[FqnIndex] Created")}langiumDocuments;get documents(){return this.langiumDocuments.all.filter(isFqnIndexedDocument)}entries(et){return this.documents.flatMap(nt=>nt.c4fqnIndex.keys().filter(et).flatMap(rt=>nt.c4fqnIndex.get(rt)))}getFqn(et){return ElementOps.readId(et)??null}byFqn(et){return this.documents.flatMap(nt=>nt.c4fqnIndex.get(et))}directChildrenOf(et){return stream([et]).flatMap(nt=>{const rt=this.entries(st=>core.parentFqn(st)===nt).map(st=>[st.name,st]).toArray();return rt.length===0?[]:new MultiMap(rt).entriesGroupedByKey().flatMap(([st,ot])=>ot.length===1?ot:[]).iterator()})}uniqueDescedants(et){return new StreamImpl(()=>{const nt=`${et}.`,rt=new Set,st=[],ot=new MultiMap;if(this.entries(en=>en.startsWith(nt)).forEach(en=>{const tn=core.nameFromFqn(en.fqn),nn={...en,name:tn};core.parentFqn(en.fqn)===et?(rt.add(tn),ot.add(tn,nn)):st.push(nn)}),ot.size+st.length===0)return null;for(const en of st)rt.has(en.name)||ot.add(en.name,en);return ot.entriesGroupedByKey().flatMap(([en,tn])=>tn.length===1?tn:[]).iterator()},nt=>nt?nt.next():DONE_RESULT)}}function assignNavigateTo(tt){const et=new Map;for(const nt of tt)if(core.ComputedView.isElement(nt)&&nt.viewOf&&n$4(nt.extends)){const rt=et.get(nt.viewOf)??[];rt.push(nt.id),et.set(nt.viewOf,rt)}for(const{id:nt,nodes:rt}of tt)for(const st of rt){const ot=core.ComputedNode.modelRef(st);if(st.navigateTo||!ot)continue;const en=f$7(et.get(ot)??[],tn=>tn!==nt);en&&(st.navigateTo=en)}return tt}function v$1(tt,et="/"){const nt=C$1(tt,m$1(nn=>nn.docUri),T(n$7),i$8());if(nt.length===0)return"";if(nt.length===1){const nn=parsePath(nt[0]).pathname.split(et);return nn.length<=1?et:(nn.pop(),nn.join(et)+et)}core.invariant(i$7(nt,2),"Expected at least 2 unique URIs");const[rt,...st]=nt,ot=parsePath(rt).pathname.split(et);let en=ot.length;for(const nn of st){if(nn===rt)continue;const rn=parsePath(nn).pathname.split(et);for(let sn=0;sn<en;sn++)rn[sn]!==ot[sn]&&(en=sn);if(en===0)return""}const tn=ot.slice(0,en).join(et);return tn.endsWith(et)?tn:tn+et}function resolveRelativePaths(tt){const et="/",nt=v$1(tt,et);return tt.map(rt=>{if(!rt.docUri)return{view:rt,parts:[]};let st=parsePath(rt.docUri).pathname;return nt.length>0?(core.invariant(st.startsWith(nt),`Expect path "${st}" to start with common prefix: "${nt}"`),st=st.slice(nt.length)):st=st.includes(et)?st.slice(st.lastIndexOf(et)+1):st,{view:rt,parts:st.split(et)}}).sort((rt,st)=>{if(rt.parts.length!==st.parts.length)return rt.parts.length-st.parts.length;for(let ot=0;ot<rt.parts.length;ot++){const en=core.compareNatural(rt.parts[ot],st.parts[ot]);if(en!==0)return en}return core.compareNatural(rt.view.title??rt.view.id,st.view.title??st.view.id)}).map(({parts:rt,view:st})=>({...st,relativePath:rt.join(et)}))}function Oe(tt,et){const nt={tags:new Set,deployments:{},elements:{},relationships:{},colors:{}},rt={predicates:{},dynamicPredicates:{},styles:{}};for(const $n of et){const{c4Specification:Tn,c4Globals:An}=$n;Tn.tags.forEach(On=>nt.tags.add(On)),Object.assign(nt.elements,Tn.elements),Object.assign(nt.relationships,Tn.relationships),Object.assign(nt.colors,Tn.colors),Object.assign(nt.deployments,Tn.deployments),Object.assign(rt.predicates,An.predicates),Object.assign(rt.dynamicPredicates,An.dynamicPredicates),Object.assign(rt.styles,An.styles)}function st($n,Tn){return m$1(Tn,An=>{try{const On=tt.lsp.DocumentLinkProvider.relativeLink($n,An.url);if(On&&On!==An.url)return{...An,relative:On}}catch(On){logWarnError(On)}return An})}const ot=i$6(nt.colors,$n=>core.computeColorValues($n.color));function en($n){return({tags:Tn,links:An,style:{color:On,shape:Bn,icon:Un,opacity:Yn,border:xn,size:Rn,multiple:yn,padding:Cn,textSize:Fn},id:Mn,kind:zn,title:wr,description:Hn,technology:kn,metadata:pr})=>{try{const br=nt.elements[zn];if(!br)return logger$1.warn`No kind '${zn}' found for ${Mn}`,null;const Ir=An?st($n,An):null;return On??=br.style.color,Bn??=br.style.shape,Un??=br.style.icon,Yn??=br.style.opacity,xn??=br.style.border,kn??=br.technology,yn??=br.style.multiple,Rn??=br.style.size,Cn??=br.style.padding,Fn??=br.style.textSize,{...On&&{color:On},...Bn&&{shape:Bn},...Un&&{icon:Un},...pr&&!n$5(pr)&&{metadata:pr},...br.notation&&{notation:br.notation},style:{...xn&&{border:xn},...Rn&&{size:Rn},...Cn&&{padding:Cn},...Fn&&{textSize:Fn},...e$3(yn)&&{multiple:yn},...e$5(Yn)&&{opacity:Yn}},links:Ir,tags:Tn??null,technology:kn??null,description:Hn??null,title:wr,kind:zn,id:Mn}}catch(br){logWarnError(br)}return null}}const tn=new Map;function nn($n){for(const Tn of $n.c4ExtendElements){let An=Tn.links?st($n,Tn.links):null;const On=tn.get(Tn.id);if(On){An=On.links?[...On.links,...An??[]]:An;let Bn=[...On.tags??[],...Tn.tags??[]];i$7(Bn,1)||(Bn=null),tn.set(Tn.id,{tags:Bn,links:An,metadata:{...On.metadata,...Tn.metadata}})}else tn.set(Tn.id,{tags:Tn.tags??null,links:An,metadata:{...Tn.metadata}})}}function rn($n){const Tn=tn.get($n.id);if(Tn){const An=[...$n.links??[],...Tn.links??[]],On=i$8([...$n.tags??[],...Tn.tags??[]]),Bn={...$n.metadata,...Tn.metadata};return{...$n,tags:i$7(On,1)?On:null,links:i$7(An,1)?An:null,...!n$5(Bn)&&{metadata:Bn}}}return $n}const sn=C$1(et,u$4($n=>(nn($n),m$1($n.c4Elements,en($n)))),T(n$7),core.sortByFqnHierarchically,l$6(($n,Tn)=>{const An=core.parentFqn(Tn.id);return An&&n$4($n[An])?(logger$1.debug`No parent found for ${Tn.id}`,$n):($n[Tn.id]=rn(Tn),$n)},{}));function an($n){return({astPath:Tn,source:An,target:On,kind:Bn,links:Un,id:Yn,...xn})=>{if(n$4(sn[An])||n$4(sn[On]))return logger$1.debug`Invalid relation ${Yn}
|
|
223
|
-
source: ${An} resolved: ${!!sn[An]}
|
|
224
|
-
target: ${On} resolved: ${!!sn[On]}
|
|
225
|
-
at ${$n.uri.path}\n`,null;const Rn=Un?st($n,Un):null;return l$4(Bn)&&Bn in nt.relationships?{...nt.relationships[Bn],...xn,...Rn&&{links:Rn},source:An,target:On,kind:Bn,id:Yn}:{...Rn&&{links:Rn},...xn,source:An,target:On,id:Yn}}}const on=C$1(et,u$4($n=>m$1($n.c4Relations,an($n))),T(n$7),m$2(core.compareRelations),t$4(),c$1(p$6("id")));function cn($n){return Tn=>{if(!core.DeploymentElement.isDeploymentNode(Tn)){if(!Tn.links||Tn.links.length===0)return Tn;const An=st($n,Tn.links);return{...Tn,links:An}}try{const An=nt.deployments[Tn.kind];if(!An)return logger$1.warn`No kind ${Tn.kind} found for ${Tn.id}`,null;let{technology:On=An.technology,notation:Bn=An.notation,links:Un,style:Yn}=Tn;return{...Tn,...Bn&&{notation:Bn},...On&&{technology:On},style:{border:"dashed",opacity:10,...An.style,...Yn},links:Un?st($n,Un):null}}catch(An){logWarnError(An)}return null}}const ln=C$1(et,u$4($n=>m$1($n.c4Deployments,cn($n))),T(n$7),core.sortByFqnHierarchically,l$6(($n,Tn)=>{const An=core.parentFqn(Tn.id);return An&&n$4($n[An])?(logger$1.debug`No parent found for deployment element ${Tn.id}`,$n):($n[Tn.id]=Tn,$n)},{}));function fn($n){return({astPath:Tn,source:An,target:On,kind:Bn,links:Un,id:Yn,...xn})=>{if(n$4(ln[An.id])||n$4(ln[On.id]))return logger$1.warn`Invalid deployment relation ${Yn} at ${$n.uri.path} ${Tn}, source: ${An.id}(${!!ln[An.id]}), target: ${On.id}(${!!ln[On.id]})`,null;const Rn=Un?st($n,Un):null;return l$4(Bn)&&Bn in nt.relationships?{...nt.relationships[Bn],...xn,...Rn&&{links:Rn},source:An,target:On,kind:Bn,id:Yn}:{...Rn&&{links:Rn},...xn,source:An,target:On,id:Yn}}}const gn=C$1(et,u$4($n=>m$1($n.c4DeploymentRelations,fn($n))),T(n$7),l$6(($n,Tn)=>n$3($n[Tn.id])?(logger$1.debug`Duplicate deployment relation ${Tn.id}`,$n):($n[Tn.id]=Tn,$n),{}));function pn($n){const Tn=$n.uri.toString();return An=>{let{id:On,title:Bn,description:Un,tags:Yn,links:xn,astPath:Rn,...yn}=An;An.__==="element"&&n$4(Bn)&&"viewOf"in An&&(Bn=sn[An.viewOf]?.title??null),n$4(Bn)&&On==="index"&&(Bn="Landscape view");const Cn=xn?st($n,xn):null;return{...yn,customColorDefinitions:ot,tags:Yn,links:Cn,docUri:Tn,description:Un,title:Bn,id:On}}}const vn=C$1(et,u$4($n=>m$1($n.c4Views,pn($n))),resolveRelativePaths);vn.some($n=>$n.id==="index")||vn.unshift({__:"element",id:"index",title:"Landscape view",description:null,tags:null,links:null,customColorDefinitions:ot,rules:[{include:[{wildcard:!0}]}]});const bn=C$1(vn,c$1(p$6("id")),computeView$1.resolveRulesExtendedViews);return{specification:{tags:Array.from(nt.tags),elements:nt.elements,relationships:nt.relationships,deployments:nt.deployments},elements:sn,relations:on,globals:rt,views:bn,deployments:{elements:ln,relations:gn}}}const I$1="ParsedLikeC4Model",K$1="ComputedLikeC4Model";class LikeC4ModelBuilder extends ADisposable{constructor(et){super(),this.services=et,this.langiumDocuments=et.shared.workspace.LangiumDocuments;const nt=et.likec4.ModelParser;this.onDispose(et.shared.workspace.DocumentBuilder.onUpdate((rt,st)=>{st.length>0&&this.notifyListeners(st)})),this.onDispose(et.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.Validated,async(rt,st)=>{let ot=[];logger$1.debug`[ModelBuilder] onValidated (${rt.length} docs)`;for(const en of rt)try{ot.push(nt.parse(en).uri)}catch(tn){logWarnError(tn)}await interruptAndCheck(st),ot.length>0&&this.notifyListeners(ot)})),logger$1.debug`[ModelBuilder] Created`}langiumDocuments;listeners=[];unsafeSyncBuildModel(){const et=this.documents();return et.length===0?(logger$1.debug("[ModelBuilder] No documents to build model from"),null):this.services.WorkspaceCache.get(I$1,()=>(logger$1.debug`[ModelBuilder] buildModel (${et.length} docs)`,Oe(this.services,et)))}async buildModel(et){return this.services.WorkspaceCache.get(I$1)||await this.services.shared.workspace.WorkspaceLock.read(async()=>(et&&await interruptAndCheck(et),this.unsafeSyncBuildModel()))}previousViews={};unsafeSyncBuildComputedModel(et){const nt=this.services.WorkspaceCache,rt=this.services.WorkspaceCache;return nt.get(K$1,()=>{const st=core.LikeC4Model.makeCompute(et),ot=[];for(const tn of r$9(et.views)){const nn=st(tn);if(!nn.isSuccess){logWarnError(nn.error);continue}ot.push(nn.view)}assignNavigateTo(ot);const en=l$5(ot,tn=>{const nn=this.previousViews[tn.id],rn=nn&&deepEqual(tn,nn)?nn:tn;return rt.set(ee(tn.id),rn),[tn.id,rn]});return this.previousViews={...en},{...y$5(et,["views"]),views:en}})}async buildComputedModel(et){const nt=this.services.WorkspaceCache;return nt.has(K$1)?nt.get(K$1):await this.services.shared.workspace.WorkspaceLock.read(async()=>{et&&await interruptAndCheck(et);const rt=this.unsafeSyncBuildModel();return rt?this.unsafeSyncBuildComputedModel(rt):null})}async computeView(et,nt){const rt=this.services.WorkspaceCache,st=ee(et);return rt.has(st)?rt.get(st):await this.services.shared.workspace.WorkspaceLock.read(async()=>(nt&&await interruptAndCheck(nt),rt.get(st,()=>{const ot=this.unsafeSyncBuildModel(),en=ot?.views[et];if(!en)return logger$1.warn(`[ModelBuilder] Cannot find view ${et}`),null;const tn=core.LikeC4Model.makeCompute(ot)(en);if(!tn.isSuccess)return logWarnError(tn.error),null;let nn=tn.view;const rn=C$1(ot.views,r$9(),T(core.isScopedElementView),T(an=>an.id!==et),i$5(an=>an.viewOf));for(const an of nn.nodes)if(!an.navigateTo){const on=rn[an.id];on&&(an.navigateTo=on[0].id)}const sn=this.previousViews[et];return sn&&deepEqual(nn,sn)?nn=sn:this.previousViews[et]=nn,nn})))}onModelParsed(et){return this.listeners.push(et),Disposable.create(()=>{const nt=this.listeners.indexOf(et);nt>=0&&this.listeners.splice(nt,1)})}documents(){return this.langiumDocuments.all.filter(isParsedLikeC4LangiumDocument).toArray()}notifyListeners(et){for(const nt of this.listeners)try{nt(et)}catch(rt){logWarnError(rt)}}}function ee(tt){return`computed-view-${tt}`}const{findNodeForKeyword:f$2,findNodeForProperty:s}=c$2,{getDocument:g$2}=f$9;class LikeC4ModelLocator{constructor(et){this.services=et,this.fqnIndex=et.likec4.FqnIndex,this.deploymentsIndex=et.likec4.DeploymentsIndex,this.langiumDocuments=et.shared.workspace.LangiumDocuments}fqnIndex;deploymentsIndex;langiumDocuments;documents(){return this.langiumDocuments.all.filter(isParsedLikeC4LangiumDocument)}getParsedElement(et){if(t$2(et)){const st=et,ot=this.fqnIndex.byFqn(et).head();if(!ot)return null;const en=this.langiumDocuments.getDocument(ot.documentUri);return!en||!isParsedLikeC4LangiumDocument(en)?null:en.c4Elements.find(tn=>tn.id===st)??null}const nt=this.fqnIndex.getFqn(et);if(!nt)return null;const rt=g$2(et);return isParsedLikeC4LangiumDocument(rt)?rt.c4Elements.find(st=>st.id===nt)??null:null}locateElement(et,nt){const rt=this.fqnIndex.byFqn(et).head(),st=rt?.nameSegment??rt?.selectionSegment;return!rt||!st?null:{uri:rt.documentUri.toString(),range:st.range}}locateDeploymentElement(et,nt){const rt=this.deploymentsIndex.byFqn(et).head(),st=rt?.nameSegment??rt?.selectionSegment;return!rt||!st?null:{uri:rt.documentUri.toString(),range:st.range}}locateRelation(et){for(const nt of this.documents()){const rt=nt.c4Relations.find(en=>en.id===et)??nt.c4DeploymentRelations.find(en=>en.id===et);if(!rt)continue;const st=this.services.workspace.AstNodeLocator.getAstNode(nt.parseResult.value,rt.astPath);if(!isRelation(st)&&!isDeploymentRelation(st))continue;let ot=st.title?s(st.$cstNode,"title"):void 0;if(ot??=st.kind?s(st.$cstNode,"kind"):void 0,ot??=s(st.$cstNode,"target"),ot??=st.$cstNode,!!ot)return{uri:nt.uri.toString(),range:ot.range}}return null}locateViewAst(et){for(const nt of this.documents()){const rt=nt.c4Views.find(ot=>ot.id===et);if(!rt)continue;const st=this.services.workspace.AstNodeLocator.getAstNode(nt.parseResult.value,rt.astPath);if(isLikeC4View(st))return{doc:nt,view:rt,viewAst:st}}return null}locateView(et){const nt=this.locateViewAst(et);if(!nt)return null;const rt=nt.viewAst;let st=rt.name?s(rt.$cstNode,"name"):void 0;return st??=f$2(rt.$cstNode,"view"),st??=rt.$cstNode,st?{uri:nt.doc.uri.toString(),range:st.range}:null}}const RESERVED_WORDS=["this","it","self","super","likec4lib","global"];function tryOrLog(tt){return async function(et,nt,rt){try{const st=tt(et,nt,rt);e$4(st)&&await st;return}catch(st){const ot=st instanceof Error?st.message:String(st);nt("error",`Validation failed: ${ot}`,{node:et}),logWarnError(st)}}}const{getDocument:g$1}=f$9,deploymentNodeChecks=tt=>{const et=tt.likec4.DeploymentsIndex,nt=tt.references.NameProvider;return tryOrLog((rt,st)=>{const ot=nt.getName(rt);if(!ot){st("error","DeploymentNode must be named",{node:rt});return}const en=core.nonNullable(nt.getNameNode(rt),"name CstNode not found").range;RESERVED_WORDS.includes(ot)&&st("error",`Reserved word: ${ot}`,{node:rt,range:en});const tn=et.getFqn(rt);et.byFqn(tn).limit(2).toArray().length>1&&st("error",`Duplicate node name "${tn}"`,{node:rt,range:en})})},deployedInstanceChecks=tt=>{const et=tt.likec4.DeploymentsIndex,nt=tt.references.NameProvider;return tryOrLog((rt,st)=>{const ot=nt.getName(rt);if(!ot){st("error","Deployed instance must be named, unique inside node",{node:rt});return}const en=core.nonNullable(nt.getNameNode(rt),"name CstNode not found").range;RESERVED_WORDS.includes(ot)&&st("error",`Reserved word: ${ot}`,{node:rt,range:en});const tn=et.getFqn(rt);et.byFqn(tn).limit(2).toArray().length>1&&st("error",`Duplicate instance name "${tn}"`,{node:rt,range:en})})},deploymentRelationChecks=tt=>{const et=tt.likec4.ModelParser;return tryOrLog((nt,rt)=>{if(!nt.source?.value?.ref){let nn=nt.source?.$cstNode?.text??"";rt("error",`DeploymentRelation source '${nn}' not resolved`,{node:nt,property:"source"});return}if(!nt.target?.value?.ref){let nn=nt.target?.$cstNode?.text??"";rt("error",`DeploymentRelation target '${nn}' not resolved`,{node:nt,property:"target"});return}const st=g$1(nt),ot=et.forDocument(st),en=ot.parseFqnRef(nt.source);if(core.FqnRef.isModelRef(en)){rt("error","DeploymentRelation must refer deployment element",{node:nt,property:"source"});return}const tn=ot.parseFqnRef(nt.target);if(core.FqnRef.isModelRef(tn)){rt("error","DeploymentRelation must refer deployment element",{node:nt,property:"target"});return}core.isSameHierarchy(en.deployment,tn.deployment)&&rt("error","Invalid parent-child relationship",{node:nt})})},dynamicViewRulePredicate=tt=>tryOrLog((et,nt)=>{const rt=elementExpressionFromPredicate(et.value);switch(!0){case isElementKindExpression(rt):case isElementTagExpression(rt):case isWildcardExpression(rt):{nt("warning","Predicate is ignored, as not supported in dynamic views",{node:et});return}}}),dynamicViewStep=tt=>{const et=tt.likec4.FqnIndex;return tryOrLog((nt,rt)=>{const st=elementRef(nt.source),ot=st&&et.getFqn(st);ot||rt("error","Source not found (not parsed/indexed yet)",{node:nt,property:"source"});const en=elementRef(nt.target),tn=en&&et.getFqn(en);tn||rt("error","Target not found (not parsed/indexed yet)",{node:nt,property:"target"}),ot&&tn&&(core.isAncestor(ot,tn)||core.isAncestor(tn,ot))&&rt("error","Invalid parent-child relationship",{node:nt})})},{getDocument:p$2}=f$9,elementChecks=tt=>{const et=tt.likec4.FqnIndex,nt=tt.workspace.AstNodeLocator;return tryOrLog((rt,st)=>{const ot=et.getFqn(rt);if(!ot){st("error","Not indexed element",{node:rt,property:"name"});return}RESERVED_WORDS.includes(rt.name)&&st("error",`Reserved word: ${rt.name}`,{node:rt,property:"name"});const en=p$2(rt).uri,tn=nt.getAstNodePath(rt),nn=et.byFqn(ot).filter(rn=>rn.documentUri!==en||rn.path!==tn).head();if(nn){const rn=nn.documentUri!==en;st("error",`Duplicate element name ${rt.name!==ot?rt.name+" ("+ot+")":rt.name}`,{node:rt,property:"name",...rn&&{relatedInformation:[{location:{range:nn.nameSegment?.range??nn.selectionSegment?.range,uri:nn.documentUri.toString()},message:"conflicting element"}]}})}})},opacityPropertyRuleChecks=tt=>tryOrLog((et,nt)=>{const rt=parseFloat(et.value);(isNaN(rt)||rt<0||rt>100)&&nt("warning","Value ignored, must be between 0% and 100%",{node:et,property:"value"})}),iconPropertyRuleChecks=tt=>(et,nt)=>{const rt=et.$container;rt.props.some(st=>isIconProperty(st)&&st!==et)&&nt("error","Icon must be defined once",{node:et}),isElementStyleProperty(rt)&&isElementBody(rt.$container)&&rt.$container.props.some(st=>isIconProperty(st))&&nt("warning","Redundant as icon defined on element",{node:et})},notesPropertyRuleChecks=tt=>(et,nt)=>{hasContainerOfType(et,isDynamicViewStep)||nt("error","Notes can be defined only inside dynamic view",{node:et})},relationChecks=tt=>{const et=tt.likec4.FqnIndex;return tryOrLog((nt,rt)=>{const st=elementRef(nt.target),ot=st&&et.getFqn(st);ot||rt("error","Target not resolved",{node:nt,property:"target"});let en;if(n$3(nt.source)){if(en=elementRef(nt.source),!en)return rt("error","Source not resolved",{node:nt,property:"source"})}else{if(!isElementBody(nt.$container))return rt("error","Sourceless relation must be nested",{node:nt});en=nt.$container.$container}const tn=et.getFqn(en);tn||rt("error","Source not resolved",{node:nt}),tn&&ot&&core.isSameHierarchy(tn,ot)&&rt("error","Invalid parent-child relationship",{node:nt})})},relationBodyChecks=tt=>tryOrLog((et,nt)=>{et.$container.tags?.values&&et.tags?.values&&nt("error","Relation cannot have tags in both header and body",{node:et.tags})}),specificationRuleChecks=tt=>tryOrLog((et,nt)=>{et.$containerIndex&&et.$containerIndex>0&&nt("warning","Prefer one specification per document",{node:et,property:"name"})}),modelRuleChecks=tt=>tryOrLog((et,nt)=>{et.$containerIndex&&et.$containerIndex>0&&nt("warning","Prefer one model per document",{node:et,property:"name"})}),globalsChecks=tt=>tryOrLog((et,nt)=>{et.$containerIndex&&et.$containerIndex>0&&nt("warning","Prefer one global block per document",{node:et,property:"name"})}),elementKindChecks=tt=>{const et=tt.shared.workspace.IndexManager;return tryOrLog((nt,rt)=>{RESERVED_WORDS.includes(nt.name)&&rt("error",`Reserved word: ${nt.name}`,{node:nt,property:"name"});const st=et.allElements(ElementKind).filter(ot=>ot.name===nt.name&&ot.node!==nt).head();if(st){const ot=st.documentUri!==getDocument(nt).uri;rt("error",`Duplicate element kind '${nt.name}'`,{node:nt,property:"name",...ot&&{relatedInformation:[{location:{range:st.nameSegment.range,uri:st.documentUri.toString()},message:"conflicting definition"}]}})}})},deploymentNodeKindChecks=tt=>{const et=tt.shared.workspace.IndexManager;return tryOrLog((nt,rt)=>{RESERVED_WORDS.includes(nt.name)&&rt("error",`Reserved word: ${nt.name}`,{node:nt,property:"name"});const st=et.allElements(DeploymentNodeKind).filter(ot=>ot.name===nt.name&&ot.node!==nt).head();if(st){const ot=st.documentUri!==getDocument(nt).uri;rt("error",`Duplicate deploymentNode kind '${nt.name}'`,{node:nt,property:"name",...ot&&{relatedInformation:[{location:{range:st.nameSegment.range,uri:st.documentUri.toString()},message:"conflicting definition"}]}})}})},tagChecks=tt=>{const et=tt.shared.workspace.IndexManager;return tryOrLog((nt,rt)=>{const st="#"+nt.name,ot=et.allElements(Tag).filter(en=>en.name===st&&en.node!==nt).head();if(ot){const en=ot.documentUri!==getDocument(nt).uri;rt("error",`Duplicate tag '${nt.name}'`,{node:nt,property:"name",...en&&{relatedInformation:[{location:{range:ot.nameSegment.range,uri:ot.documentUri.toString()},message:"conflicting definition"}]}})}})},relationshipChecks=tt=>{const et=tt.shared.workspace.IndexManager;return tryOrLog((nt,rt)=>{RESERVED_WORDS.includes(nt.name)&&rt("error",`Reserved word: ${nt.name}`,{node:nt,property:"name"}),et.allElements(RelationshipKind).filter(st=>st.name===nt.name).limit(2).count()>1&&rt("error",`Duplicate RelationshipKind '${nt.name}'`,{node:nt,property:"name"})})},globalPredicateChecks=tt=>{const et=tt.shared.workspace.IndexManager;return tryOrLog((nt,rt)=>{const st=et.allElements(GlobalPredicateGroup),ot=et.allElements(GlobalDynamicPredicateGroup);st.concat(ot).filter(en=>en.name===nt.name).limit(2).count()>1&&rt("error",`Duplicate GlobalPredicateGroup or GlobalDynamicPredicateGroup name '${nt.name}'`,{node:nt,property:"name"})})},globalStyleIdChecks=tt=>{const et=tt.shared.workspace.IndexManager;return tryOrLog((nt,rt)=>{et.allElements(GlobalStyleId).filter(st=>st.name===nt.name).limit(2).count()>1&&rt("error",`Duplicate GlobalStyleId name '${nt.name}'`,{node:nt,property:"name"})})},viewChecks=tt=>{const et=tt.shared.workspace.IndexManager;return tryOrLog((nt,rt)=>{nt.name&&(RESERVED_WORDS.includes(nt.name)&&rt("error",`Reserved word: ${nt.name}`,{node:nt,property:"name"}),et.allElements(LikeC4View).filter(st=>st.name===nt.name).limit(2).count()>1&&rt("error",`Duplicate view '${nt.name}'`,{node:nt,property:"name"}))})},elementPredicateWithChecks=tt=>tryOrLog((et,nt)=>{const rt=getContainerOfType(et,isViewRulePredicate);isExcludePredicate(rt)&&nt("error",'Invalid usage inside "exclude"',{node:et});const st=isElementPredicateWhere(et.subject)?et.subject.subject:et.subject;switch(!0){case isElementRef(st):case isElementDescedantsExpression(st):case isExpandElementExpression(st):case isWildcardExpression(st):return;case isElementKindExpression(st):case isElementTagExpression(st):nt("error","Invalid target (expect reference to specific element)",{node:et,property:"subject"});return;default:core.nonexhaustive(st)}}),expandElementExprChecks=tt=>tryOrLog((et,nt)=>{hasContainerOfType(et,isRelationExpression)&&nt("warning","Redundant usage, expand predicate resolves parent element only when used in relations",{node:et})}),relationExprChecks=tt=>{const et=tt.likec4.ModelParser;return tryOrLog((nt,rt)=>{if(nt.$container.$type!=="DeploymentViewRulePredicateExpression")return;const st=getContainerOfType(nt,isDeploymentViewRulePredicate);if(!st||st.isInclude!==!0)return;const ot=getDocument(nt),en=et.forDocument(ot),tn="Model reference is allowed in exclude predicate only";if(isDirectedRelationExpr(nt)){core.FqnExpr.isModelRef(en.parseFqnExpr(nt.source.from))&&rt("error",tn,{node:nt.source,property:"from"}),core.FqnExpr.isModelRef(en.parseFqnExpr(nt.target))&&rt("error",tn,{node:nt,property:"target"});return}let nn;if(isIncomingRelationExpr(nt)?nn=nt.to:isOutgoingRelationExpr(nt)?nn=nt.from:nn=nt.inout.to,core.FqnExpr.isModelRef(en.parseFqnExpr(nn))){rt("error",tn,{node:nt});return}})},fqnRefExprChecks=tt=>{const et=tt.likec4.ModelParser;return tryOrLog((nt,rt)=>{const st=nt.ref.value.ref;if(n$4(st)){rt("error","Invalid empty reference",{node:nt});return}const ot=getDocument(nt),en=et.forDocument(ot).parseFqnRefExpr(nt);if(nt.$container.$type==="DeploymentViewRulePredicateExpression"){if(core.FqnExpr.isModelRef(en)){rt("error","Deployment view predicate must reference deployment model",{node:nt});return}if(core.FqnExpr.isDeploymentRef(en)&&core.FqnRef.isInsideInstanceRef(en.ref)){rt("error","Must reference deployment nodes or instances, but not internals",{node:nt});return}}!isDeploymentNode(st)&&l$4(nt.selector)&&rt("warning",`Selector '${nt.selector}' applies to deployment nodes only, ignored here`,{node:nt,property:"selector"})})},incomingExpressionChecks=tt=>tryOrLog((et,nt)=>{if(isWildcardExpression(et.to)&&!isInOutRelationExpression(et.$container)){const rt=getContainerOfType(et,isElementView);n$4(rt?.viewOf)&&nt("warning","Predicate is ignored as it concerns all relationships",{node:et})}}),outgoingExpressionChecks=tt=>tryOrLog((et,nt)=>{if(isWildcardExpression(et.from)&&!isDirectedRelationExpression(et.$container)){const rt=getContainerOfType(et,isElementView);n$4(rt?.viewOf)&&nt("warning","Predicate is ignored as it concerns all relationships",{node:et})}}),relationPredicateWithChecks=tt=>tryOrLog((et,nt)=>{const rt=getContainerOfType(et,isViewRulePredicate);isExcludePredicate(rt)&&nt("error",'Invalid usage inside "exclude"',{node:et})});function O(tt){return et=>tt.some(nt=>nt(et))}const A=O([isGlobals,isGlobalPredicateGroup,isGlobalDynamicPredicateGroup,isGlobalStyle,isGlobalStyleGroup,isDynamicViewPredicateIterator,isElementPredicateWith,isRelationPredicateWith,isElementExpression,isRelationExpression,isDynamicViewParallelSteps,isDynamicViewStep,isDeploymentViewRule,isDeploymentViewRulePredicate,isExpressionV2,isRelationExpr,isFqnRefExpr,isViewProperty,isStyleProperty,isPredicate,isTags,isViewRule,isDynamicViewRule,isLikeC4View,isViewRuleStyleOrGlobalRef,isDeployedInstance,isDeploymentNode,isDeploymentRelation,isRelationshipStyleProperty,isMetadataProperty,isRelation,isElementProperty,isStringProperty,isNavigateToProperty,isElement,isExtendElement,isSpecificationElementKind,isSpecificationRelationshipKind,isSpecificationDeploymentNodeKind,isSpecificationTag,isSpecificationColor,isSpecificationRule]),M=tt=>{let et=tt;for(;et&&!isLikeC4Grammar(et);){if(A(et))return et;et=et.$container}};function checksFromDiagnostics(tt){const et=tt.state>=DocumentState.Validated?tt.diagnostics?.filter(rt=>rt.severity===DiagnosticSeverity.Error)??[]:[],nt=new WeakSet;for(const{node:rt}of et){if(n$4(rt)||nt.has(rt))continue;nt.add(rt);const st=M(rt);st&&nt.add(st)}return{isValid:rt=>!nt.has(rt),invalidNodes:nt}}function registerValidationChecks(tt){logger$1.debug("registerValidationChecks"),tt.validation.ValidationRegistry.register({DeployedInstance:deployedInstanceChecks(tt),DeploymentNodeKind:deploymentNodeKindChecks(tt),DeploymentNode:deploymentNodeChecks(tt),DeploymentRelation:deploymentRelationChecks(tt),FqnRefExpr:fqnRefExprChecks(tt),RelationExpr:relationExprChecks(tt),NotesProperty:notesPropertyRuleChecks(),OpacityProperty:opacityPropertyRuleChecks(),IconProperty:iconPropertyRuleChecks(),SpecificationRule:specificationRuleChecks(),Model:modelRuleChecks(),Globals:globalsChecks(),GlobalPredicateGroup:globalPredicateChecks(tt),GlobalDynamicPredicateGroup:globalPredicateChecks(tt),GlobalStyleId:globalStyleIdChecks(tt),DynamicViewStep:dynamicViewStep(tt),LikeC4View:viewChecks(tt),Element:elementChecks(tt),ElementKind:elementKindChecks(tt),Relation:relationChecks(tt),RelationBody:relationBodyChecks(),Tag:tagChecks(tt),DynamicViewPredicateIterator:dynamicViewRulePredicate(),ElementPredicateWith:elementPredicateWithChecks(),RelationPredicateWith:relationPredicateWithChecks(),ExpandElementExpression:expandElementExprChecks(),RelationshipKind:relationshipChecks(tt),IncomingRelationExpression:incomingExpressionChecks(),OutgoingRelationExpression:outgoingExpressionChecks()});const et=tt.shared.lsp.Connection;et&&tt.shared.workspace.DocumentBuilder.onUpdate((nt,rt)=>{for(const st of rt)logger$1.debug(`clear diagnostics for deleted ${st.path}`),et.sendDiagnostics({uri:st.toString(),diagnostics:[]})})}function toSingleLine(tt){return l$4(tt)?removeIndent(tt).split(`
|
|
226
|
-
`).join(" "):void 0}function removeIndent(tt){return l$4(tt)?stripIndent(tt).trim():void 0}class BaseParser{constructor(et,nt){this.services=et,this.doc=nt,this.isValid=checksFromDiagnostics(nt).isValid}isValid;resolveFqn(et){if(isDeploymentElement(et))return this.services.likec4.DeploymentsIndex.getFqn(et);if(isExtendElement(et))return getFqnElementRef(et.element);const nt=this.services.likec4.FqnIndex.getFqn(et);return core.invariant(nt,`Not indexed element: ${this.getAstNodePath(et)}`),nt}getAstNodePath(et){return this.services.workspace.AstNodeLocator.getAstNodePath(et)}getMetadata(et){if(!et||!this.isValid(et)||n$5(et.props))return;const nt=C$1(et.props,m$1(rt=>[rt.key,removeIndent(rt.value)]),T(([rt,st])=>n$7(st)),n$1());return n$5(nt)?void 0:nt}convertTags(et){return this.parseTags(et)}parseTags(et){let nt=et?.tags;if(!nt)return null;let rt=[];for(;nt;){try{if(this.isValid(nt)){const st=nt.values.map(ot=>ot.ref?.name).filter(n$7);st.length>0&&rt.push(...st)}}catch{}nt=nt.prev}return rt=i$8(rt.reverse()),core.isNonEmptyArray(rt)?rt:null}convertLinks(et){return this.parseLinks(et)}parseLinks(et){if(!(!et?.props||et.props.length===0))return C$1(et.props,T(isLinkProperty),u$4(nt=>{if(!this.isValid(nt))return[];const rt=nt.value;if(n$7(rt)){const st=n$7(nt.title)?toSingleLine(nt.title):void 0;return st?{url:rt,title:st}:{url:rt}}return[]}))}}function DeploymentModelParser(tt){return class extends tt{parseDeployment(){const et=this.doc;for(const nt of streamDeploymentModel(et))try{switch(!0){case isDeploymentRelation(nt):{this.isValid(nt)&&et.c4DeploymentRelations.push(this.parseDeploymentRelation(nt));break}case isDeployedInstance(nt):et.c4Deployments.push(this.parseDeployedInstance(nt));break;case isDeploymentNode(nt):{et.c4Deployments.push(this.parseDeploymentNode(nt));break}default:core.nonexhaustive(nt)}}catch(rt){logWarnError(rt)}}parseDeploymentNode(et){const nt=this.isValid,rt=this.resolveFqn(et),st=core.nonNullable(et.kind.ref,"DeploymentKind not resolved").name,ot=this.convertTags(et.body),en=et.body?.props.find(isElementStyleProperty)?.props,tn=toElementStyle(en,nt),nn=this.getMetadata(et.body?.props.find(isMetadataProperty)),rn=C$1(et.body?.props??[],T(nt),T(isElementStringProperty),l$5(fn=>[fn.key,fn.value||void 0])),sn=removeIndent(et.title??rn.title),an=removeIndent(rn.description),on=toSingleLine(rn.technology),cn=this.convertLinks(et.body),ln=et.body?.props.find(isIconProperty);if(ln&&nt(ln)){const fn=ln.libicon?.ref?.name??ln.value;n$7(fn)&&(tn.icon=fn)}return{id:rt,kind:st,title:sn??core.nameFromFqn(rt),...nn&&{metadata:nn},...ot&&{tags:ot},...cn&&core.isNonEmptyArray(cn)&&{links:cn},...n$7(on)&&{technology:on},...n$7(an)&&{description:an},style:tn}}parseDeployedInstance(et){const nt=this.isValid,rt=this.resolveFqn(et),st=this.resolveFqn(core.nonNullable(elementRef(et.element),"DeployedInstance element not found")),ot=this.convertTags(et.body),en=et.body?.props.find(isElementStyleProperty)?.props,tn=toElementStyle(en,nt),nn=this.getMetadata(et.body?.props.find(isMetadataProperty)),rn=C$1(et.body?.props??[],T(nt),T(isElementStringProperty),l$5(fn=>[fn.key,fn.value||void 0])),sn=removeIndent(et.title??rn.title),an=removeIndent(rn.description),on=toSingleLine(rn.technology),cn=this.convertLinks(et.body),ln=et.body?.props.find(isIconProperty);if(ln&&nt(ln)){const fn=ln.libicon?.ref?.name??ln.value;n$7(fn)&&(tn.icon=fn)}return{id:rt,element:st,...nn&&{metadata:nn},...sn&&{title:sn},...ot&&{tags:ot},...cn&&core.isNonEmptyArray(cn)&&{links:cn},...n$7(on)&&{technology:on},...n$7(an)&&{description:an},style:tn}}parseDeploymentRelation(et){const nt=this.isValid,rt=this.getAstNodePath(et),st=core.FqnRef.toDeploymentRef(this.parseFqnRef(et.source)),ot=core.FqnRef.toDeploymentRef(this.parseFqnRef(et.target)),en=this.convertTags(et)??this.convertTags(et.body),tn=this.convertLinks(et.body),nn=et.kind?.ref?.name,rn=this.getMetadata(et.body?.props.find(isMetadataProperty)),sn=l$5(et.body?.props.filter(isRelationStringProperty)??[],gn=>[gn.key,gn.value]),an=C$1(et.body?.props??[],T(isRelationNavigateToProperty),m$1(gn=>gn.value.view.ref?.name),T(n$7),d$5()),on=removeIndent(et.title??sn.title),cn=removeIndent(sn.description),ln=toSingleLine(et.technology)??removeIndent(sn.technology),fn=et.body?.props.find(isRelationStyleProperty);return{id:stringHash("deployment",rt,st.id,ot.id),source:st,target:ot,...on&&{title:on},...rn&&{metadata:rn},...n$7(ln)&&{technology:ln},...n$7(cn)&&{description:cn},...nn&&{kind:nn},...en&&{tags:en},...core.isNonEmptyArray(tn)&&{links:tn},...toRelationshipStyleExcludeDefaults(fn?.props,nt),...an&&{navigateTo:an},astPath:rt}}}}function utf8Count(tt){const et=tt.length;let nt=0,rt=0;for(;rt<et;){let st=tt.charCodeAt(rt++);if(st&4294967168)if(!(st&4294965248))nt+=2;else{if(st>=55296&&st<=56319&&rt<et){const ot=tt.charCodeAt(rt);(ot&64512)===56320&&(++rt,st=((st&1023)<<10)+(ot&1023)+65536)}st&4294901760?nt+=4:nt+=3}else{nt++;continue}}return nt}function utf8EncodeJs(tt,et,nt){const rt=tt.length;let st=nt,ot=0;for(;ot<rt;){let en=tt.charCodeAt(ot++);if(en&4294967168)if(!(en&4294965248))et[st++]=en>>6&31|192;else{if(en>=55296&&en<=56319&&ot<rt){const tn=tt.charCodeAt(ot);(tn&64512)===56320&&(++ot,en=((en&1023)<<10)+(tn&1023)+65536)}en&4294901760?(et[st++]=en>>18&7|240,et[st++]=en>>12&63|128,et[st++]=en>>6&63|128):(et[st++]=en>>12&15|224,et[st++]=en>>6&63|128)}else{et[st++]=en;continue}et[st++]=en&63|128}}const sharedTextEncoder=new TextEncoder,TEXT_ENCODER_THRESHOLD=50;function utf8EncodeTE(tt,et,nt){sharedTextEncoder.encodeInto(tt,et.subarray(nt))}function utf8Encode(tt,et,nt){tt.length>TEXT_ENCODER_THRESHOLD?utf8EncodeTE(tt,et,nt):utf8EncodeJs(tt,et,nt)}const CHUNK_SIZE=4096;function utf8DecodeJs(tt,et,nt){let rt=et;const st=rt+nt,ot=[];let en="";for(;rt<st;){const tn=tt[rt++];if(!(tn&128))ot.push(tn);else if((tn&224)===192){const nn=tt[rt++]&63;ot.push((tn&31)<<6|nn)}else if((tn&240)===224){const nn=tt[rt++]&63,rn=tt[rt++]&63;ot.push((tn&31)<<12|nn<<6|rn)}else if((tn&248)===240){const nn=tt[rt++]&63,rn=tt[rt++]&63,sn=tt[rt++]&63;let an=(tn&7)<<18|nn<<12|rn<<6|sn;an>65535&&(an-=65536,ot.push(an>>>10&1023|55296),an=56320|an&1023),ot.push(an)}else ot.push(tn);ot.length>=CHUNK_SIZE&&(en+=String.fromCharCode(...ot),ot.length=0)}return ot.length>0&&(en+=String.fromCharCode(...ot)),en}const sharedTextDecoder=new TextDecoder,TEXT_DECODER_THRESHOLD=200;function utf8DecodeTD(tt,et,nt){const rt=tt.subarray(et,et+nt);return sharedTextDecoder.decode(rt)}function utf8Decode(tt,et,nt){return nt>TEXT_DECODER_THRESHOLD?utf8DecodeTD(tt,et,nt):utf8DecodeJs(tt,et,nt)}class ExtData{constructor(et,nt){this.type=et,this.data=nt}}class DecodeError extends Error{constructor(et){super(et);const nt=Object.create(DecodeError.prototype);Object.setPrototypeOf(this,nt),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:DecodeError.name})}}const UINT32_MAX=4294967295;function setUint64(tt,et,nt){const rt=nt/4294967296,st=nt;tt.setUint32(et,rt),tt.setUint32(et+4,st)}function setInt64(tt,et,nt){const rt=Math.floor(nt/4294967296),st=nt;tt.setUint32(et,rt),tt.setUint32(et+4,st)}function getInt64(tt,et){const nt=tt.getInt32(et),rt=tt.getUint32(et+4);return nt*4294967296+rt}function getUint64(tt,et){const nt=tt.getUint32(et),rt=tt.getUint32(et+4);return nt*4294967296+rt}const EXT_TIMESTAMP=-1,TIMESTAMP32_MAX_SEC=4294967296-1,TIMESTAMP64_MAX_SEC=17179869184-1;function encodeTimeSpecToTimestamp({sec:tt,nsec:et}){if(tt>=0&&et>=0&&tt<=TIMESTAMP64_MAX_SEC)if(et===0&&tt<=TIMESTAMP32_MAX_SEC){const nt=new Uint8Array(4);return new DataView(nt.buffer).setUint32(0,tt),nt}else{const nt=tt/4294967296,rt=tt&4294967295,st=new Uint8Array(8),ot=new DataView(st.buffer);return ot.setUint32(0,et<<2|nt&3),ot.setUint32(4,rt),st}else{const nt=new Uint8Array(12),rt=new DataView(nt.buffer);return rt.setUint32(0,et),setInt64(rt,4,tt),nt}}function encodeDateToTimeSpec(tt){const et=tt.getTime(),nt=Math.floor(et/1e3),rt=(et-nt*1e3)*1e6,st=Math.floor(rt/1e9);return{sec:nt+st,nsec:rt-st*1e9}}function encodeTimestampExtension(tt){if(tt instanceof Date){const et=encodeDateToTimeSpec(tt);return encodeTimeSpecToTimestamp(et)}else return null}function decodeTimestampToTimeSpec(tt){const et=new DataView(tt.buffer,tt.byteOffset,tt.byteLength);switch(tt.byteLength){case 4:return{sec:et.getUint32(0),nsec:0};case 8:{const nt=et.getUint32(0),rt=et.getUint32(4),st=(nt&3)*4294967296+rt,ot=nt>>>2;return{sec:st,nsec:ot}}case 12:{const nt=getInt64(et,4),rt=et.getUint32(0);return{sec:nt,nsec:rt}}default:throw new DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${tt.length}`)}}function decodeTimestampExtension(tt){const et=decodeTimestampToTimeSpec(tt);return new Date(et.sec*1e3+et.nsec/1e6)}const timestampExtension={type:EXT_TIMESTAMP,encode:encodeTimestampExtension,decode:decodeTimestampExtension};class ExtensionCodec{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(timestampExtension)}register({type:et,encode:nt,decode:rt}){if(et>=0)this.encoders[et]=nt,this.decoders[et]=rt;else{const st=-1-et;this.builtInEncoders[st]=nt,this.builtInDecoders[st]=rt}}tryToEncode(et,nt){for(let rt=0;rt<this.builtInEncoders.length;rt++){const st=this.builtInEncoders[rt];if(st!=null){const ot=st(et,nt);if(ot!=null){const en=-1-rt;return new ExtData(en,ot)}}}for(let rt=0;rt<this.encoders.length;rt++){const st=this.encoders[rt];if(st!=null){const ot=st(et,nt);if(ot!=null){const en=rt;return new ExtData(en,ot)}}}return et instanceof ExtData?et:null}decode(et,nt,rt){const st=nt<0?this.builtInDecoders[-1-nt]:this.decoders[nt];return st?st(et,nt,rt):new ExtData(nt,et)}}ExtensionCodec.defaultCodec=new ExtensionCodec;function isArrayBufferLike(tt){return tt instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&tt instanceof SharedArrayBuffer}function ensureUint8Array(tt){return tt instanceof Uint8Array?tt:ArrayBuffer.isView(tt)?new Uint8Array(tt.buffer,tt.byteOffset,tt.byteLength):isArrayBufferLike(tt)?new Uint8Array(tt):Uint8Array.from(tt)}var __addDisposableResource$1=function(tt,et,nt){if(et!=null){if(typeof et!="object"&&typeof et!="function")throw new TypeError("Object expected.");var rt,st;if(nt){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");rt=et[Symbol.asyncDispose]}if(rt===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");rt=et[Symbol.dispose],nt&&(st=rt)}if(typeof rt!="function")throw new TypeError("Object not disposable.");st&&(rt=function(){try{st.call(this)}catch(ot){return Promise.reject(ot)}}),tt.stack.push({value:et,dispose:rt,async:nt})}else nt&&tt.stack.push({async:!0});return et},__disposeResources$1=function(tt){return function(et){function nt(en){et.error=et.hasError?new tt(en,et.error,"An error was suppressed during disposal."):en,et.hasError=!0}var rt,st=0;function ot(){for(;rt=et.stack.pop();)try{if(!rt.async&&st===1)return st=0,et.stack.push(rt),Promise.resolve().then(ot);if(rt.dispose){var en=rt.dispose.call(rt.value);if(rt.async)return st|=2,Promise.resolve(en).then(ot,function(tn){return nt(tn),ot()})}else st|=1}catch(tn){nt(tn)}if(st===1)return et.hasError?Promise.reject(et.error):Promise.resolve();if(et.hasError)throw et.error}return ot()}}(typeof SuppressedError=="function"?SuppressedError:function(tt,et,nt){var rt=new Error(nt);return rt.name="SuppressedError",rt.error=tt,rt.suppressed=et,rt});const DEFAULT_MAX_DEPTH=100,DEFAULT_INITIAL_BUFFER_SIZE=2048;class Encoder{constructor(et){this.entered=!1,this.extensionCodec=et?.extensionCodec??ExtensionCodec.defaultCodec,this.context=et?.context,this.useBigInt64=et?.useBigInt64??!1,this.maxDepth=et?.maxDepth??DEFAULT_MAX_DEPTH,this.initialBufferSize=et?.initialBufferSize??DEFAULT_INITIAL_BUFFER_SIZE,this.sortKeys=et?.sortKeys??!1,this.forceFloat32=et?.forceFloat32??!1,this.ignoreUndefined=et?.ignoreUndefined??!1,this.forceIntegerToFloat=et?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new Encoder({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}enteringGuard(){return this.entered=!0,{[Symbol.dispose]:()=>{this.entered=!1}}}encodeSharedRef(et){const nt={stack:[],error:void 0,hasError:!1};try{if(this.entered)return this.clone().encodeSharedRef(et);const rt=__addDisposableResource$1(nt,this.enteringGuard(),!1);return this.reinitializeState(),this.doEncode(et,1),this.bytes.subarray(0,this.pos)}catch(rt){nt.error=rt,nt.hasError=!0}finally{__disposeResources$1(nt)}}encode(et){const nt={stack:[],error:void 0,hasError:!1};try{if(this.entered)return this.clone().encode(et);const rt=__addDisposableResource$1(nt,this.enteringGuard(),!1);return this.reinitializeState(),this.doEncode(et,1),this.bytes.slice(0,this.pos)}catch(rt){nt.error=rt,nt.hasError=!0}finally{__disposeResources$1(nt)}}doEncode(et,nt){if(nt>this.maxDepth)throw new Error(`Too deep objects in depth ${nt}`);et==null?this.encodeNil():typeof et=="boolean"?this.encodeBoolean(et):typeof et=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(et):this.encodeNumber(et):typeof et=="string"?this.encodeString(et):this.useBigInt64&&typeof et=="bigint"?this.encodeBigInt64(et):this.encodeObject(et,nt)}ensureBufferSizeToWrite(et){const nt=this.pos+et;this.view.byteLength<nt&&this.resizeBuffer(nt*2)}resizeBuffer(et){const nt=new ArrayBuffer(et),rt=new Uint8Array(nt),st=new DataView(nt);rt.set(this.bytes),this.view=st,this.bytes=rt}encodeNil(){this.writeU8(192)}encodeBoolean(et){et===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(et){!this.forceIntegerToFloat&&Number.isSafeInteger(et)?et>=0?et<128?this.writeU8(et):et<256?(this.writeU8(204),this.writeU8(et)):et<65536?(this.writeU8(205),this.writeU16(et)):et<4294967296?(this.writeU8(206),this.writeU32(et)):this.useBigInt64?this.encodeNumberAsFloat(et):(this.writeU8(207),this.writeU64(et)):et>=-32?this.writeU8(224|et+32):et>=-128?(this.writeU8(208),this.writeI8(et)):et>=-32768?(this.writeU8(209),this.writeI16(et)):et>=-2147483648?(this.writeU8(210),this.writeI32(et)):this.useBigInt64?this.encodeNumberAsFloat(et):(this.writeU8(211),this.writeI64(et)):this.encodeNumberAsFloat(et)}encodeNumberAsFloat(et){this.forceFloat32?(this.writeU8(202),this.writeF32(et)):(this.writeU8(203),this.writeF64(et))}encodeBigInt64(et){et>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(et)):(this.writeU8(211),this.writeBigInt64(et))}writeStringHeader(et){if(et<32)this.writeU8(160+et);else if(et<256)this.writeU8(217),this.writeU8(et);else if(et<65536)this.writeU8(218),this.writeU16(et);else if(et<4294967296)this.writeU8(219),this.writeU32(et);else throw new Error(`Too long string: ${et} bytes in UTF-8`)}encodeString(et){const rt=utf8Count(et);this.ensureBufferSizeToWrite(5+rt),this.writeStringHeader(rt),utf8Encode(et,this.bytes,this.pos),this.pos+=rt}encodeObject(et,nt){const rt=this.extensionCodec.tryToEncode(et,this.context);if(rt!=null)this.encodeExtension(rt);else if(Array.isArray(et))this.encodeArray(et,nt);else if(ArrayBuffer.isView(et))this.encodeBinary(et);else if(typeof et=="object")this.encodeMap(et,nt);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(et)}`)}encodeBinary(et){const nt=et.byteLength;if(nt<256)this.writeU8(196),this.writeU8(nt);else if(nt<65536)this.writeU8(197),this.writeU16(nt);else if(nt<4294967296)this.writeU8(198),this.writeU32(nt);else throw new Error(`Too large binary: ${nt}`);const rt=ensureUint8Array(et);this.writeU8a(rt)}encodeArray(et,nt){const rt=et.length;if(rt<16)this.writeU8(144+rt);else if(rt<65536)this.writeU8(220),this.writeU16(rt);else if(rt<4294967296)this.writeU8(221),this.writeU32(rt);else throw new Error(`Too large array: ${rt}`);for(const st of et)this.doEncode(st,nt+1)}countWithoutUndefined(et,nt){let rt=0;for(const st of nt)et[st]!==void 0&&rt++;return rt}encodeMap(et,nt){const rt=Object.keys(et);this.sortKeys&&rt.sort();const st=this.ignoreUndefined?this.countWithoutUndefined(et,rt):rt.length;if(st<16)this.writeU8(128+st);else if(st<65536)this.writeU8(222),this.writeU16(st);else if(st<4294967296)this.writeU8(223),this.writeU32(st);else throw new Error(`Too large map object: ${st}`);for(const ot of rt){const en=et[ot];this.ignoreUndefined&&en===void 0||(this.encodeString(ot),this.doEncode(en,nt+1))}}encodeExtension(et){if(typeof et.data=="function"){const rt=et.data(this.pos+6),st=rt.length;if(st>=4294967296)throw new Error(`Too large extension object: ${st}`);this.writeU8(201),this.writeU32(st),this.writeI8(et.type),this.writeU8a(rt);return}const nt=et.data.length;if(nt===1)this.writeU8(212);else if(nt===2)this.writeU8(213);else if(nt===4)this.writeU8(214);else if(nt===8)this.writeU8(215);else if(nt===16)this.writeU8(216);else if(nt<256)this.writeU8(199),this.writeU8(nt);else if(nt<65536)this.writeU8(200),this.writeU16(nt);else if(nt<4294967296)this.writeU8(201),this.writeU32(nt);else throw new Error(`Too large extension object: ${nt}`);this.writeI8(et.type),this.writeU8a(et.data)}writeU8(et){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,et),this.pos++}writeU8a(et){const nt=et.length;this.ensureBufferSizeToWrite(nt),this.bytes.set(et,this.pos),this.pos+=nt}writeI8(et){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,et),this.pos++}writeU16(et){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,et),this.pos+=2}writeI16(et){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,et),this.pos+=2}writeU32(et){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,et),this.pos+=4}writeI32(et){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,et),this.pos+=4}writeF32(et){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,et),this.pos+=4}writeF64(et){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,et),this.pos+=8}writeU64(et){this.ensureBufferSizeToWrite(8),setUint64(this.view,this.pos,et),this.pos+=8}writeI64(et){this.ensureBufferSizeToWrite(8),setInt64(this.view,this.pos,et),this.pos+=8}writeBigUint64(et){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,et),this.pos+=8}writeBigInt64(et){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,et),this.pos+=8}}function encode(tt,et){return new Encoder(et).encodeSharedRef(tt)}function prettyByte(tt){return`${tt<0?"-":""}0x${Math.abs(tt).toString(16).padStart(2,"0")}`}const DEFAULT_MAX_KEY_LENGTH=16,DEFAULT_MAX_LENGTH_PER_KEY=16;class CachedKeyDecoder{constructor(et=DEFAULT_MAX_KEY_LENGTH,nt=DEFAULT_MAX_LENGTH_PER_KEY){this.hit=0,this.miss=0,this.maxKeyLength=et,this.maxLengthPerKey=nt,this.caches=[];for(let rt=0;rt<this.maxKeyLength;rt++)this.caches.push([])}canBeCached(et){return et>0&&et<=this.maxKeyLength}find(et,nt,rt){const st=this.caches[rt-1];e:for(const ot of st){const en=ot.bytes;for(let tn=0;tn<rt;tn++)if(en[tn]!==et[nt+tn])continue e;return ot.str}return null}store(et,nt){const rt=this.caches[et.length-1],st={bytes:et,str:nt};rt.length>=this.maxLengthPerKey?rt[Math.random()*rt.length|0]=st:rt.push(st)}decode(et,nt,rt){const st=this.find(et,nt,rt);if(st!=null)return this.hit++,st;this.miss++;const ot=utf8DecodeJs(et,nt,rt),en=Uint8Array.prototype.slice.call(et,nt,nt+rt);return this.store(en,ot),ot}}var __addDisposableResource=function(tt,et,nt){if(et!=null){if(typeof et!="object"&&typeof et!="function")throw new TypeError("Object expected.");var rt,st;if(nt){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");rt=et[Symbol.asyncDispose]}if(rt===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");rt=et[Symbol.dispose],nt&&(st=rt)}if(typeof rt!="function")throw new TypeError("Object not disposable.");st&&(rt=function(){try{st.call(this)}catch(ot){return Promise.reject(ot)}}),tt.stack.push({value:et,dispose:rt,async:nt})}else nt&&tt.stack.push({async:!0});return et},__disposeResources=function(tt){return function(et){function nt(en){et.error=et.hasError?new tt(en,et.error,"An error was suppressed during disposal."):en,et.hasError=!0}var rt,st=0;function ot(){for(;rt=et.stack.pop();)try{if(!rt.async&&st===1)return st=0,et.stack.push(rt),Promise.resolve().then(ot);if(rt.dispose){var en=rt.dispose.call(rt.value);if(rt.async)return st|=2,Promise.resolve(en).then(ot,function(tn){return nt(tn),ot()})}else st|=1}catch(tn){nt(tn)}if(st===1)return et.hasError?Promise.reject(et.error):Promise.resolve();if(et.hasError)throw et.error}return ot()}}(typeof SuppressedError=="function"?SuppressedError:function(tt,et,nt){var rt=new Error(nt);return rt.name="SuppressedError",rt.error=tt,rt.suppressed=et,rt});const STATE_ARRAY="array",STATE_MAP_KEY="map_key",STATE_MAP_VALUE="map_value",isValidMapKeyType=tt=>typeof tt=="string"||typeof tt=="number";class StackPool{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(et){const nt=this.getUninitializedStateFromPool();nt.type=STATE_ARRAY,nt.position=0,nt.size=et,nt.array=new Array(et)}pushMapState(et){const nt=this.getUninitializedStateFromPool();nt.type=STATE_MAP_KEY,nt.readCount=0,nt.size=et,nt.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){const et={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(et)}return this.stack[this.stackHeadPosition]}release(et){if(this.stack[this.stackHeadPosition]!==et)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(et.type===STATE_ARRAY){const rt=et;rt.size=0,rt.array=void 0,rt.position=0,rt.type=void 0}if(et.type===STATE_MAP_KEY||et.type===STATE_MAP_VALUE){const rt=et;rt.size=0,rt.map=void 0,rt.readCount=0,rt.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}const HEAD_BYTE_REQUIRED=-1,EMPTY_VIEW=new DataView(new ArrayBuffer(0)),EMPTY_BYTES=new Uint8Array(EMPTY_VIEW.buffer);try{EMPTY_VIEW.getInt8(0)}catch(tt){if(!(tt instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}const MORE_DATA=new RangeError("Insufficient data"),sharedCachedKeyDecoder=new CachedKeyDecoder;class Decoder{constructor(et){this.totalPos=0,this.pos=0,this.view=EMPTY_VIEW,this.bytes=EMPTY_BYTES,this.headByte=HEAD_BYTE_REQUIRED,this.stack=new StackPool,this.entered=!1,this.extensionCodec=et?.extensionCodec??ExtensionCodec.defaultCodec,this.context=et?.context,this.useBigInt64=et?.useBigInt64??!1,this.rawStrings=et?.rawStrings??!1,this.maxStrLength=et?.maxStrLength??UINT32_MAX,this.maxBinLength=et?.maxBinLength??UINT32_MAX,this.maxArrayLength=et?.maxArrayLength??UINT32_MAX,this.maxMapLength=et?.maxMapLength??UINT32_MAX,this.maxExtLength=et?.maxExtLength??UINT32_MAX,this.keyDecoder=et?.keyDecoder!==void 0?et.keyDecoder:sharedCachedKeyDecoder}clone(){return new Decoder({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=HEAD_BYTE_REQUIRED,this.stack.reset()}setBuffer(et){const nt=ensureUint8Array(et);this.bytes=nt,this.view=new DataView(nt.buffer,nt.byteOffset,nt.byteLength),this.pos=0}appendBuffer(et){if(this.headByte===HEAD_BYTE_REQUIRED&&!this.hasRemaining(1))this.setBuffer(et);else{const nt=this.bytes.subarray(this.pos),rt=ensureUint8Array(et),st=new Uint8Array(nt.length+rt.length);st.set(nt),st.set(rt,nt.length),this.setBuffer(st)}}hasRemaining(et){return this.view.byteLength-this.pos>=et}createExtraByteError(et){const{view:nt,pos:rt}=this;return new RangeError(`Extra ${nt.byteLength-rt} of ${nt.byteLength} byte(s) found at buffer[${et}]`)}enteringGuard(){return this.entered=!0,{[Symbol.dispose]:()=>{this.entered=!1}}}decode(et){const nt={stack:[],error:void 0,hasError:!1};try{if(this.entered)return this.clone().decode(et);const rt=__addDisposableResource(nt,this.enteringGuard(),!1);this.reinitializeState(),this.setBuffer(et);const st=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return st}catch(rt){nt.error=rt,nt.hasError=!0}finally{__disposeResources(nt)}}*decodeMulti(et){const nt={stack:[],error:void 0,hasError:!1};try{if(this.entered){yield*this.clone().decodeMulti(et);return}const rt=__addDisposableResource(nt,this.enteringGuard(),!1);for(this.reinitializeState(),this.setBuffer(et);this.hasRemaining(1);)yield this.doDecodeSync()}catch(rt){nt.error=rt,nt.hasError=!0}finally{__disposeResources(nt)}}async decodeAsync(et){const nt={stack:[],error:void 0,hasError:!1};try{if(this.entered)return this.clone().decodeAsync(et);const rt=__addDisposableResource(nt,this.enteringGuard(),!1);let st=!1,ot;for await(const rn of et){if(st)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(rn);try{ot=this.doDecodeSync(),st=!0}catch(sn){if(!(sn instanceof RangeError))throw sn}this.totalPos+=this.pos}if(st){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return ot}const{headByte:en,pos:tn,totalPos:nn}=this;throw new RangeError(`Insufficient data in parsing ${prettyByte(en)} at ${nn} (${tn} in the current buffer)`)}catch(rt){nt.error=rt,nt.hasError=!0}finally{__disposeResources(nt)}}decodeArrayStream(et){return this.decodeMultiAsync(et,!0)}decodeStream(et){return this.decodeMultiAsync(et,!1)}async*decodeMultiAsync(et,nt){const rt={stack:[],error:void 0,hasError:!1};try{if(this.entered){yield*this.clone().decodeMultiAsync(et,nt);return}const st=__addDisposableResource(rt,this.enteringGuard(),!1);let ot=nt,en=-1;for await(const tn of et){if(nt&&en===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(tn),ot&&(en=this.readArraySize(),ot=!1,this.complete());try{for(;yield this.doDecodeSync(),--en!==0;);}catch(nn){if(!(nn instanceof RangeError))throw nn}this.totalPos+=this.pos}}catch(st){rt.error=st,rt.hasError=!0}finally{__disposeResources(rt)}}doDecodeSync(){e:for(;;){const et=this.readHeadByte();let nt;if(et>=224)nt=et-256;else if(et<192)if(et<128)nt=et;else if(et<144){const st=et-128;if(st!==0){this.pushMapState(st),this.complete();continue e}else nt={}}else if(et<160){const st=et-144;if(st!==0){this.pushArrayState(st),this.complete();continue e}else nt=[]}else{const st=et-160;nt=this.decodeString(st,0)}else if(et===192)nt=null;else if(et===194)nt=!1;else if(et===195)nt=!0;else if(et===202)nt=this.readF32();else if(et===203)nt=this.readF64();else if(et===204)nt=this.readU8();else if(et===205)nt=this.readU16();else if(et===206)nt=this.readU32();else if(et===207)this.useBigInt64?nt=this.readU64AsBigInt():nt=this.readU64();else if(et===208)nt=this.readI8();else if(et===209)nt=this.readI16();else if(et===210)nt=this.readI32();else if(et===211)this.useBigInt64?nt=this.readI64AsBigInt():nt=this.readI64();else if(et===217){const st=this.lookU8();nt=this.decodeString(st,1)}else if(et===218){const st=this.lookU16();nt=this.decodeString(st,2)}else if(et===219){const st=this.lookU32();nt=this.decodeString(st,4)}else if(et===220){const st=this.readU16();if(st!==0){this.pushArrayState(st),this.complete();continue e}else nt=[]}else if(et===221){const st=this.readU32();if(st!==0){this.pushArrayState(st),this.complete();continue e}else nt=[]}else if(et===222){const st=this.readU16();if(st!==0){this.pushMapState(st),this.complete();continue e}else nt={}}else if(et===223){const st=this.readU32();if(st!==0){this.pushMapState(st),this.complete();continue e}else nt={}}else if(et===196){const st=this.lookU8();nt=this.decodeBinary(st,1)}else if(et===197){const st=this.lookU16();nt=this.decodeBinary(st,2)}else if(et===198){const st=this.lookU32();nt=this.decodeBinary(st,4)}else if(et===212)nt=this.decodeExtension(1,0);else if(et===213)nt=this.decodeExtension(2,0);else if(et===214)nt=this.decodeExtension(4,0);else if(et===215)nt=this.decodeExtension(8,0);else if(et===216)nt=this.decodeExtension(16,0);else if(et===199){const st=this.lookU8();nt=this.decodeExtension(st,1)}else if(et===200){const st=this.lookU16();nt=this.decodeExtension(st,2)}else if(et===201){const st=this.lookU32();nt=this.decodeExtension(st,4)}else throw new DecodeError(`Unrecognized type byte: ${prettyByte(et)}`);this.complete();const rt=this.stack;for(;rt.length>0;){const st=rt.top();if(st.type===STATE_ARRAY)if(st.array[st.position]=nt,st.position++,st.position===st.size)nt=st.array,rt.release(st);else continue e;else if(st.type===STATE_MAP_KEY){if(!isValidMapKeyType(nt))throw new DecodeError("The type of key must be string or number but "+typeof nt);if(nt==="__proto__")throw new DecodeError("The key __proto__ is not allowed");st.key=nt,st.type=STATE_MAP_VALUE;continue e}else if(st.map[st.key]=nt,st.readCount++,st.readCount===st.size)nt=st.map,rt.release(st);else{st.key=null,st.type=STATE_MAP_KEY;continue e}}return nt}}readHeadByte(){return this.headByte===HEAD_BYTE_REQUIRED&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=HEAD_BYTE_REQUIRED}readArraySize(){const et=this.readHeadByte();switch(et){case 220:return this.readU16();case 221:return this.readU32();default:{if(et<160)return et-144;throw new DecodeError(`Unrecognized array type byte: ${prettyByte(et)}`)}}}pushMapState(et){if(et>this.maxMapLength)throw new DecodeError(`Max length exceeded: map length (${et}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(et)}pushArrayState(et){if(et>this.maxArrayLength)throw new DecodeError(`Max length exceeded: array length (${et}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(et)}decodeString(et,nt){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(et,nt):this.decodeBinary(et,nt)}decodeUtf8String(et,nt){if(et>this.maxStrLength)throw new DecodeError(`Max length exceeded: UTF-8 byte length (${et}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+nt+et)throw MORE_DATA;const rt=this.pos+nt;let st;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(et)?st=this.keyDecoder.decode(this.bytes,rt,et):st=utf8Decode(this.bytes,rt,et),this.pos+=nt+et,st}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===STATE_MAP_KEY:!1}decodeBinary(et,nt){if(et>this.maxBinLength)throw new DecodeError(`Max length exceeded: bin length (${et}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(et+nt))throw MORE_DATA;const rt=this.pos+nt,st=this.bytes.subarray(rt,rt+et);return this.pos+=nt+et,st}decodeExtension(et,nt){if(et>this.maxExtLength)throw new DecodeError(`Max length exceeded: ext length (${et}) > maxExtLength (${this.maxExtLength})`);const rt=this.view.getInt8(this.pos+nt),st=this.decodeBinary(et,nt+1);return this.extensionCodec.decode(st,rt,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){const et=this.view.getUint8(this.pos);return this.pos++,et}readI8(){const et=this.view.getInt8(this.pos);return this.pos++,et}readU16(){const et=this.view.getUint16(this.pos);return this.pos+=2,et}readI16(){const et=this.view.getInt16(this.pos);return this.pos+=2,et}readU32(){const et=this.view.getUint32(this.pos);return this.pos+=4,et}readI32(){const et=this.view.getInt32(this.pos);return this.pos+=4,et}readU64(){const et=getUint64(this.view,this.pos);return this.pos+=8,et}readI64(){const et=getInt64(this.view,this.pos);return this.pos+=8,et}readU64AsBigInt(){const et=this.view.getBigUint64(this.pos);return this.pos+=8,et}readI64AsBigInt(){const et=this.view.getBigInt64(this.pos);return this.pos+=8,et}readF32(){const et=this.view.getFloat32(this.pos);return this.pos+=4,et}readF64(){const et=this.view.getFloat64(this.pos);return this.pos+=8,et}}function decode(tt,et){return new Decoder(et).decode(tt)}const isArrayBuffer=tt=>typeof ArrayBuffer=="function"&&tt instanceof ArrayBuffer||Object.prototype.toString.call(tt)==="[object ArrayBuffer]",fromArrayBuffer=(tt,et=0,nt=tt.byteLength-et)=>{if(!isArrayBuffer(tt))throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof tt} (${tt})`);return buffer.Buffer.from(tt,et,nt)},fromString=(tt,et)=>{if(typeof tt!="string")throw new TypeError(`The "input" argument must be of type string. Received type ${typeof tt} (${tt})`);return et?buffer.Buffer.from(tt,et):buffer.Buffer.from(tt)},BASE64_REGEX=/^[A-Za-z0-9+/]*={0,2}$/,fromBase64=tt=>{if(tt.length*3%4!==0)throw new TypeError("Incorrect padding on base64 string.");if(!BASE64_REGEX.exec(tt))throw new TypeError("Invalid base64 string.");const et=fromString(tt,"base64");return new Uint8Array(et.buffer,et.byteOffset,et.byteLength)},fromUtf8=tt=>{const et=fromString(tt,"utf8");return new Uint8Array(et.buffer,et.byteOffset,et.byteLength/Uint8Array.BYTES_PER_ELEMENT)},toBase64=tt=>{let et;if(typeof tt=="string"?et=fromUtf8(tt):et=tt,typeof et!="object"||typeof et.byteOffset!="number"||typeof et.byteLength!="number")throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return fromArrayBuffer(et.buffer,et.byteOffset,et.byteLength).toString("base64")},{getDocument:k}=f$9;function w$2({nodes:tt,edges:et,...nt}){return{...nt,nodes:i$6(tt,({x:rt,y:st,width:ot,height:en,isCompound:tn,...nn})=>({...nn,b:[rt,st,ot,en],c:tn})),edges:i$6(et,({points:rt,controlPoints:st,labelBBox:ot,dotpos:en,...tn})=>({...!!st&&{cp:st},...!!ot&&{l:ot},...!!en&&{dp:en},...tn,p:rt}))}}function y$1({nodes:tt,edges:et,autoLayout:nt,...rt}){return{...rt,autoLayout:core.isAutoLayoutDirection(nt)?{direction:nt}:nt,nodes:i$6(tt,({b:st,c:ot,...en})=>({x:st[0],y:st[1],width:st[2],height:st[3],isCompound:ot,...en})),edges:i$6(et,({p:st,cp:ot,l:en,dp:tn,...nn})=>({...!!ot&&{controlPoints:ot},...!!en&&{labelBBox:en},...!!tn&&{dotpos:tn},...nn,points:st}))}}const m=500;function serializeToComment(tt){const et=encode(w$2(tt)),nt=toBase64(et),rt=[];let st=0;for(;st<nt.length;)rt.push(" * "+nt.slice(st,Math.min(st+m,nt.length))),st+=m;return rt.unshift("/**"," * @likec4-generated(v1)"),rt.push(" */"),rt.join(`
|
|
227
|
-
`)}function hasManualLayout(tt){return tt.includes("@likec4-generated")}function deserializeFromComment(tt){if(!hasManualLayout(tt))throw new Error(`Not a likec4-generated comment: ${tt}`);const et=tt.trim().split(`
|
|
228
|
-
`).filter(rt=>!rt.includes("**")&&!rt.includes("@likec4-")&&!rt.includes("*/")).map(rt=>rt.replaceAll("*","").trim()).join(""),nt=fromBase64(et);return y$1(decode(nt))}function parseViewManualLayout(tt){const et=findCommentNode(tt.$cstNode,["BLOCK_COMMENT"]);if(!(!et||!hasManualLayout(et.text)))try{return deserializeFromComment(et.text)}catch(nt){const rt=k(tt);logWarnError(nt),logger$1.warn(`Ignoring manual layout of "${tt.name??"unnamed"}" at ${rt.uri.fsPath}:${1+(et.range.start.line||0)}`);return}}function DeploymentViewParser(tt){return class extends tt{parseDeploymentView(et){const nt=et.body;core.invariant(nt,"DynamicElementView body is not defined");const rt=nt.props.filter(this.isValid),st=this.getAstNodePath(et);let ot=et.name;ot||(ot="deployment_"+stringHash(this.doc.uri.toString(),st));const en=toSingleLine(rt.find(an=>an.key==="title")?.value)??null,tn=removeIndent(rt.find(an=>an.key==="description")?.value)??null,nn=this.convertTags(nt),rn=this.convertLinks(nt);ViewOps.writeId(et,ot);const sn=parseViewManualLayout(et);return{__:"deployment",id:ot,astPath:st,title:en,description:tn,tags:nn,links:core.isNonEmptyArray(rn)?rn:null,rules:nt.rules.flatMap(an=>{try{return this.isValid(an)?this.parseDeploymentViewRule(an):[]}catch(on){return logWarnError(on),[]}}),...sn&&{manualLayout:sn}}}parseDeploymentViewRule(et){if(isDeploymentViewRulePredicate(et))return this.parseDeploymentViewRulePredicate(et);if(isViewRuleAutoLayout(et))return toAutoLayout(et);if(isDeploymentViewRuleStyle(et))return this.parseDeploymentViewRuleStyle(et);core.nonexhaustive(et)}parseDeploymentViewRulePredicate(et){const nt=[];let rt=et.expr;for(;rt;){try{const st=rt.value;if(l$4(st)&&this.isValid(st))switch(!0){case isFqnExpr(st):nt.unshift(this.parseFqnExpr(st));break;case isElementPredicateWhereV2(st):nt.unshift(this.parseElementWhereExpr(st));break;case isRelationExpr(st):nt.unshift(this.parseRelationExpr(st));break;case isRelationPredicateWhereV2(st):nt.unshift(this.parseRelationWhereExpr(st));break;default:core.nonexhaustive(st)}}catch(st){logWarnError(st)}rt=rt.prev}return et.isInclude?{include:nt}:{exclude:nt}}parseDeploymentViewRuleStyle(et){const nt=et.props.filter(isStyleProperty),rt=et.props.find(isNotationProperty),st=removeIndent(rt?.value);return{targets:this.parseFqnExpressions(et.targets),...st&&{notation:st},style:{...toElementStyle(nt,this.isValid)}}}}}function instanceRef(tt){let et;for(;et=tt.value?.ref;){if(isDeploymentNode(et))return null;if(isDeployedInstance(et))return et;if(n$4(tt.parent))return null;tt=tt.parent}return null}const f$1=({operator:tt,not:et},nt)=>tt.startsWith("!=")?{neq:nt}:tt.startsWith("=")?{eq:nt}:et?{neq:nt}:{eq:nt};function l(tt){return!isWhereRelationParticipantKind(tt)&&!isWhereRelationParticipantTag(tt)?null:tt.participant}function parseWhereClause(tt){switch(!0){case isWhereTagEqual(tt):{const et=tt.value?.ref?.name,nt=l(tt);core.invariant(et,"Expected tag name");const rt={tag:f$1(tt,et)};return nt?{participant:nt,operator:rt}:rt}case isWhereKindEqual(tt):{const et=tt.value?.ref?.name,nt=l(tt);core.invariant(et,"Expected kind name");const rt={kind:f$1(tt,et)};return nt?{participant:nt,operator:rt}:rt}case(isWhereElementNegation(tt)||isWhereRelationNegation(tt)):return{not:parseWhereClause(tt.value)};case isWhereBinaryExpression(tt):{const et=parseWhereClause(tt.left),nt=parseWhereClause(tt.right),rt=tt.operator.toLowerCase();switch(rt){case"and":{const st=[core.isAndOperator(et)?et.and:et,core.isAndOperator(nt)?nt.and:nt].flat();return core.invariant(core.isNonEmptyArray(st),"Expected non-empty array"),{and:st}}case"or":{const st=[core.isOrOperator(et)?et.or:et,core.isOrOperator(nt)?nt.or:nt].flat();return core.invariant(core.isNonEmptyArray(st),"Expected non-empty array"),{or:st}}default:core.nonexhaustive(rt)}}default:core.nonexhaustive(tt)}}function ExpressionV2Parser(tt){return class extends tt{parseFqnRef(et){const nt=core.nonNullable(et.value.ref,`FqnRef is empty ${et.$cstNode?.range.start.line}:${et.$cstNode?.range.start.character}`);if(isElement(nt)){const rt=instanceRef(et);if(!rt)return{model:this.resolveFqn(nt)};const st=this.resolveFqn(rt),ot=this.resolveFqn(nt);return{deployment:st,element:ot}}if(isDeploymentElement(nt))return{deployment:this.resolveFqn(nt)};core.nonexhaustive(nt)}parseFqnExpr(et){if(isWildcardExpression(et))return{wildcard:!0};if(isFqnRefExpr(et))return this.parseFqnRefExpr(et);core.nonexhaustive(et)}parseFqnRefExpr(et){const nt=this.parseFqnRef(et.ref);switch(!0){case et.selector==="._":return{ref:nt,selector:"expanded"};case et.selector===".**":return{ref:nt,selector:"descendants"};case et.selector===".*":return{ref:nt,selector:"children"};default:return{ref:nt}}}parseElementWhereExpr(et){return{where:{expr:this.parseFqnExpr(et.subject),condition:et.where?parseWhereClause(et.where):{kind:{neq:"--always-true--"}}}}}parseFqnExpressions(et){const nt=[];let rt=et;for(;rt;){try{l$4(rt.value)&&this.isValid(rt.value)&&nt.push(this.parseFqnExpr(rt.value))}catch(st){logWarnError(st)}rt=rt.prev}return nt.reverse()}parseRelationWhereExpr(et){return{where:{expr:this.parseRelationExpr(et.subject),condition:et.where?parseWhereClause(et.where):{kind:{neq:"--always-true--"}}}}}parseRelationExpr(et){if(isRelationPredicateWhere(et),isDirectedRelationExpr(et))return{source:this.parseFqnExpr(et.source.from),target:this.parseFqnExpr(et.target),isBidirectional:et.source.isBidirectional};if(isInOutRelationExpr(et))return{inout:this.parseFqnExpr(et.inout.to)};if(isOutgoingRelationExpr(et))return{outgoing:this.parseFqnExpr(et.from)};if(isIncomingRelationExpr(et))return{incoming:this.parseFqnExpr(et.to)};core.nonexhaustive(et)}}}function GlobalsParser(tt){return class extends tt{parseGlobals(){const{parseResult:et,c4Globals:nt}=this.doc,rt=this.isValid,st=et.value.globals.filter(rt),ot=st.flatMap(tn=>tn.predicates.filter(rt));for(const tn of ot)try{const nn=tn.name;if(!n$7(nn))continue;if(nn in nt.predicates){logger$1.warn(`Global predicate named "${nn}" is already defined`);continue}this.parseAndStoreGlobalPredicateGroupOrDynamic(tn,nn,nt)}catch(nn){logWarnError(nn)}const en=st.flatMap(tn=>tn.styles.filter(rt));for(const tn of en)try{const nn=tn.id.name;if(!n$7(nn))continue;if(nn in nt.styles){logger$1.warn(`Global style named "${nn}" is already defined`);continue}const rn=this.parseGlobalStyleOrGroup(tn);rn.length>0&&(nt.styles[nn]=rn)}catch(nn){logWarnError(nn)}}parseAndStoreGlobalPredicateGroupOrDynamic(et,nt,rt){if(isGlobalPredicateGroup(et)){const st=this.parseGlobalPredicateGroup(et);st.length>0&&(rt.predicates[nt]=st);return}if(isGlobalDynamicPredicateGroup(et)){const st=this.parseGlobalDynamicPredicateGroup(et);st.length>0&&(rt.dynamicPredicates[nt]=st);return}core.nonexhaustive(et)}parseGlobalPredicateGroup(et){return et.predicates.map(nt=>this.parseViewRulePredicate(nt))}parseGlobalDynamicPredicateGroup(et){return et.predicates.map(nt=>this.parseDynamicViewIncludePredicate(nt))}parseGlobalStyleOrGroup(et){if(isGlobalStyle(et))return[this.parseViewRuleStyle(et)];if(isGlobalStyleGroup(et))return et.styles.map(nt=>this.parseViewRuleStyle(nt));core.nonexhaustive(et)}}}function ModelParser(tt){return class extends tt{parseModel(){const et=this.doc;for(const nt of streamModel(et))try{if(isElement(nt)){et.c4Elements.push(this.parseElement(nt));continue}if(isRelation(nt)){this.isValid(nt)&&et.c4Relations.push(this.parseRelation(nt));continue}if(isExtendElement(nt)){const rt=this.parseExtendElement(nt);rt&&et.c4ExtendElements.push(rt);continue}core.nonexhaustive(nt)}catch(rt){logWarnError(rt)}}parseElement(et){const nt=this.isValid,rt=this.resolveFqn(et),st=core.nonNullable(et.kind.ref,"Element kind is not resolved").name,ot=this.parseTags(et.body),en=et.body?.props.find(isElementStyleProperty)?.props,tn=toElementStyle(en,nt),nn=this.getMetadata(et.body?.props.find(isMetadataProperty)),rn=this.getAstNodePath(et);let[sn,an,on]=et.props??[];const cn=C$1(et.body?.props??[],T(nt),T(isElementStringProperty),l$5(gn=>[gn.key,gn.value||void 0]));sn=removeIndent(sn??cn.title),an=removeIndent(cn.description??an),on=toSingleLine(cn.technology??on);const ln=this.parseLinks(et.body),fn=et.body?.props.find(isIconProperty);if(fn&&nt(fn)){const gn=fn.libicon?.ref?.name??fn.value;n$7(gn)&&(tn.icon=gn)}return{id:rt,kind:st,astPath:rn,title:sn??et.name,...nn&&{metadata:nn},...ot&&{tags:ot},...ln&&core.isNonEmptyArray(ln)&&{links:ln},...n$7(on)&&{technology:on},...n$7(an)&&{description:an},style:tn}}parseExtendElement(et){this.isValid;const nt=this.resolveFqn(et),rt=this.parseTags(et.body),st=this.getMetadata(et.body?.props.find(isMetadataProperty)),ot=this.getAstNodePath(et),en=this.parseLinks(et.body)??[];return!rt&&n$5(st??{})&&n$5(en)?null:{id:nt,astPath:ot,...st&&{metadata:st},...rt&&{tags:rt},...en&&core.isNonEmptyArray(en)&&{links:en}}}parseRelation(et){const nt=this.isValid,rt=resolveRelationPoints(et),st=this.resolveFqn(rt.target),ot=this.resolveFqn(rt.source),en=this.parseTags(et)??this.parseTags(et.body),tn=this.parseLinks(et.body),nn=et.kind?.ref?.name,rn=this.getMetadata(et.body?.props.find(isMetadataProperty)),sn=this.getAstNodePath(et),an=l$5(et.body?.props.filter(isRelationStringProperty).filter(pn=>l$4(pn.value))??[],pn=>[pn.key,pn.value]),on=C$1(et.body?.props??[],T(isRelationNavigateToProperty),m$1(pn=>pn.value.view.ref?.name),T(n$7),d$5()),cn=removeIndent(et.title??an.title)??"",ln=removeIndent(an.description),fn=toSingleLine(et.technology)??removeIndent(an.technology),gn=et.body?.props.find(isRelationStyleProperty);return{id:stringHash(sn,ot,st),astPath:sn,source:ot,target:st,title:cn,...rn&&{metadata:rn},...n$7(fn)&&{technology:fn},...n$7(ln)&&{description:ln},...nn&&{kind:nn},...en&&{tags:en},...core.isNonEmptyArray(tn)&&{links:tn},...toRelationshipStyleExcludeDefaults(gn?.props,nt),...on&&{navigateTo:on}}}}}function PredicatesParser(tt){return class extends tt{parsePredicate(et){if(isElementPredicate(et))return this.parseElementPredicate(et);if(isRelationPredicate(et))return this.parseRelationPredicate(et);core.nonexhaustive(et)}parseElementPredicate(et){if(isElementPredicateWith(et))return this.parseElementPredicateWith(et);if(isElementPredicateWhere(et))return this.parseElementPredicateWhere(et);if(isElementExpression(et))return this.parseElementExpression(et);core.nonexhaustive(et)}parseElementExpressionsIterator(et){const nt=[];let rt=et;for(;rt;){try{rt.value&&nt.unshift(this.parseElementExpression(rt.value))}catch(st){logWarnError(st)}rt=rt.prev}return nt}parseElementExpression(et){if(isWildcardExpression(et))return{wildcard:!0};if(isElementKindExpression(et))return core.invariant(et.kind?.ref,"ElementKindExpr kind is not resolved: "+et.$cstNode?.text),{elementKind:et.kind.ref.name,isEqual:et.isEqual};if(isElementTagExpression(et)){core.invariant(et.tag?.ref,"ElementTagExpr tag is not resolved: "+et.$cstNode?.text);let nt=et.tag.$refText;return nt.startsWith("#")&&(nt=nt.slice(1)),{elementTag:nt,isEqual:et.isEqual}}if(isExpandElementExpression(et)){const nt=elementRef(et.expand);return core.invariant(nt,"Element not found "+et.expand.$cstNode?.text),{expanded:this.resolveFqn(nt)}}if(isElementDescedantsExpression(et)){const nt=elementRef(et.parent);return core.invariant(nt,"Element not found "+et.parent.$cstNode?.text),{element:this.resolveFqn(nt),isChildren:et.suffix===".*",isDescendants:et.suffix===".**"}}if(isElementRef(et)){const nt=elementRef(et);return core.invariant(nt,"Element not found "+et.$cstNode?.text),{element:this.resolveFqn(nt)}}core.nonexhaustive(et)}parseElementPredicateWhere(et){return{where:{expr:this.parseElementExpression(et.subject),condition:et.where?parseWhereClause(et.where):{kind:{neq:"--always-true--"}}}}}parseElementPredicateWith(et){const nt=this.parseElementPredicate(et.subject);return(et.custom?.props??[]).reduce((rt,st)=>{if(!this.isValid(st))return rt;if(isNavigateToProperty(st)){const ot=st.value.view.$refText;return n$7(ot)&&(rt.custom.navigateTo=ot),rt}if(isElementStringProperty(st))return n$3(st.value)&&(rt.custom[st.key]=removeIndent(st.value)||""),rt;if(isIconProperty(st)){const ot=st.libicon?.ref?.name??st.value;return n$3(ot)&&(rt.custom[st.key]=ot),rt}if(isColorProperty(st)){const ot=toColor(st);return n$3(ot)&&(rt.custom[st.key]=ot),rt}if(isShapeProperty(st)||isBorderProperty(st))return n$3(st.value)&&(rt.custom[st.key]=st.value),rt;if(isOpacityProperty(st))return n$3(st.value)&&(rt.custom[st.key]=parseAstOpacityProperty(st)),rt;if(isNotationProperty(st))return n$7(st.value)&&(rt.custom[st.key]=removeIndent(st.value)),rt;if(isMultipleProperty(st))return e$3(st.value)&&(rt.custom[st.key]=st.value),rt;if(isShapeSizeProperty(st)||isTextSizeProperty(st)||isPaddingSizeProperty(st))return n$7(st.value)&&(rt.custom[st.key]=parseAstSizeValue(st)),rt;core.nonexhaustive(st)},{custom:{expr:nt}})}parseRelationPredicate(et){if(isRelationPredicateWith(et)){let nt=isRelationPredicateWhere(et.subject)?this.parseRelationPredicateWhere(et.subject):this.parseRelationExpression(et.subject);return this.parseRelationPredicateWith(et,nt)}if(isRelationPredicateWhere(et))return this.parseRelationPredicateWhere(et);if(isRelationExpression(et))return this.parseRelationExpression(et);core.nonexhaustive(et)}parseRelationPredicateWhere(et){return{where:{expr:this.parseRelationExpression(et.subject),condition:et.where?parseWhereClause(et.where):{kind:{neq:"--always-true--"}}}}}parseRelationPredicateWith(et,nt){return(et.custom?.props??[]).reduce((rt,st)=>{if(isRelationStringProperty(st)||isNotationProperty(st)||isNotesProperty(st))return n$3(st.value)&&(rt.customRelation[st.key]=removeIndent(st.value)??""),rt;if(isArrowProperty(st))return n$7(st.value)&&(rt.customRelation[st.key]=st.value),rt;if(isColorProperty(st)){const ot=toColor(st);return n$7(ot)&&(rt.customRelation[st.key]=ot),rt}if(isLineProperty(st))return n$7(st.value)&&(rt.customRelation[st.key]=st.value),rt;if(isRelationNavigateToProperty(st)){const ot=st.value.view.ref?.name;return n$7(ot)&&(rt.customRelation.navigateTo=ot),rt}core.nonexhaustive(st)},{customRelation:{relation:nt}})}parseRelationExpression(et){if(isDirectedRelationExpression(et))return{source:this.parseElementExpression(et.source.from),target:this.parseElementExpression(et.target),isBidirectional:et.source.isBidirectional};if(isInOutRelationExpression(et))return{inout:this.parseElementExpression(et.inout.to)};if(isOutgoingRelationExpression(et))return{outgoing:this.parseElementExpression(et.from)};if(isIncomingRelationExpression(et))return{incoming:this.parseElementExpression(et.to)};core.nonexhaustive(et)}}}function SpecificationParser(tt){return class extends tt{parseSpecification(){const{parseResult:{value:{specifications:et}},c4Specification:nt}=this.doc,rt=this.isValid,st=et.flatMap(rn=>rn.elements.filter(this.isValid));for(const{kind:rn,props:sn}of st)try{const an=rn.name;if(!n$7(an))continue;if(an in nt.elements){logger$1.warn(`Element kind "${an}" is already defined`);continue}const on=sn.find(isElementStyleProperty),cn=C$1(sn.filter(isSpecificationElementStringProperty)??[],T(ln=>this.isValid(ln)&&l$4(ln.value)),l$5(ln=>[ln.key,removeIndent(ln.value)]));nt.elements[an]={...cn,style:{...toElementStyle(on?.props,this.isValid)}}}catch(an){logWarnError(an)}const ot=et.flatMap(rn=>rn.relationships.filter(this.isValid));for(const{kind:rn,props:sn}of ot)try{const an=rn.name;if(!n$7(an))continue;if(an in nt.relationships){logger$1.warn(`Relationship kind "${an}" is already defined`);continue}const on=C$1(sn.filter(isSpecificationRelationshipStringProperty)??[],T(cn=>this.isValid(cn)&&l$4(cn.value)),l$5(cn=>[cn.key,removeIndent(cn.value)]));nt.relationships[an]={...on,...toRelationshipStyleExcludeDefaults(sn,this.isValid)}}catch(an){logWarnError(an)}const en=et.flatMap(rn=>rn.tags.filter(this.isValid));for(const rn of en){const sn=rn.tag.name;n$7(sn)&&nt.tags.add(sn)}const tn=et.flatMap(rn=>rn.deploymentNodes.filter(rt));for(const rn of tn)try{Object.assign(nt.deployments,this.parseSpecificationDeploymentNodeKind(rn))}catch(sn){logWarnError(sn)}const nn=et.flatMap(rn=>rn.colors.filter(rt));for(const{name:rn,color:sn}of nn)try{const an=rn.name;if(an in nt.colors){logger$1.warn(`Custom color "${an}" is already defined`);continue}nt.colors[an]={color:sn}}catch(an){logWarnError(an)}}parseSpecificationDeploymentNodeKind({kind:et,props:nt}){const rt=et.name;if(!n$7(rt))throw new Error("DeploymentNodeKind name is not resolved");const st=nt.find(isElementStyleProperty),ot=C$1(nt.filter(isSpecificationElementStringProperty)??[],T(en=>this.isValid(en)&&l$4(en.value)),l$5(en=>[en.key,removeIndent(en.value)]));return{[rt]:{...ot,style:{...toElementStyle(st?.props,this.isValid)}}}}}}function ViewsParser(tt){return class extends tt{parseViews(){const et=this.isValid;for(const nt of this.doc.parseResult.value.views){const rt=nt.styles.flatMap(st=>{try{return et(st)?this.parseViewRuleStyleOrGlobalRef(st):[]}catch(ot){return logWarnError(ot),[]}});for(const st of nt.views)try{if(!et(st))continue;switch(!0){case isElementView(st):this.doc.c4Views.push(this.parseElementView(st,rt));break;case isDynamicView(st):this.doc.c4Views.push(this.parseDynamicElementView(st,rt));break;case isDeploymentView(st):this.doc.c4Views.push(this.parseDeploymentView(st));break;default:core.nonexhaustive(st)}}catch(ot){logWarnError(ot)}}}parseElementView(et,nt){const rt=et.body;core.invariant(rt,"ElementView body is not defined");const st=this.getAstNodePath(et);let ot=null;if("viewOf"in et){const cn=elementRef(et.viewOf),ln=cn&&this.resolveFqn(cn);ln?ot=ln:logger$1.warn("viewOf is not resolved: "+et.$cstNode?.text)}let en=et.name;en||(en="view_"+stringHash(this.doc.uri.toString(),st,ot??""));const tn=toSingleLine(rt.props.find(cn=>cn.key==="title")?.value)??null,nn=removeIndent(rt.props.find(cn=>cn.key==="description")?.value)??null,rn=this.convertTags(rt),sn=this.convertLinks(rt),an=parseViewManualLayout(et),on={__:"element",id:en,astPath:st,title:tn,description:nn,tags:rn,links:core.isNonEmptyArray(sn)?sn:null,rules:[...nt,...rt.rules.flatMap(cn=>{try{return this.isValid(cn)?this.parseViewRule(cn):[]}catch(ln){return logWarnError(ln),[]}})],...ot&&{viewOf:ot},...an&&{manualLayout:an}};if(ViewOps.writeId(et,on.id),"extends"in et){const cn=et.extends.view.ref;return core.invariant(cn?.name,"view extends is not resolved: "+et.$cstNode?.text),Object.assign(on,{extends:cn.name})}return on}parseViewRule(et){if(isViewRulePredicate(et))return this.parseViewRulePredicate(et);if(isViewRuleGlobalPredicateRef(et))return this.parseViewRuleGlobalPredicateRef(et);if(isViewRuleStyleOrGlobalRef(et))return this.parseViewRuleStyleOrGlobalRef(et);if(isViewRuleAutoLayout(et))return toAutoLayout(et);if(isViewRuleGroup(et))return this.parseViewRuleGroup(et);core.nonexhaustive(et)}parseViewRulePredicate(et){const nt=[];let rt=et.predicates;for(;rt;){const{value:st,prev:ot}=rt;try{n$7(st)&&this.isValid(st)&&nt.unshift(this.parsePredicate(st))}catch(en){logWarnError(en)}if(!ot)break;rt=ot}return isIncludePredicate(et)?{include:nt}:{exclude:nt}}parseViewRuleGlobalPredicateRef(et){return{predicateId:et.predicate.$refText}}parseViewRuleStyleOrGlobalRef(et){if(isViewRuleStyle(et))return this.parseViewRuleStyle(et);if(isViewRuleGlobalStyle(et))return this.parseViewRuleGlobalStyle(et);core.nonexhaustive(et)}parseViewRuleGroup(et){const nt=[];for(const rt of et.groupRules)try{if(!this.isValid(rt))continue;if(isViewRulePredicate(rt)){nt.push(this.parseViewRulePredicate(rt));continue}if(isViewRuleGroup(rt)){nt.push(this.parseViewRuleGroup(rt));continue}core.nonexhaustive(rt)}catch(st){logWarnError(st)}return{title:toSingleLine(et.title)??null,groupRules:nt,...toElementStyle(et.props,this.isValid)}}parseViewRuleStyle(et){const nt=et.props.filter(isStyleProperty),rt=et.target,st=et.props.find(isNotationProperty);return this.parseRuleStyle(nt,rt,st)}parseRuleStyle(et,nt,rt){const st=toElementStyle(et,this.isValid),ot=removeIndent(rt?.value);return{targets:this.parseElementExpressionsIterator(nt),...ot&&{notation:ot},style:{...st}}}parseViewRuleGlobalStyle(et){return{styleId:et.style.$refText}}parseDynamicElementView(et,nt){const rt=et.body;core.invariant(rt,"DynamicElementView body is not defined");const st=this.isValid,ot=rt.props.filter(st),en=this.getAstNodePath(et);let tn=et.name;tn||(tn="dynamic_"+stringHash(this.doc.uri.toString(),en));const nn=toSingleLine(ot.find(cn=>cn.key==="title")?.value)??null,rn=removeIndent(ot.find(cn=>cn.key==="description")?.value)??null,sn=this.convertTags(rt),an=this.convertLinks(rt);ViewOps.writeId(et,tn);const on=parseViewManualLayout(et);return{__:"dynamic",id:tn,astPath:en,title:nn,description:rn,tags:sn,links:core.isNonEmptyArray(an)?an:null,rules:[...nt,...rt.rules.flatMap(cn=>{try{return st(cn)?this.parseDynamicViewRule(cn):[]}catch(ln){return logWarnError(ln),[]}},[])],steps:rt.steps.reduce((cn,ln)=>{try{st(ln)&&(isDynamicViewParallelSteps(ln)?cn.push(this.parseDynamicParallelSteps(ln)):cn.push(this.parseDynamicStep(ln)))}catch(fn){logWarnError(fn)}return cn},[]),...on&&{manualLayout:on}}}parseDynamicViewRule(et){if(isDynamicViewIncludePredicate(et))return this.parseDynamicViewIncludePredicate(et);if(isDynamicViewGlobalPredicateRef(et))return this.parseViewRuleGlobalPredicateRef(et);if(isViewRuleStyleOrGlobalRef(et))return this.parseViewRuleStyleOrGlobalRef(et);if(isViewRuleAutoLayout(et))return toAutoLayout(et);core.nonexhaustive(et)}parseDynamicViewIncludePredicate(et){const nt=[];let rt=et.predicates;for(;rt;){try{if(l$4(rt.value)&&this.isValid(rt.value)){const st=this.parseElementPredicate(rt.value);nt.unshift(st)}}catch(st){logWarnError(st)}rt=rt.prev}return{include:nt}}parseDynamicParallelSteps(et){return{__parallel:et.steps.map(nt=>this.parseDynamicStep(nt))}}parseDynamicStep(et){const nt=elementRef(et.source);if(!nt)throw new Error("Invalid reference to source");const rt=elementRef(et.target);if(!rt)throw new Error("Invalid reference to target");let st=this.resolveFqn(nt),ot=this.resolveFqn(rt);const en=removeIndent(et.title)??null;let tn={source:st,target:ot,title:en};if(et.isBackward&&(tn={source:ot,target:st,title:en,isBackward:!0}),!o$5(et.custom?.props))return tn;for(const nn of et.custom.props)try{switch(!0){case isRelationNavigateToProperty(nn):{const rn=nn.value.view.ref?.name;n$7(rn)&&(tn.navigateTo=rn);break}case isRelationStringProperty(nn):case isNotationProperty(nn):case isNotesProperty(nn):{n$3(nn.value)&&(tn[nn.key]=removeIndent(nn.value)??"");break}case isArrowProperty(nn):{n$3(nn.value)&&(tn[nn.key]=nn.value);break}case isColorProperty(nn):{const rn=toColor(nn);n$3(rn)&&(tn[nn.key]=rn);break}case isLineProperty(nn):{n$3(nn.value)&&(tn[nn.key]=nn.value);break}default:core.nonexhaustive(nn)}}catch(rn){logWarnError(rn)}return tn}}}const w$1=C$1(BaseParser,ExpressionV2Parser,ModelParser,DeploymentModelParser,DeploymentViewParser,PredicatesParser,SpecificationParser,ViewsParser,GlobalsParser);class DocumentParser extends w$1{}class LikeC4ModelParser{constructor(et){this.services=et,this.cachedParsers=new DocumentCache(et.shared,DocumentState.Validated)}cachedParsers;parse(et){core.invariant(isFqnIndexedDocument(et),`Not a FqnIndexedDocument: ${et.uri.toString(!0)}`);try{et=Object.assign(et,{c4Specification:{tags:new Set,elements:{},relationships:{},colors:{},deployments:{}},c4Elements:[],c4ExtendElements:[],c4Relations:[],c4Deployments:[],c4DeploymentRelations:[],c4Globals:{predicates:{},dynamicPredicates:{},styles:{}},c4Views:[]});const nt=this.forDocument(et);return nt.parseSpecification(),nt.parseModel(),nt.parseGlobals(),nt.parseDeployment(),nt.parseViews(),nt.doc}catch(nt){throw new Error(`Error parsing document ${et.uri.toString()}`,{cause:nt})}}forDocument(et){return core.invariant(isFqnIndexedDocument(et),`Not a FqnIndexedDocument: ${et.uri.toString(!0)}`),this.cachedParsers.get(et.uri,"DocumentParser",()=>new DocumentParser(this.services,et))}}const{findNodeForKeyword:v}=c$2,K=(tt,et,nt=0)=>{const rt=nt>0?" ".repeat(nt):"";return[rt+`style ${tt} {`,...t$1(et).map(([st,ot])=>rt+` ${st} ${st==="opacity"?ot.toString()+"%":ot}`),rt+"}"]},j=(tt,et)=>nt=>{if(!isViewRuleStyle(nt))return!1;const rt=nt.target.value;if(!rt||n$7(nt.target.prev)||!isElementRef(rt))return!1;const st=rt.el.ref;return(st?et.getFqn(st):null)===tt};function changeElementStyle(tt,{view:et,viewAst:nt,targets:rt,style:st}){core.invariant(nt.body,`View ${et.id} has no body`);const ot=nt.$cstNode;core.invariant(ot,"viewCstNode");const en=a$6(nt.body.rules)?.$cstNode?.range.end??nt.body.$cstNode?.range.end;core.invariant(en,"insertPos is not defined");const tn=ot.range.start.character+2,nn=tt.likec4.FqnIndex,rn=T(nt.body.rules,isViewRuleStyle),sn=et.__==="element"?et.viewOf:null,an=[],on=[];rt.forEach(gn=>{const pn=o$2(rn,j(gn,nn)),vn=sn&&core.isAncestor(sn,gn)?gn.substring(sn.length+1):gn;pn?an.push({fqn:vn,rule:pn}):on.push({fqn:vn})});const cn={start:en,end:en},ln=gn=>{gn.start.line<=cn.start.line&&(gn.start.line==cn.start.line?cn.start.character=Math.min(gn.start.character,cn.start.character):cn.start=gn.start),gn.end.line>=cn.end.line&&(gn.end.line==cn.end.line?cn.end.character=Math.max(gn.end.character,cn.end.character):cn.end=gn.end)},fn=[];if(on.length>0){const gn=on.flatMap(({fqn:pn})=>K(pn,st,tn));fn.push(TextEdit.insert(en,`
|
|
229
|
-
`+gn.join(`
|
|
230
|
-
`))),cn.start={line:en.line+1,character:tn},cn.end={line:en.line+gn.length,character:a$6(gn)?.length??0}}if(an.length>0)for(const{rule:gn}of an){const pn=gn.$cstNode;core.invariant(pn,"RuleCstNode not found");for(const[vn,bn]of t$1(st)){const $n=vn==="opacity"?bn.toString()+"%":bn,Tn=gn.props.find(Un=>Un.key===vn);if(Tn&&Tn.$cstNode){const{range:{start:Un,end:Yn}}=Tn.$cstNode;ln({start:Un,end:Yn}),fn.push(TextEdit.replace({start:Un,end:Yn},vn+" "+$n));continue}const An=v(pn,"{")?.range.end;core.invariant(An,"Opening brace not found");const On=" ".repeat(2+pn.range.start.character),Bn=On+vn+" "+$n;fn.push(TextEdit.insert(An,`
|
|
231
|
-
`+Bn)),ln({start:{line:An.line+1,character:On.length},end:{line:An.line+1,character:Bn.length}})}}return{modifiedRange:cn,edits:fn}}const{findNodeForKeyword:b}=c$2;function changeViewLayout(tt,{view:et,viewAst:nt,layout:rt}){core.invariant(nt.body,`View ${et.id} has no body`);const st=nt.$cstNode;core.invariant(st,"viewCstNode");const ot=toAstViewLayoutDirection(rt.direction),en=o$2(nt.body.rules,isViewRuleAutoLayout);let tn=`autoLayout ${ot}`;if(e$5(rt.rankSep)&&(tn+=` ${rt.rankSep}`,e$5(rt.nodeSep)&&(tn+=` ${rt.nodeSep}`)),en&&en.$cstNode)return TextEdit.replace(en.$cstNode.range,tn);const nn=b(nt.body.$cstNode,"}")?.range.start;core.invariant(nn,"Closing brace not found");const rn=` ${tn}
|
|
232
|
-
`;return TextEdit.insert(nn,rn)}function indentString(tt,et=1,nt={}){const{indent:rt=" ",includeEmptyLines:st=!1}=nt;if(typeof tt!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof tt}\``);if(typeof et!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof et}\``);if(et<0)throw new RangeError(`Expected \`count\` to be at least 0, got \`${et}\``);if(typeof rt!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof rt}\``);if(et===0)return tt;const ot=st?/^/gm:/^(?!\s*$)/gm;return tt.replace(ot,rt.repeat(et))}function saveManualLayout(tt,{viewAst:et,layout:nt}){core.invariant(et.$cstNode,"invalid view.$cstNode");const rt=findCommentNode(et.$cstNode,["BLOCK_COMMENT"]);let st=serializeToComment(nt);return et.$cstNode.range.start.character>0&&(st=indentString(st,et.$cstNode.range.start.character)),rt?TextEdit.replace(rt.range,st.trimStart()):TextEdit.insert({line:et.$cstNode.range.start.line,character:0},st+`
|
|
233
|
-
`)}class LikeC4ModelChanges{constructor(et){this.services=et,this.locator=et.likec4.ModelLocator}locator;async applyChange(et){const nt=this.services.shared.lsp.Connection;core.invariant(nt,"LSP Connection not available");let rt=null;try{await this.services.shared.workspace.WorkspaceLock.write(async()=>{const{doc:st,edits:ot,modifiedRange:en}=this.convertToTextEdit(et),tn={uri:st.textDocument.uri,version:st.textDocument.version};if(!ot.length)return;const nn=await nt.workspace.applyEdit({label:`LikeC4 - change view ${et.viewId}`,edit:{changes:{[tn.uri]:ot}}});if(!nn.applied){nt.window.showErrorMessage(`Failed to apply changes ${nn.failureReason}`);return}rt={uri:tn.uri,range:en}})}catch(st){m$3.error(`Failed to apply change ${et.change.op} ${et.viewId}`,{error:st})}return rt}convertToTextEdit({viewId:et,change:nt}){const rt=this.locator.locateViewAst(et);if(!rt)throw new Error(`LikeC4ModelChanges: view not found: ${et}`);switch(nt.op){case"change-element-style":return{doc:rt.doc,...changeElementStyle(this.services,{...rt,targets:nt.targets,style:nt.style})};case"change-autolayout":{const ot=changeViewLayout(this.services,{...rt,layout:nt.layout});return{doc:rt.doc,modifiedRange:ot.range,edits:[ot]}}case"save-manual-layout":const st=saveManualLayout(this.services,{...rt,layout:nt.layout});return{doc:rt.doc,modifiedRange:st.range,edits:[st]};default:core.nonexhaustive(nt)}}}class LikeC4NameProvider extends DefaultNameProvider{constructor(et){super(),this.services=et}getNameStrict(et){return core.nonNullable(this.getName(et),`Failed getName for ${this.services.workspace.AstNodeLocator.getAstNodePath(et)}`)}getName(et){if(isNamed(et))return et.name;if(isDeployedInstance(et))return et.element.el.$refText}getNameNode(et){if(isNamed(et))return super.getNameNode(et);if(isDeployedInstance(et))return et.element.el.$refNode}}function w(tt){return C$1(tt,i$5(et=>`${et.type}.${et.name}`),t$1(),u$4(([et,nt])=>nt.length===1?nt:[]))}class LikeC4ScopeComputation extends DefaultScopeComputation{constructor(et){super(et)}async computeExports(et,nt){const rt=[];try{const{specifications:st,models:ot,views:en,globals:tn,likec4lib:nn,deployments:rn}=et.parseResult.value;this.exportLibrary(nn,rt,et),this.exportSpecification(st,rt,et),this.exportModel(ot,rt,et),this.exportViews(en,rt,et),this.exportGlobals(tn,rt,et),this.exportDeployments(rn,rt,et)}catch(st){logWarnError(st)}return rt}exportViews(et,nt,rt){const st=et?.flatMap(ot=>ot.views);if(!(n$4(st)||st.length===0))for(const ot of st)try{n$7(ot.name)&&nt.push(this.descriptions.createDescription(ot,ot.name,rt))}catch(en){logWarnError(en)}}exportGlobals(et,nt,rt){if(!(n$4(et)||et.length===0)){for(const st of et.flatMap(ot=>ot.predicates))try{const ot=st;n$7(ot.name)&&nt.push(this.descriptions.createDescription(ot,ot.name,rt))}catch(ot){logWarnError(ot)}for(const st of et.flatMap(ot=>ot.styles))try{const ot=st.id;n$7(ot.name)&&nt.push(this.descriptions.createDescription(ot,ot.name,rt))}catch(ot){logWarnError(ot)}}}exportModel(et,nt,rt){if(!(n$4(et)||et.length===0))for(const st of et.flatMap(ot=>ot.elements))try{isElement(st)&&n$7(st.name)&&nt.push(this.descriptions.createDescription(st,st.name,rt))}catch(ot){logWarnError(ot)}}exportLibrary(et,nt,rt){if(!n$4(et))try{for(const st of et.flatMap(ot=>ot.icons))nt.push(this.descriptions.createDescription(st,st.name,rt))}catch(st){logWarnError(st)}}exportSpecification(et,nt,rt){if(!(n$4(et)||et.length===0))for(const st of et.flatMap(ot=>[...ot.elements,...ot.relationships,...ot.deploymentNodes,...ot.tags,...ot.colors]))try{switch(!0){case isSpecificationDeploymentNodeKind(st):case isSpecificationElementKind(st):{n$7(st.kind.name)&&nt.push(this.descriptions.createDescription(st.kind,st.kind.name,rt));continue}case isSpecificationTag(st):{n$7(st.tag.name)&&nt.push(this.descriptions.createDescription(st.tag,"#"+st.tag.name,rt));continue}case isSpecificationRelationshipKind(st):{n$7(st.kind.name)&&nt.push(this.descriptions.createDescription(st.kind,st.kind.name,rt),this.descriptions.createDescription(st.kind,"."+st.kind.name,rt));continue}case isSpecificationColor(st):{n$7(st.name.name)&&nt.push(this.descriptions.createDescription(st.name,st.name.name,rt));continue}default:core.nonexhaustive(st)}}catch(ot){logWarnError(ot)}}exportDeployments(et,nt,rt){const st=et?.flatMap(ot=>ot.elements);if(!(n$4(st)||st.length===0))for(const ot of st)try{isDeploymentNode(ot)&&n$7(ot.name)&&nt.push(this.descriptions.createDescription(ot,ot.name,rt))}catch(en){logWarnError(en)}}computeLocalScopes(et,nt){return new Promise(rt=>{const st=et.parseResult.value,ot=[],en=new MultiMap;for(const tn of st.models)try{ot.push(...this.processContainer(tn,en,et))}catch(nn){logWarnError(nn)}for(const tn of st.deployments)try{ot.push(...this.processDeployments(tn,en,et))}catch(nn){logWarnError(nn)}w(ot).forEach(tn=>{en.add(st,tn)}),rt(en)})}processContainer(et,nt,rt){const st=new MultiMap,ot=[];for(const tn of et.elements){if(isRelation(tn))continue;let nn;if(isElement(tn)?(n$7(tn.name)&&st.add(tn.name,this.descriptions.createDescription(tn,tn.name,rt)),nn=tn.body):isExtendElement(tn)&&(nn=tn.body),nn&&nn.elements.length>0)try{ot.push(...this.processContainer(nn,nt,rt))}catch(rn){logWarnError(rn)}}ot.length&&C$1(ot,T(tn=>!st.has(tn.name)),i$5(tn=>tn.name),i$3((tn,nn)=>{tn.length===1&&st.add(nn,tn[0])}));const en=[...st.values()];return nt.addAll(et,en),en}processDeployments(et,nt,rt){const st=new Set,ot=[];for(const en of et.elements){if(isDeploymentRelation(en))continue;let tn=this.nameProvider.getName(en);if(n$7(tn)){const nn=this.descriptions.createDescription(en,tn,rt);nt.add(et,nn),st.add(nn.name)}if(isDeploymentNode(en)&&en.body)try{ot.push(...this.processDeployments(en.body,nt,rt))}catch(nn){logWarnError(nn)}}return ot.length>0&&C$1(ot,T(en=>!st.has(en.name)),i$5(en=>en.name),i$3((en,tn)=>{en.length===1&&nt.add(et,en[0])})),[...nt.get(et).values()]}}const{getDocument:I}=f$9;class LikeC4ScopeProvider extends DefaultScopeProvider{deploymentsIndex;fqnIndex;constructor(et){super(et),this.fqnIndex=et.likec4.FqnIndex,this.deploymentsIndex=et.likec4.DeploymentsIndex}directChildrenOf(et){return this.fqnIndex.directChildrenOf(et)}uniqueDescedants(et){return new StreamImpl(()=>{const nt=et(),rt=nt&&this.fqnIndex.getFqn(nt);return rt?this.fqnIndex.uniqueDescedants(rt).iterator():null},nt=>nt?nt.next():DONE_RESULT)}scopeElementRef(et){return this.uniqueDescedants(()=>et.el.ref)}scopeExtendElement({element:et}){return stream([et.el.$nodeDescription]).nonNullable().concat(this.uniqueDescedants(()=>elementRef(et)))}scopeElementView({viewOf:et,extends:nt}){return et?stream([et.el.$nodeDescription]).nonNullable().concat(this.uniqueDescedants(()=>elementRef(et))):nt?stream([nt]).flatMap(rt=>{const st=rt.view.ref;return st?this.scopeElementView(st):EMPTY_STREAM}):EMPTY_STREAM}getScope(et){try{const nt=this.reflection.getReferenceType(et);try{const rt=et.container;if(isFqnRef(rt))return this.getScopeForFqnRef(rt,et);if(nt!==Element)return this.getGlobalScope(nt,et);if(isStrictFqnElementRef(rt)&&et.property==="el"){const st=rt.parent;return st?new StreamScope(this.directChildrenOf(getFqnElementRef(st))):this.getGlobalScope(nt,et)}if(isElementRef(rt)&&et.property==="el"){const st=rt.parent;if(st)return new StreamScope(this.scopeElementRef(st));if(et.reference.$refText==="this"||et.reference.$refText==="it"){const ot=getContainerOfType(rt,isElement);return ot?new MapScope([this.descriptions.createDescription(ot,et.reference.$refText)]):EMPTY_SCOPE}}return this.computeScope(et)}catch(rt){return logWarnError(rt),this.getGlobalScope(nt,et)}}catch(nt){return logWarnError(nt),EMPTY_SCOPE}}getScopeForFqnRef(et,nt){const rt=et.parent;if(!rt)return this.createScope(this.computeScope(nt,DeploymentNode).getAllElements(),this.createScope(this.computeScope(nt,DeployedInstance).getAllElements(),hasContainerOfType(et,isDeploymentView)?this.computeScope(nt,Element):EMPTY_SCOPE));const st=rt.value.ref;return st?isDeploymentNode(st)?new StreamScope(this.deploymentsIndex.nested(st)):isDeployedInstance(st)?new StreamScope(this.scopeElementRef(st.element)):isElement(st)?new StreamScope(this.uniqueDescedants(()=>st)):core.nonexhaustive(st):EMPTY_SCOPE}computeScope(et,nt=this.reflection.getReferenceType(et)){const rt=this.reflection.isSubtype(nt,Element),st=[],ot=I(et.container).precomputedScopes;if(!ot)return this.getGlobalScope(nt,et);const en=nn=>this.reflection.isSubtype(nn.type,nt);let tn=et.container;for(;tn;){const nn=ot.get(tn).filter(en);nn.length>0&&st.push(stream(nn)),rt&&isExtendElementBody(tn)&&st.push(this.scopeExtendElement(tn.$container)),rt&&isElementViewBody(tn)&&st.push(this.scopeElementView(tn.$container)),tn=tn.$container}return st.reduceRight((nn,rn)=>this.createScope(rn,nn),this.getGlobalScope(nt,et))}}const LibIcons=`likec4lib { icons {
|
|
234
|
-
aws:activate
|
|
235
|
-
aws:alexa-for-business
|
|
236
|
-
aws:amplify
|
|
237
|
-
aws:apache-mxnet-on-aws
|
|
238
|
-
aws:api-gateway
|
|
239
|
-
aws:app-config
|
|
240
|
-
aws:app-flow
|
|
241
|
-
aws:app-mesh
|
|
242
|
-
aws:app-runner
|
|
243
|
-
aws:app-stream
|
|
244
|
-
aws:app-sync
|
|
245
|
-
aws:application-auto-scaling
|
|
246
|
-
aws:application-composer
|
|
247
|
-
aws:application-cost-profiler
|
|
248
|
-
aws:application-discovery-service
|
|
249
|
-
aws:application-migration-service
|
|
250
|
-
aws:artifact
|
|
251
|
-
aws:athena
|
|
252
|
-
aws:audit-manager
|
|
253
|
-
aws:augmented-ai-a2i
|
|
254
|
-
aws:aurora
|
|
255
|
-
aws:auto-scaling
|
|
256
|
-
aws:backint-agent
|
|
257
|
-
aws:backup
|
|
258
|
-
aws:batch
|
|
259
|
-
aws:billing-conductor
|
|
260
|
-
aws:bottlerocket
|
|
261
|
-
aws:braket
|
|
262
|
-
aws:budgets
|
|
263
|
-
aws:certificate-manager
|
|
264
|
-
aws:chatbot
|
|
265
|
-
aws:chime
|
|
266
|
-
aws:chime-sdk
|
|
267
|
-
aws:chime-voice-connector
|
|
268
|
-
aws:clean-rooms
|
|
269
|
-
aws:client-vpn
|
|
270
|
-
aws:cloud-control-api
|
|
271
|
-
aws:cloud-development-kit
|
|
272
|
-
aws:cloud-directory
|
|
273
|
-
aws:cloud-formation
|
|
274
|
-
aws:cloud-front
|
|
275
|
-
aws:cloud-hsm
|
|
276
|
-
aws:cloud-map
|
|
277
|
-
aws:cloud-search
|
|
278
|
-
aws:cloud-shell
|
|
279
|
-
aws:cloud-trail
|
|
280
|
-
aws:cloud-wan
|
|
281
|
-
aws:cloud-watch
|
|
282
|
-
aws:cloud9
|
|
283
|
-
aws:code-artifact
|
|
284
|
-
aws:code-build
|
|
285
|
-
aws:code-catalyst
|
|
286
|
-
aws:code-commit
|
|
287
|
-
aws:code-deploy
|
|
288
|
-
aws:code-guru
|
|
289
|
-
aws:code-pipeline
|
|
290
|
-
aws:code-star
|
|
291
|
-
aws:code-whisperer
|
|
292
|
-
aws:cognito
|
|
293
|
-
aws:command-line-interface
|
|
294
|
-
aws:comprehend
|
|
295
|
-
aws:comprehend-medical
|
|
296
|
-
aws:compute-optimizer
|
|
297
|
-
aws:config
|
|
298
|
-
aws:connect
|
|
299
|
-
aws:console-mobile-application
|
|
300
|
-
aws:control-tower
|
|
301
|
-
aws:corretto
|
|
302
|
-
aws:cost-and-usage-report
|
|
303
|
-
aws:cost-explorer
|
|
304
|
-
aws:data-exchange
|
|
305
|
-
aws:data-pipeline
|
|
306
|
-
aws:data-sync
|
|
307
|
-
aws:data-zone
|
|
308
|
-
aws:database-migration-service
|
|
309
|
-
aws:deep-composer
|
|
310
|
-
aws:deep-learning-amis
|
|
311
|
-
aws:deep-learning-containers
|
|
312
|
-
aws:deep-lens
|
|
313
|
-
aws:deep-racer
|
|
314
|
-
aws:detective
|
|
315
|
-
aws:dev-ops-guru
|
|
316
|
-
aws:device-farm
|
|
317
|
-
aws:direct-connect
|
|
318
|
-
aws:directory-service
|
|
319
|
-
aws:distro-for-open-telemetry
|
|
320
|
-
aws:document-db
|
|
321
|
-
aws:dynamo-db
|
|
322
|
-
aws:ec2
|
|
323
|
-
aws:ec2-auto-scaling
|
|
324
|
-
aws:ec2-image-builder
|
|
325
|
-
aws:ecs-anywhere
|
|
326
|
-
aws:efs
|
|
327
|
-
aws:eks-anywhere
|
|
328
|
-
aws:eks-cloud
|
|
329
|
-
aws:eks-distro
|
|
330
|
-
aws:elasti-cache
|
|
331
|
-
aws:elastic-beanstalk
|
|
332
|
-
aws:elastic-block-store
|
|
333
|
-
aws:elastic-container-registry
|
|
334
|
-
aws:elastic-container-service
|
|
335
|
-
aws:elastic-disaster-recovery
|
|
336
|
-
aws:elastic-fabric-adapter
|
|
337
|
-
aws:elastic-inference
|
|
338
|
-
aws:elastic-kubernetes-service
|
|
339
|
-
aws:elastic-load-balancing
|
|
340
|
-
aws:elastic-transcoder
|
|
341
|
-
aws:elemental-appliances-software
|
|
342
|
-
aws:elemental-conductor
|
|
343
|
-
aws:elemental-delta
|
|
344
|
-
aws:elemental-link
|
|
345
|
-
aws:elemental-live
|
|
346
|
-
aws:elemental-media-connect
|
|
347
|
-
aws:elemental-media-convert
|
|
348
|
-
aws:elemental-media-live
|
|
349
|
-
aws:elemental-media-package
|
|
350
|
-
aws:elemental-media-store
|
|
351
|
-
aws:elemental-media-tailor
|
|
352
|
-
aws:elemental-server
|
|
353
|
-
aws:emr
|
|
354
|
-
aws:event-bridge
|
|
355
|
-
aws:express-workflows
|
|
356
|
-
aws:fargate
|
|
357
|
-
aws:fault-injection-simulator
|
|
358
|
-
aws:file-cache
|
|
359
|
-
aws:fin-space
|
|
360
|
-
aws:firewall-manager
|
|
361
|
-
aws:forecast
|
|
362
|
-
aws:fraud-detector
|
|
363
|
-
aws:free-rtos
|
|
364
|
-
aws:fsx
|
|
365
|
-
aws:fsx-for-lustre
|
|
366
|
-
aws:fsx-for-net-app-ontap
|
|
367
|
-
aws:fsx-for-open-zfs
|
|
368
|
-
aws:fsx-for-wfs
|
|
369
|
-
aws:game-kit
|
|
370
|
-
aws:game-lift
|
|
371
|
-
aws:game-sparks
|
|
372
|
-
aws:genomics-cli
|
|
373
|
-
aws:global-accelerator
|
|
374
|
-
aws:glue
|
|
375
|
-
aws:glue-data-brew
|
|
376
|
-
aws:glue-elastic-views
|
|
377
|
-
aws:ground-station
|
|
378
|
-
aws:guard-duty
|
|
379
|
-
aws:health-lake
|
|
380
|
-
aws:honeycode
|
|
381
|
-
aws:iam-identity-center
|
|
382
|
-
aws:identity-and-access-management
|
|
383
|
-
aws:inspector
|
|
384
|
-
aws:interactive-video-service
|
|
385
|
-
aws:io-t-1-click
|
|
386
|
-
aws:io-t-analytics
|
|
387
|
-
aws:io-t-button
|
|
388
|
-
aws:io-t-core
|
|
389
|
-
aws:io-t-device-defender
|
|
390
|
-
aws:io-t-device-management
|
|
391
|
-
aws:io-t-edu-kit
|
|
392
|
-
aws:io-t-events
|
|
393
|
-
aws:io-t-express-link
|
|
394
|
-
aws:io-t-fleet-wise
|
|
395
|
-
aws:io-t-greengrass
|
|
396
|
-
aws:io-t-robo-runner
|
|
397
|
-
aws:io-t-site-wise
|
|
398
|
-
aws:io-t-things-graph
|
|
399
|
-
aws:io-t-twin-maker
|
|
400
|
-
aws:iq
|
|
401
|
-
aws:kendra
|
|
402
|
-
aws:key-management-service
|
|
403
|
-
aws:keyspaces
|
|
404
|
-
aws:kinesis
|
|
405
|
-
aws:kinesis-data-analytics
|
|
406
|
-
aws:kinesis-data-streams
|
|
407
|
-
aws:kinesis-firehose
|
|
408
|
-
aws:kinesis-video-streams
|
|
409
|
-
aws:lake-formation
|
|
410
|
-
aws:lambda
|
|
411
|
-
aws:launch-wizard
|
|
412
|
-
aws:lex
|
|
413
|
-
aws:license-manager
|
|
414
|
-
aws:lightsail
|
|
415
|
-
aws:local-zones
|
|
416
|
-
aws:location-service
|
|
417
|
-
aws:lookout-for-equipment
|
|
418
|
-
aws:lookout-for-metrics
|
|
419
|
-
aws:lookout-for-vision
|
|
420
|
-
aws:lumberyard
|
|
421
|
-
aws:macie
|
|
422
|
-
aws:mainframe-modernization
|
|
423
|
-
aws:managed-blockchain
|
|
424
|
-
aws:managed-grafana
|
|
425
|
-
aws:managed-service-for-prometheus
|
|
426
|
-
aws:managed-services
|
|
427
|
-
aws:managed-streaming-for-apache-kafka
|
|
428
|
-
aws:managed-workflows-for-apache-airflow
|
|
429
|
-
aws:management-console
|
|
430
|
-
aws:marketplace-dark
|
|
431
|
-
aws:marketplace-light
|
|
432
|
-
aws:memory-db-for-redis
|
|
433
|
-
aws:migration-evaluator
|
|
434
|
-
aws:migration-hub
|
|
435
|
-
aws:monitron
|
|
436
|
-
aws:mq
|
|
437
|
-
aws:neptune
|
|
438
|
-
aws:network-firewall
|
|
439
|
-
aws:neuron
|
|
440
|
-
aws:nice-dcv
|
|
441
|
-
aws:nice-engin-frame
|
|
442
|
-
aws:nimble-studio
|
|
443
|
-
aws:nitro-enclaves
|
|
444
|
-
aws:omics
|
|
445
|
-
aws:open-3d-engine
|
|
446
|
-
aws:open-search-service
|
|
447
|
-
aws:ops-works
|
|
448
|
-
aws:organizations
|
|
449
|
-
aws:outposts-family
|
|
450
|
-
aws:outposts-rack
|
|
451
|
-
aws:outposts-servers
|
|
452
|
-
aws:panorama
|
|
453
|
-
aws:parallel-cluster
|
|
454
|
-
aws:personal-health-dashboard
|
|
455
|
-
aws:personalize
|
|
456
|
-
aws:pinpoint
|
|
457
|
-
aws:pinpoint-apis
|
|
458
|
-
aws:polly
|
|
459
|
-
aws:private-5g
|
|
460
|
-
aws:private-certificate-authority
|
|
461
|
-
aws:private-link
|
|
462
|
-
aws:professional-services
|
|
463
|
-
aws:proton
|
|
464
|
-
aws:quantum-ledger-database
|
|
465
|
-
aws:quick-sight
|
|
466
|
-
aws:rds
|
|
467
|
-
aws:rds-on-vmware
|
|
468
|
-
aws:re-post
|
|
469
|
-
aws:red-hat-open-shift-service-on-aws
|
|
470
|
-
aws:redshift
|
|
471
|
-
aws:rekognition
|
|
472
|
-
aws:reserved-instance-reporting
|
|
473
|
-
aws:resilience-hub
|
|
474
|
-
aws:resource-access-manager
|
|
475
|
-
aws:resource-explorer
|
|
476
|
-
aws:robo-maker
|
|
477
|
-
aws:route-53
|
|
478
|
-
aws:s3-on-outposts
|
|
479
|
-
aws:sage-maker
|
|
480
|
-
aws:sage-maker-ground-truth
|
|
481
|
-
aws:sage-maker-studio-lab
|
|
482
|
-
aws:savings-plans
|
|
483
|
-
aws:secrets-manager
|
|
484
|
-
aws:security-hub
|
|
485
|
-
aws:security-lake
|
|
486
|
-
aws:server-migration-service
|
|
487
|
-
aws:serverless-application-repository
|
|
488
|
-
aws:service-catalog
|
|
489
|
-
aws:service-management-connector
|
|
490
|
-
aws:shield
|
|
491
|
-
aws:signer
|
|
492
|
-
aws:sim-space-weaver
|
|
493
|
-
aws:simple-email-service
|
|
494
|
-
aws:simple-notification-service
|
|
495
|
-
aws:simple-queue-service
|
|
496
|
-
aws:simple-storage-service
|
|
497
|
-
aws:simple-storage-service-glacier
|
|
498
|
-
aws:site-to-site-vpn
|
|
499
|
-
aws:snowball
|
|
500
|
-
aws:snowball-edge
|
|
501
|
-
aws:snowcone
|
|
502
|
-
aws:snowmobile
|
|
503
|
-
aws:step-functions
|
|
504
|
-
aws:storage-gateway
|
|
505
|
-
aws:sumerian
|
|
506
|
-
aws:supply-chain
|
|
507
|
-
aws:support
|
|
508
|
-
aws:systems-manager
|
|
509
|
-
aws:tensor-flow-on-aws
|
|
510
|
-
aws:textract
|
|
511
|
-
aws:thinkbox-deadline
|
|
512
|
-
aws:thinkbox-frost
|
|
513
|
-
aws:thinkbox-krakatoa
|
|
514
|
-
aws:thinkbox-sequoia
|
|
515
|
-
aws:thinkbox-stoke
|
|
516
|
-
aws:thinkbox-xmesh
|
|
517
|
-
aws:timestream
|
|
518
|
-
aws:tools-and-sdks
|
|
519
|
-
aws:torch-serve
|
|
520
|
-
aws:training-certification
|
|
521
|
-
aws:transcribe
|
|
522
|
-
aws:transfer-family
|
|
523
|
-
aws:transit-gateway
|
|
524
|
-
aws:translate
|
|
525
|
-
aws:trusted-advisor
|
|
526
|
-
aws:verified-access
|
|
527
|
-
aws:verified-permissions
|
|
528
|
-
aws:virtual-private-cloud
|
|
529
|
-
aws:vmware-cloud-on-aws
|
|
530
|
-
aws:vpc-lattice
|
|
531
|
-
aws:waf
|
|
532
|
-
aws:wavelength
|
|
533
|
-
aws:well-architected-tool
|
|
534
|
-
aws:wickr
|
|
535
|
-
aws:work-docs
|
|
536
|
-
aws:work-docs-sdk
|
|
537
|
-
aws:work-link
|
|
538
|
-
aws:work-mail
|
|
539
|
-
aws:work-spaces-family
|
|
540
|
-
aws:x-ray
|
|
541
|
-
azure:abs-member
|
|
542
|
-
azure:active-directory-connect-health
|
|
543
|
-
azure:activity-log
|
|
544
|
-
azure:administrative-units
|
|
545
|
-
azure:advisor
|
|
546
|
-
azure:ai-studio
|
|
547
|
-
azure:aks-automatic
|
|
548
|
-
azure:aks-istio
|
|
549
|
-
azure:alerts
|
|
550
|
-
azure:all-resources
|
|
551
|
-
azure:analysis-services
|
|
552
|
-
azure:anomaly-detector
|
|
553
|
-
azure:api-center
|
|
554
|
-
azure:api-connections
|
|
555
|
-
azure:api-management-services
|
|
556
|
-
azure:api-proxy
|
|
557
|
-
azure:app-compliance-automation
|
|
558
|
-
azure:app-configuration
|
|
559
|
-
azure:app-registrations
|
|
560
|
-
azure:app-service-certificates
|
|
561
|
-
azure:app-service-domains
|
|
562
|
-
azure:app-service-environments
|
|
563
|
-
azure:app-service-plans
|
|
564
|
-
azure:app-services
|
|
565
|
-
azure:app-space
|
|
566
|
-
azure:app-space-component
|
|
567
|
-
azure:applens
|
|
568
|
-
azure:application-gateway-containers
|
|
569
|
-
azure:application-gateways
|
|
570
|
-
azure:application-group
|
|
571
|
-
azure:application-insights
|
|
572
|
-
azure:application-security-groups
|
|
573
|
-
azure:aquila
|
|
574
|
-
azure:arc-data-services
|
|
575
|
-
azure:arc-kubernetes
|
|
576
|
-
azure:arc-machines
|
|
577
|
-
azure:arc-postgre-sql
|
|
578
|
-
azure:arc-sql-managed-instance
|
|
579
|
-
azure:arc-sql-server
|
|
580
|
-
azure:atm-multistack
|
|
581
|
-
azure:auto-scale
|
|
582
|
-
azure:automanaged-vm
|
|
583
|
-
azure:automation-accounts
|
|
584
|
-
azure:availability-sets
|
|
585
|
-
azure:avs-vm
|
|
586
|
-
azure:azure-a
|
|
587
|
-
azure:azure-ad-b2c
|
|
588
|
-
azure:azure-api-for-fhir
|
|
589
|
-
azure:azure-applied-ai-services
|
|
590
|
-
azure:azure-arc
|
|
591
|
-
azure:azure-attestation
|
|
592
|
-
azure:azure-backup-center
|
|
593
|
-
azure:azure-blockchain-service
|
|
594
|
-
azure:azure-center-for-sap
|
|
595
|
-
azure:azure-chaos-studio
|
|
596
|
-
azure:azure-cloud-shell
|
|
597
|
-
azure:azure-communication-services
|
|
598
|
-
azure:azure-communications-gateway
|
|
599
|
-
azure:azure-compute-galleries
|
|
600
|
-
azure:azure-cosmos-db
|
|
601
|
-
azure:azure-data-catalog
|
|
602
|
-
azure:azure-data-explorer-clusters
|
|
603
|
-
azure:azure-database-maria-db-server
|
|
604
|
-
azure:azure-database-migration-services
|
|
605
|
-
azure:azure-database-my-sql-server
|
|
606
|
-
azure:azure-database-postgre-sql-server
|
|
607
|
-
azure:azure-database-postgre-sql-server-group
|
|
608
|
-
azure:azure-databox-gateway
|
|
609
|
-
azure:azure-databricks
|
|
610
|
-
azure:azure-deployment-environments
|
|
611
|
-
azure:azure-dev-ops
|
|
612
|
-
azure:azure-dev-tunnels
|
|
613
|
-
azure:azure-edge-hardware-center
|
|
614
|
-
azure:azure-experimentation-studio
|
|
615
|
-
azure:azure-fileshares
|
|
616
|
-
azure:azure-firewall-manager
|
|
617
|
-
azure:azure-firewall-policy
|
|
618
|
-
azure:azure-hcp-cache
|
|
619
|
-
azure:azure-hpc-workbenches
|
|
620
|
-
azure:azure-hybrid-center
|
|
621
|
-
azure:azure-information-protection
|
|
622
|
-
azure:azure-io-t-operations
|
|
623
|
-
azure:azure-lighthouse
|
|
624
|
-
azure:azure-load-testing
|
|
625
|
-
azure:azure-managed-grafana
|
|
626
|
-
azure:azure-maps-accounts
|
|
627
|
-
azure:azure-media-service
|
|
628
|
-
azure:azure-migrate
|
|
629
|
-
azure:azure-monitor-dashboard
|
|
630
|
-
azure:azure-monitor-pipeline
|
|
631
|
-
azure:azure-monitors-for-sap-solutions
|
|
632
|
-
azure:azure-net-app-files
|
|
633
|
-
azure:azure-network-function-manager
|
|
634
|
-
azure:azure-network-function-manager-functions
|
|
635
|
-
azure:azure-object-understanding
|
|
636
|
-
azure:azure-open-ai
|
|
637
|
-
azure:azure-operator-5g-core
|
|
638
|
-
azure:azure-operator-insights
|
|
639
|
-
azure:azure-operator-nexus
|
|
640
|
-
azure:azure-operator-service-manager
|
|
641
|
-
azure:azure-orbital
|
|
642
|
-
azure:azure-programmable-connectivity
|
|
643
|
-
azure:azure-purview-accounts
|
|
644
|
-
azure:azure-quotas
|
|
645
|
-
azure:azure-red-hat-open-shift
|
|
646
|
-
azure:azure-sentinel
|
|
647
|
-
azure:azure-service-bus
|
|
648
|
-
azure:azure-sphere
|
|
649
|
-
azure:azure-spring-apps
|
|
650
|
-
azure:azure-sql
|
|
651
|
-
azure:azure-sql-edge
|
|
652
|
-
azure:azure-sql-server-stretch-databases
|
|
653
|
-
azure:azure-sql-vm
|
|
654
|
-
azure:azure-stack
|
|
655
|
-
azure:azure-stack-edge
|
|
656
|
-
azure:azure-stack-hci-sizer
|
|
657
|
-
azure:azure-storage-mover
|
|
658
|
-
azure:azure-support-center-blue
|
|
659
|
-
azure:azure-sustainability
|
|
660
|
-
azure:azure-synapse-analytics
|
|
661
|
-
azure:azure-token-service
|
|
662
|
-
azure:azure-video-indexer
|
|
663
|
-
azure:azure-virtual-desktop
|
|
664
|
-
azure:azure-vmware-solution
|
|
665
|
-
azure:azure-workbooks
|
|
666
|
-
azure:azurite
|
|
667
|
-
azure:backlog
|
|
668
|
-
azure:backup-vault
|
|
669
|
-
azure:bare-metal-infrastructure
|
|
670
|
-
azure:bastions
|
|
671
|
-
azure:batch-accounts
|
|
672
|
-
azure:batch-ai
|
|
673
|
-
azure:biz-talk
|
|
674
|
-
azure:blob-block
|
|
675
|
-
azure:blob-page
|
|
676
|
-
azure:blockchain-applications
|
|
677
|
-
azure:blueprints
|
|
678
|
-
azure:bonsai
|
|
679
|
-
azure:bot-services
|
|
680
|
-
azure:branch
|
|
681
|
-
azure:browser
|
|
682
|
-
azure:bug
|
|
683
|
-
azure:builds
|
|
684
|
-
azure:business-process-tracking
|
|
685
|
-
azure:cache
|
|
686
|
-
azure:cache-redis
|
|
687
|
-
azure:capacity
|
|
688
|
-
azure:capacity-reservation-groups
|
|
689
|
-
azure:cdn-profiles
|
|
690
|
-
azure:central-service-instance-for-sap
|
|
691
|
-
azure:ceres
|
|
692
|
-
azure:change-analysis
|
|
693
|
-
azure:client-apps
|
|
694
|
-
azure:cloud-services-classic
|
|
695
|
-
azure:cloud-services-extended-support
|
|
696
|
-
azure:cloud-test
|
|
697
|
-
azure:code
|
|
698
|
-
azure:code-optimization
|
|
699
|
-
azure:cognitive-search
|
|
700
|
-
azure:cognitive-services
|
|
701
|
-
azure:cognitive-services-decisions
|
|
702
|
-
azure:collaborative-service
|
|
703
|
-
azure:commit
|
|
704
|
-
azure:community-images
|
|
705
|
-
azure:compliance
|
|
706
|
-
azure:compliance-center
|
|
707
|
-
azure:compute-fleet
|
|
708
|
-
azure:computer-vision
|
|
709
|
-
azure:conditional-access
|
|
710
|
-
azure:confidential-ledgers
|
|
711
|
-
azure:connected-cache
|
|
712
|
-
azure:connected-vehicle-platform
|
|
713
|
-
azure:connections
|
|
714
|
-
azure:consortium
|
|
715
|
-
azure:container-apps-environments
|
|
716
|
-
azure:container-instances
|
|
717
|
-
azure:container-registries
|
|
718
|
-
azure:container-services-deprecated
|
|
719
|
-
azure:content-moderators
|
|
720
|
-
azure:content-safety
|
|
721
|
-
azure:controls
|
|
722
|
-
azure:controls-horizontal
|
|
723
|
-
azure:cost-alerts
|
|
724
|
-
azure:cost-analysis
|
|
725
|
-
azure:cost-budgets
|
|
726
|
-
azure:cost-export
|
|
727
|
-
azure:cost-management
|
|
728
|
-
azure:cost-management-and-billing
|
|
729
|
-
azure:counter
|
|
730
|
-
azure:cubes
|
|
731
|
-
azure:custom-ip-prefix
|
|
732
|
-
azure:custom-vision
|
|
733
|
-
azure:customer-lockbox-for-microsoft-azure
|
|
734
|
-
azure:dashboard
|
|
735
|
-
azure:dashboard-hub
|
|
736
|
-
azure:data-box
|
|
737
|
-
azure:data-collection-rules
|
|
738
|
-
azure:data-factories
|
|
739
|
-
azure:data-lake-analytics
|
|
740
|
-
azure:data-lake-storage-gen1
|
|
741
|
-
azure:data-lake-store-gen1
|
|
742
|
-
azure:data-share-invitations
|
|
743
|
-
azure:data-shares
|
|
744
|
-
azure:database-instance-for-sap
|
|
745
|
-
azure:ddo-s-protection-plans
|
|
746
|
-
azure:dedicated-hsm
|
|
747
|
-
azure:defender-cm-local-manager
|
|
748
|
-
azure:defender-dcs-controller
|
|
749
|
-
azure:defender-distributer-control-system
|
|
750
|
-
azure:defender-engineering-station
|
|
751
|
-
azure:defender-external-management
|
|
752
|
-
azure:defender-freezer-monitor
|
|
753
|
-
azure:defender-historian
|
|
754
|
-
azure:defender-hmi
|
|
755
|
-
azure:defender-industrial-packaging-system
|
|
756
|
-
azure:defender-industrial-printer
|
|
757
|
-
azure:defender-industrial-robot
|
|
758
|
-
azure:defender-industrial-scale-system
|
|
759
|
-
azure:defender-marquee
|
|
760
|
-
azure:defender-meter
|
|
761
|
-
azure:defender-plc
|
|
762
|
-
azure:defender-pneumatic-device
|
|
763
|
-
azure:defender-programable-board
|
|
764
|
-
azure:defender-relay
|
|
765
|
-
azure:defender-robot-controller
|
|
766
|
-
azure:defender-rtu
|
|
767
|
-
azure:defender-sensor
|
|
768
|
-
azure:defender-slot
|
|
769
|
-
azure:defender-web-guiding-system
|
|
770
|
-
azure:detonation
|
|
771
|
-
azure:dev-console
|
|
772
|
-
azure:dev-ops-starter
|
|
773
|
-
azure:dev-test-labs
|
|
774
|
-
azure:device-compliance
|
|
775
|
-
azure:device-configuration
|
|
776
|
-
azure:device-enrollment
|
|
777
|
-
azure:device-provisioning-services
|
|
778
|
-
azure:device-security-apple
|
|
779
|
-
azure:device-security-google
|
|
780
|
-
azure:device-security-windows
|
|
781
|
-
azure:device-update-io-t-hub
|
|
782
|
-
azure:devices
|
|
783
|
-
azure:diagnostics-settings
|
|
784
|
-
azure:digital-twins
|
|
785
|
-
azure:disk-encryption-sets
|
|
786
|
-
azure:disk-pool
|
|
787
|
-
azure:disks
|
|
788
|
-
azure:disks-classic
|
|
789
|
-
azure:disks-snapshots
|
|
790
|
-
azure:dns-multistack
|
|
791
|
-
azure:dns-private-resolver
|
|
792
|
-
azure:dns-security-policy
|
|
793
|
-
azure:dns-zones
|
|
794
|
-
azure:download
|
|
795
|
-
azure:e-books
|
|
796
|
-
azure:edge-management
|
|
797
|
-
azure:education
|
|
798
|
-
azure:elastic-job-agents
|
|
799
|
-
azure:elastic-san
|
|
800
|
-
azure:endpoint-analytics
|
|
801
|
-
azure:enterprise-applications
|
|
802
|
-
azure:entra-connect
|
|
803
|
-
azure:entra-connect-health
|
|
804
|
-
azure:entra-connect-sync
|
|
805
|
-
azure:entra-domain-services
|
|
806
|
-
azure:entra-global-secure-access
|
|
807
|
-
azure:entra-id-protection
|
|
808
|
-
azure:entra-identity-custom-roles
|
|
809
|
-
azure:entra-identity-licenses
|
|
810
|
-
azure:entra-identity-risky-signins
|
|
811
|
-
azure:entra-identity-risky-users
|
|
812
|
-
azure:entra-identity-roles-and-administrators
|
|
813
|
-
azure:entra-internet-access
|
|
814
|
-
azure:entra-managed-identities
|
|
815
|
-
azure:entra-private-access
|
|
816
|
-
azure:entra-privleged-identity-management
|
|
817
|
-
azure:entra-verified-id
|
|
818
|
-
azure:error
|
|
819
|
-
azure:event-grid-domains
|
|
820
|
-
azure:event-grid-subscriptions
|
|
821
|
-
azure:event-grid-topics
|
|
822
|
-
azure:event-hub-clusters
|
|
823
|
-
azure:event-hubs
|
|
824
|
-
azure:exchange-access
|
|
825
|
-
azure:exchange-on-premises-access
|
|
826
|
-
azure:express-route-circuits
|
|
827
|
-
azure:express-route-direct
|
|
828
|
-
azure:express-route-traffic-collector
|
|
829
|
-
azure:extended-security-updates
|
|
830
|
-
azure:extensions
|
|
831
|
-
azure:external-identities
|
|
832
|
-
azure:face-apis
|
|
833
|
-
azure:feature-previews
|
|
834
|
-
azure:fhir-service
|
|
835
|
-
azure:fiji
|
|
836
|
-
azure:file
|
|
837
|
-
azure:files
|
|
838
|
-
azure:firewalls
|
|
839
|
-
azure:folder-blank
|
|
840
|
-
azure:folder-website
|
|
841
|
-
azure:form-recognizers
|
|
842
|
-
azure:free-services
|
|
843
|
-
azure:front-door-and-cdn-profiles
|
|
844
|
-
azure:ftp
|
|
845
|
-
azure:function-apps
|
|
846
|
-
azure:gear
|
|
847
|
-
azure:genomics
|
|
848
|
-
azure:genomics-accounts
|
|
849
|
-
azure:globe-error
|
|
850
|
-
azure:globe-success
|
|
851
|
-
azure:globe-warning
|
|
852
|
-
azure:groups
|
|
853
|
-
azure:guide
|
|
854
|
-
azure:hd-insight-clusters
|
|
855
|
-
azure:hdi-aks-cluster
|
|
856
|
-
azure:heart
|
|
857
|
-
azure:help-and-support
|
|
858
|
-
azure:host-groups
|
|
859
|
-
azure:host-pools
|
|
860
|
-
azure:hosts
|
|
861
|
-
azure:ic-m-troubleshooting
|
|
862
|
-
azure:identity-governance
|
|
863
|
-
azure:identity-multi-factor-authentication
|
|
864
|
-
azure:identity-secure-score
|
|
865
|
-
azure:image
|
|
866
|
-
azure:image-definitions
|
|
867
|
-
azure:image-templates
|
|
868
|
-
azure:image-versions
|
|
869
|
-
azure:images
|
|
870
|
-
azure:immersive-readers
|
|
871
|
-
azure:import-export-jobs
|
|
872
|
-
azure:industrial-io-t
|
|
873
|
-
azure:information
|
|
874
|
-
azure:infrastructure-backup
|
|
875
|
-
azure:input-output
|
|
876
|
-
azure:instance-pools
|
|
877
|
-
azure:integration-accounts
|
|
878
|
-
azure:integration-environments
|
|
879
|
-
azure:integration-service-environments
|
|
880
|
-
azure:internet-analyzer-profiles
|
|
881
|
-
azure:intune
|
|
882
|
-
azure:intune-app-protection
|
|
883
|
-
azure:intune-for-education
|
|
884
|
-
azure:intune-trends
|
|
885
|
-
azure:io-t-central-applications
|
|
886
|
-
azure:io-t-edge
|
|
887
|
-
azure:io-t-hub
|
|
888
|
-
azure:ip-address-manager
|
|
889
|
-
azure:ip-groups
|
|
890
|
-
azure:journey-hub
|
|
891
|
-
azure:key-vaults
|
|
892
|
-
azure:keys
|
|
893
|
-
azure:kubernetes-fleet-manager
|
|
894
|
-
azure:kubernetes-services
|
|
895
|
-
azure:lab-accounts
|
|
896
|
-
azure:lab-services
|
|
897
|
-
azure:language
|
|
898
|
-
azure:language-understanding
|
|
899
|
-
azure:launch-portal
|
|
900
|
-
azure:learn
|
|
901
|
-
azure:load-balancer-hub
|
|
902
|
-
azure:load-balancers
|
|
903
|
-
azure:load-test
|
|
904
|
-
azure:load-testing
|
|
905
|
-
azure:local-network-gateways
|
|
906
|
-
azure:location
|
|
907
|
-
azure:log-analytics-query-pack
|
|
908
|
-
azure:log-analytics-workspaces
|
|
909
|
-
azure:log-streaming
|
|
910
|
-
azure:logic-apps
|
|
911
|
-
azure:logic-apps-custom-connector
|
|
912
|
-
azure:machine-learning
|
|
913
|
-
azure:machine-learning-studio-classic-web-services
|
|
914
|
-
azure:machine-learning-studio-web-service-plans
|
|
915
|
-
azure:machine-learning-studio-workspaces
|
|
916
|
-
azure:machines-azure-arc
|
|
917
|
-
azure:maintenance-configuration
|
|
918
|
-
azure:managed-applications-center
|
|
919
|
-
azure:managed-database
|
|
920
|
-
azure:managed-desktop
|
|
921
|
-
azure:managed-dev-ops-pools
|
|
922
|
-
azure:managed-file-shares
|
|
923
|
-
azure:managed-identities
|
|
924
|
-
azure:managed-instance-apache-cassandra
|
|
925
|
-
azure:managed-service-fabric
|
|
926
|
-
azure:management-groups
|
|
927
|
-
azure:management-portal
|
|
928
|
-
azure:marketplace
|
|
929
|
-
azure:marketplace-management
|
|
930
|
-
azure:med-tech-service
|
|
931
|
-
azure:media
|
|
932
|
-
azure:media-file
|
|
933
|
-
azure:mesh-applications
|
|
934
|
-
azure:metrics
|
|
935
|
-
azure:metrics-advisor
|
|
936
|
-
azure:microsoft-defender-easm
|
|
937
|
-
azure:microsoft-defender-for-cloud
|
|
938
|
-
azure:microsoft-defender-for-io-t
|
|
939
|
-
azure:microsoft-dev-box
|
|
940
|
-
azure:mindaro
|
|
941
|
-
azure:mission-landing-zone
|
|
942
|
-
azure:mobile
|
|
943
|
-
azure:mobile-engagement
|
|
944
|
-
azure:mobile-networks
|
|
945
|
-
azure:modular-data-center
|
|
946
|
-
azure:module
|
|
947
|
-
azure:monitor
|
|
948
|
-
azure:monitor-health-models
|
|
949
|
-
azure:multi-tenancy
|
|
950
|
-
azure:multifactor-authentication
|
|
951
|
-
azure:my-customers
|
|
952
|
-
azure:nat
|
|
953
|
-
azure:network-interfaces
|
|
954
|
-
azure:network-managers
|
|
955
|
-
azure:network-security-groups
|
|
956
|
-
azure:network-security-perimeters
|
|
957
|
-
azure:network-watcher
|
|
958
|
-
azure:notification-hub-namespaces
|
|
959
|
-
azure:notification-hubs
|
|
960
|
-
azure:offers
|
|
961
|
-
azure:on-premises-data-gateways
|
|
962
|
-
azure:open-supply-chain-platform
|
|
963
|
-
azure:operation-log-classic
|
|
964
|
-
azure:oracle-database
|
|
965
|
-
azure:os-images-classic
|
|
966
|
-
azure:osconfig
|
|
967
|
-
azure:outbound-connection
|
|
968
|
-
azure:partner-namespace
|
|
969
|
-
azure:partner-registration
|
|
970
|
-
azure:partner-topic
|
|
971
|
-
azure:peering-service
|
|
972
|
-
azure:peerings
|
|
973
|
-
azure:personalizers
|
|
974
|
-
azure:plans
|
|
975
|
-
azure:policy
|
|
976
|
-
azure:power
|
|
977
|
-
azure:power-bi-embedded
|
|
978
|
-
azure:power-platform
|
|
979
|
-
azure:power-up
|
|
980
|
-
azure:powershell
|
|
981
|
-
azure:preview-features
|
|
982
|
-
azure:private-endpoints
|
|
983
|
-
azure:private-link
|
|
984
|
-
azure:private-link-service
|
|
985
|
-
azure:private-link-services
|
|
986
|
-
azure:process-explorer
|
|
987
|
-
azure:production-ready-database
|
|
988
|
-
azure:proximity-placement-groups
|
|
989
|
-
azure:public-ip-addresses
|
|
990
|
-
azure:public-ip-addresses-classic
|
|
991
|
-
azure:public-ip-prefixes
|
|
992
|
-
azure:qn-a-makers
|
|
993
|
-
azure:quickstart-center
|
|
994
|
-
azure:recent
|
|
995
|
-
azure:recovery-services-vaults
|
|
996
|
-
azure:region-management
|
|
997
|
-
azure:relays
|
|
998
|
-
azure:remote-rendering
|
|
999
|
-
azure:reservations
|
|
1000
|
-
azure:reserved-capacity
|
|
1001
|
-
azure:reserved-ip-addresses-classic
|
|
1002
|
-
azure:resource-explorer
|
|
1003
|
-
azure:resource-graph-explorer
|
|
1004
|
-
azure:resource-group-list
|
|
1005
|
-
azure:resource-groups
|
|
1006
|
-
azure:resource-guard
|
|
1007
|
-
azure:resource-linked
|
|
1008
|
-
azure:resource-management-private-link
|
|
1009
|
-
azure:resource-mover
|
|
1010
|
-
azure:resources-provider
|
|
1011
|
-
azure:restore-points
|
|
1012
|
-
azure:restore-points-collections
|
|
1013
|
-
azure:route-filters
|
|
1014
|
-
azure:route-tables
|
|
1015
|
-
azure:rtos
|
|
1016
|
-
azure:savings-plans
|
|
1017
|
-
azure:scheduler
|
|
1018
|
-
azure:scheduler-job-collections
|
|
1019
|
-
azure:scvmm-management-servers
|
|
1020
|
-
azure:search
|
|
1021
|
-
azure:search-grid
|
|
1022
|
-
azure:security
|
|
1023
|
-
azure:security-baselines
|
|
1024
|
-
azure:send-grid-accounts
|
|
1025
|
-
azure:server-farm
|
|
1026
|
-
azure:serverless-search
|
|
1027
|
-
azure:service-catalog-mad
|
|
1028
|
-
azure:service-endpoint-policies
|
|
1029
|
-
azure:service-fabric-clusters
|
|
1030
|
-
azure:service-health
|
|
1031
|
-
azure:service-providers
|
|
1032
|
-
azure:shared-image-galleries
|
|
1033
|
-
azure:signal-r
|
|
1034
|
-
azure:software-as-a-service
|
|
1035
|
-
azure:software-updates
|
|
1036
|
-
azure:solutions
|
|
1037
|
-
azure:sonic-dash
|
|
1038
|
-
azure:spatial-anchor-accounts
|
|
1039
|
-
azure:speech-services
|
|
1040
|
-
azure:spot-vm
|
|
1041
|
-
azure:spot-vmss
|
|
1042
|
-
azure:sql-data-warehouses
|
|
1043
|
-
azure:sql-database
|
|
1044
|
-
azure:sql-elastic-pools
|
|
1045
|
-
azure:sql-managed-instance
|
|
1046
|
-
azure:sql-server
|
|
1047
|
-
azure:sql-server-registries
|
|
1048
|
-
azure:ssd
|
|
1049
|
-
azure:ssh-keys
|
|
1050
|
-
azure:ssis-lift-and-shift-ir
|
|
1051
|
-
azure:stack-hci-premium
|
|
1052
|
-
azure:static-apps
|
|
1053
|
-
azure:stor-simple-data-managers
|
|
1054
|
-
azure:stor-simple-device-managers
|
|
1055
|
-
azure:storage-accounts
|
|
1056
|
-
azure:storage-accounts-classic
|
|
1057
|
-
azure:storage-actions
|
|
1058
|
-
azure:storage-azure-files
|
|
1059
|
-
azure:storage-container
|
|
1060
|
-
azure:storage-explorer
|
|
1061
|
-
azure:storage-functions
|
|
1062
|
-
azure:storage-queue
|
|
1063
|
-
azure:storage-sync-services
|
|
1064
|
-
azure:stream-analytics-jobs
|
|
1065
|
-
azure:subnet
|
|
1066
|
-
azure:subscriptions
|
|
1067
|
-
azure:system-topic
|
|
1068
|
-
azure:table
|
|
1069
|
-
azure:tag
|
|
1070
|
-
azure:tags
|
|
1071
|
-
azure:targets-management
|
|
1072
|
-
azure:template-specs
|
|
1073
|
-
azure:templates
|
|
1074
|
-
azure:tenant-properties
|
|
1075
|
-
azure:tenant-status
|
|
1076
|
-
azure:test-base
|
|
1077
|
-
azure:tfs-vc-repository
|
|
1078
|
-
azure:time-series-data-sets
|
|
1079
|
-
azure:time-series-insights-access-policies
|
|
1080
|
-
azure:time-series-insights-environments
|
|
1081
|
-
azure:time-series-insights-event-sources
|
|
1082
|
-
azure:toolbox
|
|
1083
|
-
azure:traffic-manager-profiles
|
|
1084
|
-
azure:translator-text
|
|
1085
|
-
azure:troubleshoot
|
|
1086
|
-
azure:universal-print
|
|
1087
|
-
azure:update-management-center
|
|
1088
|
-
azure:updates
|
|
1089
|
-
azure:user-privacy
|
|
1090
|
-
azure:user-settings
|
|
1091
|
-
azure:user-subscriptions
|
|
1092
|
-
azure:users
|
|
1093
|
-
azure:verifiable-credentials
|
|
1094
|
-
azure:verification-as-a-service
|
|
1095
|
-
azure:versions
|
|
1096
|
-
azure:video-analyzers
|
|
1097
|
-
azure:virtual-clusters
|
|
1098
|
-
azure:virtual-enclaves
|
|
1099
|
-
azure:virtual-instance-for-sap
|
|
1100
|
-
azure:virtual-machine
|
|
1101
|
-
azure:virtual-machines-classic
|
|
1102
|
-
azure:virtual-network-gateways
|
|
1103
|
-
azure:virtual-networks
|
|
1104
|
-
azure:virtual-networks-classic
|
|
1105
|
-
azure:virtual-router
|
|
1106
|
-
azure:virtual-visits-builder
|
|
1107
|
-
azure:virtual-wan-hub
|
|
1108
|
-
azure:virtual-wans
|
|
1109
|
-
azure:vm-app-definitions
|
|
1110
|
-
azure:vm-app-versions
|
|
1111
|
-
azure:vm-image-version
|
|
1112
|
-
azure:vm-images-classic
|
|
1113
|
-
azure:vm-scale-sets
|
|
1114
|
-
azure:wac
|
|
1115
|
-
azure:wac-installer
|
|
1116
|
-
azure:web-app-database
|
|
1117
|
-
azure:web-application-firewall-policies-waf
|
|
1118
|
-
azure:web-jobs
|
|
1119
|
-
azure:web-slots
|
|
1120
|
-
azure:web-test
|
|
1121
|
-
azure:website-power
|
|
1122
|
-
azure:website-staging
|
|
1123
|
-
azure:windows-notification-services
|
|
1124
|
-
azure:windows10-core-services
|
|
1125
|
-
azure:workbooks
|
|
1126
|
-
azure:worker-container-app
|
|
1127
|
-
azure:workflow
|
|
1128
|
-
azure:workspace-gateway
|
|
1129
|
-
azure:workspaces
|
|
1130
|
-
gcp:access-context-manager
|
|
1131
|
-
gcp:administration
|
|
1132
|
-
gcp:advanced-agent-modeling
|
|
1133
|
-
gcp:advanced-solutions-lab
|
|
1134
|
-
gcp:agent-assist
|
|
1135
|
-
gcp:ai-hub
|
|
1136
|
-
gcp:ai-platform
|
|
1137
|
-
gcp:ai-platform-unified
|
|
1138
|
-
gcp:analytics-hub
|
|
1139
|
-
gcp:anthos
|
|
1140
|
-
gcp:anthos-config-management
|
|
1141
|
-
gcp:anthos-service-mesh
|
|
1142
|
-
gcp:api
|
|
1143
|
-
gcp:api-analytics
|
|
1144
|
-
gcp:api-monetization
|
|
1145
|
-
gcp:apigee-api-platform
|
|
1146
|
-
gcp:apigee-sense
|
|
1147
|
-
gcp:app-engine
|
|
1148
|
-
gcp:artifact-registry
|
|
1149
|
-
gcp:asset-inventory
|
|
1150
|
-
gcp:assured-workloads
|
|
1151
|
-
gcp:auto-ml
|
|
1152
|
-
gcp:auto-ml-natural-language
|
|
1153
|
-
gcp:auto-ml-tables
|
|
1154
|
-
gcp:auto-ml-translation
|
|
1155
|
-
gcp:auto-ml-video-intelligence
|
|
1156
|
-
gcp:auto-ml-vision
|
|
1157
|
-
gcp:bare-metal-solutions
|
|
1158
|
-
gcp:batch
|
|
1159
|
-
gcp:beyondcorp
|
|
1160
|
-
gcp:big-query
|
|
1161
|
-
gcp:bigtable
|
|
1162
|
-
gcp:billing
|
|
1163
|
-
gcp:binary-authorization
|
|
1164
|
-
gcp:catalog
|
|
1165
|
-
gcp:certificate-authority-service
|
|
1166
|
-
gcp:certificate-manager
|
|
1167
|
-
gcp:cloud-api-gateway
|
|
1168
|
-
gcp:cloud-apis
|
|
1169
|
-
gcp:cloud-armor
|
|
1170
|
-
gcp:cloud-asset-inventory
|
|
1171
|
-
gcp:cloud-audit-logs
|
|
1172
|
-
gcp:cloud-build
|
|
1173
|
-
gcp:cloud-cdn
|
|
1174
|
-
gcp:cloud-code
|
|
1175
|
-
gcp:cloud-composer
|
|
1176
|
-
gcp:cloud-data-fusion
|
|
1177
|
-
gcp:cloud-deploy
|
|
1178
|
-
gcp:cloud-deployment-manager
|
|
1179
|
-
gcp:cloud-dns
|
|
1180
|
-
gcp:cloud-domains
|
|
1181
|
-
gcp:cloud-ekm
|
|
1182
|
-
gcp:cloud-endpoints
|
|
1183
|
-
gcp:cloud-external-ip-addresses
|
|
1184
|
-
gcp:cloud-firewall-rules
|
|
1185
|
-
gcp:cloud-for-marketing
|
|
1186
|
-
gcp:cloud-functions
|
|
1187
|
-
gcp:cloud-generic
|
|
1188
|
-
gcp:cloud-gpu
|
|
1189
|
-
gcp:cloud-healthcare-api
|
|
1190
|
-
gcp:cloud-healthcare-marketplace
|
|
1191
|
-
gcp:cloud-hsm
|
|
1192
|
-
gcp:cloud-ids
|
|
1193
|
-
gcp:cloud-inference-api
|
|
1194
|
-
gcp:cloud-interconnect
|
|
1195
|
-
gcp:cloud-jobs-api
|
|
1196
|
-
gcp:cloud-load-balancing
|
|
1197
|
-
gcp:cloud-logging
|
|
1198
|
-
gcp:cloud-media-edge
|
|
1199
|
-
gcp:cloud-monitoring
|
|
1200
|
-
gcp:cloud-nat
|
|
1201
|
-
gcp:cloud-natural-language-api
|
|
1202
|
-
gcp:cloud-network
|
|
1203
|
-
gcp:cloud-ops
|
|
1204
|
-
gcp:cloud-optimization-ai
|
|
1205
|
-
gcp:cloud-optimization-ai-fleet-routing-api
|
|
1206
|
-
gcp:cloud-router
|
|
1207
|
-
gcp:cloud-routes
|
|
1208
|
-
gcp:cloud-run
|
|
1209
|
-
gcp:cloud-run-for-anthos
|
|
1210
|
-
gcp:cloud-scheduler
|
|
1211
|
-
gcp:cloud-security-scanner
|
|
1212
|
-
gcp:cloud-shell
|
|
1213
|
-
gcp:cloud-spanner
|
|
1214
|
-
gcp:cloud-sql
|
|
1215
|
-
gcp:cloud-storage
|
|
1216
|
-
gcp:cloud-tasks
|
|
1217
|
-
gcp:cloud-test-lab
|
|
1218
|
-
gcp:cloud-tpu
|
|
1219
|
-
gcp:cloud-translation-api
|
|
1220
|
-
gcp:cloud-vision-api
|
|
1221
|
-
gcp:cloud-vpn
|
|
1222
|
-
gcp:compute-engine
|
|
1223
|
-
gcp:configuration-management
|
|
1224
|
-
gcp:connectivity-test
|
|
1225
|
-
gcp:connectors
|
|
1226
|
-
gcp:contact-center-ai
|
|
1227
|
-
gcp:container-optimized-os
|
|
1228
|
-
gcp:container-registry
|
|
1229
|
-
gcp:data-catalog
|
|
1230
|
-
gcp:data-labeling
|
|
1231
|
-
gcp:data-layers
|
|
1232
|
-
gcp:data-loss-prevention-api
|
|
1233
|
-
gcp:data-qn-a
|
|
1234
|
-
gcp:data-studio
|
|
1235
|
-
gcp:data-transfer
|
|
1236
|
-
gcp:database-migration-service
|
|
1237
|
-
gcp:dataflow
|
|
1238
|
-
gcp:datalab
|
|
1239
|
-
gcp:dataplex
|
|
1240
|
-
gcp:datapol
|
|
1241
|
-
gcp:dataprep
|
|
1242
|
-
gcp:dataproc
|
|
1243
|
-
gcp:dataproc-metastore
|
|
1244
|
-
gcp:datashare
|
|
1245
|
-
gcp:datastore
|
|
1246
|
-
gcp:datastream
|
|
1247
|
-
gcp:debugger
|
|
1248
|
-
gcp:developer-portal
|
|
1249
|
-
gcp:dialogflow
|
|
1250
|
-
gcp:dialogflow-cx
|
|
1251
|
-
gcp:dialogflow-insights
|
|
1252
|
-
gcp:document-ai
|
|
1253
|
-
gcp:early-access-center
|
|
1254
|
-
gcp:error-reporting
|
|
1255
|
-
gcp:eventarc
|
|
1256
|
-
gcp:filestore
|
|
1257
|
-
gcp:financial-services-marketplace
|
|
1258
|
-
gcp:firestore
|
|
1259
|
-
gcp:fleet-engine
|
|
1260
|
-
gcp:free-trial
|
|
1261
|
-
gcp:game-servers
|
|
1262
|
-
gcp:gce-systems-management
|
|
1263
|
-
gcp:genomics
|
|
1264
|
-
gcp:gke-on-prem
|
|
1265
|
-
gcp:google-cloud-marketplace
|
|
1266
|
-
gcp:google-kubernetes-engine
|
|
1267
|
-
gcp:google-maps-platform
|
|
1268
|
-
gcp:healthcare-nlp-api
|
|
1269
|
-
gcp:home
|
|
1270
|
-
gcp:identity-and-access-management
|
|
1271
|
-
gcp:identity-aware-proxy
|
|
1272
|
-
gcp:identity-platform
|
|
1273
|
-
gcp:iot-core
|
|
1274
|
-
gcp:iot-edge
|
|
1275
|
-
gcp:key-access-justifications
|
|
1276
|
-
gcp:key-management-service
|
|
1277
|
-
gcp:kuberun
|
|
1278
|
-
gcp:launcher
|
|
1279
|
-
gcp:local-ssd
|
|
1280
|
-
gcp:looker
|
|
1281
|
-
gcp:managed-service-for-microsoft-active-directory
|
|
1282
|
-
gcp:media-translation-api
|
|
1283
|
-
gcp:memorystore
|
|
1284
|
-
gcp:migrate-for-anthos
|
|
1285
|
-
gcp:migrate-for-compute-engine
|
|
1286
|
-
gcp:my-cloud
|
|
1287
|
-
gcp:network-connectivity-center
|
|
1288
|
-
gcp:network-intelligence-center
|
|
1289
|
-
gcp:network-security
|
|
1290
|
-
gcp:network-tiers
|
|
1291
|
-
gcp:network-topology
|
|
1292
|
-
gcp:onboarding
|
|
1293
|
-
gcp:os-configuration-management
|
|
1294
|
-
gcp:os-inventory-management
|
|
1295
|
-
gcp:os-patch-management
|
|
1296
|
-
gcp:partner-interconnect
|
|
1297
|
-
gcp:partner-portal
|
|
1298
|
-
gcp:performance-dashboard
|
|
1299
|
-
gcp:permissions
|
|
1300
|
-
gcp:persistent-disk
|
|
1301
|
-
gcp:phishing-protection
|
|
1302
|
-
gcp:policy-analyzer
|
|
1303
|
-
gcp:premium-network-tier
|
|
1304
|
-
gcp:private-connectivity
|
|
1305
|
-
gcp:private-service-connect
|
|
1306
|
-
gcp:producer-portal
|
|
1307
|
-
gcp:profiler
|
|
1308
|
-
gcp:project
|
|
1309
|
-
gcp:pub-sub
|
|
1310
|
-
gcp:quantum-engine
|
|
1311
|
-
gcp:quotas
|
|
1312
|
-
gcp:real-world-insights
|
|
1313
|
-
gcp:recommendations-ai
|
|
1314
|
-
gcp:release-notes
|
|
1315
|
-
gcp:retail-api
|
|
1316
|
-
gcp:risk-manager
|
|
1317
|
-
gcp:runtime-config
|
|
1318
|
-
gcp:secret-manager
|
|
1319
|
-
gcp:security
|
|
1320
|
-
gcp:security-command-center
|
|
1321
|
-
gcp:security-health-advisor
|
|
1322
|
-
gcp:security-key-enforcement
|
|
1323
|
-
gcp:service-discovery
|
|
1324
|
-
gcp:speech-to-text
|
|
1325
|
-
gcp:stackdriver
|
|
1326
|
-
gcp:standard-network-tier
|
|
1327
|
-
gcp:stream-suite
|
|
1328
|
-
gcp:support
|
|
1329
|
-
gcp:tensorflow-enterprise
|
|
1330
|
-
gcp:text-to-speech
|
|
1331
|
-
gcp:tools-for-powershell
|
|
1332
|
-
gcp:trace
|
|
1333
|
-
gcp:traffic-director
|
|
1334
|
-
gcp:transfer
|
|
1335
|
-
gcp:transfer-appliance
|
|
1336
|
-
gcp:user-preferences
|
|
1337
|
-
gcp:vertex-ai
|
|
1338
|
-
gcp:video-intelligence-api
|
|
1339
|
-
gcp:virtual-private-cloud
|
|
1340
|
-
gcp:visual-inspection
|
|
1341
|
-
gcp:vmware-engine
|
|
1342
|
-
gcp:web-risk
|
|
1343
|
-
gcp:web-security-scanner
|
|
1344
|
-
gcp:workflows
|
|
1345
|
-
gcp:workload-identity-pool
|
|
1346
|
-
tech:aarch64
|
|
1347
|
-
tech:adobe-illustrator
|
|
1348
|
-
tech:adobe-photoshop
|
|
1349
|
-
tech:adobe-premiere-pro
|
|
1350
|
-
tech:adobe-xd
|
|
1351
|
-
tech:adonis-js
|
|
1352
|
-
tech:after-effects
|
|
1353
|
-
tech:airflow
|
|
1354
|
-
tech:akka
|
|
1355
|
-
tech:algolia
|
|
1356
|
-
tech:alpine-js
|
|
1357
|
-
tech:amazon-web-services
|
|
1358
|
-
tech:anaconda
|
|
1359
|
-
tech:android
|
|
1360
|
-
tech:android-studio
|
|
1361
|
-
tech:angular
|
|
1362
|
-
tech:angular-js
|
|
1363
|
-
tech:ansible
|
|
1364
|
-
tech:ant-design
|
|
1365
|
-
tech:apache
|
|
1366
|
-
tech:apl
|
|
1367
|
-
tech:appcelerator
|
|
1368
|
-
tech:apple
|
|
1369
|
-
tech:apple-safari
|
|
1370
|
-
tech:appwrite
|
|
1371
|
-
tech:arch-linux
|
|
1372
|
-
tech:arduino
|
|
1373
|
-
tech:argo-cd
|
|
1374
|
-
tech:astro
|
|
1375
|
-
tech:atom
|
|
1376
|
-
tech:autodesk-maya
|
|
1377
|
-
tech:autodesk-shot-grid
|
|
1378
|
-
tech:awk
|
|
1379
|
-
tech:azios
|
|
1380
|
-
tech:azure
|
|
1381
|
-
tech:azure-devops
|
|
1382
|
-
tech:azure-sql-database
|
|
1383
|
-
tech:babel
|
|
1384
|
-
tech:backbone-js
|
|
1385
|
-
tech:ballerina
|
|
1386
|
-
tech:bamboo
|
|
1387
|
-
tech:bash
|
|
1388
|
-
tech:behance
|
|
1389
|
-
tech:bitbucket
|
|
1390
|
-
tech:blender
|
|
1391
|
-
tech:bootstrap
|
|
1392
|
-
tech:bower
|
|
1393
|
-
tech:browserstack
|
|
1394
|
-
tech:bulma
|
|
1395
|
-
tech:bun
|
|
1396
|
-
tech:c
|
|
1397
|
-
tech:cairo-graphics
|
|
1398
|
-
tech:cake-php
|
|
1399
|
-
tech:canva
|
|
1400
|
-
tech:capacitor
|
|
1401
|
-
tech:cassandra
|
|
1402
|
-
tech:cent-os
|
|
1403
|
-
tech:chrome
|
|
1404
|
-
tech:circle-ci
|
|
1405
|
-
tech:clarity
|
|
1406
|
-
tech:clion
|
|
1407
|
-
tech:clojure
|
|
1408
|
-
tech:clojure-script
|
|
1409
|
-
tech:cloudflare
|
|
1410
|
-
tech:cloudflare-workers
|
|
1411
|
-
tech:cmake
|
|
1412
|
-
tech:code-igniter
|
|
1413
|
-
tech:code-pen
|
|
1414
|
-
tech:codeac
|
|
1415
|
-
tech:codecov
|
|
1416
|
-
tech:coffee-script
|
|
1417
|
-
tech:composer
|
|
1418
|
-
tech:confluence
|
|
1419
|
-
tech:consul
|
|
1420
|
-
tech:contao
|
|
1421
|
-
tech:corejs
|
|
1422
|
-
tech:cosmosdb
|
|
1423
|
-
tech:couchdb
|
|
1424
|
-
tech:cplusplus
|
|
1425
|
-
tech:crystal
|
|
1426
|
-
tech:csharp
|
|
1427
|
-
tech:css3
|
|
1428
|
-
tech:cucumber
|
|
1429
|
-
tech:cypress
|
|
1430
|
-
tech:d3js
|
|
1431
|
-
tech:dart
|
|
1432
|
-
tech:data-grip
|
|
1433
|
-
tech:data-spell
|
|
1434
|
-
tech:dbeaver
|
|
1435
|
-
tech:debian
|
|
1436
|
-
tech:deno
|
|
1437
|
-
tech:devicon
|
|
1438
|
-
tech:digital-ocean
|
|
1439
|
-
tech:discord-js
|
|
1440
|
-
tech:django
|
|
1441
|
-
tech:django-rest
|
|
1442
|
-
tech:docker
|
|
1443
|
-
tech:doctrine
|
|
1444
|
-
tech:dropwizard
|
|
1445
|
-
tech:drupal
|
|
1446
|
-
tech:eclipse-ceylon
|
|
1447
|
-
tech:eclipse-ide
|
|
1448
|
-
tech:eclipse-vert-x
|
|
1449
|
-
tech:elasticbeats
|
|
1450
|
-
tech:elasticsearch
|
|
1451
|
-
tech:electron
|
|
1452
|
-
tech:eleventy-11ty
|
|
1453
|
-
tech:elixir
|
|
1454
|
-
tech:elm
|
|
1455
|
-
tech:embedded-c
|
|
1456
|
-
tech:ember-js
|
|
1457
|
-
tech:envoy
|
|
1458
|
-
tech:erlang
|
|
1459
|
-
tech:eslint
|
|
1460
|
-
tech:express
|
|
1461
|
-
tech:facebook
|
|
1462
|
-
tech:fast-api
|
|
1463
|
-
tech:fastify
|
|
1464
|
-
tech:fauna
|
|
1465
|
-
tech:feathers
|
|
1466
|
-
tech:fedora
|
|
1467
|
-
tech:figma
|
|
1468
|
-
tech:file-zilla
|
|
1469
|
-
tech:firebase
|
|
1470
|
-
tech:firefox
|
|
1471
|
-
tech:flask
|
|
1472
|
-
tech:flutter
|
|
1473
|
-
tech:fortran
|
|
1474
|
-
tech:foundation
|
|
1475
|
-
tech:fsharp
|
|
1476
|
-
tech:gatling
|
|
1477
|
-
tech:gatsby
|
|
1478
|
-
tech:gazebo
|
|
1479
|
-
tech:gcc
|
|
1480
|
-
tech:gentoo
|
|
1481
|
-
tech:ghost
|
|
1482
|
-
tech:gimp
|
|
1483
|
-
tech:git
|
|
1484
|
-
tech:gitbook
|
|
1485
|
-
tech:github
|
|
1486
|
-
tech:github-actions
|
|
1487
|
-
tech:github-codespaces
|
|
1488
|
-
tech:gitlab
|
|
1489
|
-
tech:gitpod
|
|
1490
|
-
tech:gitter
|
|
1491
|
-
tech:gnu-emacs
|
|
1492
|
-
tech:go
|
|
1493
|
-
tech:go-land
|
|
1494
|
-
tech:godot-engine
|
|
1495
|
-
tech:google
|
|
1496
|
-
tech:google-cloud
|
|
1497
|
-
tech:gradle
|
|
1498
|
-
tech:grafana
|
|
1499
|
-
tech:grails
|
|
1500
|
-
tech:graphql
|
|
1501
|
-
tech:groovy
|
|
1502
|
-
tech:grunt-js
|
|
1503
|
-
tech:gulp-js
|
|
1504
|
-
tech:hadoop
|
|
1505
|
-
tech:handlebars
|
|
1506
|
-
tech:hardhat
|
|
1507
|
-
tech:harvester
|
|
1508
|
-
tech:hashicorp-vault
|
|
1509
|
-
tech:haskell
|
|
1510
|
-
tech:haxe
|
|
1511
|
-
tech:helm
|
|
1512
|
-
tech:heroku
|
|
1513
|
-
tech:hibernate
|
|
1514
|
-
tech:homebrew
|
|
1515
|
-
tech:html5
|
|
1516
|
-
tech:hugo
|
|
1517
|
-
tech:ibm-spss-statistics
|
|
1518
|
-
tech:ie10
|
|
1519
|
-
tech:ifttt
|
|
1520
|
-
tech:influxdb
|
|
1521
|
-
tech:inkscape
|
|
1522
|
-
tech:insomnia
|
|
1523
|
-
tech:intellij-idea
|
|
1524
|
-
tech:ionic
|
|
1525
|
-
tech:jaeger
|
|
1526
|
-
tech:jamstack
|
|
1527
|
-
tech:jasmine
|
|
1528
|
-
tech:java
|
|
1529
|
-
tech:javascript
|
|
1530
|
-
tech:jeet
|
|
1531
|
-
tech:jekyll
|
|
1532
|
-
tech:jenkins
|
|
1533
|
-
tech:jest
|
|
1534
|
-
tech:jetbrains
|
|
1535
|
-
tech:jira
|
|
1536
|
-
tech:jira-align
|
|
1537
|
-
tech:jquery
|
|
1538
|
-
tech:json
|
|
1539
|
-
tech:jule
|
|
1540
|
-
tech:julia
|
|
1541
|
-
tech:junit
|
|
1542
|
-
tech:jupyter
|
|
1543
|
-
tech:k3os
|
|
1544
|
-
tech:k3s
|
|
1545
|
-
tech:kafka
|
|
1546
|
-
tech:kaggle
|
|
1547
|
-
tech:karate
|
|
1548
|
-
tech:karma
|
|
1549
|
-
tech:keras
|
|
1550
|
-
tech:kibana
|
|
1551
|
-
tech:knex-js
|
|
1552
|
-
tech:knockout
|
|
1553
|
-
tech:kotlin
|
|
1554
|
-
tech:krakenjs
|
|
1555
|
-
tech:ktor
|
|
1556
|
-
tech:kubernetes
|
|
1557
|
-
tech:labview
|
|
1558
|
-
tech:laravel
|
|
1559
|
-
tech:latex
|
|
1560
|
-
tech:less-js
|
|
1561
|
-
tech:linkedin
|
|
1562
|
-
tech:linux
|
|
1563
|
-
tech:liquibase
|
|
1564
|
-
tech:livewire
|
|
1565
|
-
tech:llvm
|
|
1566
|
-
tech:logstash
|
|
1567
|
-
tech:lua
|
|
1568
|
-
tech:lumen
|
|
1569
|
-
tech:magento
|
|
1570
|
-
tech:markdown
|
|
1571
|
-
tech:material-ui
|
|
1572
|
-
tech:materialize
|
|
1573
|
-
tech:matlab
|
|
1574
|
-
tech:matplotlib
|
|
1575
|
-
tech:maven
|
|
1576
|
-
tech:meteor-js
|
|
1577
|
-
tech:microsoft-sql-server
|
|
1578
|
-
tech:minitab
|
|
1579
|
-
tech:mob-x
|
|
1580
|
-
tech:mocha
|
|
1581
|
-
tech:modx
|
|
1582
|
-
tech:moleculer
|
|
1583
|
-
tech:mongodb
|
|
1584
|
-
tech:mongoose-js
|
|
1585
|
-
tech:moodle
|
|
1586
|
-
tech:ms-dos
|
|
1587
|
-
tech:mysql
|
|
1588
|
-
tech:nano
|
|
1589
|
-
tech:nerog
|
|
1590
|
-
tech:nestjs
|
|
1591
|
-
tech:net
|
|
1592
|
-
tech:net-core
|
|
1593
|
-
tech:network-x
|
|
1594
|
-
tech:new4j
|
|
1595
|
-
tech:nextjs
|
|
1596
|
-
tech:nginx
|
|
1597
|
-
tech:nhibernate
|
|
1598
|
-
tech:nim
|
|
1599
|
-
tech:nimble
|
|
1600
|
-
tech:nix
|
|
1601
|
-
tech:nodejs
|
|
1602
|
-
tech:nodemon
|
|
1603
|
-
tech:nodewebkit
|
|
1604
|
-
tech:npm
|
|
1605
|
-
tech:nuget
|
|
1606
|
-
tech:num-py
|
|
1607
|
-
tech:nuxt-js
|
|
1608
|
-
tech:objective-c
|
|
1609
|
-
tech:ocaml
|
|
1610
|
-
tech:oh-my-zsh
|
|
1611
|
-
tech:okta
|
|
1612
|
-
tech:open-al
|
|
1613
|
-
tech:open-api
|
|
1614
|
-
tech:open-cl
|
|
1615
|
-
tech:open-cv
|
|
1616
|
-
tech:open-gl
|
|
1617
|
-
tech:open-stack
|
|
1618
|
-
tech:open-suse
|
|
1619
|
-
tech:open-telemetry
|
|
1620
|
-
tech:opera
|
|
1621
|
-
tech:oracle
|
|
1622
|
-
tech:p5js
|
|
1623
|
-
tech:packer
|
|
1624
|
-
tech:pandas
|
|
1625
|
-
tech:perl
|
|
1626
|
-
tech:pf-sense
|
|
1627
|
-
tech:phalcon
|
|
1628
|
-
tech:phoenix-framework
|
|
1629
|
-
tech:photon-engine
|
|
1630
|
-
tech:php
|
|
1631
|
-
tech:php-storm
|
|
1632
|
-
tech:playwrite
|
|
1633
|
-
tech:ploty
|
|
1634
|
-
tech:podman
|
|
1635
|
-
tech:polygon
|
|
1636
|
-
tech:portainer
|
|
1637
|
-
tech:postcss
|
|
1638
|
-
tech:postgresql
|
|
1639
|
-
tech:postman
|
|
1640
|
-
tech:powershell
|
|
1641
|
-
tech:processing
|
|
1642
|
-
tech:prometheus
|
|
1643
|
-
tech:protractor
|
|
1644
|
-
tech:purescript
|
|
1645
|
-
tech:putty
|
|
1646
|
-
tech:pycharm
|
|
1647
|
-
tech:pyscript
|
|
1648
|
-
tech:pytest
|
|
1649
|
-
tech:python
|
|
1650
|
-
tech:python-poetry
|
|
1651
|
-
tech:pytorch
|
|
1652
|
-
tech:qodana
|
|
1653
|
-
tech:qt
|
|
1654
|
-
tech:quarkus
|
|
1655
|
-
tech:quasar
|
|
1656
|
-
tech:qwik
|
|
1657
|
-
tech:r
|
|
1658
|
-
tech:rabbitmq
|
|
1659
|
-
tech:rancher
|
|
1660
|
-
tech:raspberrypi
|
|
1661
|
-
tech:reach
|
|
1662
|
-
tech:react
|
|
1663
|
-
tech:react-bootstrap
|
|
1664
|
-
tech:realm
|
|
1665
|
-
tech:red-cube-s-epic-compiler-thingy-programming-re-ct
|
|
1666
|
-
tech:redhat
|
|
1667
|
-
tech:redis
|
|
1668
|
-
tech:redux
|
|
1669
|
-
tech:ren-py
|
|
1670
|
-
tech:rider
|
|
1671
|
-
tech:robot-operating-system-ros
|
|
1672
|
-
tech:rocksdb
|
|
1673
|
-
tech:rollup-js
|
|
1674
|
-
tech:rspec
|
|
1675
|
-
tech:rstudio
|
|
1676
|
-
tech:ruby
|
|
1677
|
-
tech:ruby-mine
|
|
1678
|
-
tech:ruby-on-rails
|
|
1679
|
-
tech:rust
|
|
1680
|
-
tech:salesforce
|
|
1681
|
-
tech:sanity
|
|
1682
|
-
tech:sass
|
|
1683
|
-
tech:scala
|
|
1684
|
-
tech:scalingo
|
|
1685
|
-
tech:sdl
|
|
1686
|
-
tech:selenium
|
|
1687
|
-
tech:sema-software
|
|
1688
|
-
tech:sequelize
|
|
1689
|
-
tech:shopware
|
|
1690
|
-
tech:sketch
|
|
1691
|
-
tech:slack
|
|
1692
|
-
tech:socket-io
|
|
1693
|
-
tech:solid-js
|
|
1694
|
-
tech:solidity
|
|
1695
|
-
tech:sonarqube
|
|
1696
|
-
tech:sourcetree
|
|
1697
|
-
tech:spark
|
|
1698
|
-
tech:splunk
|
|
1699
|
-
tech:spring
|
|
1700
|
-
tech:sql-developer
|
|
1701
|
-
tech:sqlalchemy
|
|
1702
|
-
tech:sqlite
|
|
1703
|
-
tech:ssh
|
|
1704
|
-
tech:stackoverflow
|
|
1705
|
-
tech:stata
|
|
1706
|
-
tech:storybook
|
|
1707
|
-
tech:streamlit
|
|
1708
|
-
tech:stylus
|
|
1709
|
-
tech:subversion
|
|
1710
|
-
tech:svelte
|
|
1711
|
-
tech:swagger
|
|
1712
|
-
tech:swift
|
|
1713
|
-
tech:symfony
|
|
1714
|
-
tech:tailwind-css
|
|
1715
|
-
tech:tauri
|
|
1716
|
-
tech:tensorflow
|
|
1717
|
-
tech:terraform
|
|
1718
|
-
tech:tex
|
|
1719
|
-
tech:the-algorithms
|
|
1720
|
-
tech:three-js
|
|
1721
|
-
tech:titanium-sdk
|
|
1722
|
-
tech:tomcat
|
|
1723
|
-
tech:tortoise-git
|
|
1724
|
-
tech:tower
|
|
1725
|
-
tech:traefik-mesh
|
|
1726
|
-
tech:traefik-proxy
|
|
1727
|
-
tech:travis-ci
|
|
1728
|
-
tech:trello
|
|
1729
|
-
tech:twitter
|
|
1730
|
-
tech:typescript
|
|
1731
|
-
tech:typo3
|
|
1732
|
-
tech:ubuntu
|
|
1733
|
-
tech:uml
|
|
1734
|
-
tech:unity
|
|
1735
|
-
tech:unix
|
|
1736
|
-
tech:unreal-engine
|
|
1737
|
-
tech:uwsgi
|
|
1738
|
-
tech:v8
|
|
1739
|
-
tech:vagrant
|
|
1740
|
-
tech:vala
|
|
1741
|
-
tech:vercel
|
|
1742
|
-
tech:veutify
|
|
1743
|
-
tech:vim
|
|
1744
|
-
tech:visualstudio
|
|
1745
|
-
tech:vite
|
|
1746
|
-
tech:vitejs
|
|
1747
|
-
tech:vscode
|
|
1748
|
-
tech:vsphere
|
|
1749
|
-
tech:vue
|
|
1750
|
-
tech:vue-storefront
|
|
1751
|
-
tech:vyper
|
|
1752
|
-
tech:webassembly
|
|
1753
|
-
tech:webflow
|
|
1754
|
-
tech:weblate
|
|
1755
|
-
tech:webpack
|
|
1756
|
-
tech:webstorm
|
|
1757
|
-
tech:windows8
|
|
1758
|
-
tech:windows11
|
|
1759
|
-
tech:woo-commerce
|
|
1760
|
-
tech:wordpress
|
|
1761
|
-
tech:xamarin
|
|
1762
|
-
tech:xcode
|
|
1763
|
-
tech:xml
|
|
1764
|
-
tech:yaml
|
|
1765
|
-
tech:yarn
|
|
1766
|
-
tech:yii-framework
|
|
1767
|
-
tech:yuno-host
|
|
1768
|
-
tech:zend-framework
|
|
1769
|
-
tech:zig
|
|
1770
|
-
}}`,Scheme="likec4builtin",Uri=`${Scheme}:///likec4/lib/icons.c4`;var mainExports=requireMain$3();const onDidChangeModel=new mainExports.NotificationType("likec4/onDidChangeModel"),fetchModel=new mainExports.RequestType0("likec4/fetchModel"),fetchComputedModel=new mainExports.RequestType("likec4/fetchComputedModel"),computeView=new mainExports.RequestType("likec4/computeView"),layoutView=new mainExports.RequestType("likec4/layout-view"),buildDocuments=new mainExports.RequestType("likec4/build"),locate=new mainExports.RequestType("likec4/locate"),changeView=new mainExports.RequestType("likec4/change-view");class Rpc extends ADisposable{constructor(et){super(),this.services=et}init(){const et=this.services.likec4.ModelBuilder,nt=this.services.likec4.ModelLocator,rt=this.services.likec4.ModelChanges,st=this.services.likec4.Views,ot=this.services.shared.lsp.Connection;if(!ot){logger$1.info("[ServerRpc] no connection, not initializing");return}logger$1.info("[ServerRpc] init");const en=this.services.shared.workspace.LangiumDocuments,tn=this.services.shared.workspace.DocumentBuilder,nn=T$1(()=>{ot.sendNotification(onDidChangeModel,"").catch(sn=>(logger$1.warn(`[ServerRpc] error sending onDidChangeModel: ${sn}`),Promise.resolve()))},{minQuietPeriodMs:250,maxBurstDurationMs:1e3,minGapMs:200});let rn=!0;this.onDispose(et.onModelParsed(()=>nn.call()),ot.onRequest(fetchComputedModel,async({cleanCaches:sn},an)=>(sn&&(this.services.WorkspaceCache.clear(),this.services.DocumentCache.clear()),{model:await et.buildComputedModel(an)})),ot.onRequest(fetchModel,async sn=>({model:await et.buildModel(sn)})),ot.onRequest(computeView,async({viewId:sn},an)=>({view:await et.computeView(sn,an)})),ot.onRequest(layoutView,async({viewId:sn},an)=>({result:await st.layoutView(sn,an)})),ot.onRequest(buildDocuments,async({docs:sn},an)=>{const on=sn.map(fn=>URI.parse(fn)),cn=fn=>on.every(gn=>!UriUtils.equals(gn,fn)),ln=en.all.filter(fn=>isLikeC4LangiumDocument(fn)&&cn(fn.uri)&&fn.uri.scheme!==Scheme).map(fn=>fn.uri).toArray();logger$1.debug(`[ServerRpc] received request to build:
|
|
1771
|
-
changed (total ${on.length}):${sn.map(fn=>`
|
|
1772
|
-
- `+fn).join("")}
|
|
1773
|
-
deleted (total ${ln.length}):${ln.map(fn=>`
|
|
1774
|
-
- `+fn.toString()).join(`
|
|
1775
|
-
`)}`),!rn&&on.length+ln.length>0&&await Promise.allSettled([...on,...ln].map(async fn=>{const gn=fn.toString();logger$1.debug(`clear diagnostics for ${gn}`);try{await ot.sendDiagnostics({uri:gn,diagnostics:[]})}catch(pn){logger$1.warn(`error clearing diagnostics for ${gn}: ${pn}`)}})),rn=!1,await interruptAndCheck(an),await tn.update(on,ln,an)}),ot.onRequest(locate,sn=>{switch(!0){case"element"in sn:return nt.locateElement(sn.element,sn.property??"name");case"relation"in sn:return nt.locateRelation(sn.relation);case"view"in sn:return nt.locateView(sn.view);case"deployment"in sn:return nt.locateDeploymentElement(sn.deployment,sn.property??"name");default:core.nonexhaustive(sn)}}),ot.onRequest(changeView,async(sn,an)=>await rt.applyChange(sn)),Disposable.create(()=>{nn.cancel()}))}}class NodeKindProvider{constructor(et){this.services=et}getSymbolKind(et){const nt=isAstNode(et)?et.$type:et.type,rt=(...st)=>st.some(ot=>this.services.AstReflection.isSubtype(nt,ot));switch(!0){case rt(Element,ExtendElement,DeploymentNode,DeployedInstance):return SymbolKind.Constructor;case rt(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return SymbolKind.Namespace;case rt(LikeC4View):return SymbolKind.Class;case rt(Tag,LibIcon,CustomColor,SpecificationTag):return SymbolKind.EnumMember;case rt(RelationshipKind,SpecificationRelationshipKind):return SymbolKind.Event;case rt(ElementKind,DeploymentNodeKind,SpecificationElementKind,SpecificationDeploymentNodeKind):return SymbolKind.TypeParameter}return SymbolKind.Field}getCompletionItemKind(et){const nt=isAstNode(et)?et.$type:et.type,rt=(...st)=>st.some(ot=>this.services.AstReflection.isSubtype(nt,ot));switch(!0){case rt(CustomColor):return CompletionItemKind.Color;case rt(Element,DeploymentNode,DeployedInstance,ExtendElement):return CompletionItemKind.Constructor;case rt(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return CompletionItemKind.Module;case rt(LikeC4View):return CompletionItemKind.Class;case rt(Tag,LibIcon,CustomColor,SpecificationTag):return CompletionItemKind.EnumMember;case rt(RelationshipKind,SpecificationRelationshipKind):return CompletionItemKind.Event;case rt(ElementKind,SpecificationElementKind,DeploymentNodeKind,SpecificationDeploymentNodeKind):return CompletionItemKind.TypeParameter;default:return CompletionItemKind.Reference}}}class LikeC4WorkspaceManager extends DefaultWorkspaceManager{documentFactory;constructor(et){super(et),this.documentFactory=et.workspace.LangiumDocumentFactory}async loadAdditionalDocuments(et,nt){nt(this.documentFactory.fromString(LibIcons,URI.parse(Uri))),await super.loadAdditionalDocuments(et,nt)}workspace(){return this.folders&&core.hasAtLeast(this.folders,1)?this.folders[0]:null}get workspaceUri(){const et=this.workspace();return core.invariant(et,"Workspace not initialized"),URI.parse(et.uri)}get workspaceURL(){const et=this.workspace();return core.invariant(et,"Workspace not initialized"),new URL(et.uri)}}class WorkspaceSymbolProvider extends DefaultWorkspaceSymbolProvider{}class LikeC4Views{constructor(et){this.services=et}cache=new WeakMap;viewsWithReportedErrors=new Set;get layouter(){return this.services.likec4.Layouter}async computedViews(et){const nt=await this.services.likec4.ModelBuilder.buildComputedModel(et);return nt?r$9(nt.views):[]}async layoutAllViews(et){const nt=await this.computedViews(et);if(nt.length===0)return[];const rt=[],st=[];for(const ot of nt)this.viewsWithReportedErrors.delete(ot.id),st.push(this.layouter.layout(ot).then(en=>(this.cache.set(ot,en),en)).catch(en=>(this.cache.delete(ot),logWarnError(en),Promise.reject(en))));for(const ot of await Promise.allSettled(st))ot.status==="fulfilled"&&rt.push(ot.value);return rt}async layoutView(et,nt){const rt=await this.services.likec4.ModelBuilder.buildComputedModel(nt);if(!rt)return null;const st=rt.views[et];if(!st)return null;let ot=this.cache.get(st);if(ot)return ot;try{const en=await this.layouter.layout(st);return this.viewsWithReportedErrors.delete(et),this.cache.set(st,en),en}catch(en){if(!this.viewsWithReportedErrors.has(et)){const tn=en instanceof Error?en.message:""+en;this.services.shared.lsp.Connection?.window.showErrorMessage(`LikeC4: ${tn}`),this.viewsWithReportedErrors.add(et)}return logError(en),Promise.reject(en)}}async diagrams(){return(await this.layoutAllViews()).map(et=>et.diagram)}async viewsAsGraphvizOut(){const et="All-LayoutedViews-DotWithSvg",nt=this.services.WorkspaceCache;if(nt.has(et))return await Promise.resolve(nt.get(et));const rt=(await this.computedViews()).map(async en=>{const{dot:tn,svg:nn}=await this.layouter.svg(en);return{id:en.id,dot:tn,svg:nn}}),st=[],ot=await Promise.allSettled(rt);for(const en of ot)en.status==="fulfilled"?st.push(en.value):logWarnError(en.reason);return nt.set(et,st),st}async overviewGraph(){const et="OverviewGraph",nt=this.services.WorkspaceCache;if(nt.has(et))return await Promise.resolve(nt.get(et));const rt=await this.computedViews(),st=await this.layouter.layoutOverviewGraph(rt);return nt.set(et,st),st}}const _={lsp:{NodeKindProvider:tt=>new NodeKindProvider(tt),WorkspaceSymbolProvider:tt=>new WorkspaceSymbolProvider(tt)},workspace:{WorkspaceManager:tt=>new LikeC4WorkspaceManager(tt)}};function r(tt){return et=>new tt(et)}const LikeC4Module={documentation:{DocumentationProvider:r(LikeC4DocumentationProvider)},WorkspaceCache:tt=>new WorkspaceCache(tt.shared),DocumentCache:tt=>new DocumentCache(tt.shared),Rpc:r(Rpc),likec4:{Layouter:tt=>(logger$1.debug("Creating GraphvizLayouter with GraphvizWasmAdapter"),new GraphvizLayouter(new GraphvizWasmAdapter)),Views:r(LikeC4Views),DeploymentsIndex:r(DeploymentsIndex),ModelChanges:r(LikeC4ModelChanges),FqnIndex:r(FqnIndex),ModelParser:r(LikeC4ModelParser),ModelBuilder:r(LikeC4ModelBuilder),ModelLocator:r(LikeC4ModelLocator)},lsp:{CompletionProvider:r(LikeC4CompletionProvider),DocumentHighlightProvider:r(LikeC4DocumentHighlightProvider),DocumentSymbolProvider:r(LikeC4DocumentSymbolProvider),SemanticTokenProvider:r(LikeC4SemanticTokenProvider),HoverProvider:r(LikeC4HoverProvider),CodeLensProvider:r(LikeC4CodeLensProvider),DocumentLinkProvider:r(LikeC4DocumentLinkProvider),Formatter:r(LikeC4Formatter)},references:{NameProvider:r(LikeC4NameProvider),ScopeComputation:r(LikeC4ScopeComputation),ScopeProvider:r(LikeC4ScopeProvider)}};function createCustomLanguageServices(tt,et,nt,rt){const st=createSharedServices(tt),ot=[createDefaultModule({shared:st}),LikeC4GeneratedModule,LikeC4Module,et,nt,rt].reduce(p$1,{}),en=inject(ot);return st.ServiceRegistry.register(en),registerValidationChecks(en),tt.connection?en.Rpc.init():st.workspace.ConfigurationProvider.initialized({}),{shared:st,likec4:en}}function createSharedServices(tt={}){const et={...EmptyFileSystem,...tt};return inject(createDefaultSharedModule(et),LikeC4GeneratedSharedModule,_)}function p$1(tt,et){if(et){for(const[nt,rt]of Object.entries(et))if(rt!==void 0){const st=tt[nt];st!==null&&rt!==null&&typeof st=="object"&&typeof rt=="object"?tt[nt]=p$1(st,rt):tt[nt]=rt}}return tt}const getContext=tt=>({start:process__default.hrtime.bigint(),command:tt.map(et=>getCommandPart(require$$0$4.stripVTControlCharacters(et))).join(" "),state:{stdout:"",stderr:"",output:""}}),getCommandPart=tt=>/[^\w./-]/.test(tt)?`'${tt.replaceAll("'","'\\''")}'`:tt,getOptions=({stdin:tt,stdout:et,stderr:nt,stdio:rt=[tt,et,nt],env:st,preferLocal:ot,cwd:en=".",...tn})=>{const nn=en instanceof URL?node_url.fileURLToPath(en):path__default.resolve(en),rn=st?{...process__default.env,...st}:void 0,sn=rt[0]?.string;return{...tn,input:sn,stdio:sn===void 0?rt:["pipe",...rt.slice(1)],env:ot?addLocalPath(rn??process__default.env,nn):rn,cwd:nn}},addLocalPath=({Path:tt="",PATH:et=tt,...nt},rt)=>{const st=et.split(path__default.delimiter),ot=getLocalPaths([],path__default.resolve(rt)).map(en=>path__default.join(en,"node_modules/.bin")).filter(en=>!st.includes(en));return{...nt,PATH:[...ot,et].filter(Boolean).join(path__default.delimiter)}},getLocalPaths=(tt,et)=>tt.at(-1)===et?tt:getLocalPaths([...tt,et],path__default.resolve(et,"..")),applyForceShell=async(tt,et,nt)=>await shouldForceShell(tt,nt)?[escapeFile(tt),et.map(rt=>escapeArgument(rt)),{...nt,shell:!0}]:[tt,et,nt],shouldForceShell=async(tt,{shell:et,cwd:nt,env:rt=process__default.env})=>process__default.platform==="win32"&&!et&&!await isExe(tt,nt,rt),isExe=async(tt,et,{Path:nt="",PATH:rt=nt})=>exeExtensions.some(st=>tt.toLowerCase().endsWith(st))||(EXE_MEMO[`${tt}\0${et}\0${rt}`]??=await mIsExe(tt,et,rt)),EXE_MEMO={},mIsExe=async(tt,et,nt)=>{const rt=nt.split(path__default.delimiter).filter(Boolean).map(st=>st.replace(/^"(.*)"$/,"$1"));try{await Promise.all(exeExtensions.flatMap(st=>[et,...rt].map(ot=>`${path__default.resolve(ot,tt)}${st}`)).map(async st=>{try{await fsPromises.stat(st)}catch{return}throw 0}))}catch{return!0}return!1},exeExtensions=[".exe",".com"],escapeArgument=tt=>escapeFile(escapeFile(`"${tt.replaceAll(/(\\*)"/g,'$1$1\\"').replace(/(\\*)$/,"$1$1")}"`)),escapeFile=tt=>tt.replaceAll(/([()\][%!^"`<>&|;, *?])/g,"^$1"),getResult=async(tt,{input:et},nt)=>{const rt=await tt;et!==void 0&&rt.stdin.end(et);const st=node_events.once(rt,"close");try{return await Promise.race([st,...rt.stdio.filter(Boolean).map(ot=>onStreamError(ot))]),checkFailure(nt,getErrorOutput(rt)),getOutputs(nt)}catch(ot){throw await Promise.allSettled([st]),getResultError(ot,rt,nt)}},onStreamError=async tt=>{for await(const[et]of node_events.on(tt,"error"))if(!["ERR_STREAM_PREMATURE_CLOSE","EPIPE"].includes(et?.code))throw et},checkFailure=({command:tt},{exitCode:et,signalName:nt})=>{if(nt!==void 0)throw new SubprocessError(`Command was terminated with ${nt}: ${tt}`);if(et!==void 0)throw new SubprocessError(`Command failed with exit code ${et}: ${tt}`)},getResultError=(tt,et,nt)=>Object.assign(getErrorInstance(tt,nt),getErrorOutput(et),getOutputs(nt)),getErrorInstance=(tt,{command:et})=>tt instanceof SubprocessError?tt:new SubprocessError(`Command failed: ${et}`,{cause:tt});class SubprocessError extends Error{name="SubprocessError"}const getErrorOutput=({exitCode:tt,signalCode:et})=>({...tt<1?{}:{exitCode:tt},...et===null?{}:{signalName:et}}),getOutputs=({state:{stdout:tt,stderr:et,output:nt},command:rt,start:st})=>({stdout:getOutput(tt),stderr:getOutput(et),output:getOutput(nt),command:rt,durationMs:Number(process__default.hrtime.bigint()-st)/1e6}),getOutput=tt=>tt.at(-1)===`
|
|
1776
|
-
`?tt.slice(0,tt.at(-2)==="\r"?-2:-1):tt,spawnSubprocess=async(tt,et,nt,rt)=>{try{[tt,et]=["node","node.exe"].includes(tt.toLowerCase())?[process__default.execPath,[...process__default.execArgv.filter(ot=>!ot.startsWith("--inspect")),...et]]:[tt,et];const st=node_child_process.spawn(...await applyForceShell(tt,et,nt));return bufferOutput(st.stdout,rt,"stdout"),bufferOutput(st.stderr,rt,"stderr"),st.once("error",()=>{}),await node_events.once(st,"spawn"),st}catch(st){throw getResultError(st,{},rt)}},bufferOutput=(tt,{state:et},nt)=>{tt&&(tt.setEncoding("utf8"),et.isIterating||(et.isIterating=!1,tt.on("data",rt=>{et[nt]+=rt,et.output+=rt})))},handlePipe=async tt=>{const[[et,nt]]=await Promise.all([Promise.allSettled(tt),pipeStreams(tt)]);if(nt.reason)throw nt.reason.pipedFrom=et.reason??et.value,nt.reason;if(et.reason)throw et.reason;return{...nt.value,pipedFrom:et.value}},pipeStreams=async tt=>{try{const[{stdout:et},{stdin:nt}]=await Promise.all(tt.map(({nodeChildProcess:rt})=>rt));if(nt===null)throw new Error('The "stdin" option must be set on the first "spawn()" call in the pipeline.');if(et===null)throw new Error('The "stdout" option must be set on the last "spawn()" call in the pipeline.');promises.pipeline(et,nt).catch(()=>{})}catch(et){throw await Promise.allSettled(tt.map(({nodeChildProcess:nt})=>closeStdin(nt))),et}},closeStdin=async tt=>{const{stdin:et}=await tt;et.end()},lineIterator=async function*(tt,{state:et},nt){if(et.isIterating===!1)throw new Error(`The subprocess must be iterated right away, for example:
|
|
1777
|
-
for await (const line of spawn(...)) { ... }`);et.isIterating=!0;try{const{[nt]:rt}=await tt.nodeChildProcess;if(!rt)return;let st="";for await(const ot of rt.iterator({destroyOnReturn:!1})){const en=`${st}${ot}`.split(/\r?\n/);st=en.pop(),yield*en}st&&(yield st)}finally{await tt}},combineAsyncIterators=async function*(...tt){try{let et=[];for(;tt.length>0;){et=tt.map((en,tn)=>et[tn]??getNext(en));const[{value:nt,done:rt},st]=await Promise.race(et.map((en,tn)=>Promise.all([en,tn]))),[ot]=tt.splice(st,1);et.splice(st,1),rt||(tt.push(ot),yield nt)}}finally{await Promise.all(tt.map(et=>et.return()))}},getNext=async tt=>{try{return await tt.next()}catch(et){await tt.throw(et)}};function spawn(tt,et,nt,rt){const[st=[],ot={}]=Array.isArray(et)?[et,nt]:[[],et],en=getContext([tt,...st]),tn=getOptions(ot),nn=spawnSubprocess(tt,st,tn,en);let rn=getResult(nn,tn,en);Object.assign(rn,{nodeChildProcess:nn}),rn=rt?handlePipe([rt,rn]):rn;const sn=lineIterator(rn,en,"stdout"),an=lineIterator(rn,en,"stderr");return Object.assign(rn,{nodeChildProcess:nn,stdout:sn,stderr:an,[Symbol.asyncIterator]:()=>combineAsyncIterators(sn,an),pipe:(on,cn,ln)=>spawn(on,cn,ln,rn)})}var cjs={},posix={},hasRequiredPosix;function requirePosix(){if(hasRequiredPosix)return posix;hasRequiredPosix=1,Object.defineProperty(posix,"__esModule",{value:!0}),posix.sync=posix.isexe=void 0;const tt=require$$0__default$3,et=require$$1__default,nt=async(en,tn={})=>{const{ignoreErrors:nn=!1}=tn;try{return st(await(0,et.stat)(en),tn)}catch(rn){const sn=rn;if(nn||sn.code==="EACCES")return!1;throw sn}};posix.isexe=nt;const rt=(en,tn={})=>{const{ignoreErrors:nn=!1}=tn;try{return st((0,tt.statSync)(en),tn)}catch(rn){const sn=rn;if(nn||sn.code==="EACCES")return!1;throw sn}};posix.sync=rt;const st=(en,tn)=>en.isFile()&&ot(en,tn),ot=(en,tn)=>{const nn=tn.uid??process.getuid?.(),rn=tn.groups??process.getgroups?.()??[],sn=tn.gid??process.getgid?.()??rn[0];if(nn===void 0||sn===void 0)throw new Error("cannot get uid or gid");const an=new Set([sn,...rn]),on=en.mode,cn=en.uid,ln=en.gid,fn=parseInt("100",8),gn=parseInt("010",8),pn=parseInt("001",8),vn=fn|gn;return!!(on&pn||on&gn&&an.has(ln)||on&fn&&cn===nn||on&vn&&nn===0)};return posix}var win32={},hasRequiredWin32;function requireWin32(){if(hasRequiredWin32)return win32;hasRequiredWin32=1,Object.defineProperty(win32,"__esModule",{value:!0}),win32.sync=win32.isexe=void 0;const tt=require$$0__default$3,et=require$$1__default,nt=async(en,tn={})=>{const{ignoreErrors:nn=!1}=tn;try{return ot(await(0,et.stat)(en),en,tn)}catch(rn){const sn=rn;if(nn||sn.code==="EACCES")return!1;throw sn}};win32.isexe=nt;const rt=(en,tn={})=>{const{ignoreErrors:nn=!1}=tn;try{return ot((0,tt.statSync)(en),en,tn)}catch(rn){const sn=rn;if(nn||sn.code==="EACCES")return!1;throw sn}};win32.sync=rt;const st=(en,tn)=>{const{pathExt:nn=process.env.PATHEXT||""}=tn,rn=nn.split(";");if(rn.indexOf("")!==-1)return!0;for(let sn=0;sn<rn.length;sn++){const an=rn[sn].toLowerCase(),on=en.substring(en.length-an.length).toLowerCase();if(an&&on===an)return!0}return!1},ot=(en,tn,nn)=>en.isFile()&&st(tn,nn);return win32}var options={},hasRequiredOptions;function requireOptions(){return hasRequiredOptions||(hasRequiredOptions=1,Object.defineProperty(options,"__esModule",{value:!0})),options}var hasRequiredCjs;function requireCjs(){return hasRequiredCjs||(hasRequiredCjs=1,function(tt){var et=cjs&&cjs.__createBinding||(Object.create?function(rn,sn,an,on){on===void 0&&(on=an);var cn=Object.getOwnPropertyDescriptor(sn,an);(!cn||("get"in cn?!sn.__esModule:cn.writable||cn.configurable))&&(cn={enumerable:!0,get:function(){return sn[an]}}),Object.defineProperty(rn,on,cn)}:function(rn,sn,an,on){on===void 0&&(on=an),rn[on]=sn[an]}),nt=cjs&&cjs.__setModuleDefault||(Object.create?function(rn,sn){Object.defineProperty(rn,"default",{enumerable:!0,value:sn})}:function(rn,sn){rn.default=sn}),rt=cjs&&cjs.__importStar||function(rn){if(rn&&rn.__esModule)return rn;var sn={};if(rn!=null)for(var an in rn)an!=="default"&&Object.prototype.hasOwnProperty.call(rn,an)&&et(sn,rn,an);return nt(sn,rn),sn},st=cjs&&cjs.__exportStar||function(rn,sn){for(var an in rn)an!=="default"&&!Object.prototype.hasOwnProperty.call(sn,an)&&et(sn,rn,an)};Object.defineProperty(tt,"__esModule",{value:!0}),tt.sync=tt.isexe=tt.posix=tt.win32=void 0;const ot=rt(requirePosix());tt.posix=ot;const en=rt(requireWin32());tt.win32=en,st(requireOptions(),tt);const nn=(process.env._ISEXE_TEST_PLATFORM_||process.platform)==="win32"?en:ot;tt.isexe=nn.isexe,tt.sync=nn.sync}(cjs)),cjs}var lib,hasRequiredLib;function requireLib(){if(hasRequiredLib)return lib;hasRequiredLib=1;const{isexe:tt,sync:et}=requireCjs(),{join:nt,delimiter:rt,sep:st,posix:ot}=require$$0__default$1,en=process.platform==="win32",tn=new RegExp(`[${ot.sep}${st===ot.sep?"":st}]`.replace(/(\\)/g,"\\$1")),nn=new RegExp(`^\\.${tn.source}`),rn=ln=>Object.assign(new Error(`not found: ${ln}`),{code:"ENOENT"}),sn=(ln,{path:fn=process.env.PATH,pathExt:gn=process.env.PATHEXT,delimiter:pn=rt})=>{const vn=ln.match(tn)?[""]:[...en?[process.cwd()]:[],...(fn||"").split(pn)];if(en){const bn=gn||[".EXE",".CMD",".BAT",".COM"].join(pn),$n=bn.split(pn).flatMap(Tn=>[Tn,Tn.toLowerCase()]);return ln.includes(".")&&$n[0]!==""&&$n.unshift(""),{pathEnv:vn,pathExt:$n,pathExtExe:bn}}return{pathEnv:vn,pathExt:[""]}},an=(ln,fn)=>{const gn=/^".*"$/.test(ln)?ln.slice(1,-1):ln;return(!gn&&nn.test(fn)?fn.slice(0,2):"")+nt(gn,fn)},on=async(ln,fn={})=>{const{pathEnv:gn,pathExt:pn,pathExtExe:vn}=sn(ln,fn),bn=[];for(const $n of gn){const Tn=an($n,ln);for(const An of pn){const On=Tn+An;if(await tt(On,{pathExt:vn,ignoreErrors:!0})){if(!fn.all)return On;bn.push(On)}}}if(fn.all&&bn.length)return bn;if(fn.nothrow)return null;throw rn(ln)},cn=(ln,fn={})=>{const{pathEnv:gn,pathExt:pn,pathExtExe:vn}=sn(ln,fn),bn=[];for(const $n of gn){const Tn=an($n,ln);for(const An of pn){const On=Tn+An;if(et(On,{pathExt:vn,ignoreErrors:!0})){if(!fn.all)return On;bn.push(On)}}}if(fn.all&&bn.length)return bn;if(fn.nothrow)return null;throw rn(ln)};return lib=on,on.sync=cn,lib}var libExports=requireLib();const f=getDefaultExportFromCjs(libExports),d=pLimit(Math.max(1,os__default.cpus().length));class GraphvizBinaryAdapter{dotpath;unflattenpath;constructor(et){this.dotpath=et||f.sync("dot"),this.unflattenpath=f.sync("unflatten")}async unflatten(et){return await d(async()=>{const nt=m$3.getChild("graphviz-binary");let rt;try{const st=await spawn(this.unflattenpath,["-l 1","-c 3"],{timeout:1e4,stdin:{string:et}});rt=st.stdout,n$5(st.stderr)||nt.warn`Command ${st.command} has stderr:\n${st.stderr}`}catch(st){nt.error("FAILED GraphvizBinaryAdapter.unflatten",{error:st}),st instanceof SubprocessError&&!n$5(st.stdout)&&(nt.warn`Command: '${st.command}' returned result but also failed (exitcode ${st.exitCode}): "${st.stderr}"`,rt=st.stdout)}return rt&&(et=rt.replaceAll(/\t\[/g," [").replaceAll(/\t/g," ")),et})}async layoutJson(et){return await d(async()=>{const nt=m$3.getChild("graphviz-binary");let rt;try{const st=await spawn(this.dotpath,["-Tjson","-y"],{timeout:1e4,stdin:{string:et}});rt=st.stdout,n$5(st.stderr)||nt.warn`Command ${st.command} has stderr:\n${st.stderr}`}catch(st){if(nt.error("FAILED GraphvizBinaryAdapter.layoutJson",{error:st}),nt.warn`FAILED DOT:\n${et}`,st instanceof SubprocessError&&!n$5(st.stdout))nt.warn(`Command: '${st.command}' returned result but also failed (exitcode ${st.exitCode}): "${st.stderr}"`),rt=st.stdout;else throw st}return rt})}async acyclic(et){return Promise.reject(new Error("Method not implemented."))}async svg(et){return await d(async()=>{const nt=m$3.getChild("graphviz-binary");let rt;try{const st=await spawn(this.dotpath,["-Tsvg","-y"],{timeout:1e4,stdin:{string:et}});rt=st.stdout,n$5(st.stderr)||nt.warn`Command ${st.command} has stderr:\n${st.stderr}`}catch(st){if(nt.error("FAILED GraphvizBinaryAdapter.svg",{error:st}),nt.warn`FAILED DOT:\n${et}`,st instanceof SubprocessError&&!n$5(st.stdout))nt.warn`Command: '${st.command}' returned result but also failed (exitcode ${st.exitCode}): "${st.stderr}"`,rt=st.stdout;else throw st}return rt})}}const name="likec4",version="1.22.0",toZeroIfInfinity=tt=>Number.isFinite(tt)?tt:0;function parseNumber(tt){return{days:Math.trunc(tt/864e5),hours:Math.trunc(tt/36e5%24),minutes:Math.trunc(tt/6e4%60),seconds:Math.trunc(tt/1e3%60),milliseconds:Math.trunc(tt%1e3),microseconds:Math.trunc(toZeroIfInfinity(tt*1e3)%1e3),nanoseconds:Math.trunc(toZeroIfInfinity(tt*1e6)%1e3)}}function parseBigint(tt){return{days:tt/86400000n,hours:tt/3600000n%24n,minutes:tt/60000n%60n,seconds:tt/1000n%60n,milliseconds:tt%1000n,microseconds:0n,nanoseconds:0n}}function parseMilliseconds(tt){switch(typeof tt){case"number":{if(Number.isFinite(tt))return parseNumber(tt);break}case"bigint":return parseBigint(tt)}throw new TypeError("Expected a finite number or bigint")}const isZero=tt=>tt===0||tt===0n,pluralize=(tt,et)=>et===1||et===1n?tt:`${tt}s`,SECOND_ROUNDING_EPSILON=1e-7,ONE_DAY_IN_MILLISECONDS=24n*60n*60n*1000n;function prettyMilliseconds(tt,et){const nt=typeof tt=="bigint";if(!nt&&!Number.isFinite(tt))throw new TypeError("Expected a finite number or bigint");et={...et};const rt=tt<0?"-":"";tt=tt<0?-tt:tt,et.colonNotation&&(et.compact=!1,et.formatSubMilliseconds=!1,et.separateMilliseconds=!1,et.verbose=!1),et.compact&&(et.unitCount=1,et.secondsDecimalDigits=0,et.millisecondsDecimalDigits=0);let st=[];const ot=(sn,an)=>{const on=Math.floor(sn*10**an+SECOND_ROUNDING_EPSILON);return(Math.round(on)/10**an).toFixed(an)},en=(sn,an,on,cn)=>{if(!((st.length===0||!et.colonNotation)&&isZero(sn)&&!(et.colonNotation&&on==="m"))){if(cn??=String(sn),et.colonNotation){const ln=cn.includes(".")?cn.split(".")[0].length:cn.length,fn=st.length>0?2:1;cn="0".repeat(Math.max(0,fn-ln))+cn}else cn+=et.verbose?" "+pluralize(an,sn):on;st.push(cn)}},tn=parseMilliseconds(tt),nn=BigInt(tn.days);if(et.hideYearAndDays?en(BigInt(nn)*24n+BigInt(tn.hours),"hour","h"):(et.hideYear?en(nn,"day","d"):(en(nn/365n,"year","y"),en(nn%365n,"day","d")),en(Number(tn.hours),"hour","h")),en(Number(tn.minutes),"minute","m"),!et.hideSeconds)if(et.separateMilliseconds||et.formatSubMilliseconds||!et.colonNotation&&tt<1e3){const sn=Number(tn.seconds),an=Number(tn.milliseconds),on=Number(tn.microseconds),cn=Number(tn.nanoseconds);if(en(sn,"second","s"),et.formatSubMilliseconds)en(an,"millisecond","ms"),en(on,"microsecond","\xB5s"),en(cn,"nanosecond","ns");else{const ln=an+on/1e3+cn/1e6,fn=typeof et.millisecondsDecimalDigits=="number"?et.millisecondsDecimalDigits:0,gn=ln>=1?Math.round(ln):Math.ceil(ln),pn=fn?ln.toFixed(fn):gn;en(Number.parseFloat(pn),"millisecond","ms",pn)}}else{const sn=(nt?Number(tt%ONE_DAY_IN_MILLISECONDS):tt)/1e3%60,an=typeof et.secondsDecimalDigits=="number"?et.secondsDecimalDigits:1,on=ot(sn,an),cn=et.keepDecimalsOnWholeSeconds?on:on.replace(/\.0+$/,"");en(Number.parseFloat(cn),"second","s",cn)}if(st.length===0)return rt+"0"+(et.verbose?" milliseconds":"ms");const rn=et.colonNotation?":":" ";return typeof et.unitCount=="number"&&(st=st.slice(0,Math.max(et.unitCount,1))),rt+st.join(rn)}const logger=m$3.getChild("cli");u.bold(u.bgRed(u.white("ERROR"))),u.bold(u.yellow("WARN")),u.bold(u.green("INFO"));function createLikeC4Logger(tt){const et=m$3.getChild(tt);return{info(nt){et.info(nt)},warn(nt){if(nt instanceof Error){et.warn(`${u.red(nt.name+" "+nt.message)}`,{msg:nt});return}if(typeof nt=="string"){et.warn(nt);return}et.warn`${nt}`},warnOnce(nt){et.warn(nt)},error(nt,rt){let st=rt?.error??nt;if(st instanceof Error){if(nt===st){et.error(`${u.red(st.name+" "+st.message)}`,{error:st});return}et.error(`${nt}`,{error:st});return}if(typeof nt=="string"){et.error(`${u.red(nt)}`);return}et.error`${nt}`},clearScreen:function(nt){},hasErrorLogged:function(nt){throw new Error("Function not implemented.")},hasWarned:!1}}const p=()=>{},NoopLogger={info:p,warn:p,error:p},a=1e6;function inMillis(tt){const[et,nt]=process$1.hrtime(tt),rt=et*1e3+nt/a;return{ms:rt,pretty:prettyMilliseconds(rt)}}function startTimer(tt){const et=process$1.hrtime();return{stopAndLog(nt="done in "){nt=u.green(`${nt}${inMillis(et).pretty}`),(tt||logger).info(nt)}}}function boxen(tt,et){console.log(d__default(tt,{padding:1,margin:1,dimBorder:!0,...et}))}class CliWorkspace{constructor(et){this.services=et}isInitialized=!1;async initWorkspace(et){if(this.isInitialized)throw new Error("Workspace already initialized");const nt=this.services.logger,rt=this.services.shared.workspace.WorkspaceManager;nt.info(`${u.dim("workspace:")} ${et.uri}`),rt.initialize({capabilities:{},processId:null,rootUri:null,workspaceFolders:[et]}),await rt.initializeWorkspace([et])}async init(){if(this.isInitialized)throw new Error("Workspace already initialized");this.isInitialized=!0;const et=this.services.logger,nt=this.services.likec4.ModelBuilder,rt=this.services.shared.workspace.LangiumDocuments,st=this.services.shared.workspace.DocumentBuilder,ot=rt.all.toArray();if(ot.length===0)throw et.error("no LikeC4 sources found"),new Error("no LikeC4 sources found");et.info(`${u.dim("workspace:")} found ${ot.length} source files`),await st.build(ot,{validation:!0});const en=await nt.buildComputedModel(),tn=r$9(en?.views??{}).length;if(tn===0){et.warn(`${u.dim("workspace:")} no views found`);return}et.info(`${u.dim("workspace:")} ${u.green(`\u2713 computed ${tn} views`)}`);const nn=await this.services.likec4.Views.diagrams();nn.length===tn?et.info(`${u.dim("workspace:")} ${u.green("\u2713 all views layouted")}`):et.warn(`${u.dim("workspace:")} ${u.yellow(`\u2717 layouted ${nn.length} views`)}`)}}function y(tt){return et=>new tt(et)}const CliModule={logger:()=>{throw new Error("Logger must be provided")},likec4:{Layouter:()=>{throw new Error("Layouter must be provided")}},cli:{Workspace:y(CliWorkspace)}};function createLanguageServices(tt){dr();const et=defu(tt,{useFileSystem:!0,logger:"default",graphviz:"wasm"});let nt;switch(et.logger){case!1:nt=NoopLogger;break;case"vite":nt=createLikeC4Logger("lang");break;case"default":nt=m$3.getChild("lang");break;default:nt=et.logger}const rt=et.graphviz==="binary";nt.info(`${u.dim("version")} ${version}`),nt.info(`${u.dim("layout")} ${rt?"binary":"wasm"}`);const st={logger:()=>nt,likec4:{Layouter:()=>new GraphvizLayouter(rt===!0?new GraphvizBinaryAdapter:new GraphvizWasmAdapter)}};return createCustomLanguageServices(et.useFileSystem?LikeC4FileSystem:{},CliModule,st).likec4}const g=tt=>new Error(`Invalid model:
|
|
1778
|
-
${tt.getErrors().map(et=>` ${et.sourceFsPath}:${et.line} ${et.message.slice(0,200)}`).join(`
|
|
1779
|
-
`)}`);class LikeC4{constructor(et,nt,rt){this.workspace=et,this.langium=nt,this.isPrintErrorEnabled=rt,this.logger=nt.logger,this.isPrintErrorEnabled&&this.printErrors()}static async fromSource(et,nt){const rt=createLanguageServices(defu(nt,{useFileSystem:!1,logger:!1,graphviz:"wasm"})),st=URI.from({scheme:"virtual",path:"/workspace"});await rt.cli.Workspace.initWorkspace({uri:st.toString(),name:"virtual"});const ot=UriUtils.joinPath(st,"source.likec4");rt.shared.workspace.LangiumDocuments.createDocument(ot,et),await rt.cli.Workspace.init();const en=new LikeC4(st.path,rt,nt?.printErrors??!0);return nt?.throwIfInvalid===!0&&en.hasErrors()?(en.dispose(),Promise.reject(g(en))):en}static likec4Instances=new Map;static async fromWorkspace(et="",nt){const rt=path.resolve(et);if(!fs$2.existsSync(rt))throw new Error(`Workspace not found: ${rt}`);let st=LikeC4.likec4Instances.get(rt);if(!st){const ot=createLanguageServices(defu(nt,{useFileSystem:!0,logger:"default",graphviz:"wasm"}));await ot.cli.Workspace.initWorkspace({uri:node_url.pathToFileURL(rt).toString(),name:path.basename(rt)}),await ot.cli.Workspace.init(),st=new LikeC4(rt,ot,nt?.printErrors??!0),LikeC4.likec4Instances.set(rt,st)}return nt?.throwIfInvalid===!0&&st.hasErrors()?(st.dispose(),Promise.reject(g(st))):st}modelComputedRef;modelLayoutedRef;logger;get viewsService(){return this.langium.likec4.Views}get LangiumDocuments(){return this.langium.shared.workspace.LangiumDocuments}async diagrams(){return await this.langium.likec4.Views.diagrams()}computedModel(){let et=this.modelComputedRef?.deref();if(!et){const nt=this.langium.likec4.ModelBuilder.unsafeSyncBuildModel();if(!nt)throw new Error("Failed to build model");const rt=this.langium.likec4.ModelBuilder.unsafeSyncBuildComputedModel(nt);et=model.LikeC4Model.create(rt),this.modelComputedRef=new WeakRef(et)}return et}async layoutedModel(){let et=this.modelLayoutedRef?.deref();if(!et){const nt=await this.langium.likec4.ModelBuilder.buildComputedModel();if(!nt)throw new Error("Failed to build model");const rt=await this.viewsService.diagrams();et=model.LikeC4Model.create({...nt,__:"layouted",views:c$1(rt,p$6("id"))}),this.modelLayoutedRef=new WeakRef(et)}return et}getErrors(){return this.LangiumDocuments.all.toArray().flatMap(et=>(et.diagnostics??[]).filter(nt=>nt.severity===DiagnosticSeverity.Error).map(({message:nt,range:rt})=>({message:nt,line:rt.start.line,range:rt,sourceFsPath:et.uri.fsPath})))}hasErrors(){return this.LangiumDocuments.all.some(et=>et.diagnostics?.some(nt=>nt.severity===DiagnosticSeverity.Error)??!1)}printErrors(){let et=!1;for(const nt of this.LangiumDocuments.all){const rt=nt.diagnostics?.filter(st=>st.severity===1);if(rt&&rt.length>0){et=!0;const st=rt.flatMap(ot=>{const en=ot.range.start.line,tn=ot.message.split(`
|
|
1780
|
-
`);return tn.length>10&&(tn.length=10,tn.push("...")),tn.map((nn,rn)=>rn===0?" "+u.dim(`Line ${en}: `)+u.red(nn):" ".repeat(10)+u.red(nn))}).join(`
|
|
1781
|
-
`);this.logger.error(`Invalid ${nt.uri.fsPath}
|
|
1782
|
-
${st}`)}}return et}async notifyUpdate({changed:et,removed:nt}){this.modelLayoutedRef=void 0,this.modelComputedRef=void 0;const rt=this.langium.shared.workspace.WorkspaceLock;try{let st=!1;return await rt.write(async ot=>{await this.langium.shared.workspace.DocumentBuilder.update(et?[URI.file(et)]:[],nt?[URI.file(nt)]:[],ot),st=!ot.isCancellationRequested}),st}catch(st){return this.logger.error(ir(st)),!1}}onModelUpdate(et){const nt=this.langium.likec4.ModelBuilder.onModelParsed(()=>et());return()=>{nt.dispose()}}dispose(){for(const[et,nt]of LikeC4.likec4Instances)nt===this&&LikeC4.likec4Instances.delete(et)}}exports.A=spawn,exports.B=version,exports.C=C$1,exports.D=logger,exports.E=ir,exports.F=startTimer,exports.G=stripIndent,exports.H=i$7,exports.L=LikeC4,exports.N=NEWLINE_REGEXP,exports.T=TreeStreamImpl,exports.Y=Y,exports.Z=Z$1,exports.a=findNodesForProperty,exports.b=getDocument,exports.c=createLikeC4Logger,exports.d=i$8,exports.e=T,exports.f=f$7,exports.g=getDefaultExportFromCjs,exports.h=n$7,exports.i=isAstNode,exports.j=hasProtocol,exports.k=withLeadingSlash,exports.l=l$5,exports.m=m$3,exports.n=n$4,exports.o=boxen,exports.p=pLimit,exports.q=d$5,exports.r=u$1,exports.s=inMillis,exports.t=t$2,exports.u=u,exports.v=getAugmentedNamespace,exports.w=withTrailingSlash,exports.x=commonjsGlobal,exports.y=name,exports.z=n$5;
|