@tom2012/cc-web 2026.5.17-a → 2026.5.17-b
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 +1 -1
- package/frontend/dist/assets/{ChatOverlay-Devu-6e2.js → ChatOverlay-DAgN-E-T.js} +1 -1
- package/frontend/dist/assets/{GraphPreview-CTnjR3mM.js → GraphPreview-sveADvuJ.js} +1 -1
- package/frontend/dist/assets/{MobilePage-BnmtIYUO.js → MobilePage-6gsKYCbk.js} +3 -3
- package/frontend/dist/assets/{OfficePreview-Bk4su1Sj.js → OfficePreview-BYj9NyEQ.js} +2 -2
- package/frontend/dist/assets/{PdfPreview-Did03pT8.js → PdfPreview-1e1iPu2y.js} +1 -1
- package/frontend/dist/assets/{ProjectPage-C3JgTxZ-.js → ProjectPage-CsigpH00.js} +4 -4
- package/frontend/dist/assets/{SettingsPage-Cog-czvz.js → SettingsPage-BT8wt9ku.js} +1 -1
- package/frontend/dist/assets/{SkillHubPage-DLJ5bTV1.js → SkillHubPage-BH3x0_RI.js} +1 -1
- package/frontend/dist/assets/{TrackEditor-C1EEYJ3K.js → TrackEditor-CRhJKFTT.js} +3 -3
- package/frontend/dist/assets/TrackVisualEditor-DzrpHA4M.js +2 -0
- package/frontend/dist/assets/{chevron-down-fhBUTS-H.js → chevron-down-B1_H23MM.js} +1 -1
- package/frontend/dist/assets/{cssMode-BNQCYguG.js → cssMode-DFhAGaQl.js} +1 -1
- package/frontend/dist/assets/{editor.main-DFSVcrOk.js → editor.main-Dv96_EKG.js} +7 -7
- package/frontend/dist/assets/{freemarker2-D_8HOrg_.js → freemarker2-DiQ8RXeI.js} +1 -1
- package/frontend/dist/assets/{handlebars-bumRYNRa.js → handlebars-lNmPQXYn.js} +1 -1
- package/frontend/dist/assets/{html-DIcwlVde.js → html-CceA8gLw.js} +1 -1
- package/frontend/dist/assets/{htmlMode-97ALcTPy.js → htmlMode-BUQC-_yi.js} +1 -1
- package/frontend/dist/assets/{index-BFbq4Aop.js → index-7HzPvnim.js} +2 -2
- package/frontend/dist/assets/{index-S6E6AY6L.js → index-DyxMqBaM.js} +1 -1
- package/frontend/dist/assets/{index-CwysS9mA.js → index-beUqd-be.js} +1 -1
- package/frontend/dist/assets/{index-DzZhNsXm.js → index-dHRMoKUn.js} +1 -1
- package/frontend/dist/assets/{javascript-Dml-jjGQ.js → javascript-CQe7I4xs.js} +1 -1
- package/frontend/dist/assets/{jsonMode-CGgQ5Elh.js → jsonMode-DIlGP-3O.js} +1 -1
- package/frontend/dist/assets/{jszip.min-Dz4sqNm0.js → jszip.min-BVqCtBEI.js} +1 -1
- package/frontend/dist/assets/{liquid-Biug-RHk.js → liquid-BgWCYgG1.js} +1 -1
- package/frontend/dist/assets/{mdx-5KPxciZv.js → mdx-toHFH6K_.js} +1 -1
- package/frontend/dist/assets/{python-gzCzP5Ec.js → python-y3adCX0q.js} +1 -1
- package/frontend/dist/assets/{razor-De2OOJDb.js → razor-h2keUv65.js} +1 -1
- package/frontend/dist/assets/{select-Vd4cqb99.js → select-Dg8S23zP.js} +1 -1
- package/frontend/dist/assets/{tsMode-LN4MiIb_.js → tsMode-CrPSBUsc.js} +1 -1
- package/frontend/dist/assets/{typescript-D2afmbQY.js → typescript-BqiSQ_9M.js} +1 -1
- package/frontend/dist/assets/{user-CIK9ZXHc.js → user-ClsgmXgA.js} +1 -1
- package/frontend/dist/assets/{xml-CNHNXhEE.js → xml-DRvmzWvM.js} +1 -1
- package/frontend/dist/assets/{yaml-miqswXGH.js → yaml-C-SLyX1r.js} +1 -1
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/frontend/dist/assets/TrackVisualEditor-ByUVd8D8.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor.main-
|
|
2
|
-
var t=Object.defineProperty,e=(e,n,r)=>((e,n,r)=>n in e?t(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r)(e,"symbol"!=typeof n?n+"":n,r);import{c as n,r,j as i,aD as s,a as o,B as a,_ as c}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor.main-Dv96_EKG.js","assets/index-7HzPvnim.js","assets/index-D7pFgty-.css","assets/editor-B5EY1bb8.css","assets/index-dHRMoKUn.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
var t=Object.defineProperty,e=(e,n,r)=>((e,n,r)=>n in e?t(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r)(e,"symbol"!=typeof n?n+"":n,r);import{c as n,r,j as i,aD as s,a as o,B as a,_ as c}from"./index-7HzPvnim.js";
|
|
3
3
|
/**
|
|
4
4
|
* @license lucide-react v0.309.0 - ISC
|
|
5
5
|
*
|
|
@@ -11,4 +11,4 @@ var t=Object.defineProperty,e=(e,n,r)=>((e,n,r)=>n in e?t(e,n,{enumerable:!0,con
|
|
|
11
11
|
*
|
|
12
12
|
* This source code is licensed under the ISC license.
|
|
13
13
|
* See the LICENSE file in the root directory of this source tree.
|
|
14
|
-
*/var p="object"==typeof global&&global&&global.Object===Object&&global,f="object"==typeof self&&self&&self.Object===Object&&self,m=p||f||Function("return this")(),E=m.Symbol,g=Object.prototype,T=g.hasOwnProperty,S=g.toString,L=E?E.toStringTag:void 0;var O=Object.prototype.toString;var y=E?E.toStringTag:void 0;function A(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":y&&y in Object(t)?function(t){var e=T.call(t,L),n=t[L];try{t[L]=void 0;var r=!0}catch(s){}var i=S.call(t);return r&&(e?t[L]=n:delete t[L]),i}(t):function(t){return O.call(t)}(t)}function R(t){return null!=t&&"object"==typeof t}function v(t){return"symbol"==typeof t||R(t)&&"[object Symbol]"==A(t)}function N(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}var I=Array.isArray,C=E?E.prototype:void 0,x=C?C.toString:void 0;function k(t){if("string"==typeof t)return t;if(I(t))return N(t,k)+"";if(v(t))return x?x.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}var U=/\s/;var _=/^\s+/;function b(t){return t?t.slice(0,function(t){for(var e=t.length;e--&&U.test(t.charAt(e)););return e}(t)+1).replace(_,""):t}function M(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}var P=/^[-+]0x[0-9a-f]+$/i,w=/^0b[01]+$/i,D=/^0o[0-7]+$/i,F=parseInt;var B=1/0;function j(t){return t?(t=function(t){if("number"==typeof t)return t;if(v(t))return NaN;if(M(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=M(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=b(t);var n=w.test(t);return n||D.test(t)?F(t.slice(2),n?2:8):P.test(t)?NaN:+t}(t))===B||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function $(t){var e=j(t),n=e%1;return e==e?n?e-n:e:0}function K(t){return t}function G(t){if(!M(t))return!1;var e=A(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}var z,W=m["__core-js_shared__"],V=(z=/[^.]+$/.exec(W&&W.keys&&W.keys.IE_PROTO||""))?"Symbol(src)_1."+z:"";var H=Function.prototype.toString;function Y(t){if(null!=t){try{return H.call(t)}catch(e){}try{return t+""}catch(e){}}return""}var X=/^\[object .+?Constructor\]$/,q=Function.prototype,Z=Object.prototype,Q=q.toString,J=Z.hasOwnProperty,tt=RegExp("^"+Q.call(J).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function et(t){return!(!M(t)||(e=t,V&&V in e))&&(G(t)?tt:X).test(Y(t));var e}function nt(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return et(n)?n:void 0}var rt=nt(m,"WeakMap"),it=Object.create,st=function(){function t(){}return function(e){if(!M(e))return{};if(it)return it(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function ot(){}var at=Date.now;var ct,ht,ut,lt=function(){try{var t=nt(Object,"defineProperty");return t({},"",{}),t}catch(e){}}(),dt=lt?function(t,e){return lt(t,"toString",{configurable:!0,enumerable:!1,value:(n=e,function(){return n}),writable:!0});var n}:K,pt=(ct=dt,ht=0,ut=0,function(){var t=at(),e=16-(t-ut);if(ut=t,e>0){if(++ht>=800)return arguments[0]}else ht=0;return ct.apply(void 0,arguments)});function ft(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function mt(t,e,n,r){for(var i=t.length,s=n+-1;++s<i;)if(e(t[s],s,t))return s;return-1}function Et(t){return t!=t}function gt(t,e,n){return e==e?function(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}(t,e,n):mt(t,Et,n)}function Tt(t,e){return!!(null==t?0:t.length)&>(t,e,0)>-1}var St=/^(?:0|[1-9]\d*)$/;function Lt(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&St.test(t))&&t>-1&&t%1==0&&t<e}function Ot(t,e,n){"__proto__"==e&<?lt(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function yt(t,e){return t===e||t!=t&&e!=e}var At=Object.prototype.hasOwnProperty;function Rt(t,e,n){var r=t[e];At.call(t,e)&&yt(r,n)&&(void 0!==n||e in t)||Ot(t,e,n)}function vt(t,e,n,r){var i=!n;n||(n={});for(var s=-1,o=e.length;++s<o;){var a=e[s],c=void 0;void 0===c&&(c=t[a]),i?Ot(n,a,c):Rt(n,a,c)}return n}var Nt=Math.max;function It(t,e){return pt(function(t,e,n){return e=Nt(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=Nt(r.length-e,0),o=Array(s);++i<s;)o[i]=r[e+i];i=-1;for(var a=Array(e+1);++i<e;)a[i]=r[i];return a[e]=n(o),function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}(t,this,a)}}(t,e,K),t+"")}function Ct(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function xt(t){return null!=t&&Ct(t.length)&&!G(t)}function kt(t,e,n){if(!M(n))return!1;var r=typeof e;return!!("number"==r?xt(n)&&Lt(e,n.length):"string"==r&&e in n)&&yt(n[e],t)}var Ut=Object.prototype;function _t(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Ut)}function bt(t){return R(t)&&"[object Arguments]"==A(t)}var Mt=Object.prototype,Pt=Mt.hasOwnProperty,wt=Mt.propertyIsEnumerable,Dt=bt(function(){return arguments}())?bt:function(t){return R(t)&&Pt.call(t,"callee")&&!wt.call(t,"callee")};var Ft="object"==typeof exports&&exports&&!exports.nodeType&&exports,Bt=Ft&&"object"==typeof module&&module&&!module.nodeType&&module,jt=Bt&&Bt.exports===Ft?m.Buffer:void 0,$t=(jt?jt.isBuffer:void 0)||function(){return!1},Kt={};function Gt(t){return function(e){return t(e)}}Kt["[object Float32Array]"]=Kt["[object Float64Array]"]=Kt["[object Int8Array]"]=Kt["[object Int16Array]"]=Kt["[object Int32Array]"]=Kt["[object Uint8Array]"]=Kt["[object Uint8ClampedArray]"]=Kt["[object Uint16Array]"]=Kt["[object Uint32Array]"]=!0,Kt["[object Arguments]"]=Kt["[object Array]"]=Kt["[object ArrayBuffer]"]=Kt["[object Boolean]"]=Kt["[object DataView]"]=Kt["[object Date]"]=Kt["[object Error]"]=Kt["[object Function]"]=Kt["[object Map]"]=Kt["[object Number]"]=Kt["[object Object]"]=Kt["[object RegExp]"]=Kt["[object Set]"]=Kt["[object String]"]=Kt["[object WeakMap]"]=!1;var zt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Wt=zt&&"object"==typeof module&&module&&!module.nodeType&&module,Vt=Wt&&Wt.exports===zt&&p.process,Ht=function(){try{var t=Wt&&Wt.require&&Wt.require("util").types;return t||Vt&&Vt.binding&&Vt.binding("util")}catch(e){}}(),Yt=Ht&&Ht.isTypedArray,Xt=Yt?Gt(Yt):function(t){return R(t)&&Ct(t.length)&&!!Kt[A(t)]},qt=Object.prototype.hasOwnProperty;function Zt(t,e){var n=I(t),r=!n&&Dt(t),i=!n&&!r&&$t(t),s=!n&&!r&&!i&&Xt(t),o=n||r||i||s,a=o?function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}(t.length,String):[],c=a.length;for(var h in t)!e&&!qt.call(t,h)||o&&("length"==h||i&&("offset"==h||"parent"==h)||s&&("buffer"==h||"byteLength"==h||"byteOffset"==h)||Lt(h,c))||a.push(h);return a}function Qt(t,e){return function(n){return t(e(n))}}var Jt=Qt(Object.keys,Object),te=Object.prototype.hasOwnProperty;function ee(t){if(!_t(t))return Jt(t);var e=[];for(var n in Object(t))te.call(t,n)&&"constructor"!=n&&e.push(n);return e}function ne(t){return xt(t)?Zt(t):ee(t)}var re,ie=Object.prototype.hasOwnProperty,se=(re=function(t,e){if(_t(e)||xt(e))vt(e,ne(e),t);else for(var n in e)ie.call(e,n)&&Rt(t,n,e[n])},It(function(t,e){var n=-1,r=e.length,i=r>1?e[r-1]:void 0,s=r>2?e[2]:void 0;for(i=re.length>3&&"function"==typeof i?(r--,i):void 0,s&&kt(e[0],e[1],s)&&(i=r<3?void 0:i,r=1),t=Object(t);++n<r;){var o=e[n];o&&re(t,o,n,i)}return t}));var oe=Object.prototype.hasOwnProperty;function ae(t){if(!M(t))return function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}(t);var e=_t(t),n=[];for(var r in t)("constructor"!=r||!e&&oe.call(t,r))&&n.push(r);return n}function ce(t){return xt(t)?Zt(t,!0):ae(t)}var he=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ue=/^\w*$/;function le(t,e){if(I(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!v(t))||(ue.test(t)||!he.test(t)||null!=e&&t in Object(e))}var de=nt(Object,"create");var pe=Object.prototype.hasOwnProperty;var fe=Object.prototype.hasOwnProperty;function me(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ee(t,e){for(var n=t.length;n--;)if(yt(t[n][0],e))return n;return-1}me.prototype.clear=function(){this.__data__=de?de(null):{},this.size=0},me.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},me.prototype.get=function(t){var e=this.__data__;if(de){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return pe.call(e,t)?e[t]:void 0},me.prototype.has=function(t){var e=this.__data__;return de?void 0!==e[t]:fe.call(e,t)},me.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=de&&void 0===e?"__lodash_hash_undefined__":e,this};var ge=Array.prototype.splice;function Te(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}Te.prototype.clear=function(){this.__data__=[],this.size=0},Te.prototype.delete=function(t){var e=this.__data__,n=Ee(e,t);return!(n<0)&&(n==e.length-1?e.pop():ge.call(e,n,1),--this.size,!0)},Te.prototype.get=function(t){var e=this.__data__,n=Ee(e,t);return n<0?void 0:e[n][1]},Te.prototype.has=function(t){return Ee(this.__data__,t)>-1},Te.prototype.set=function(t,e){var n=this.__data__,r=Ee(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};var Se=nt(m,"Map");function Le(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function Oe(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}Oe.prototype.clear=function(){this.size=0,this.__data__={hash:new me,map:new(Se||Te),string:new me}},Oe.prototype.delete=function(t){var e=Le(this,t).delete(t);return this.size-=e?1:0,e},Oe.prototype.get=function(t){return Le(this,t).get(t)},Oe.prototype.has=function(t){return Le(this,t).has(t)},Oe.prototype.set=function(t,e){var n=Le(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this};function ye(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],s=n.cache;if(s.has(i))return s.get(i);var o=t.apply(this,r);return n.cache=s.set(i,o)||s,o};return n.cache=new(ye.Cache||Oe),n}ye.Cache=Oe;var Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Re=/\\(\\)?/g,ve=function(t){var e=ye(t,function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Ae,function(t,n,r,i){e.push(r?i.replace(Re,"$1"):n||t)}),e});function Ne(t,e){return I(t)?t:le(t,e)?[t]:ve(function(t){return null==t?"":k(t)}(t))}function Ie(t){if("string"==typeof t||v(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ce(t,e){for(var n=0,r=(e=Ne(e,t)).length;null!=t&&n<r;)t=t[Ie(e[n++])];return n&&n==r?t:void 0}function xe(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}var ke=E?E.isConcatSpreadable:void 0;function Ue(t){return I(t)||Dt(t)||!!(ke&&t&&t[ke])}function _e(t,e,n,r,i){var s=-1,o=t.length;for(n||(n=Ue),i||(i=[]);++s<o;){var a=t[s];n(a)?xe(i,a):r||(i[i.length]=a)}return i}function be(t){return(null==t?0:t.length)?_e(t):[]}var Me=Qt(Object.getPrototypeOf,Object);function Pe(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=Array(i);++r<i;)s[r]=t[r+e];return s}function we(t,e,n,r){var i=-1,s=null==t?0:t.length;for(r&&s&&(n=t[++i]);++i<s;)n=e(n,t[i],i,t);return n}function De(t){var e=this.__data__=new Te(t);this.size=e.size}De.prototype.clear=function(){this.__data__=new Te,this.size=0},De.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},De.prototype.get=function(t){return this.__data__.get(t)},De.prototype.has=function(t){return this.__data__.has(t)},De.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Te){var r=n.__data__;if(!Se||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Oe(r)}return n.set(t,e),this.size=n.size,this};var Fe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Be=Fe&&"object"==typeof module&&module&&!module.nodeType&&module,je=Be&&Be.exports===Fe?m.Buffer:void 0,$e=je?je.allocUnsafe:void 0;function Ke(t,e){for(var n=-1,r=null==t?0:t.length,i=0,s=[];++n<r;){var o=t[n];e(o,n,t)&&(s[i++]=o)}return s}function Ge(){return[]}var ze=Object.prototype.propertyIsEnumerable,We=Object.getOwnPropertySymbols,Ve=We?function(t){return null==t?[]:(t=Object(t),Ke(We(t),function(e){return ze.call(t,e)}))}:Ge;var He=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)xe(e,Ve(t)),t=Me(t);return e}:Ge;function Ye(t,e,n){var r=e(t);return I(t)?r:xe(r,n(t))}function Xe(t){return Ye(t,ne,Ve)}var qe=nt(m,"DataView"),Ze=nt(m,"Promise"),Qe=nt(m,"Set"),Je="[object Map]",tn="[object Promise]",en="[object Set]",nn="[object WeakMap]",rn="[object DataView]",sn=Y(qe),on=Y(Se),an=Y(Ze),cn=Y(Qe),hn=Y(rt),un=A;(qe&&un(new qe(new ArrayBuffer(1)))!=rn||Se&&un(new Se)!=Je||Ze&&un(Ze.resolve())!=tn||Qe&&un(new Qe)!=en||rt&&un(new rt)!=nn)&&(un=function(t){var e=A(t),n="[object Object]"==e?t.constructor:void 0,r=n?Y(n):"";if(r)switch(r){case sn:return rn;case on:return Je;case an:return tn;case cn:return en;case hn:return nn}return e});var ln=Object.prototype.hasOwnProperty;var dn=m.Uint8Array;var pn=/\w*$/;var fn=E?E.prototype:void 0,mn=fn?fn.valueOf:void 0;function En(t,e,n){var r,i,s,o,a,c=t.constructor;switch(e){case"[object ArrayBuffer]":return a=new(o=t).constructor(o.byteLength),new dn(a).set(new dn(o)),a;case"[object Boolean]":case"[object Date]":return new c(+t);case"[object DataView]":return s=(i=t).buffer,new i.constructor(s,i.byteOffset,i.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return function(t){var e=t.buffer;return new t.constructor(e,t.byteOffset,t.length)}(t);case"[object Map]":case"[object Set]":return new c;case"[object Number]":case"[object String]":return new c(t);case"[object RegExp]":return function(t){var e=new t.constructor(t.source,pn.exec(t));return e.lastIndex=t.lastIndex,e}(t);case"[object Symbol]":return r=t,mn?Object(mn.call(r)):{}}}var gn=Ht&&Ht.isMap,Tn=gn?Gt(gn):function(t){return R(t)&&"[object Map]"==un(t)};var Sn=Ht&&Ht.isSet,Ln=Sn?Gt(Sn):function(t){return R(t)&&"[object Set]"==un(t)},On="[object Arguments]",yn="[object Function]",An="[object Object]",Rn={};function vn(t,e,n,r,i,s){var o,a=2&e;if(void 0!==o)return o;if(!M(t))return t;var c=I(t);if(c)return o=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&ln.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}(t,o);var h=un(t),u=h==yn||"[object GeneratorFunction]"==h;if($t(t))return function(t){var e=t.length,n=$e?$e(e):new t.constructor(e);return t.copy(n),n}(t);if(h==An||h==On||u&&!i)return o=u?{}:function(t){return"function"!=typeof t.constructor||_t(t)?{}:st(Me(t))}(t),a?function(t,e){return vt(t,He(t),e)}(t,function(t,e){return t&&vt(e,ce(e),t)}(o,t)):function(t,e){return vt(t,Ve(t),e)}(t,function(t,e){return t&&vt(e,ne(e),t)}(o,t));if(!Rn[h])return i?t:{};o=En(t,h),s||(s=new De);var l=s.get(t);if(l)return l;s.set(t,o),Ln(t)?t.forEach(function(r){o.add(vn(r,e,n,r,t,s))}):Tn(t)&&t.forEach(function(r,i){o.set(i,vn(r,e,n,i,t,s))});var d=c?void 0:Xe(t);return ft(d||t,function(r,i){d&&(r=t[i=r]),Rt(o,i,vn(r,e,n,i,t,s))}),o}Rn[On]=Rn["[object Array]"]=Rn["[object ArrayBuffer]"]=Rn["[object DataView]"]=Rn["[object Boolean]"]=Rn["[object Date]"]=Rn["[object Float32Array]"]=Rn["[object Float64Array]"]=Rn["[object Int8Array]"]=Rn["[object Int16Array]"]=Rn["[object Int32Array]"]=Rn["[object Map]"]=Rn["[object Number]"]=Rn[An]=Rn["[object RegExp]"]=Rn["[object Set]"]=Rn["[object String]"]=Rn["[object Symbol]"]=Rn["[object Uint8Array]"]=Rn["[object Uint8ClampedArray]"]=Rn["[object Uint16Array]"]=Rn["[object Uint32Array]"]=!0,Rn["[object Error]"]=Rn[yn]=Rn["[object WeakMap]"]=!1;function Nn(t){return vn(t,4)}function In(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var s=t[e];s&&(i[r++]=s)}return i}function Cn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Oe;++e<n;)this.add(t[e])}function xn(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function kn(t,e){return t.has(e)}Cn.prototype.add=Cn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Cn.prototype.has=function(t){return this.__data__.has(t)};function Un(t,e,n,r,i,s){var o=1&n,a=t.length,c=e.length;if(a!=c&&!(o&&c>a))return!1;var h=s.get(t),u=s.get(e);if(h&&u)return h==e&&u==t;var l=-1,d=!0,p=2&n?new Cn:void 0;for(s.set(t,e),s.set(e,t);++l<a;){var f=t[l],m=e[l];if(r)var E=o?r(m,f,l,e,t,s):r(f,m,l,t,e,s);if(void 0!==E){if(E)continue;d=!1;break}if(p){if(!xn(e,function(t,e){if(!kn(p,e)&&(f===t||i(f,t,n,r,s)))return p.push(e)})){d=!1;break}}else if(f!==m&&!i(f,m,n,r,s)){d=!1;break}}return s.delete(t),s.delete(e),d}function _n(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function bn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}var Mn=E?E.prototype:void 0,Pn=Mn?Mn.valueOf:void 0;var wn=Object.prototype.hasOwnProperty;var Dn="[object Arguments]",Fn="[object Array]",Bn="[object Object]",jn=Object.prototype.hasOwnProperty;function $n(t,e,n,r,i,s){var o=I(t),a=I(e),c=o?Fn:un(t),h=a?Fn:un(e),u=(c=c==Dn?Bn:c)==Bn,l=(h=h==Dn?Bn:h)==Bn,d=c==h;if(d&&$t(t)){if(!$t(e))return!1;o=!0,u=!1}if(d&&!u)return s||(s=new De),o||Xt(t)?Un(t,e,n,r,i,s):function(t,e,n,r,i,s,o){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!s(new dn(t),new dn(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return yt(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var a=_n;case"[object Set]":var c=1&r;if(a||(a=bn),t.size!=e.size&&!c)return!1;var h=o.get(t);if(h)return h==e;r|=2,o.set(t,e);var u=Un(a(t),a(e),r,i,s,o);return o.delete(t),u;case"[object Symbol]":if(Pn)return Pn.call(t)==Pn.call(e)}return!1}(t,e,c,n,r,i,s);if(!(1&n)){var p=u&&jn.call(t,"__wrapped__"),f=l&&jn.call(e,"__wrapped__");if(p||f){var m=p?t.value():t,E=f?e.value():e;return s||(s=new De),i(m,E,n,r,s)}}return!!d&&(s||(s=new De),function(t,e,n,r,i,s){var o=1&n,a=Xe(t),c=a.length;if(c!=Xe(e).length&&!o)return!1;for(var h=c;h--;){var u=a[h];if(!(o?u in e:wn.call(e,u)))return!1}var l=s.get(t),d=s.get(e);if(l&&d)return l==e&&d==t;var p=!0;s.set(t,e),s.set(e,t);for(var f=o;++h<c;){var m=t[u=a[h]],E=e[u];if(r)var g=o?r(E,m,u,e,t,s):r(m,E,u,t,e,s);if(!(void 0===g?m===E||i(m,E,n,r,s):g)){p=!1;break}f||(f="constructor"==u)}if(p&&!f){var T=t.constructor,S=e.constructor;T==S||!("constructor"in t)||!("constructor"in e)||"function"==typeof T&&T instanceof T&&"function"==typeof S&&S instanceof S||(p=!1)}return s.delete(t),s.delete(e),p}(t,e,n,r,i,s))}function Kn(t,e,n,r,i){return t===e||(null==t||null==e||!R(t)&&!R(e)?t!=t&&e!=e:$n(t,e,n,r,Kn,i))}function Gn(t){return t==t&&!M(t)}function zn(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}function Wn(t){var e=function(t){for(var e=ne(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Gn(i)]}return e}(t);return 1==e.length&&e[0][2]?zn(e[0][0],e[0][1]):function(n){return n===t||function(t,e,n,r){var i=n.length,s=i;if(null==t)return!s;for(t=Object(t);i--;){var o=n[i];if(o[2]?o[1]!==t[o[0]]:!(o[0]in t))return!1}for(;++i<s;){var a=(o=n[i])[0],c=t[a],h=o[1];if(o[2]){if(void 0===c&&!(a in t))return!1}else if(!Kn(h,c,3,r,new De))return!1}return!0}(n,0,e)}}function Vn(t,e){return null!=t&&e in Object(t)}function Hn(t,e,n){for(var r=-1,i=(e=Ne(e,t)).length,s=!1;++r<i;){var o=Ie(e[r]);if(!(s=null!=t&&n(t,o)))break;t=t[o]}return s||++r!=i?s:!!(i=null==t?0:t.length)&&Ct(i)&&Lt(o,i)&&(I(t)||Dt(t))}function Yn(t,e){return le(t)&&Gn(e)?zn(Ie(t),e):function(n){var r=function(t,e,n){var r=null==t?void 0:Ce(t,e);return void 0===r?n:r}(n,t);return void 0===r&&r===e?function(t,e){return null!=t&&Hn(t,e,Vn)}(n,t):Kn(e,r,3)}}function Xn(t){return le(t)?(e=Ie(t),function(t){return null==t?void 0:t[e]}):function(t){return function(e){return Ce(e,t)}}(t);var e}function qn(t){return"function"==typeof t?t:null==t?K:"object"==typeof t?I(t)?Yn(t[0],t[1]):Wn(t):Xn(t)}function Zn(t,e,n,r){for(var i=-1,s=null==t?0:t.length;++i<s;){var o=t[i];e(r,o,n(o),t)}return r}var Qn=function(t,e,n){for(var r=-1,i=Object(t),s=n(t),o=s.length;o--;){var a=s[++r];if(!1===e(i[a],a,i))break}return t};var Jn,tr=(Jn=function(t,e){return t&&Qn(t,e,ne)},function(t,e){if(null==t)return t;if(!xt(t))return Jn(t,e);for(var n=t.length,r=-1,i=Object(t);++r<n&&!1!==e(i[r],r,i););return t});function er(t,e,n,r){return tr(t,function(t,i,s){e(r,t,n(t),s)}),r}var nr=Object.prototype,rr=nr.hasOwnProperty,ir=It(function(t,e){t=Object(t);var n=-1,r=e.length,i=r>2?e[2]:void 0;for(i&&kt(e[0],e[1],i)&&(r=1);++n<r;)for(var s=e[n],o=ce(s),a=-1,c=o.length;++a<c;){var h=o[a],u=t[h];(void 0===u||yt(u,nr[h])&&!rr.call(t,h))&&(t[h]=s[h])}return t});function sr(t){return R(t)&&xt(t)}var or=It(function(t,e){return sr(t)?function(t,e,n,r){var i=-1,s=Tt,o=!0,a=t.length,c=[],h=e.length;if(!a)return c;e.length>=200&&(s=kn,o=!1,e=new Cn(e));t:for(;++i<a;){var u=t[i],l=u;if(u=0!==u?u:0,o&&l==l){for(var d=h;d--;)if(e[d]===l)continue t;c.push(u)}else s(e,l,r)||c.push(u)}return c}(t,_e(e,0,sr,!0)):[]});function ar(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}function cr(t,e,n){var r=null==t?0:t.length;return r?Pe(t,(e=void 0===e?1:$(e))<0?0:e,r):[]}function hr(t,e,n){var r=null==t?0:t.length;return r?Pe(t,0,(e=r-(e=void 0===e?1:$(e)))<0?0:e):[]}function ur(t,e){var n;return(I(t)?ft:tr)(t,"function"==typeof(n=e)?n:K)}function lr(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function dr(t,e){var n=!0;return tr(t,function(t,r,i){return n=!!e(t,r,i)}),n}function pr(t,e,n){return(I(t)?lr:dr)(t,qn(e))}function fr(t,e){var n=[];return tr(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function mr(t,e){return(I(t)?Ke:fr)(t,qn(e))}var Er=Math.max;var gr,Tr=(gr=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:$(n);return i<0&&(i=Er(r+i,0)),mt(t,qn(e),i)},function(t,e,n){var r=Object(t);if(!xt(t)){var i=qn(e);t=ne(t),e=function(t){return i(r[t],t,r)}}var s=gr(t,e,n);return s>-1?r[i?t[s]:s]:void 0});function Sr(t){return t&&t.length?t[0]:void 0}function Lr(t,e){var n=-1,r=xt(t)?Array(t.length):[];return tr(t,function(t,i,s){r[++n]=e(t,i,s)}),r}function Or(t,e){return(I(t)?N:Lr)(t,qn(e))}function yr(t,e){return _e(Or(t,e))}var Ar,Rr,vr=Object.prototype.hasOwnProperty,Nr=(Ar=function(t,e,n){vr.call(t,n)?t[n].push(e):Ot(t,n,[e])},function(t,e){var n=I(t)?Zn:er,r=Rr?Rr():{};return n(t,Ar,qn(e),r)}),Ir=Object.prototype.hasOwnProperty;function Cr(t,e){return null!=t&&Ir.call(t,e)}function xr(t,e){return null!=t&&Hn(t,e,Cr)}function kr(t){return"string"==typeof t||!I(t)&&R(t)&&"[object String]"==A(t)}function Ur(t){return null==t?[]:function(t,e){return N(e,function(e){return t[e]})}(t,ne(t))}var _r=Math.max;function br(t,e,n,r){t=xt(t)?t:Ur(t),n=n?$(n):0;var i=t.length;return n<0&&(n=_r(i+n,0)),kr(t)?n<=i&&t.indexOf(e,n)>-1:!!i&>(t,e,n)>-1}function Mr(t,e,n){if(!(null==t?0:t.length))return-1;return gt(t,e,0)}var Pr=Object.prototype.hasOwnProperty;function wr(t){if(null==t)return!0;if(xt(t)&&(I(t)||"string"==typeof t||"function"==typeof t.splice||$t(t)||Xt(t)||Dt(t)))return!t.length;var e=un(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if(_t(t))return!ee(t).length;for(var n in t)if(Pr.call(t,n))return!1;return!0}var Dr=Ht&&Ht.isRegExp,Fr=Dr?Gt(Dr):function(t){return R(t)&&"[object RegExp]"==A(t)};function Br(t){return void 0===t}function jr(t,e,n,r){if(!M(t))return t;for(var i=-1,s=(e=Ne(e,t)).length,o=s-1,a=t;null!=a&&++i<s;){var c=Ie(e[i]),h=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return t;if(i!=o){var u=a[c];void 0===(h=void 0)&&(h=M(u)?u:Lt(e[i+1])?[]:{})}Rt(a,c,h),a=a[c]}return t}function $r(t,e){if(null==t)return{};var n=N(function(t){return Ye(t,ce,He)}(t),function(t){return[t]});return e=qn(e),function(t,e,n){for(var r=-1,i=e.length,s={};++r<i;){var o=e[r],a=Ce(t,o);n(a,o)&&jr(s,Ne(o,t),a)}return s}(t,n,function(t,n){return e(t,n[0])})}function Kr(t,e,n,r,i){return i(t,function(t,i,s){n=r?(r=!1,t):e(n,t,i,s)}),n}function Gr(t,e,n){var r=I(t)?we:Kr,i=arguments.length<3;return r(t,qn(e),n,i,tr)}function zr(t,e){return(I(t)?Ke:fr)(t,function(t){if("function"!=typeof t)throw new TypeError("Expected a function");return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}(qn(e)))}function Wr(t,e){var n;return tr(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function Vr(t,e,n){return(I(t)?xn:Wr)(t,qn(e))}var Hr=Qe&&1/bn(new Qe([,-0]))[1]==1/0?function(t){return new Qe(t)}:ot;function Yr(t){return t&&t.length?function(t,e,n){var r=-1,i=Tt,s=t.length,o=!0,a=[],c=a;if(s>=200){var h=Hr(t);if(h)return bn(h);o=!1,i=kn,c=new Cn}else c=a;t:for(;++r<s;){var u=t[r],l=u;if(u=0!==u?u:0,o&&l==l){for(var d=c.length;d--;)if(c[d]===l)continue t;a.push(u)}else i(c,l,n)||(c!==a&&c.push(l),a.push(u))}return a}(t):[]}function Xr(t){console&&console.error&&console.error(`Error: ${t}`)}function qr(t){console&&console.warn&&console.warn(`Warning: ${t}`)}function Zr(t){const e=(new Date).getTime(),n=t();return{time:(new Date).getTime()-e,value:n}}function Qr(t){function e(){}e.prototype=t;const n=new e;function r(){return typeof n.bar}return r(),r(),t}function Jr(t){return kr((e=t).LABEL)&&""!==e.LABEL?t.LABEL:t.name;var e}class ti{get definition(){return this._definition}set definition(t){this._definition=t}constructor(t){this._definition=t}accept(t){t.visit(this),ur(this.definition,e=>{e.accept(t)})}}class ei extends ti{constructor(t){super([]),this.idx=1,se(this,$r(t,t=>void 0!==t))}set definition(t){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(t){t.visit(this)}}class ni extends ti{constructor(t){super(t.definition),this.orgText="",se(this,$r(t,t=>void 0!==t))}}class ri extends ti{constructor(t){super(t.definition),this.ignoreAmbiguities=!1,se(this,$r(t,t=>void 0!==t))}}class ii extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class si extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class oi extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class ai extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class ci extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class hi extends ti{get definition(){return this._definition}set definition(t){this._definition=t}constructor(t){super(t.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,se(this,$r(t,t=>void 0!==t))}}class ui{constructor(t){this.idx=1,se(this,$r(t,t=>void 0!==t))}accept(t){t.visit(this)}}function li(t){function e(t){return Or(t,li)}if(t instanceof ei){const e={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return kr(t.label)&&(e.label=t.label),e}if(t instanceof ri)return{type:"Alternative",definition:e(t.definition)};if(t instanceof ii)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof si)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof oi)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:li(new ui({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ci)return{type:"RepetitionWithSeparator",idx:t.idx,separator:li(new ui({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ai)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof hi)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof ui){const e={type:"Terminal",name:t.terminalType.name,label:Jr(t.terminalType),idx:t.idx};kr(t.label)&&(e.terminalLabel=t.label);const n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(e.pattern=Fr(n)?n.source:n),e}if(t instanceof ni)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}class di{visit(t){const e=t;switch(e.constructor){case ei:return this.visitNonTerminal(e);case ri:return this.visitAlternative(e);case ii:return this.visitOption(e);case si:return this.visitRepetitionMandatory(e);case oi:return this.visitRepetitionMandatoryWithSeparator(e);case ci:return this.visitRepetitionWithSeparator(e);case ai:return this.visitRepetition(e);case hi:return this.visitAlternation(e);case ui:return this.visitTerminal(e);case ni:return this.visitRule(e);default:throw Error("non exhaustive match")}}visitNonTerminal(t){}visitAlternative(t){}visitOption(t){}visitRepetition(t){}visitRepetitionMandatory(t){}visitRepetitionMandatoryWithSeparator(t){}visitRepetitionWithSeparator(t){}visitAlternation(t){}visitTerminal(t){}visitRule(t){}}function pi(t,e=[]){return!!(t instanceof ii||t instanceof ai||t instanceof ci)||(t instanceof hi?Vr(t.definition,t=>pi(t,e)):!(t instanceof ei&&br(e,t))&&(t instanceof ti&&(t instanceof ei&&e.push(t),pr(t.definition,t=>pi(t,e)))))}function fi(t){if(t instanceof ei)return"SUBRULE";if(t instanceof ii)return"OPTION";if(t instanceof hi)return"OR";if(t instanceof si)return"AT_LEAST_ONE";if(t instanceof oi)return"AT_LEAST_ONE_SEP";if(t instanceof ci)return"MANY_SEP";if(t instanceof ai)return"MANY";if(t instanceof ui)return"CONSUME";throw Error("non exhaustive match")}class mi{walk(t,e=[]){ur(t.definition,(n,r)=>{const i=cr(t.definition,r+1);if(n instanceof ei)this.walkProdRef(n,i,e);else if(n instanceof ui)this.walkTerminal(n,i,e);else if(n instanceof ri)this.walkFlat(n,i,e);else if(n instanceof ii)this.walkOption(n,i,e);else if(n instanceof si)this.walkAtLeastOne(n,i,e);else if(n instanceof oi)this.walkAtLeastOneSep(n,i,e);else if(n instanceof ci)this.walkManySep(n,i,e);else if(n instanceof ai)this.walkMany(n,i,e);else{if(!(n instanceof hi))throw Error("non exhaustive match");this.walkOr(n,i,e)}})}walkTerminal(t,e,n){}walkProdRef(t,e,n){}walkFlat(t,e,n){const r=e.concat(n);this.walk(t,r)}walkOption(t,e,n){const r=e.concat(n);this.walk(t,r)}walkAtLeastOne(t,e,n){const r=[new ii({definition:t.definition})].concat(e,n);this.walk(t,r)}walkAtLeastOneSep(t,e,n){const r=Ei(t,e,n);this.walk(t,r)}walkMany(t,e,n){const r=[new ii({definition:t.definition})].concat(e,n);this.walk(t,r)}walkManySep(t,e,n){const r=Ei(t,e,n);this.walk(t,r)}walkOr(t,e,n){const r=e.concat(n);ur(t.definition,t=>{const e=new ri({definition:[t]});this.walk(e,r)})}}function Ei(t,e,n){return[new ii({definition:[new ui({terminalType:t.separator})].concat(t.definition)})].concat(e,n)}function gi(t){if(t instanceof ei)return gi(t.referencedRule);if(t instanceof ui)return[t.terminalType];if(function(t){return t instanceof ri||t instanceof ii||t instanceof ai||t instanceof si||t instanceof oi||t instanceof ci||t instanceof ui||t instanceof ni}(t))return function(t){let e=[];const n=t.definition;let r,i=0,s=n.length>i,o=!0;for(;s&&o;)r=n[i],o=pi(r),e=e.concat(gi(r)),i+=1,s=n.length>i;return Yr(e)}(t);if(function(t){return t instanceof hi}(t))return function(t){const e=Or(t.definition,t=>gi(t));return Yr(be(e))}(t);throw Error("non exhaustive match")}const Ti="_~IN~_";class Si extends mi{constructor(t){super(),this.topProd=t,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(t,e,n){}walkProdRef(t,e,n){const r=(i=t.referencedRule,s=t.idx,i.name+s+Ti+this.topProd.name);var i,s;const o=e.concat(n),a=gi(new ri({definition:o}));this.follows[r]=a}}function Li(t){return t.charCodeAt(0)}function Oi(t,e){Array.isArray(t)?t.forEach(function(t){e.push(t)}):e.push(t)}function yi(t,e){if(!0===t[e])throw"duplicate flag "+e;t[e],t[e]=!0}function Ai(t){if(void 0===t)throw Error("Internal Error - Should never get here!");return!0}function Ri(t){return"Character"===t.type}const vi=[];for(let ah=Li("0");ah<=Li("9");ah++)vi.push(ah);const Ni=[Li("_")].concat(vi);for(let ah=Li("a");ah<=Li("z");ah++)Ni.push(ah);for(let ah=Li("A");ah<=Li("Z");ah++)Ni.push(ah);const Ii=[Li(" "),Li("\f"),Li("\n"),Li("\r"),Li("\t"),Li("\v"),Li("\t"),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li("\u2028"),Li("\u2029"),Li(" "),Li(" "),Li(" "),Li("\ufeff")],Ci=/[0-9a-fA-F]/,xi=/[0-9]/,ki=/[1-9]/;class Ui{visitChildren(t){for(const e in t){const n=t[e];t.hasOwnProperty(e)&&(void 0!==n.type?this.visit(n):Array.isArray(n)&&n.forEach(t=>{this.visit(t)},this))}}visit(t){switch(t.type){case"Pattern":this.visitPattern(t);break;case"Flags":this.visitFlags(t);break;case"Disjunction":this.visitDisjunction(t);break;case"Alternative":this.visitAlternative(t);break;case"StartAnchor":this.visitStartAnchor(t);break;case"EndAnchor":this.visitEndAnchor(t);break;case"WordBoundary":this.visitWordBoundary(t);break;case"NonWordBoundary":this.visitNonWordBoundary(t);break;case"Lookahead":this.visitLookahead(t);break;case"NegativeLookahead":this.visitNegativeLookahead(t);break;case"Lookbehind":this.visitLookbehind(t);break;case"NegativeLookbehind":this.visitNegativeLookbehind(t);break;case"Character":this.visitCharacter(t);break;case"Set":this.visitSet(t);break;case"Group":this.visitGroup(t);break;case"GroupBackReference":this.visitGroupBackReference(t);break;case"Quantifier":this.visitQuantifier(t)}this.visitChildren(t)}visitPattern(t){}visitFlags(t){}visitDisjunction(t){}visitAlternative(t){}visitStartAnchor(t){}visitEndAnchor(t){}visitWordBoundary(t){}visitNonWordBoundary(t){}visitLookahead(t){}visitNegativeLookahead(t){}visitLookbehind(t){}visitNegativeLookbehind(t){}visitCharacter(t){}visitSet(t){}visitGroup(t){}visitGroupBackReference(t){}visitQuantifier(t){}}let _i={};const bi=new class{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(t){this.idx=t.idx,this.input=t.input,this.groupIdx=t.groupIdx}pattern(t){this.idx=0,this.input=t,this.groupIdx=0,this.consumeChar("/");const e=this.disjunction();this.consumeChar("/");const n={type:"Flags",loc:{begin:this.idx,end:t.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":yi(n,"global");break;case"i":yi(n,"ignoreCase");break;case"m":yi(n,"multiLine");break;case"u":yi(n,"unicode");break;case"y":yi(n,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:e,loc:this.loc(0)}}disjunction(){const t=[],e=this.idx;for(t.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),t.push(this.alternative());return{type:"Disjunction",value:t,loc:this.loc(e)}}alternative(){const t=[],e=this.idx;for(;this.isTerm();)t.push(this.term());return{type:"Alternative",value:t,loc:this.loc(e)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const t=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(t)};case"$":return{type:"EndAnchor",loc:this.loc(t)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(t)};case"B":return{type:"NonWordBoundary",loc:this.loc(t)}}throw Error("Invalid Assertion Escape");case"(":let e;switch(this.consumeChar("?"),this.popChar()){case"=":e="Lookahead";break;case"!":e="NegativeLookahead";break;case"<":switch(this.popChar()){case"=":e="Lookbehind";break;case"!":e="NegativeLookbehind"}}Ai(e);const n=this.disjunction();return this.consumeChar(")"),{type:e,value:n,loc:this.loc(t)}}return function(){throw Error("Internal Error - Should never get here!")}()}quantifier(t=!1){let e;const n=this.idx;switch(this.popChar()){case"*":e={atLeast:0,atMost:1/0};break;case"+":e={atLeast:1,atMost:1/0};break;case"?":e={atLeast:0,atMost:1};break;case"{":const n=this.integerIncludingZero();switch(this.popChar()){case"}":e={atLeast:n,atMost:n};break;case",":let t;this.isDigit()?(t=this.integerIncludingZero(),e={atLeast:n,atMost:t}):e={atLeast:n,atMost:1/0},this.consumeChar("}")}if(!0===t&&void 0===e)return;Ai(e)}if(!0!==t||void 0!==e)return Ai(e)?("?"===this.peekChar(0)?(this.consumeChar("?"),e.greedy=!1):e.greedy=!0,e.type="Quantifier",e.loc=this.loc(n),e):void 0}atom(){let t;const e=this.idx;switch(this.peekChar()){case".":t=this.dotAll();break;case"\\":t=this.atomEscape();break;case"[":t=this.characterClass();break;case"(":t=this.group()}if(void 0===t&&this.isPatternCharacter()&&(t=this.patternCharacter()),Ai(t))return t.loc=this.loc(e),this.isQuantifier()&&(t.quantifier=this.quantifier()),t}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Li("\n"),Li("\r"),Li("\u2028"),Li("\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 t,e=!1;switch(this.popChar()){case"d":t=vi;break;case"D":t=vi,e=!0;break;case"s":t=Ii;break;case"S":t=Ii,e=!0;break;case"w":t=Ni;break;case"W":t=Ni,e=!0}if(Ai(t))return{type:"Set",value:t,complement:e}}controlEscapeAtom(){let t;switch(this.popChar()){case"f":t=Li("\f");break;case"n":t=Li("\n");break;case"r":t=Li("\r");break;case"t":t=Li("\t");break;case"v":t=Li("\v")}if(Ai(t))return{type:"Character",value:t}}controlLetterEscapeAtom(){this.consumeChar("c");const t=this.popChar();if(!1===/[a-zA-Z]/.test(t))throw Error("Invalid ");return{type:"Character",value:t.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Li("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:Li(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case"\n":case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:Li(this.popChar())}}}characterClass(){const t=[];let e=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),e=!0);this.isClassAtom();){const e=this.classAtom();if(e.type,Ri(e)&&this.isRangeDash()){this.consumeChar("-");const n=this.classAtom();if(n.type,Ri(n)){if(n.value<e.value)throw Error("Range out of order in character class");t.push({from:e.value,to:n.value})}else Oi(e.value,t),t.push(Li("-")),Oi(n.value,t)}else Oi(e.value,t)}return this.consumeChar("]"),{type:"Set",complement:e,value:t}}classAtom(){switch(this.peekChar()){case"]":case"\n":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:Li("\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 t=!0;if(this.consumeChar("("),"?"===this.peekChar(0))this.consumeChar("?"),this.consumeChar(":"),t=!1;else this.groupIdx++;const e=this.disjunction();this.consumeChar(")");const n={type:"Group",capturing:t,value:e};return t&&(n.idx=this.groupIdx),n}positiveInteger(){let t=this.popChar();if(!1===ki.test(t))throw Error("Expecting a positive integer");for(;xi.test(this.peekChar(0));)t+=this.popChar();return parseInt(t,10)}integerIncludingZero(){let t=this.popChar();if(!1===xi.test(t))throw Error("Expecting an integer");for(;xi.test(this.peekChar(0));)t+=this.popChar();return parseInt(t,10)}patternCharacter(){const t=this.popChar();switch(t){case"\n":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:Li(t)}}}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 xi.test(this.peekChar(0))}isClassAtom(t=0){switch(this.peekChar(t)){case"]":case"\n":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)||"<"===this.peekChar(2)&&("="===this.peekChar(3)||"!"===this.peekChar(3)));default:return!1}}isQuantifier(){const t=this.saveState();try{return void 0!==this.quantifier(!0)}catch(e){return!1}finally{this.restoreState(t)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(t){let e="";for(let n=0;n<t;n++){const t=this.popChar();if(!1===Ci.test(t))throw Error("Expecting a HexDecimal digits");e+=t}return{type:"Character",value:parseInt(e,16)}}peekChar(t=0){return this.input[this.idx+t]}popChar(){const t=this.peekChar(0);return this.consumeChar(void 0),t}consumeChar(t){if(void 0!==t&&this.input[this.idx]!==t)throw Error("Expected: '"+t+"' 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(t){return{begin:t,end:this.idx}}};function Mi(t){const e=t.toString();if(_i.hasOwnProperty(e))return _i[e];{const t=bi.pattern(e);return _i[e]=t,t}}const Pi="Complement Sets are not supported for first char optimization",wi='Unable to use "first char" lexer optimizations:\n';function Di(t,e=!1){try{const e=Mi(t);return Fi(e.value,{},e.flags.ignoreCase)}catch(n){if(n.message===Pi)e&&qr(`${wi}\tUnable to optimize: < ${t.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n="\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."),Xr(`${wi}\n\tFailed parsing: < ${t.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Fi(t,e,n){switch(t.type){case"Disjunction":for(let i=0;i<t.value.length;i++)Fi(t.value[i],e,n);break;case"Alternative":const r=t.value;for(let t=0;t<r.length;t++){const i=r[t];switch(i.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"Lookbehind":case"NegativeLookbehind":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}const s=i;switch(s.type){case"Character":Bi(s.value,e,n);break;case"Set":if(!0===s.complement)throw Error(Pi);ur(s.value,t=>{if("number"==typeof t)Bi(t,e,n);else{const r=t;if(!0===n)for(let t=r.from;t<=r.to;t++)Bi(t,e,n);else{for(let t=r.from;t<=r.to&&t<ss;t++)Bi(t,e,n);if(r.to>=ss){const t=r.from>=ss?r.from:ss,n=r.to,i=as(t),s=as(n);for(let r=i;r<=s;r++)e[r]=r}}}});break;case"Group":Fi(s.value,e,n);break;default:throw Error("Non Exhaustive Match")}const o=void 0!==s.quantifier&&0===s.quantifier.atLeast;if("Group"===s.type&&!1===$i(s)||"Group"!==s.type&&!1===o)break}break;default:throw Error("non exhaustive match!")}return Ur(e)}function Bi(t,e,n){const r=as(t);e[r]=r,!0===n&&function(t,e){const n=String.fromCharCode(t),r=n.toUpperCase();if(r!==n){const t=as(r.charCodeAt(0));e[t]=t}else{const t=n.toLowerCase();if(t!==n){const n=as(t.charCodeAt(0));e[n]=n}}}(t,e)}function ji(t,e){return Tr(t.value,t=>{if("number"==typeof t)return br(e,t);{const n=t;return void 0!==Tr(e,t=>n.from<=t&&t<=n.to)}})}function $i(t){const e=t.quantifier;return!(!e||0!==e.atLeast)||!!t.value&&(I(t.value)?pr(t.value,$i):$i(t.value))}class Ki extends Ui{constructor(t){super(),this.targetCharCodes=t,this.found=!1}visitChildren(t){if(!0!==this.found){switch(t.type){case"Lookahead":return void this.visitLookahead(t);case"NegativeLookahead":return void this.visitNegativeLookahead(t);case"Lookbehind":return void this.visitLookbehind(t);case"NegativeLookbehind":return void this.visitNegativeLookbehind(t)}super.visitChildren(t)}}visitCharacter(t){br(this.targetCharCodes,t.value)&&(this.found=!0)}visitSet(t){t.complement?void 0===ji(t,this.targetCharCodes)&&(this.found=!0):void 0!==ji(t,this.targetCharCodes)&&(this.found=!0)}}function Gi(t,e){if(e instanceof RegExp){const n=Mi(e),r=new Ki(t);return r.visit(n),r.found}return void 0!==Tr(e,e=>br(t,e.charCodeAt(0)))}const zi="PATTERN",Wi="defaultMode",Vi="modes";function Hi(t,e){const n=(e=ir(e,{debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r","\n"],tracer:(t,e)=>e()})).tracer;let r;n("initCharCodeToOptimizedIndexMap",()=>{!function(){if(wr(os)){os=new Array(65536);for(let t=0;t<65536;t++)os[t]=t>255?255+~~(t/255):t}}()}),n("Reject Lexer.NA",()=>{r=zr(t,t=>t[zi]===Os.NA)});let i,s,o,a,c,h,u,l,d,p,f,m=!1;n("Transform Patterns",()=>{m=!1,i=Or(r,t=>{const e=t[zi];if(Fr(e)){const t=e.source;return 1!==t.length||"^"===t||"$"===t||"."===t||e.ignoreCase?2!==t.length||"\\"!==t[0]||br(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],t[1])?Zi(e):t[1]:t}if(G(e))return m=!0,{exec:e};if("object"==typeof e)return m=!0,e;if("string"==typeof e){if(1===e.length)return e;{const t=e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&");return Zi(new RegExp(t))}}throw Error("non exhaustive match")})}),n("misc mapping",()=>{s=Or(r,t=>t.tokenTypeIdx),o=Or(r,t=>{const e=t.GROUP;if(e!==Os.SKIPPED){if(kr(e))return e;if(Br(e))return!1;throw Error("non exhaustive match")}}),a=Or(r,t=>{const e=t.LONGER_ALT;if(e){return I(e)?Or(e,t=>Mr(r,t)):[Mr(r,e)]}}),c=Or(r,t=>t.PUSH_MODE),h=Or(r,t=>xr(t,"POP_MODE"))}),n("Line Terminator Handling",()=>{const t=rs(e.lineTerminatorCharacters);u=Or(r,t=>!1),"onlyOffset"!==e.positionTracking&&(u=Or(r,e=>xr(e,"LINE_BREAKS")?!!e.LINE_BREAKS:!1===ns(e,t)&&Gi(t,e.PATTERN)))}),n("Misc Mapping #2",()=>{l=Or(r,Ji),d=Or(i,ts),p=Gr(r,(t,e)=>{const n=e.GROUP;return kr(n)&&n!==Os.SKIPPED&&(t[n]=[]),t},{}),f=Or(i,(t,e)=>({pattern:i[e],longerAlt:a[e],canLineTerminator:u[e],isCustom:l[e],short:d[e],group:o[e],push:c[e],pop:h[e],tokenTypeIdx:s[e],tokenType:r[e]}))});let E=!0,g=[];return e.safeMode||n("First Char Optimization",()=>{g=Gr(r,(t,n,r)=>{if("string"==typeof n.PATTERN){const e=as(n.PATTERN.charCodeAt(0));is(t,e,f[r])}else if(I(n.START_CHARS_HINT)){let e;ur(n.START_CHARS_HINT,n=>{const i=as("string"==typeof n?n.charCodeAt(0):n);e!==i&&(e=i,is(t,i,f[r]))})}else if(Fr(n.PATTERN))if(n.PATTERN.unicode)E=!1,e.ensureOptimizations&&Xr(`${wi}\tUnable to analyze < ${n.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const i=Di(n.PATTERN,e.ensureOptimizations);wr(i)&&(E=!1),ur(i,e=>{is(t,e,f[r])})}else e.ensureOptimizations&&Xr(`${wi}\tTokenType: <${n.name}> is using a custom token pattern without providing <start_chars_hint> parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),E=!1;return t},[])}),{emptyGroups:p,patternIdxToConfig:f,charCodeToPatternIdxToConfig:g,hasCustom:m,canBeOptimized:E}}function Yi(t,e){let n=[];const r=function(t){const e=mr(t,t=>!xr(t,zi)),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- missing static 'PATTERN' property",type:Ts.MISSING_PATTERN,tokenTypes:[t]})),r=or(t,e);return{errors:n,valid:r}}(t);n=n.concat(r.errors);const i=function(t){const e=mr(t,t=>{const e=t[zi];return!(Fr(e)||G(e)||xr(e,"exec")||kr(e))}),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Ts.INVALID_PATTERN,tokenTypes:[t]})),r=or(t,e);return{errors:n,valid:r}}(r.valid),s=i.valid;return n=n.concat(i.errors),n=n.concat(function(t){let e=[];const n=mr(t,t=>Fr(t[zi]));return e=e.concat(function(t){class e extends Ui{constructor(){super(...arguments),this.found=!1}visitEndAnchor(t){this.found=!0}}const n=mr(t,t=>{const n=t.PATTERN;try{const t=Mi(n),r=new e;return r.visit(t),r.found}catch(r){return Xi.test(n.source)}}),r=Or(n,t=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+t.name+"<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:Ts.EOI_ANCHOR_FOUND,tokenTypes:[t]}));return r}(n)),e=e.concat(function(t){class e extends Ui{constructor(){super(...arguments),this.found=!1}visitStartAnchor(t){this.found=!0}}const n=mr(t,t=>{const n=t.PATTERN;try{const t=Mi(n),r=new e;return r.visit(t),r.found}catch(r){return qi.test(n.source)}}),r=Or(n,t=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+t.name+"<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:Ts.SOI_ANCHOR_FOUND,tokenTypes:[t]}));return r}(n)),e=e.concat(function(t){const e=mr(t,t=>{const e=t[zi];return e instanceof RegExp&&(e.multiline||e.global)}),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Ts.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[t]}));return n}(n)),e=e.concat(function(t){const e=[];let n=Or(t,n=>Gr(t,(t,r)=>(n.PATTERN.source!==r.PATTERN.source||br(e,r)||r.PATTERN===Os.NA||(e.push(r),t.push(r)),t),[]));n=In(n);const r=Or(mr(n,t=>t.length>1),t=>{const e=Or(t,t=>t.name);return{message:`The same RegExp pattern ->${Sr(t).PATTERN}<-has been used in all of the following Token Types: ${e.join(", ")} <-`,type:Ts.DUPLICATE_PATTERNS_FOUND,tokenTypes:t}});return r}(n)),e=e.concat(function(t){const e=mr(t,t=>t.PATTERN.test("")),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' must not match an empty string",type:Ts.EMPTY_MATCH_PATTERN,tokenTypes:[t]}));return n}(n)),e}(s)),n=n.concat(function(t){const e=mr(t,t=>{if(!xr(t,"GROUP"))return!1;const e=t.GROUP;return e!==Os.SKIPPED&&e!==Os.NA&&!kr(e)}),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Ts.INVALID_GROUP_TYPE_FOUND,tokenTypes:[t]}));return n}(s)),n=n.concat(function(t,e){const n=mr(t,t=>void 0!==t.PUSH_MODE&&!br(e,t.PUSH_MODE)),r=Or(n,t=>({message:`Token Type: ->${t.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${t.PUSH_MODE}<-which does not exist`,type:Ts.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[t]}));return r}(s,e)),n=n.concat(function(t){const e=[],n=Gr(t,(t,e,n)=>{const r=e.PATTERN;return r===Os.NA||(kr(r)?t.push({str:r,idx:n,tokenType:e}):Fr(r)&&(i=r,void 0===Tr([".","\\","[","]","|","^","$","(",")","?","*","+","{"],t=>-1!==i.source.indexOf(t)))&&t.push({str:r.source,idx:n,tokenType:e})),t;var i},[]);return ur(t,(t,r)=>{ur(n,({str:n,idx:i,tokenType:s})=>{if(r<i&&function(t,e){if(Fr(e)){if(/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\?<!)/.test(e.source))return!1;const n=e.exec(t);return null!==n&&0===n.index}if(G(e))return e(t,0,[],{});if(xr(e,"exec"))return e.exec(t,0,[],{});if("string"==typeof e)return e===t;throw Error("non exhaustive match")}(n,t.PATTERN)){const n=`Token: ->${s.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${t.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:n,type:Ts.UNREACHABLE_PATTERN,tokenTypes:[t,s]})}})}),e}(s)),n}const Xi=/[^\\][$]/;const qi=/[^\\[][\^]|^\^/;function Zi(t){const e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function Qi(t,e,n){const r=[];let i=!1;const s=zr(In(be(Ur(t.modes))),t=>t[zi]===Os.NA),o=rs(n);return e&&ur(s,t=>{const e=ns(t,o);if(!1!==e){const n=function(t,e){if(e.issue===Ts.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${t.name}> Token Type\n\t Root cause: ${e.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Ts.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n\tThe problem is in the <${t.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}(t,e),i={message:n,type:e.issue,tokenType:t};r.push(i)}else xr(t,"LINE_BREAKS")?!0===t.LINE_BREAKS&&(i=!0):Gi(o,t.PATTERN)&&(i=!0)}),e&&!i&&r.push({message:"Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",type:Ts.NO_LINE_BREAKS_FLAGS}),r}function Ji(t){const e=t.PATTERN;if(Fr(e))return!1;if(G(e))return!0;if(xr(e,"exec"))return!0;if(kr(e))return!1;throw Error("non exhaustive match")}function ts(t){return!(!kr(t)||1!==t.length)&&t.charCodeAt(0)}const es={test:function(t){const e=t.length;for(let n=this.lastIndex;n<e;n++){const e=t.charCodeAt(n);if(10===e)return this.lastIndex=n+1,!0;if(13===e)return 10===t.charCodeAt(n+1)?this.lastIndex=n+2:this.lastIndex=n+1,!0}return!1},lastIndex:0};function ns(t,e){if(xr(t,"LINE_BREAKS"))return!1;if(Fr(t.PATTERN)){try{Gi(e,t.PATTERN)}catch(n){return{issue:Ts.IDENTIFY_TERMINATOR,errMsg:n.message}}return!1}if(kr(t.PATTERN))return!1;if(Ji(t))return{issue:Ts.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}function rs(t){return Or(t,t=>kr(t)?t.charCodeAt(0):t)}function is(t,e,n){void 0===t[e]?t[e]=[n]:t[e].push(n)}const ss=256;let os=[];function as(t){return t<ss?t:os[t]}function cs(t,e){const n=t.tokenTypeIdx;return n===e.tokenTypeIdx||!0===e.isParent&&!0===e.categoryMatchesMap[n]}function hs(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}let us=1;const ls={};function ds(t){const e=function(t){let e=Nn(t),n=t,r=!0;for(;r;){n=In(be(Or(n,t=>t.CATEGORIES)));const t=or(n,e);e=e.concat(t),wr(t)?r=!1:n=t}return e}(t);!function(t){ur(t,t=>{fs(t)||(ls[us]=t,t.tokenTypeIdx=us++),ms(t)&&!I(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),ms(t)||(t.CATEGORIES=[]),xr(t,"categoryMatches")||(t.categoryMatches=[]),function(t){return xr(t,"categoryMatchesMap")}(t)||(t.categoryMatchesMap={})})}(e),function(t){ur(t,t=>{ps([],t)})}(e),function(t){ur(t,t=>{t.categoryMatches=[],ur(t.categoryMatchesMap,(e,n)=>{t.categoryMatches.push(ls[n].tokenTypeIdx)})})}(e),ur(e,t=>{t.isParent=t.categoryMatches.length>0})}function ps(t,e){ur(t,t=>{e.categoryMatchesMap[t.tokenTypeIdx]=!0}),ur(e.CATEGORIES,n=>{const r=t.concat(e);br(r,n)||ps(r,n)})}function fs(t){return xr(t,"tokenTypeIdx")}function ms(t){return xr(t,"CATEGORIES")}function Es(t){return xr(t,"tokenTypeIdx")}const gs={buildUnableToPopLexerModeMessage:t=>`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`,buildUnexpectedCharactersMessage:(t,e,n,r,i,s)=>`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${n} characters.`};var Ts,Ss;(Ss=Ts||(Ts={}))[Ss.MISSING_PATTERN=0]="MISSING_PATTERN",Ss[Ss.INVALID_PATTERN=1]="INVALID_PATTERN",Ss[Ss.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",Ss[Ss.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",Ss[Ss.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",Ss[Ss.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",Ss[Ss.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",Ss[Ss.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",Ss[Ss.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",Ss[Ss.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",Ss[Ss.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",Ss[Ss.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",Ss[Ss.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",Ss[Ss.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",Ss[Ss.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",Ss[Ss.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",Ss[Ss.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",Ss[Ss.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE";const Ls={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:["\n","\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:gs,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Ls);class Os{constructor(t,e=Ls){if(this.lexerDefinition=t,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=(t,e)=>{if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${t}>`);const{time:r,value:i}=Zr(e),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${t}> time: ${r}ms`),this.traceInitIndent--,i}return e()},"boolean"==typeof e)throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");this.config=se({},Ls,e);const n=this.config.traceInitPerf;!0===n?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof n&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,r=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Ls.lineTerminatorsPattern)this.config.lineTerminatorsPattern=es;else if(this.config.lineTerminatorCharacters===Ls.lineTerminatorCharacters)throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");if(e.safeMode&&e.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),I(t)?n={modes:{defaultMode:Nn(t)},defaultMode:Wi}:(r=!1,n=Nn(t))}),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(function(t){const e=[];return xr(t,Wi)||e.push({message:"A MultiMode Lexer cannot be initialized without a <"+Wi+"> property in its definition\n",type:Ts.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),xr(t,Vi)||e.push({message:"A MultiMode Lexer cannot be initialized without a <modes> property in its definition\n",type:Ts.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),xr(t,Vi)&&xr(t,Wi)&&!xr(t.modes,t.defaultMode)&&e.push({message:`A MultiMode Lexer cannot be initialized with a ${Wi}: <${t.defaultMode}>which does not exist\n`,type:Ts.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),xr(t,Vi)&&ur(t.modes,(t,n)=>{ur(t,(r,i)=>{Br(r)?e.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${n}> at index: <${i}>\n`,type:Ts.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED}):xr(r,"LONGER_ALT")&&ur(I(r.LONGER_ALT)?r.LONGER_ALT:[r.LONGER_ALT],i=>{Br(i)||br(t,i)||e.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${i.name}> on token <${r.name}> outside of mode <${n}>\n`,type:Ts.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})})}),e}(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Qi(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},ur(n.modes,(t,e)=>{n.modes[e]=zr(t,t=>Br(t))});const i=ne(n.modes);if(ur(n.modes,(t,n)=>{this.TRACE_INIT(`Mode: <${n}> processing`,()=>{if(this.modes.push(n),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Yi(t,i))}),wr(this.lexerDefinitionErrors)){let r;ds(t),this.TRACE_INIT("analyzeTokenTypes",()=>{r=Hi(t,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:e.positionTracking,ensureOptimizations:e.ensureOptimizations,safeMode:e.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[n]=r.patternIdxToConfig,this.charCodeToPatternIdxToConfig[n]=r.charCodeToPatternIdxToConfig,this.emptyGroups=se({},this.emptyGroups,r.emptyGroups),this.hasCustom=r.hasCustom||this.hasCustom,this.canModeBeOptimized[n]=r.canBeOptimized}})}),this.defaultMode=n.defaultMode,!wr(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const t=Or(this.lexerDefinitionErrors,t=>t.message).join("-----------------------\n");throw new Error("Errors detected in definition of Lexer:\n"+t)}ur(this.lexerDefinitionWarning,t=>{qr(t.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(r&&(this.handleModes=ot),!1===this.trackStartLines&&(this.computeNewColumn=K),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=ot),/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))throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}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 t=Gr(this.canModeBeOptimized,(t,e,n)=>(!1===e&&t.push(n),t),[]);if(e.ensureOptimizations&&!wr(t))throw Error(`Lexer Modes: < ${t.join(", ")} > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{_i={}}),this.TRACE_INIT("toFastProperties",()=>{Qr(this)})})}tokenize(t,e=this.defaultMode){if(!wr(this.lexerDefinitionErrors)){const t=Or(this.lexerDefinitionErrors,t=>t.message).join("-----------------------\n");throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n"+t)}return this.tokenizeInternal(t,e)}tokenizeInternal(t,e){let n,r,i,s,o,a,c,h,u,l,d,p,f,m,E;const g=t,T=g.length;let S=0,L=0;const O=this.hasCustom?0:Math.floor(t.length/10),y=new Array(O),A=[];let R=this.trackStartLines?1:void 0,v=this.trackStartLines?1:void 0;const N=function(t){const e={};return ur(ne(t),n=>{const r=t[n];if(!I(r))throw Error("non exhaustive match");e[n]=[]}),e}(this.emptyGroups),C=this.trackStartLines,x=this.config.lineTerminatorsPattern;let k=0,U=[],_=[];const b=[],M=[];Object.freeze(M);let P=!1;const w=t=>{if(1===b.length&&void 0===t.tokenType.PUSH_MODE){const e=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(t);A.push({offset:t.startOffset,line:t.startLine,column:t.startColumn,length:t.image.length,message:e})}else{b.pop();const t=ar(b);U=this.patternIdxToConfig[t],_=this.charCodeToPatternIdxToConfig[t],k=U.length;const e=this.canModeBeOptimized[t]&&!1===this.config.safeMode;P=!(!_||!e)}};function D(t){b.push(t),_=this.charCodeToPatternIdxToConfig[t],U=this.patternIdxToConfig[t],k=U.length,k=U.length;const e=this.canModeBeOptimized[t]&&!1===this.config.safeMode;P=!(!_||!e)}let F;D.call(this,e);const B=this.config.recoveryEnabled;for(;S<T;){a=null,u=-1;const e=g.charCodeAt(S);let O;if(P){const t=as(e),n=_[t];O=void 0!==n?n:M}else O=U;const I=O.length;for(n=0;n<I;n++){F=O[n];const r=F.pattern;c=null;const l=F.short;if(!1!==l?e===l&&(u=1,a=r):!0===F.isCustom?(E=r.exec(g,S,y,N),null!==E?(a=E[0],u=a.length,void 0!==E.payload&&(c=E.payload)):a=null):(r.lastIndex=S,u=this.matchLength(r,t,S)),-1!==u){if(o=F.longerAlt,void 0!==o){a=t.substring(S,S+u);const e=o.length;for(i=0;i<e;i++){const e=U[o[i]],n=e.pattern;if(h=null,!0===e.isCustom?(E=n.exec(g,S,y,N),null!==E?(s=E[0],void 0!==E.payload&&(h=E.payload)):s=null):(n.lastIndex=S,s=this.match(n,t,S)),s&&s.length>a.length){a=s,u=s.length,c=h,F=e;break}}}break}}if(-1!==u){if(l=F.group,void 0!==l&&(a=null!==a?a:t.substring(S,S+u),d=F.tokenTypeIdx,p=this.createTokenInstance(a,S,d,F.tokenType,R,v,u),this.handlePayload(p,c),!1===l?L=this.addToken(y,L,p):N[l].push(p)),!0===C&&!0===F.canLineTerminator){let e,n,r=0;x.lastIndex=0;do{a=null!==a?a:t.substring(S,S+u),e=x.test(a),!0===e&&(n=x.lastIndex-1,r++)}while(!0===e);0!==r?(R+=r,v=u-n,this.updateTokenEndLineColumnLocation(p,l,n,r,R,v,u)):v=this.computeNewColumn(v,u)}else v=this.computeNewColumn(v,u);S+=u,this.handleModes(F,w,D,p)}else{const e=S,n=R,i=v;let s=!1===B;for(;!1===s&&S<T;)for(S++,r=0;r<k;r++){const e=U[r],n=e.pattern,i=e.short;if(!1!==i?g.charCodeAt(S)===i&&(s=!0):!0===e.isCustom?s=null!==n.exec(g,S,y,N):(n.lastIndex=S,s=null!==n.exec(t)),!0===s)break}if(f=S-e,v=this.computeNewColumn(v,f),m=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(g,e,f,n,i,ar(b)),A.push({offset:e,line:n,column:i,length:f,message:m}),!1===B)break}}return this.hasCustom||(y.length=L),{tokens:y,groups:N,errors:A}}handleModes(t,e,n,r){if(!0===t.pop){const i=t.push;e(r),void 0!==i&&n.call(this,i)}else void 0!==t.push&&n.call(this,t.push)}updateTokenEndLineColumnLocation(t,e,n,r,i,s,o){let a,c;void 0!==e&&(a=n===o-1,c=a?-1:0,1===r&&!0===a||(t.endLine=i+c,t.endColumn=s-1-c))}computeNewColumn(t,e){return t+e}createOffsetOnlyToken(t,e,n,r){return{image:t,startOffset:e,tokenTypeIdx:n,tokenType:r}}createStartOnlyToken(t,e,n,r,i,s){return{image:t,startOffset:e,startLine:i,startColumn:s,tokenTypeIdx:n,tokenType:r}}createFullToken(t,e,n,r,i,s,o){return{image:t,startOffset:e,endOffset:e+o-1,startLine:i,endLine:i,startColumn:s,endColumn:s+o-1,tokenTypeIdx:n,tokenType:r}}addTokenUsingPush(t,e,n){return t.push(n),e}addTokenUsingMemberAccess(t,e,n){return t[e]=n,++e}handlePayloadNoCustom(t,e){}handlePayloadWithCustom(t,e){null!==e&&(t.payload=e)}match(t,e,n){return!0===t.test(e)?e.substring(n,t.lastIndex):null}matchLength(t,e,n){return!0===t.test(e)?t.lastIndex-n:-1}}function ys(t){return As(t)?t.LABEL:t.name}function As(t){return kr(t.LABEL)&&""!==t.LABEL}Os.SKIPPED="This marks a skipped Token pattern, this means each token identified by it will be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",Os.NA=/NOT_APPLICABLE/;const Rs="parent",vs="categories",Ns="label",Is="group",Cs="push_mode",xs="pop_mode",ks="longer_alt",Us="line_breaks",_s="start_chars_hint";function bs(t){return function(t){const e=t.pattern,n={};n.name=t.name,Br(e)||(n.PATTERN=e);if(xr(t,Rs))throw"The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.";xr(t,vs)&&(n.CATEGORIES=t[vs]);ds([n]),xr(t,Ns)&&(n.LABEL=t[Ns]);xr(t,Is)&&(n.GROUP=t[Is]);xr(t,xs)&&(n.POP_MODE=t[xs]);xr(t,Cs)&&(n.PUSH_MODE=t[Cs]);xr(t,ks)&&(n.LONGER_ALT=t[ks]);xr(t,Us)&&(n.LINE_BREAKS=t[Us]);xr(t,_s)&&(n.START_CHARS_HINT=t[_s]);return n}(t)}const Ms=bs({name:"EOF",pattern:Os.NA});function Ps(t,e,n,r,i,s,o,a){return{image:e,startOffset:n,endOffset:r,startLine:i,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}ds([Ms]);const ws={buildMismatchTokenMessage:({expected:t,actual:e,previous:n,ruleName:r})=>`Expecting ${As(t)?`--\x3e ${ys(t)} <--`:`token of type --\x3e ${t.name} <--`} but found --\x3e '${e.image}' <--`,buildNotAllInputParsedMessage:({firstRedundant:t,ruleName:e})=>"Redundant input, expecting EOF but found: "+t.image,buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:n,customUserDescription:r,ruleName:i}){const s="Expecting: ",o="\nbut found: '"+Sr(e).image+"'";if(r)return s+r+o;{const e=Or(Gr(t,(t,e)=>t.concat(e),[]),t=>`[${Or(t,t=>ys(t)).join(", ")}]`);return s+`one of these possible Token sequences:\n${Or(e,(t,e)=>` ${e+1}. ${t}`).join("\n")}`+o}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:n,ruleName:r}){const i="Expecting: ",s="\nbut found: '"+Sr(e).image+"'";if(n)return i+n+s;return i+`expecting at least one iteration which starts with one of these possible Token sequences::\n <${Or(t,t=>`[${Or(t,t=>ys(t)).join(",")}]`).join(" ,")}>`+s}};Object.freeze(ws);const Ds={buildRuleNotFoundError:(t,e)=>"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+"<-\ninside top level rule: ->"+t.name+"<-"},Fs={buildDuplicateFoundError(t,e){const n=t.name,r=Sr(e),i=r.idx,s=fi(r),o=(a=r)instanceof ui?a.terminalType.name:a instanceof ei?a.nonTerminalName:"";var a;let c=`->${s}${i>0?i:""}<- ${o?`with argument: ->${o}<-`:""}\n appears more than once (${e.length} times) in the top level rule: ->${n}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,"\n"),c},buildNamespaceConflictError:t=>`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`,buildAlternationPrefixAmbiguityError(t){const e=Or(t.prefixPath,t=>ys(t)).join(", "),n=0===t.alternation.idx?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix\nin <OR${n}> inside <${t.topLevelRule.name}> Rule,\n<${e}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`},buildAlternationAmbiguityError(t){const e=0===t.alternation.idx?"":t.alternation.idx,n=0===t.prefixPath.length;let r=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in <OR${e}> inside <${t.topLevelRule.name}> Rule,\n`;if(n)r+="These alternatives are all empty (match no tokens), making them indistinguishable.\nOnly the last alternative may be empty.\n";else{r+=`<${Or(t.prefixPath,t=>ys(t)).join(", ")}> may appears as a prefix path in all these alternatives.\n`}return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r},buildEmptyRepetitionError(t){let e=fi(t.repetition);0!==t.repetition.idx&&(e+=t.repetition.idx);return`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`},buildTokenNameError:t=>"deprecated",buildEmptyAlternationError:t=>`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in <OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`,buildTooManyAlternativesError:t=>`An Alternation cannot have more than 256 alternatives:\n<OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.\n has ${t.alternation.definition.length+1} alternatives.`,buildLeftRecursionError(t){const e=t.topLevelRule.name;return`Left Recursion found in grammar.\nrule: <${e}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${`${e} --\x3e ${Or(t.leftRecursionPath,t=>t.name).concat([e]).join(" --\x3e ")}`}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError:t=>"deprecated",buildDuplicateRuleNameError(t){let e;e=t.topLevelRule instanceof ni?t.topLevelRule.name:t.topLevelRule;return`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}};class Bs extends di{constructor(t,e){super(),this.nameToTopRule=t,this.errMsgProvider=e,this.errors=[]}resolveRefs(){ur(Ur(this.nameToTopRule),t=>{this.currTopLevel=t,t.accept(this)})}visitNonTerminal(t){const e=this.nameToTopRule[t.nonTerminalName];if(e)t.referencedRule=e;else{const e=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:e,type:ha.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}}}class js extends mi{constructor(t,e){super(),this.topProd=t,this.path=e,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=Nn(this.path.ruleStack).reverse(),this.occurrenceStack=Nn(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(t,e=[]){this.found||super.walk(t,e)}walkProdRef(t,e,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){const r=e.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,r)}}updateExpectedNext(){wr(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}}class $s extends js{constructor(t,e){super(t,e),this.path=e,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(t,e,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){const t=e.concat(n),r=new ri({definition:t});this.possibleTokTypes=gi(r),this.found=!0}}}class Ks extends mi{constructor(t,e){super(),this.topRule=t,this.occurrence=e,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}}class Gs extends Ks{walkMany(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkMany(t,e,n)}}class zs extends Ks{walkManySep(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkManySep(t,e,n)}}class Ws extends Ks{walkAtLeastOne(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkAtLeastOne(t,e,n)}}class Vs extends Ks{walkAtLeastOneSep(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkAtLeastOneSep(t,e,n)}}function Hs(t,e,n=[]){n=Nn(n);let r=[],i=0;function s(s){const o=Hs(s.concat(cr(t,i+1)),e,n);return r.concat(o)}for(;n.length<e&&i<t.length;){const e=t[i];if(e instanceof ri)return s(e.definition);if(e instanceof ei)return s(e.definition);if(e instanceof ii)r=s(e.definition);else{if(e instanceof si){return s(e.definition.concat([new ai({definition:e.definition})]))}if(e instanceof oi){return s([new ri({definition:e.definition}),new ai({definition:[new ui({terminalType:e.separator})].concat(e.definition)})])}if(e instanceof ci){const t=e.definition.concat([new ai({definition:[new ui({terminalType:e.separator})].concat(e.definition)})]);r=s(t)}else if(e instanceof ai){const t=e.definition.concat([new ai({definition:e.definition})]);r=s(t)}else{if(e instanceof hi)return ur(e.definition,t=>{!1===wr(t.definition)&&(r=s(t.definition))}),r;if(!(e instanceof ui))throw Error("non exhaustive match");n.push(e.terminalType)}}i++}return r.push({partialPath:n,suffixDef:cr(t,i)}),r}function Ys(t,e,n,r){const i="EXIT_NONE_TERMINAL",s=[i],o="EXIT_ALTERNATIVE";let a=!1;const c=e.length,h=c-r-1,u=[],l=[];for(l.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!wr(l);){const t=l.pop();if(t===o){a&&ar(l).idx<=h&&l.pop();continue}const r=t.def,d=t.idx,p=t.ruleStack,f=t.occurrenceStack;if(wr(r))continue;const m=r[0];if(m===i){const t={idx:d,def:cr(r),ruleStack:hr(p),occurrenceStack:hr(f)};l.push(t)}else if(m instanceof ui)if(d<c-1){const t=d+1;if(n(e[t],m.terminalType)){const e={idx:t,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(e)}}else{if(d!==c-1)throw Error("non exhaustive match");u.push({nextTokenType:m.terminalType,nextTokenOccurrence:m.idx,ruleStack:p,occurrenceStack:f}),a=!0}else if(m instanceof ei){const t=Nn(p);t.push(m.nonTerminalName);const e=Nn(f);e.push(m.idx);const n={idx:d,def:m.definition.concat(s,cr(r)),ruleStack:t,occurrenceStack:e};l.push(n)}else if(m instanceof ii){const t={idx:d,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o);const e={idx:d,def:m.definition.concat(cr(r)),ruleStack:p,occurrenceStack:f};l.push(e)}else if(m instanceof si){const t=new ai({definition:m.definition,idx:m.idx}),e={idx:d,def:m.definition.concat([t],cr(r)),ruleStack:p,occurrenceStack:f};l.push(e)}else if(m instanceof oi){const t=new ui({terminalType:m.separator}),e=new ai({definition:[t].concat(m.definition),idx:m.idx}),n={idx:d,def:m.definition.concat([e],cr(r)),ruleStack:p,occurrenceStack:f};l.push(n)}else if(m instanceof ci){const t={idx:d,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o);const e=new ui({terminalType:m.separator}),n=new ai({definition:[e].concat(m.definition),idx:m.idx}),i={idx:d,def:m.definition.concat([n],cr(r)),ruleStack:p,occurrenceStack:f};l.push(i)}else if(m instanceof ai){const t={idx:d,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o);const e=new ai({definition:m.definition,idx:m.idx}),n={idx:d,def:m.definition.concat([e],cr(r)),ruleStack:p,occurrenceStack:f};l.push(n)}else if(m instanceof hi)for(let e=m.definition.length-1;e>=0;e--){const t={idx:d,def:m.definition[e].definition.concat(cr(r)),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o)}else if(m instanceof ri)l.push({idx:d,def:m.definition.concat(cr(r)),ruleStack:p,occurrenceStack:f});else{if(!(m instanceof ni))throw Error("non exhaustive match");l.push(Xs(m,d,p,f))}}return u}function Xs(t,e,n,r){const i=Nn(n);i.push(t.name);const s=Nn(r);return s.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:s}}var qs,Zs;function Qs(t){if(t instanceof ii||"Option"===t)return qs.OPTION;if(t instanceof ai||"Repetition"===t)return qs.REPETITION;if(t instanceof si||"RepetitionMandatory"===t)return qs.REPETITION_MANDATORY;if(t instanceof oi||"RepetitionMandatoryWithSeparator"===t)return qs.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof ci||"RepetitionWithSeparator"===t)return qs.REPETITION_WITH_SEPARATOR;if(t instanceof hi||"Alternation"===t)return qs.ALTERNATION;throw Error("non exhaustive match")}function Js(t,e,n,r){const i=t.length,s=pr(t,t=>pr(t,t=>1===t.length));if(e)return function(e){const r=Or(e,t=>t.GATE);for(let s=0;s<i;s++){const e=t[s],i=e.length,o=r[s];if(void 0===o||!1!==o.call(this))t:for(let t=0;t<i;t++){const r=e[t],i=r.length;for(let t=0;t<i;t++){const e=this.LA_FAST(t+1);if(!1===n(e,r[t]))continue t}return s}}};if(s&&!r){const e=Gr(Or(t,t=>be(t)),(t,e,n)=>(ur(e,e=>{xr(t,e.tokenTypeIdx)||(t[e.tokenTypeIdx]=n),ur(e.categoryMatches,e=>{xr(t,e)||(t[e]=n)})}),t),{});return function(){const t=this.LA_FAST(1);return e[t.tokenTypeIdx]}}return function(){for(let e=0;e<i;e++){const r=t[e],i=r.length;t:for(let t=0;t<i;t++){const i=r[t],s=i.length;for(let t=0;t<s;t++){const e=this.LA_FAST(t+1);if(!1===n(e,i[t]))continue t}return e}}}}function to(t,e,n){const r=pr(t,t=>1===t.length),i=t.length;if(r&&!n){const e=be(t);if(1===e.length&&wr(e[0].categoryMatches)){const t=e[0].tokenTypeIdx;return function(){return this.LA_FAST(1).tokenTypeIdx===t}}{const t=Gr(e,(t,e,n)=>(t[e.tokenTypeIdx]=!0,ur(e.categoryMatches,e=>{t[e]=!0}),t),[]);return function(){const e=this.LA_FAST(1);return!0===t[e.tokenTypeIdx]}}}return function(){t:for(let n=0;n<i;n++){const r=t[n],i=r.length;for(let t=0;t<i;t++){const n=this.LA_FAST(t+1);if(!1===e(n,r[t]))continue t}return!0}return!1}}(Zs=qs||(qs={}))[Zs.OPTION=0]="OPTION",Zs[Zs.REPETITION=1]="REPETITION",Zs[Zs.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",Zs[Zs.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",Zs[Zs.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",Zs[Zs.ALTERNATION=5]="ALTERNATION";class eo extends mi{constructor(t,e,n){super(),this.topProd=t,this.targetOccurrence=e,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(t,e,n,r){return t.idx===this.targetOccurrence&&this.targetProdType===e&&(this.restDef=n.concat(r),!0)}walkOption(t,e,n){this.checkIsTarget(t,qs.OPTION,e,n)||super.walkOption(t,e,n)}walkAtLeastOne(t,e,n){this.checkIsTarget(t,qs.REPETITION_MANDATORY,e,n)||super.walkOption(t,e,n)}walkAtLeastOneSep(t,e,n){this.checkIsTarget(t,qs.REPETITION_MANDATORY_WITH_SEPARATOR,e,n)||super.walkOption(t,e,n)}walkMany(t,e,n){this.checkIsTarget(t,qs.REPETITION,e,n)||super.walkOption(t,e,n)}walkManySep(t,e,n){this.checkIsTarget(t,qs.REPETITION_WITH_SEPARATOR,e,n)||super.walkOption(t,e,n)}}class no extends di{constructor(t,e,n){super(),this.targetOccurrence=t,this.targetProdType=e,this.targetRef=n,this.result=[]}checkIsTarget(t,e){t.idx!==this.targetOccurrence||this.targetProdType!==e||void 0!==this.targetRef&&t!==this.targetRef||(this.result=t.definition)}visitOption(t){this.checkIsTarget(t,qs.OPTION)}visitRepetition(t){this.checkIsTarget(t,qs.REPETITION)}visitRepetitionMandatory(t){this.checkIsTarget(t,qs.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(t){this.checkIsTarget(t,qs.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(t){this.checkIsTarget(t,qs.REPETITION_WITH_SEPARATOR)}visitAlternation(t){this.checkIsTarget(t,qs.ALTERNATION)}}function ro(t){const e=new Array(t);for(let n=0;n<t;n++)e[n]=[];return e}function io(t){let e=[""];for(let n=0;n<t.length;n++){const r=t[n],i=[];for(let t=0;t<e.length;t++){const n=e[t];i.push(n+"_"+r.tokenTypeIdx);for(let t=0;t<r.categoryMatches.length;t++){const e="_"+r.categoryMatches[t];i.push(n+e)}}e=i}return e}function so(t,e,n){for(let r=0;r<t.length;r++){if(r===n)continue;const i=t[r];for(let t=0;t<e.length;t++){if(!0===i[e[t]])return!1}}return!0}function oo(t,e){const n=Or(t,t=>Hs([t],1)),r=ro(n.length),i=Or(n,t=>{const e={};return ur(t,t=>{ur(io(t.partialPath),t=>{e[t]=!0})}),e});let s=n;for(let o=1;o<=e;o++){const t=s;s=ro(t.length);for(let n=0;n<t.length;n++){const a=t[n];for(let t=0;t<a.length;t++){const c=a[t].partialPath,h=a[t].suffixDef,u=io(c);if(so(i,u,n)||wr(h)||c.length===e){const t=r[n];if(!1===ho(t,c)){t.push(c);for(let t=0;t<u.length;t++){const e=u[t];i[n][e]=!0}}}else{const t=Hs(h,o+1,c);s[n]=s[n].concat(t),ur(t,t=>{ur(io(t.partialPath),t=>{i[n][t]=!0})})}}}}return r}function ao(t,e,n,r){const i=new no(t,qs.ALTERNATION,r);return e.accept(i),oo(i.result,n)}function co(t,e,n,r){const i=new no(t,n);e.accept(i);const s=i.result,o=new eo(e,t,n).startWalking();return oo([new ri({definition:s}),new ri({definition:o})],r)}function ho(t,e){t:for(let n=0;n<t.length;n++){const r=t[n];if(r.length===e.length){for(let t=0;t<r.length;t++){const n=e[t],i=r[t];if(!1===(n===i||void 0!==i.categoryMatchesMap[n.tokenTypeIdx]))continue t}return!0}}return!1}function uo(t){return pr(t,t=>pr(t,t=>pr(t,t=>wr(t.categoryMatches))))}function lo(t,e,n,r){const i=yr(t,t=>function(t,e){const n=new mo;t.accept(n);const r=n.allProductions,i=Nr(r,po),s=Or(Ur($r(i,t=>t.length>1)),n=>{const r=Sr(n),i=e.buildDuplicateFoundError(t,n),s=fi(r),o={message:i,type:ha.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:s,occurrence:r.idx},a=fo(r);return a&&(o.parameter=a),o});return s}(t,n)),s=function(t,e,n){const r=[],i=Or(e,t=>t.name);return ur(t,t=>{const e=t.name;if(br(i,e)){const i=n.buildNamespaceConflictError(t);r.push({message:i,type:ha.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:e})}}),r}(t,e,n),o=yr(t,t=>function(t,e){const n=new To;t.accept(n);const r=yr(n.alternations,n=>n.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:n}),type:ha.TOO_MANY_ALTS,ruleName:t.name,occurrence:n.idx}]:[]);return r}(t,n)),a=yr(t,e=>function(t,e,n,r){const i=[],s=Gr(e,(e,n)=>n.name===t.name?e+1:e,0);if(s>1){const e=r.buildDuplicateRuleNameError({topLevelRule:t,grammarName:n});i.push({message:e,type:ha.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}(e,t,r,n));return i.concat(s,o,a)}function po(t){return`${fi(t)}_#_${t.idx}_#_${fo(t)}`}function fo(t){return t instanceof ui?t.terminalType.name:t instanceof ei?t.nonTerminalName:""}class mo extends di{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(t){this.allProductions.push(t)}visitOption(t){this.allProductions.push(t)}visitRepetitionWithSeparator(t){this.allProductions.push(t)}visitRepetitionMandatory(t){this.allProductions.push(t)}visitRepetitionMandatoryWithSeparator(t){this.allProductions.push(t)}visitRepetition(t){this.allProductions.push(t)}visitAlternation(t){this.allProductions.push(t)}visitTerminal(t){this.allProductions.push(t)}}function Eo(t,e,n,r=[]){const i=[],s=go(e.definition);if(wr(s))return[];{const e=t.name;br(s,t)&&i.push({message:n.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:r}),type:ha.LEFT_RECURSION,ruleName:e});const o=yr(or(s,r.concat([t])),e=>{const i=Nn(r);return i.push(e),Eo(t,e,n,i)});return i.concat(o)}}function go(t){let e=[];if(wr(t))return e;const n=Sr(t);if(n instanceof ei)e.push(n.referencedRule);else if(n instanceof ri||n instanceof ii||n instanceof si||n instanceof oi||n instanceof ci||n instanceof ai)e=e.concat(go(n.definition));else if(n instanceof hi)e=be(Or(n.definition,t=>go(t.definition)));else if(!(n instanceof ui))throw Error("non exhaustive match");const r=pi(n),i=t.length>1;if(r&&i){const n=cr(t);return e.concat(go(n))}return e}class To extends di{constructor(){super(...arguments),this.alternations=[]}visitAlternation(t){this.alternations.push(t)}}function So(t,e,n){const r=new To;t.accept(r);let i=r.alternations;i=zr(i,t=>!0===t.ignoreAmbiguities);const s=yr(i,r=>{const i=r.idx,s=r.maxLookahead||e,o=ao(i,t,s,r),a=function(t,e,n,r){const i=[],s=Gr(t,(n,r,s)=>(!0===e.definition[s].ignoreAmbiguities||ur(r,r=>{const o=[s];ur(t,(t,n)=>{s!==n&&ho(t,r)&&!0!==e.definition[n].ignoreAmbiguities&&o.push(n)}),o.length>1&&!ho(i,r)&&(i.push(r),n.push({alts:o,path:r}))}),n),[]),o=Or(s,t=>{const i=Or(t.alts,t=>t+1);return{message:r.buildAlternationAmbiguityError({topLevelRule:n,alternation:e,ambiguityIndices:i,prefixPath:t.path}),type:ha.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:e.idx,alternatives:t.alts}});return o}(o,r,t,n),c=function(t,e,n,r){const i=Gr(t,(t,e,n)=>{const r=Or(e,t=>({idx:n,path:t}));return t.concat(r)},[]),s=In(yr(i,t=>{if(!0===e.definition[t.idx].ignoreAmbiguities)return[];const s=t.idx,o=t.path;return Or(mr(i,t=>{return!0!==e.definition[t.idx].ignoreAmbiguities&&t.idx<s&&(n=t.path,r=o,n.length<r.length&&pr(n,(t,e)=>{const n=r[e];return t===n||n.categoryMatchesMap[t.tokenTypeIdx]}));var n,r}),t=>{const i=[t.idx+1,s+1],o=0===e.idx?"":e.idx;return{message:r.buildAlternationPrefixAmbiguityError({topLevelRule:n,alternation:e,ambiguityIndices:i,prefixPath:t.path}),type:ha.AMBIGUOUS_PREFIX_ALTS,ruleName:n.name,occurrence:o,alternatives:i}})}));return s}(o,r,t,n);return a.concat(c)});return s}class Lo extends di{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(t){this.allProductions.push(t)}visitRepetitionMandatory(t){this.allProductions.push(t)}visitRepetitionMandatoryWithSeparator(t){this.allProductions.push(t)}visitRepetition(t){this.allProductions.push(t)}}function Oo(t){const e=ir(t,{errMsgProvider:Ds}),n={};return ur(t.rules,t=>{n[t.name]=t}),function(t,e){const n=new Bs(t,e);return n.resolveRefs(),n.errors}(n,e.errMsgProvider)}const yo="MismatchedTokenException",Ao="NoViableAltException",Ro="EarlyExitException",vo="NotAllInputParsedException",No=[yo,Ao,Ro,vo];function Io(t){return br(No,t.name)}Object.freeze(No);class Co extends Error{constructor(t,e){super(t),this.token=e,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class xo extends Co{constructor(t,e,n){super(t,e),this.previousToken=n,this.name=yo}}class ko extends Co{constructor(t,e,n){super(t,e),this.previousToken=n,this.name=Ao}}class Uo extends Co{constructor(t,e){super(t,e),this.name=vo}}class _o extends Co{constructor(t,e,n){super(t,e),this.previousToken=n,this.name=Ro}}const bo={},Mo="InRuleRecoveryException";class Po extends Error{constructor(t){super(t),this.name=Mo}}function wo(t,e,n,r,i,s,o){const a=this.getKeyForAutomaticLookahead(r,i);let c=this.firstAfterRepMap[a];if(void 0===c){const t=this.getCurrRuleFullName();c=new s(this.getGAstProductions()[t],i).startWalking(),this.firstAfterRepMap[a]=c}let h=c.token,u=c.occurrence;const l=c.isEndOfRule;0===this.RULE_STACK_IDX&&l&&void 0===h&&(h=Ms,u=1),void 0!==h&&void 0!==u&&this.shouldInRepetitionRecoveryBeTried(h,u,o)&&this.tryInRepetitionRecovery(t,e,n,h)}const Do=1024,Fo=1280,Bo=1536;function jo(t,e,n){return n|e|t}class $o{constructor(t){var e;this.maxLookahead=null!==(e=null==t?void 0:t.maxLookahead)&&void 0!==e?e:aa.maxLookahead}validate(t){const e=this.validateNoLeftRecursion(t.rules);if(wr(e)){const n=this.validateEmptyOrAlternatives(t.rules),r=this.validateAmbiguousAlternationAlternatives(t.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(t.rules,this.maxLookahead);return[...e,...n,...r,...i]}return e}validateNoLeftRecursion(t){return yr(t,t=>Eo(t,t,Fs))}validateEmptyOrAlternatives(t){return yr(t,t=>function(t,e){const n=new To;return t.accept(n),yr(n.alternations,n=>yr(hr(n.definition),(r,i)=>wr(Ys([r],[],cs,1))?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:n,emptyChoiceIdx:i}),type:ha.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:n.idx,alternative:i+1}]:[]))}(t,Fs))}validateAmbiguousAlternationAlternatives(t,e){return yr(t,t=>So(t,e,Fs))}validateSomeNonEmptyLookaheadPath(t,e){return function(t,e,n){const r=[];return ur(t,t=>{const i=new Lo;t.accept(i),ur(i.allProductions,i=>{const s=Qs(i),o=i.maxLookahead||e;if(wr(be(co(i.idx,t,s,o)[0]))){const e=n.buildEmptyRepetitionError({topLevelRule:t,repetition:i});r.push({message:e,type:ha.NO_NON_EMPTY_LOOKAHEAD,ruleName:t.name})}})}),r}(t,e,Fs)}buildLookaheadForAlternation(t){return function(t,e,n,r,i,s){const o=ao(t,e,n);return s(o,r,uo(o)?hs:cs,i)}(t.prodOccurrence,t.rule,t.maxLookahead,t.hasPredicates,t.dynamicTokensEnabled,Js)}buildLookaheadForOptional(t){return function(t,e,n,r,i,s){const o=co(t,e,i,n),a=uo(o)?hs:cs;return s(o[0],a,r)}(t.prodOccurrence,t.rule,t.maxLookahead,t.dynamicTokensEnabled,Qs(t.prodType),to)}}const Ko=new class extends di{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(t){this.dslMethods.option.push(t)}visitRepetitionWithSeparator(t){this.dslMethods.repetitionWithSeparator.push(t)}visitRepetitionMandatory(t){this.dslMethods.repetitionMandatory.push(t)}visitRepetitionMandatoryWithSeparator(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)}visitRepetition(t){this.dslMethods.repetition.push(t)}visitAlternation(t){this.dslMethods.alternation.push(t)}};function Go(t,e){!0===isNaN(t.startOffset)?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset<e.endOffset==!0&&(t.endOffset=e.endOffset)}function zo(t,e){!0===isNaN(t.startOffset)?(t.startOffset=e.startOffset,t.startColumn=e.startColumn,t.startLine=e.startLine,t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine):t.endOffset<e.endOffset==!0&&(t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine)}function Wo(t,e){Object.defineProperty(t,"name",{enumerable:!1,configurable:!0,writable:!1,value:e})}function Vo(t,e){const n=ne(t),r=n.length;for(let i=0;i<r;i++){const r=t[n[i]],s=r.length;for(let t=0;t<s;t++){const n=r[t];void 0===n.tokenTypeIdx&&this[n.name](n.children,e)}}}function Ho(t,e){const n=function(){};Wo(n,t+"BaseSemantics");const r={visit:function(t,e){if(I(t)&&(t=t[0]),!Br(t))return this[t.name](t.children,e)},validateVisitor:function(){const t=function(t,e){const n=function(t,e){const n=mr(e,e=>!1===G(t[e])),r=Or(n,e=>({msg:`Missing visitor method: <${e}> on ${t.constructor.name} CST Visitor.`,type:Yo.MISSING_METHOD,methodName:e}));return In(r)}(t,e);return n}(this,e);if(!wr(t)){const e=Or(t,t=>t.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${e.join("\n\n").replace(/\n/g,"\n\t")}`)}}};return(n.prototype=r).constructor=n,n._RULE_NAMES=e,n}var Yo,Xo;(Xo=Yo||(Yo={}))[Xo.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",Xo[Xo.MISSING_METHOD=1]="MISSING_METHOD";const qo={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(qo);const Zo=!0,Qo=Math.pow(2,8)-1,Jo=bs({name:"RECORDING_PHASE_TOKEN",pattern:Os.NA});ds([Jo]);const ta=Ps(Jo,"This IToken indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",-1,-1,-1,-1,-1,-1);Object.freeze(ta);const ea={name:"This CSTNode indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",children:{}};function na(t,e,n,r=!1){sa(n);const i=ar(this.recordingProdStack),s=G(e)?e:e.DEF,o=new t({definition:[],idx:n});return r&&(o.separator=e.SEP),xr(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),i.definition.push(o),this.recordingProdStack.pop(),qo}function ra(t,e){sa(e);const n=ar(this.recordingProdStack),r=!1===I(t),i=!1===r?t:t.DEF,s=new hi({definition:[],idx:e,ignoreAmbiguities:r&&!0===t.IGNORE_AMBIGUITIES});xr(t,"MAX_LOOKAHEAD")&&(s.maxLookahead=t.MAX_LOOKAHEAD);const o=Vr(i,t=>G(t.GATE));return s.hasPredicates=o,n.definition.push(s),ur(i,t=>{const e=new ri({definition:[]});s.definition.push(e),xr(t,"IGNORE_AMBIGUITIES")?e.ignoreAmbiguities=t.IGNORE_AMBIGUITIES:xr(t,"GATE")&&(e.ignoreAmbiguities=!0),this.recordingProdStack.push(e),t.ALT.call(this),this.recordingProdStack.pop()}),qo}function ia(t){return 0===t?"":`${t}`}function sa(t){if(t<0||t>Qo){const e=new Error(`Invalid DSL Method idx value: <${t}>\n\tIdx value must be a none negative value smaller than ${Qo+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}const oa=Ps(Ms,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(oa);const aa=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:ws,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),ca=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var ha,ua,la;(ua=ha||(ha={}))[ua.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",ua[ua.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",ua[ua.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",ua[ua.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",ua[ua.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",ua[ua.LEFT_RECURSION=5]="LEFT_RECURSION",ua[ua.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",ua[ua.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",ua[ua.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",ua[ua.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",ua[ua.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",ua[ua.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",ua[ua.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",ua[ua.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION";class da{static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;const e=this.className;this.TRACE_INIT("toFastProps",()=>{Qr(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),ur(this.definedRulesNames,t=>{const e=this[t].originalGrammarAction;let n;this.TRACE_INIT(`${t} Rule`,()=>{n=this.topLevelRuleRecord(t,e)}),this.gastProductionsCache[t]=n})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Oo({rules:Ur(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(wr(n)&&!1===this.skipValidations){const n=(t={rules:Ur(this.gastProductionsCache),tokenTypes:Ur(this.tokensMap),errMsgProvider:Fs,grammarName:e},lo((t=ir(t,{errMsgProvider:Fs})).rules,t.tokenTypes,t.errMsgProvider,t.grammarName)),r=function(t){return Or(t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName}),t=>Object.assign({type:ha.CUSTOM_LOOKAHEAD_VALIDATION},t))}({lookaheadStrategy:this.lookaheadStrategy,rules:Ur(this.gastProductionsCache),tokenTypes:Ur(this.tokensMap),grammarName:e});this.definitionErrors=this.definitionErrors.concat(n,r)}var t}),wr(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const t=function(t){const e={};return ur(t,t=>{const n=new Si(t).startWalking();se(e,n)}),e}(Ur(this.gastProductionsCache));this.resyncFollows=t}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var t,e;null===(e=(t=this.lookaheadStrategy).initialize)||void 0===e||e.call(t,{rules:Ur(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(Ur(this.gastProductionsCache))})),!da.DEFER_DEFINITION_ERRORS_HANDLING&&!wr(this.definitionErrors))throw t=Or(this.definitionErrors,t=>t.message),new Error(`Parser Definition Errors detected:\n ${t.join("\n-------------------------------\n")}`)})}constructor(t,e){this.definitionErrors=[],this.selfAnalysisDone=!1;const n=this;if(n.initErrorHandler(e),n.initLexerAdapter(),n.initLooksAhead(e),n.initRecognizerEngine(t,e),n.initRecoverable(e),n.initTreeBuilder(e),n.initContentAssist(),n.initGastRecorder(e),n.initPerformanceTracer(e),xr(e,"ignoredIssues"))throw new Error("The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.");this.skipValidations=xr(e,"skipValidations")?e.skipValidations:aa.skipValidations}}da.DEFER_DEFINITION_ERRORS_HANDLING=!1,la=da,[class{initRecoverable(t){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=xr(t,"recoveryEnabled")?t.recoveryEnabled:aa.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=wo)}getTokenToInsert(t){const e=Ps(t,"",NaN,NaN,NaN,NaN,NaN,NaN);return e.isInsertedInRecovery=!0,e}canTokenTypeBeInsertedInRecovery(t){return!0}canTokenTypeBeDeletedInRecovery(t){return!0}tryInRepetitionRecovery(t,e,n,r){const i=this.findReSyncTokenType(),s=this.exportLexerState(),o=[];let a=!1;const c=this.LA_FAST(1);let h=this.LA_FAST(1);const u=()=>{const t=this.LA(0),e=this.errorMessageProvider.buildMismatchTokenMessage({expected:r,actual:c,previous:t,ruleName:this.getCurrRuleFullName()}),n=new xo(e,c,this.LA(0));n.resyncedTokens=hr(o),this.SAVE_ERROR(n)};for(;!a;){if(this.tokenMatcher(h,r))return void u();if(n.call(this))return u(),void t.apply(this,e);this.tokenMatcher(h,i)?a=!0:(h=this.SKIP_TOKEN(),this.addToResyncTokens(h,o))}this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(t,e,n){return!1!==n&&!this.tokenMatcher(this.LA_FAST(1),t)&&!this.isBackTracking()&&!this.canPerformInRuleRecovery(t,this.getFollowsForInRuleRecovery(t,e))}getFollowsForInRuleRecovery(t,e){const n=this.getCurrentGrammarPath(t,e);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(t,e){if(this.canRecoverWithSingleTokenInsertion(t,e))return this.getTokenToInsert(t);if(this.canRecoverWithSingleTokenDeletion(t)){const t=this.SKIP_TOKEN();return this.consumeToken(),t}throw new Po("sad sad panda")}canPerformInRuleRecovery(t,e){return this.canRecoverWithSingleTokenInsertion(t,e)||this.canRecoverWithSingleTokenDeletion(t)}canRecoverWithSingleTokenInsertion(t,e){if(!this.canTokenTypeBeInsertedInRecovery(t))return!1;if(wr(e))return!1;const n=this.LA_FAST(1);return void 0!==Tr(e,t=>this.tokenMatcher(n,t))}canRecoverWithSingleTokenDeletion(t){return!!this.canTokenTypeBeDeletedInRecovery(t)&&this.tokenMatcher(this.LA(2),t)}isInCurrentRuleReSyncSet(t){const e=this.getCurrFollowKey();return br(this.getFollowSetFromFollowKey(e),t)}findReSyncTokenType(){const t=this.flattenFollowSet();let e=this.LA_FAST(1),n=2;for(;;){const r=Tr(t,t=>cs(e,t));if(void 0!==r)return r;e=this.LA(n),n++}}getCurrFollowKey(){if(0===this.RULE_STACK_IDX)return bo;const t=this.currRuleShortName,e=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(t),idxInCallingRule:e,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){const t=this.RULE_STACK,e=this.RULE_OCCURRENCE_STACK,n=this.RULE_STACK_IDX+1,r=new Array(n);for(let i=0;i<n;i++)r[i]=0===i?bo:{ruleName:this.shortRuleNameToFullName(t[i]),idxInCallingRule:e[i],inRule:this.shortRuleNameToFullName(t[i-1])};return r}flattenFollowSet(){return be(Or(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t)))}getFollowSetFromFollowKey(t){if(t===bo)return[Ms];const e=t.ruleName+t.idxInCallingRule+Ti+t.inRule;return this.resyncFollows[e]}addToResyncTokens(t,e){return this.tokenMatcher(t,Ms)||e.push(t),e}reSyncTo(t){const e=[];let n=this.LA_FAST(1);for(;!1===this.tokenMatcher(n,t);)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,e);return hr(e)}attemptInRepetitionRecovery(t,e,n,r,i,s,o){}getCurrentGrammarPath(t,e){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:this.RULE_OCCURRENCE_STACK.slice(0,this.RULE_OCCURRENCE_STACK_IDX+1),lastTok:t,lastTokOccurrence:e}}getHumanReadableRuleStack(){const t=this.RULE_STACK_IDX+1,e=new Array(t);for(let n=0;n<t;n++)e[n]=this.shortRuleNameToFullName(this.RULE_STACK[n]);return e}},class{initLooksAhead(t){this.dynamicTokensEnabled=xr(t,"dynamicTokensEnabled")?t.dynamicTokensEnabled:aa.dynamicTokensEnabled,this.maxLookahead=xr(t,"maxLookahead")?t.maxLookahead:aa.maxLookahead,this.lookaheadStrategy=xr(t,"lookaheadStrategy")?t.lookaheadStrategy:new $o({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(t){ur(t,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{const{alternation:e,repetition:n,option:r,repetitionMandatory:i,repetitionMandatoryWithSeparator:s,repetitionWithSeparator:o}=function(t){Ko.reset(),t.accept(Ko);const e=Ko.dslMethods;return Ko.reset(),e}(t);ur(e,e=>{const n=0===e.idx?"":e.idx;this.TRACE_INIT(`${fi(e)}${n}`,()=>{const n=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:e.idx,rule:t,maxLookahead:e.maxLookahead||this.maxLookahead,hasPredicates:e.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),r=jo(this.fullRuleNameToShort[t.name],256,e.idx);this.setLaFuncCache(r,n)})}),ur(n,e=>{this.computeLookaheadFunc(t,e.idx,768,"Repetition",e.maxLookahead,fi(e))}),ur(r,e=>{this.computeLookaheadFunc(t,e.idx,512,"Option",e.maxLookahead,fi(e))}),ur(i,e=>{this.computeLookaheadFunc(t,e.idx,Do,"RepetitionMandatory",e.maxLookahead,fi(e))}),ur(s,e=>{this.computeLookaheadFunc(t,e.idx,Bo,"RepetitionMandatoryWithSeparator",e.maxLookahead,fi(e))}),ur(o,e=>{this.computeLookaheadFunc(t,e.idx,Fo,"RepetitionWithSeparator",e.maxLookahead,fi(e))})})})}computeLookaheadFunc(t,e,n,r,i,s){this.TRACE_INIT(`${s}${0===e?"":e}`,()=>{const s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:e,rule:t,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:r}),o=jo(this.fullRuleNameToShort[t.name],n,e);this.setLaFuncCache(o,s)})}getKeyForAutomaticLookahead(t,e){return jo(this.currRuleShortName,t,e)}getLaFuncFromCache(t){return this.lookAheadFuncsCache.get(t)}setLaFuncCache(t,e){this.lookAheadFuncsCache.set(t,e)}},class{initTreeBuilder(t){if(this.CST_STACK=[],this.outputCst=t.outputCst,this.nodeLocationTracking=xr(t,"nodeLocationTracking")?t.nodeLocationTracking:aa.nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zo,this.setNodeLocationFromNode=zo,this.cstPostRule=ot,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ot,this.setNodeLocationFromNode=ot,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Go,this.setNodeLocationFromNode=Go,this.cstPostRule=ot,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ot,this.setNodeLocationFromNode=ot,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid <nodeLocationTracking> config option: "${t.nodeLocationTracking}"`);this.setNodeLocationFromToken=ot,this.setNodeLocationFromNode=ot,this.cstPostRule=ot,this.setInitialNodeLocation=ot}else this.cstInvocationStateUpdate=ot,this.cstFinallyStateUpdate=ot,this.cstPostTerminal=ot,this.cstPostNonTerminal=ot,this.cstPostRule=ot}setInitialNodeLocationOnlyOffsetRecovery(t){t.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(t){t.location={startOffset:this.LA_FAST(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(t){t.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(t){const e=this.LA_FAST(1);t.location={startOffset:e.startOffset,startLine:e.startLine,startColumn:e.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(t){const e={name:t,children:Object.create(null)};this.setInitialNodeLocation(e),this.CST_STACK.push(e)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(t){const e=this.LA(0),n=t.location;n.startOffset<=e.startOffset==1?(n.endOffset=e.endOffset,n.endLine=e.endLine,n.endColumn=e.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(t){const e=this.LA(0),n=t.location;n.startOffset<=e.startOffset==1?n.endOffset=e.endOffset:n.startOffset=NaN}cstPostTerminal(t,e){const n=this.CST_STACK[this.CST_STACK.length-1];var r,i,s;i=e,s=t,void 0===(r=n).children[s]?r.children[s]=[i]:r.children[s].push(i),this.setNodeLocationFromToken(n.location,e)}cstPostNonTerminal(t,e){const n=this.CST_STACK[this.CST_STACK.length-1];!function(t,e,n){void 0===t.children[e]?t.children[e]=[n]:t.children[e].push(n)}(n,e,t),this.setNodeLocationFromNode(n.location,t.location)}getBaseCstVisitorConstructor(){if(Br(this.baseCstVisitorConstructor)){const t=Ho(this.className,ne(this.gastProductionsCache));return this.baseCstVisitorConstructor=t,t}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(Br(this.baseCstVisitorWithDefaultsConstructor)){const t=function(t,e,n){const r=function(){};Wo(r,t+"BaseSemanticsWithDefaults");const i=Object.create(n.prototype);return ur(e,t=>{i[t]=Vo}),(r.prototype=i).constructor=r,r}(this.className,ne(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=t,t}return this.baseCstVisitorWithDefaultsConstructor}getPreviousExplicitRuleShortName(){return this.RULE_STACK[this.RULE_STACK_IDX-1]}getLastExplicitRuleOccurrenceIndex(){return this.RULE_OCCURRENCE_STACK[this.RULE_OCCURRENCE_STACK_IDX]}},class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(t){if(!0!==this.selfAnalysisDone)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=t,this.tokVectorLength=t.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVectorLength-2?(this.consumeToken(),this.LA_FAST(1)):oa}LA_FAST(t){const e=this.currIdx+t;return this.tokVector[e]}LA(t){const e=this.currIdx+t;return e<0||this.tokVectorLength<=e?oa:this.tokVector[e]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(t){this.currIdx=t}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVectorLength-1}getLexerPosition(){return this.exportLexerState()}},class{initRecognizerEngine(t,e){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=hs,this.subruleIdx=0,this.currRuleShortName=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_STACK_IDX=-1,this.RULE_OCCURRENCE_STACK=[],this.RULE_OCCURRENCE_STACK_IDX=-1,this.gastProductionsCache={},xr(e,"serializedGrammar"))throw Error("The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.");if(I(t)){if(wr(t))throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");if("number"==typeof t[0].startOffset)throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.")}if(I(t))this.tokensMap=Gr(t,(t,e)=>(t[e.name]=e,t),{});else if(xr(t,"modes")&&pr(be(Ur(t.modes)),Es)){const e=Yr(be(Ur(t.modes)));this.tokensMap=Gr(e,(t,e)=>(t[e.name]=e,t),{})}else{if(!M(t))throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=Nn(t)}this.tokensMap.EOF=Ms;const n=pr(xr(t,"modes")?be(Ur(t.modes)):Ur(t),t=>wr(t.categoryMatches));this.tokenMatcher=n?hs:cs,ds(Ur(this.tokensMap))}defineRule(t,e,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${t}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const r=xr(n,"resyncEnabled")?n.resyncEnabled:ca.resyncEnabled,i=xr(n,"recoveryValueFunc")?n.recoveryValueFunc:ca.recoveryValueFunc,s=this.ruleShortNameIdx<<12;let o;return this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=t,this.fullRuleNameToShort[t]=s,o=!0===this.outputCst?function(...n){try{this.ruleInvocationStateUpdate(s,t,this.subruleIdx),e.apply(this,n);const r=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(r),r}catch(o){return this.invokeRuleCatch(o,r,i)}finally{this.ruleFinallyStateUpdate()}}:function(...n){try{return this.ruleInvocationStateUpdate(s,t,this.subruleIdx),e.apply(this,n)}catch(o){return this.invokeRuleCatch(o,r,i)}finally{this.ruleFinallyStateUpdate()}},Object.assign(function(...e){this.onBeforeParse(t);try{return o.apply(this,e)}finally{this.onAfterParse(t)}},{ruleName:t,originalGrammarAction:e,coreRule:o})}invokeRuleCatch(t,e,n){const r=0===this.RULE_STACK_IDX,i=e&&!this.isBackTracking()&&this.recoveryEnabled;if(Io(t)){const e=t;if(i){const r=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(r)){if(e.resyncedTokens=this.reSyncTo(r),this.outputCst){const t=this.CST_STACK[this.CST_STACK.length-1];return t.recoveredNode=!0,t}return n(t)}if(this.outputCst){const t=this.CST_STACK[this.CST_STACK.length-1];t.recoveredNode=!0,e.partialCstResult=t}throw e}if(r)return this.moveToTerminatedState(),n(t);throw e}throw t}optionInternal(t,e){const n=this.getKeyForAutomaticLookahead(512,e);return this.optionInternalLogic(t,e,n)}optionInternalLogic(t,e,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;if(!0===i.call(this))return r.call(this)}atLeastOneInternal(t,e){const n=this.getKeyForAutomaticLookahead(Do,t);return this.atLeastOneInternalLogic(t,e,n)}atLeastOneInternalLogic(t,e,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;if(!0!==i.call(this))throw this.raiseEarlyExitException(t,qs.REPETITION_MANDATORY,e.ERR_MSG);{let t=this.doSingleRepetition(r);for(;!0===i.call(this)&&!0===t;)t=this.doSingleRepetition(r)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[t,e],i,Do,t,Ws)}atLeastOneSepFirstInternal(t,e){const n=this.getKeyForAutomaticLookahead(Bo,t);this.atLeastOneSepFirstInternalLogic(t,e,n)}atLeastOneSepFirstInternalLogic(t,e,n){const r=e.DEF,i=e.SEP;if(!0!==this.getLaFuncFromCache(n).call(this))throw this.raiseEarlyExitException(t,qs.REPETITION_MANDATORY_WITH_SEPARATOR,e.ERR_MSG);{r.call(this);const e=()=>this.tokenMatcher(this.LA_FAST(1),i);for(;!0===this.tokenMatcher(this.LA_FAST(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,i,e,r,Vs],e,Bo,t,Vs)}}manyInternal(t,e){const n=this.getKeyForAutomaticLookahead(768,t);return this.manyInternalLogic(t,e,n)}manyInternalLogic(t,e,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;let s=!0;for(;!0===i.call(this)&&!0===s;)s=this.doSingleRepetition(r);this.attemptInRepetitionRecovery(this.manyInternal,[t,e],i,768,t,Gs,s)}manySepFirstInternal(t,e){const n=this.getKeyForAutomaticLookahead(Fo,t);this.manySepFirstInternalLogic(t,e,n)}manySepFirstInternalLogic(t,e,n){const r=e.DEF,i=e.SEP;if(!0===this.getLaFuncFromCache(n).call(this)){r.call(this);const e=()=>this.tokenMatcher(this.LA_FAST(1),i);for(;!0===this.tokenMatcher(this.LA_FAST(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,i,e,r,zs],e,Fo,t,zs)}}repetitionSepSecondInternal(t,e,n,r,i){for(;n();)this.CONSUME(e),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,e,n,r,i],n,Bo,t,i)}doSingleRepetition(t){const e=this.getLexerPosition();return t.call(this),this.getLexerPosition()>e}orInternal(t,e){const n=this.getKeyForAutomaticLookahead(256,e),r=I(t)?t:t.DEF,i=this.getLaFuncFromCache(n).call(this,r);if(void 0!==i)return r[i].ALT.call(this);this.raiseNoAltException(e,t.ERR_MSG)}ruleFinallyStateUpdate(){this.RULE_STACK_IDX--,this.RULE_OCCURRENCE_STACK_IDX--,this.RULE_STACK_IDX>=0&&(this.currRuleShortName=this.RULE_STACK[this.RULE_STACK_IDX]),this.cstFinallyStateUpdate()}subruleInternal(t,e,n){let r;try{const i=void 0!==n?n.ARGS:void 0;return this.subruleIdx=e,r=t.coreRule.apply(this,i),this.cstPostNonTerminal(r,void 0!==n&&void 0!==n.LABEL?n.LABEL:t.ruleName),r}catch(i){throw this.subruleInternalError(i,n,t.ruleName)}}subruleInternalError(t,e,n){throw Io(t)&&void 0!==t.partialCstResult&&(this.cstPostNonTerminal(t.partialCstResult,void 0!==e&&void 0!==e.LABEL?e.LABEL:n),delete t.partialCstResult),t}consumeInternal(t,e,n){let r;try{const e=this.LA_FAST(1);!0===this.tokenMatcher(e,t)?(this.consumeToken(),r=e):this.consumeInternalError(t,e,n)}catch(i){r=this.consumeInternalRecovery(t,e,i)}return this.cstPostTerminal(void 0!==n&&void 0!==n.LABEL?n.LABEL:t.name,r),r}consumeInternalError(t,e,n){let r;const i=this.LA(0);throw r=void 0!==n&&n.ERR_MSG?n.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:t,actual:e,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new xo(r,e,i))}consumeInternalRecovery(t,e,n){if(!this.recoveryEnabled||"MismatchedTokenException"!==n.name||this.isBackTracking())throw n;{const i=this.getFollowsForInRuleRecovery(t,e);try{return this.tryInRuleRecovery(t,i)}catch(r){throw r.name===Mo?n:r}}}saveRecogState(){const t=this.errors,e=this.RULE_STACK.slice(0,this.RULE_STACK_IDX+1);return{errors:t,lexerState:this.exportLexerState(),RULE_STACK:e,CST_STACK:this.CST_STACK}}reloadRecogState(t){this.errors=t.errors,this.importLexerState(t.lexerState);const e=t.RULE_STACK;for(let n=0;n<e.length;n++)this.RULE_STACK[n]=e[n];this.RULE_STACK_IDX=e.length-1,this.RULE_STACK_IDX>=0&&(this.currRuleShortName=this.RULE_STACK[this.RULE_STACK_IDX])}ruleInvocationStateUpdate(t,e,n){this.RULE_OCCURRENCE_STACK[++this.RULE_OCCURRENCE_STACK_IDX]=n,this.RULE_STACK[++this.RULE_STACK_IDX]=t,this.currRuleShortName=t,this.cstInvocationStateUpdate(e)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){const t=this.currRuleShortName;return this.shortRuleNameToFull[t]}shortRuleNameToFullName(t){return this.shortRuleNameToFull[t]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Ms)}reset(){this.resetLexerState(),this.subruleIdx=0,this.currRuleShortName=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK_IDX=-1,this.RULE_OCCURRENCE_STACK_IDX=-1,this.CST_STACK=[]}onBeforeParse(t){for(let e=0;e<this.maxLookahead+1;e++)this.tokVector.push(oa)}onAfterParse(t){if(!1===this.isAtEndOfInput()){const t=this.LA(1),e=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:t,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Uo(e,t))}for(;this.tokVector.at(-1)===oa;)this.tokVector.pop()}},class{ACTION(t){return t.call(this)}consume(t,e,n){return this.consumeInternal(e,t,n)}subrule(t,e,n){return this.subruleInternal(e,t,n)}option(t,e){return this.optionInternal(e,t)}or(t,e){return this.orInternal(e,t)}many(t,e){return this.manyInternal(t,e)}atLeastOne(t,e){return this.atLeastOneInternal(t,e)}CONSUME(t,e){return this.consumeInternal(t,0,e)}CONSUME1(t,e){return this.consumeInternal(t,1,e)}CONSUME2(t,e){return this.consumeInternal(t,2,e)}CONSUME3(t,e){return this.consumeInternal(t,3,e)}CONSUME4(t,e){return this.consumeInternal(t,4,e)}CONSUME5(t,e){return this.consumeInternal(t,5,e)}CONSUME6(t,e){return this.consumeInternal(t,6,e)}CONSUME7(t,e){return this.consumeInternal(t,7,e)}CONSUME8(t,e){return this.consumeInternal(t,8,e)}CONSUME9(t,e){return this.consumeInternal(t,9,e)}SUBRULE(t,e){return this.subruleInternal(t,0,e)}SUBRULE1(t,e){return this.subruleInternal(t,1,e)}SUBRULE2(t,e){return this.subruleInternal(t,2,e)}SUBRULE3(t,e){return this.subruleInternal(t,3,e)}SUBRULE4(t,e){return this.subruleInternal(t,4,e)}SUBRULE5(t,e){return this.subruleInternal(t,5,e)}SUBRULE6(t,e){return this.subruleInternal(t,6,e)}SUBRULE7(t,e){return this.subruleInternal(t,7,e)}SUBRULE8(t,e){return this.subruleInternal(t,8,e)}SUBRULE9(t,e){return this.subruleInternal(t,9,e)}OPTION(t){return this.optionInternal(t,0)}OPTION1(t){return this.optionInternal(t,1)}OPTION2(t){return this.optionInternal(t,2)}OPTION3(t){return this.optionInternal(t,3)}OPTION4(t){return this.optionInternal(t,4)}OPTION5(t){return this.optionInternal(t,5)}OPTION6(t){return this.optionInternal(t,6)}OPTION7(t){return this.optionInternal(t,7)}OPTION8(t){return this.optionInternal(t,8)}OPTION9(t){return this.optionInternal(t,9)}OR(t){return this.orInternal(t,0)}OR1(t){return this.orInternal(t,1)}OR2(t){return this.orInternal(t,2)}OR3(t){return this.orInternal(t,3)}OR4(t){return this.orInternal(t,4)}OR5(t){return this.orInternal(t,5)}OR6(t){return this.orInternal(t,6)}OR7(t){return this.orInternal(t,7)}OR8(t){return this.orInternal(t,8)}OR9(t){return this.orInternal(t,9)}MANY(t){this.manyInternal(0,t)}MANY1(t){this.manyInternal(1,t)}MANY2(t){this.manyInternal(2,t)}MANY3(t){this.manyInternal(3,t)}MANY4(t){this.manyInternal(4,t)}MANY5(t){this.manyInternal(5,t)}MANY6(t){this.manyInternal(6,t)}MANY7(t){this.manyInternal(7,t)}MANY8(t){this.manyInternal(8,t)}MANY9(t){this.manyInternal(9,t)}MANY_SEP(t){this.manySepFirstInternal(0,t)}MANY_SEP1(t){this.manySepFirstInternal(1,t)}MANY_SEP2(t){this.manySepFirstInternal(2,t)}MANY_SEP3(t){this.manySepFirstInternal(3,t)}MANY_SEP4(t){this.manySepFirstInternal(4,t)}MANY_SEP5(t){this.manySepFirstInternal(5,t)}MANY_SEP6(t){this.manySepFirstInternal(6,t)}MANY_SEP7(t){this.manySepFirstInternal(7,t)}MANY_SEP8(t){this.manySepFirstInternal(8,t)}MANY_SEP9(t){this.manySepFirstInternal(9,t)}AT_LEAST_ONE(t){this.atLeastOneInternal(0,t)}AT_LEAST_ONE1(t){return this.atLeastOneInternal(1,t)}AT_LEAST_ONE2(t){this.atLeastOneInternal(2,t)}AT_LEAST_ONE3(t){this.atLeastOneInternal(3,t)}AT_LEAST_ONE4(t){this.atLeastOneInternal(4,t)}AT_LEAST_ONE5(t){this.atLeastOneInternal(5,t)}AT_LEAST_ONE6(t){this.atLeastOneInternal(6,t)}AT_LEAST_ONE7(t){this.atLeastOneInternal(7,t)}AT_LEAST_ONE8(t){this.atLeastOneInternal(8,t)}AT_LEAST_ONE9(t){this.atLeastOneInternal(9,t)}AT_LEAST_ONE_SEP(t){this.atLeastOneSepFirstInternal(0,t)}AT_LEAST_ONE_SEP1(t){this.atLeastOneSepFirstInternal(1,t)}AT_LEAST_ONE_SEP2(t){this.atLeastOneSepFirstInternal(2,t)}AT_LEAST_ONE_SEP3(t){this.atLeastOneSepFirstInternal(3,t)}AT_LEAST_ONE_SEP4(t){this.atLeastOneSepFirstInternal(4,t)}AT_LEAST_ONE_SEP5(t){this.atLeastOneSepFirstInternal(5,t)}AT_LEAST_ONE_SEP6(t){this.atLeastOneSepFirstInternal(6,t)}AT_LEAST_ONE_SEP7(t){this.atLeastOneSepFirstInternal(7,t)}AT_LEAST_ONE_SEP8(t){this.atLeastOneSepFirstInternal(8,t)}AT_LEAST_ONE_SEP9(t){this.atLeastOneSepFirstInternal(9,t)}RULE(t,e,n=ca){if(br(this.definedRulesNames,t)){const e={message:Fs.buildDuplicateRuleNameError({topLevelRule:t,grammarName:this.className}),type:ha.DUPLICATE_RULE_NAME,ruleName:t};this.definitionErrors.push(e)}this.definedRulesNames.push(t);const r=this.defineRule(t,e,n);return this[t]=r,r}OVERRIDE_RULE(t,e,n=ca){const r=function(t,e,n){const r=[];let i;return br(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${n}<-as it is not defined in any of the super grammars `,r.push({message:i,type:ha.INVALID_RULE_OVERRIDE,ruleName:t})),r}(t,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(r);const i=this.defineRule(t,e,n);return this[t]=i,i}BACKTRACK(t,e){var n;const r=null!==(n=t.coreRule)&&void 0!==n?n:t;return function(){this.isBackTrackingStack.push(1);const t=this.saveRecogState();try{return r.apply(this,e),!0}catch(n){if(Io(n))return!1;throw n}finally{this.reloadRecogState(t),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return Or(Ur(this.gastProductionsCache),li)}},class{initErrorHandler(t){this._errors=[],this.errorMessageProvider=xr(t,"errorMessageProvider")?t.errorMessageProvider:aa.errorMessageProvider}SAVE_ERROR(t){if(Io(t))return t.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:this.RULE_OCCURRENCE_STACK.slice(0,this.RULE_OCCURRENCE_STACK_IDX+1)},this._errors.push(t),t;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return Nn(this._errors)}set errors(t){this._errors=t}raiseEarlyExitException(t,e,n){const r=this.getCurrRuleFullName(),i=co(t,this.getGAstProductions()[r],e,this.maxLookahead)[0],s=[];for(let a=1;a<=this.maxLookahead;a++)s.push(this.LA(a));const o=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:i,actual:s,previous:this.LA(0),customUserDescription:n,ruleName:r});throw this.SAVE_ERROR(new _o(o,this.LA(1),this.LA(0)))}raiseNoAltException(t,e){const n=this.getCurrRuleFullName(),r=ao(t,this.getGAstProductions()[n],this.maxLookahead),i=[];for(let a=1;a<=this.maxLookahead;a++)i.push(this.LA(a));const s=this.LA(0),o=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:r,actual:i,previous:s,customUserDescription:e,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ko(o,this.LA(1),s))}},class{initContentAssist(){}computeContentAssist(t,e){const n=this.gastProductionsCache[t];if(Br(n))throw Error(`Rule ->${t}<- does not exist in this grammar.`);return Ys([n],e,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(t){const e=Sr(t.ruleStack),n=this.getGAstProductions()[e];return new $s(n,t).startWalking()}},class{initGastRecorder(t){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let t=0;t<10;t++){const e=t>0?t:"";this[`CONSUME${e}`]=function(e,n){return this.consumeInternalRecord(e,t,n)},this[`SUBRULE${e}`]=function(e,n){return this.subruleInternalRecord(e,t,n)},this[`OPTION${e}`]=function(e){return this.optionInternalRecord(e,t)},this[`OR${e}`]=function(e){return this.orInternalRecord(e,t)},this[`MANY${e}`]=function(e){this.manyInternalRecord(t,e)},this[`MANY_SEP${e}`]=function(e){this.manySepFirstInternalRecord(t,e)},this[`AT_LEAST_ONE${e}`]=function(e){this.atLeastOneInternalRecord(t,e)},this[`AT_LEAST_ONE_SEP${e}`]=function(e){this.atLeastOneSepFirstInternalRecord(t,e)}}this.consume=function(t,e,n){return this.consumeInternalRecord(e,t,n)},this.subrule=function(t,e,n){return this.subruleInternalRecord(e,t,n)},this.option=function(t,e){return this.optionInternalRecord(e,t)},this.or=function(t,e){return this.orInternalRecord(e,t)},this.many=function(t,e){this.manyInternalRecord(t,e)},this.atLeastOne=function(t,e){this.atLeastOneInternalRecord(t,e)},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 t=this;for(let e=0;e<10;e++){const n=e>0?e:"";delete t[`CONSUME${n}`],delete t[`SUBRULE${n}`],delete t[`OPTION${n}`],delete t[`OR${n}`],delete t[`MANY${n}`],delete t[`MANY_SEP${n}`],delete t[`AT_LEAST_ONE${n}`],delete t[`AT_LEAST_ONE_SEP${n}`]}delete t.consume,delete t.subrule,delete t.option,delete t.or,delete t.many,delete t.atLeastOne,delete t.ACTION,delete t.BACKTRACK,delete t.LA})}ACTION_RECORD(t){}BACKTRACK_RECORD(t,e){return()=>!0}LA_RECORD(t){return oa}topLevelRuleRecord(t,e){try{const n=new ni({definition:[],name:t});return n.name=t,this.recordingProdStack.push(n),e.call(this),this.recordingProdStack.pop(),n}catch(n){if(!0!==n.KNOWN_RECORDER_ERROR)try{n.message=n.message+'\n\t This error was thrown during the "grammar recording phase" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording'}catch(r){throw n}throw n}}optionInternalRecord(t,e){return na.call(this,ii,t,e)}atLeastOneInternalRecord(t,e){na.call(this,si,e,t)}atLeastOneSepFirstInternalRecord(t,e){na.call(this,oi,e,t,Zo)}manyInternalRecord(t,e){na.call(this,ai,e,t)}manySepFirstInternalRecord(t,e){na.call(this,ci,e,t,Zo)}orInternalRecord(t,e){return ra.call(this,t,e)}subruleInternalRecord(t,e,n){if(sa(e),!t||!1===xr(t,"ruleName")){const n=new Error(`<SUBRULE${ia(e)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(t)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=ar(this.recordingProdStack),i=t.ruleName,s=new ei({idx:e,nonTerminalName:i,label:null==n?void 0:n.LABEL,referencedRule:void 0});return r.definition.push(s),this.outputCst?ea:qo}consumeInternalRecord(t,e,n){if(sa(e),!fs(t)){const n=new Error(`<CONSUME${ia(e)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(t)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=ar(this.recordingProdStack),i=new ui({idx:e,terminalType:t,label:null==n?void 0:n.LABEL});return r.definition.push(i),ta}},class{initPerformanceTracer(t){if(xr(t,"traceInitPerf")){const e=t.traceInitPerf,n="number"==typeof e;this.traceInitMaxIdent=n?e:1/0,this.traceInitPerf=n?e>0:e}else this.traceInitMaxIdent=0,this.traceInitPerf=aa.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(t,e){if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${t}>`);const{time:r,value:i}=Zr(e),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${t}> time: ${r}ms`),this.traceInitIndent--,i}return e()}}].forEach(t=>{const e=t.prototype;Object.getOwnPropertyNames(e).forEach(n=>{if("constructor"===n)return;const r=Object.getOwnPropertyDescriptor(e,n);r&&(r.get||r.set)?Object.defineProperty(la.prototype,n,r):la.prototype[n]=t.prototype[n]})});class pa extends da{constructor(t,e=aa){const n=Nn(e);n.outputCst=!0,super(t,n)}}const fa=bs({name:"Whitespace",pattern:/[ \t\r\n]+/,group:Os.SKIPPED}),ma=bs({name:"LineComment",pattern:/\/\/[^\n]*/,group:Os.SKIPPED}),Ea=bs({name:"BlockComment",pattern:/\/\*[\s\S]*?\*\//,group:Os.SKIPPED}),ga=bs({name:"Identifier",pattern:/[A-Za-z_][A-Za-z0-9_]*/}),Ta=(t,e)=>bs({name:t,pattern:new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),longer_alt:ga}),Sa=Ta("Import","import"),La=Ta("Export","export"),Oa=Ta("From","from"),ya=Ta("As","as"),Aa=Ta("Const","const"),Ra=Ta("Var","var"),va=Ta("Let","let"),Na=Ta("Func","func"),Ia=Ta("Fai","fai"),Ca=Ta("Return","return"),xa=Ta("If","if"),ka=Ta("Else","else"),Ua=Ta("For","for"),_a=Ta("In","in"),ba=Ta("While","while"),Ma=Ta("Break","break"),Pa=Ta("Continue","continue"),wa=Ta("Try","try"),Da=Ta("Catch","catch"),Fa=Ta("True","true"),Ba=Ta("False","false"),ja=Ta("Null","null"),$a=Ta("KwEnum","enum"),Ka=Ta("KwArray","array"),Ga=Ta("KwObject","object"),za=bs({name:"FloatLit",pattern:/[0-9]+\.[0-9]+/}),Wa=bs({name:"IntLit",pattern:/[0-9]+/}),Va=bs({name:"StringLit",pattern:/"(?:[^"\\]|\\.)*"/}),Ha=bs({name:"Arrow",pattern:/->/}),Ya=bs({name:"FatArrow",pattern:/=>/}),Xa=bs({name:"EqEq",pattern:/==/}),qa=bs({name:"NotEq",pattern:/!=/}),Za=bs({name:"LtEq",pattern:/<=/}),Qa=bs({name:"GtEq",pattern:/>=/}),Ja=bs({name:"AndAnd",pattern:/&&/}),tc=bs({name:"OrOr",pattern:/\|\|/}),ec=bs({name:"PlusEq",pattern:/\+=/}),nc=bs({name:"MinusEq",pattern:/-=/}),rc=bs({name:"StarEq",pattern:/\*=/}),ic=bs({name:"SlashEq",pattern:/\/=/}),sc=bs({name:"PercentEq",pattern:/%=/}),oc=bs({name:"Spread",pattern:/\.\.\./}),ac=bs({name:"LCurly",pattern:/\{/}),cc=bs({name:"RCurly",pattern:/\}/}),hc=bs({name:"LParen",pattern:/\(/}),uc=bs({name:"RParen",pattern:/\)/}),lc=bs({name:"LBracket",pattern:/\[/}),dc=bs({name:"RBracket",pattern:/\]/}),pc=bs({name:"LAngle",pattern:/</}),fc=bs({name:"RAngle",pattern:/>/}),mc=bs({name:"Comma",pattern:/,/}),Ec=bs({name:"Colon",pattern:/:/}),gc=bs({name:"Semicolon",pattern:/;/}),Tc=bs({name:"Dot",pattern:/\./}),Sc=bs({name:"Question",pattern:/\?/}),Lc=bs({name:"AtName",pattern:/@[A-Za-z_][A-Za-z0-9_.\-]*/}),Oc=bs({name:"Plus",pattern:/\+/}),yc=bs({name:"Dash",pattern:/-/}),Ac=bs({name:"Star",pattern:/\*/}),Rc=bs({name:"Slash",pattern:/\//}),vc=bs({name:"Percent",pattern:/%/}),Nc=bs({name:"Bang",pattern:/!/}),Ic=bs({name:"Pipe",pattern:/\|/}),Cc=bs({name:"Equals",pattern:/=/}),xc=[fa,ma,Ea,Ha,Ya,Xa,qa,Za,Qa,Ja,tc,ec,nc,rc,ic,sc,oc,Sa,La,Oa,ya,Aa,Ra,va,Na,Ia,Ca,xa,ka,Ua,ba,Ma,Pa,wa,Da,Fa,Ba,ja,$a,Ka,Ga,_a,za,Wa,Va,ga,ac,cc,hc,uc,lc,dc,pc,fc,mc,Ec,gc,Tc,Sc,Lc,Oc,yc,Ac,Rc,vc,Nc,Ic,Cc],kc=new Os(xc,{positionTracking:"full",ensureOptimizations:!1});const Uc=new class extends pa{constructor(){super(xc,{recoveryEnabled:!1}),e(this,"program",this.RULE("program",()=>{this.MANY(()=>this.SUBRULE(this.topLevel))})),e(this,"exprEntry",this.RULE("exprEntry",()=>{this.SUBRULE(this.expr)})),e(this,"topLevel",this.RULE("topLevel",()=>{this.OR([{ALT:()=>this.SUBRULE(this.importDecl)},{ALT:()=>this.SUBRULE(this.constDecl)},{ALT:()=>this.SUBRULE(this.varDecl)},{GATE:()=>this.isRuntimeAnnotation(),ALT:()=>this.SUBRULE(this.runtimeAnnotation)},{GATE:()=>this.isAnnotatedFuncOrFai(),ALT:()=>this.SUBRULE(this.annotatedDecl)},{ALT:()=>this.SUBRULE(this.funcDecl)},{ALT:()=>this.SUBRULE(this.faiDecl)},{ALT:()=>this.SUBRULE(this.exportDecl)}])})),e(this,"importDecl",this.RULE("importDecl",()=>{this.CONSUME(Sa),this.SUBRULE(this.importClause),this.CONSUME(Oa),this.CONSUME(Va),this.OPTION(()=>this.CONSUME(Lc))})),e(this,"importClause",this.RULE("importClause",()=>{this.OR([{ALT:()=>this.SUBRULE(this.namedImports)},{ALT:()=>this.SUBRULE(this.namespaceImport)}])})),e(this,"namedImports",this.RULE("namedImports",()=>{this.CONSUME(ac),this.SUBRULE(this.importSpec),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.importSpec)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)})),e(this,"importSpec",this.RULE("importSpec",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(ya),this.CONSUME2(ga)})})),e(this,"namespaceImport",this.RULE("namespaceImport",()=>{this.CONSUME(Ac),this.CONSUME(ya),this.CONSUME(ga)})),e(this,"runtimeAnnotation",this.RULE("runtimeAnnotation",()=>{this.CONSUME(Lc),this.OPTION(()=>{this.CONSUME(hc),this.OPTION2(()=>this.SUBRULE(this.annoArgList)),this.CONSUME(uc)})})),e(this,"declAnnotation",this.RULE("declAnnotation",()=>{this.CONSUME(Lc),this.OPTION(()=>{this.CONSUME(hc),this.OPTION2(()=>this.SUBRULE(this.annoArgList)),this.CONSUME(uc)})})),e(this,"annoArgList",this.RULE("annoArgList",()=>{this.SUBRULE(this.annoArg),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.annoArg)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"annoArg",this.RULE("annoArg",()=>{this.OR([{GATE:()=>this.LA(1).tokenType===ga&&this.LA(2).tokenType===Cc,ALT:()=>{this.CONSUME(ga),this.CONSUME(Cc),this.SUBRULE(this.literal)}},{ALT:()=>this.SUBRULE2(this.literal)}])})),e(this,"annotatedDecl",this.RULE("annotatedDecl",()=>{this.AT_LEAST_ONE(()=>this.SUBRULE(this.declAnnotation)),this.OR([{ALT:()=>this.SUBRULE(this.funcDecl)},{ALT:()=>this.SUBRULE(this.faiDecl)}])})),e(this,"constDecl",this.RULE("constDecl",()=>{this.CONSUME(Aa),this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.declTypeAnnot),this.CONSUME(Cc),this.SUBRULE(this.expr)})),e(this,"varDecl",this.RULE("varDecl",()=>{this.CONSUME(Ra),this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.declTypeAnnot),this.OPTION(()=>{this.CONSUME(Cc),this.SUBRULE(this.expr)})})),e(this,"funcDecl",this.RULE("funcDecl",()=>{this.CONSUME(Na),this.CONSUME(ga),this.CONSUME(hc),this.OPTION(()=>this.SUBRULE(this.paramList)),this.CONSUME(uc),this.OPTION2(()=>{this.CONSUME(Ha),this.SUBRULE(this.typeAnnot)}),this.SUBRULE(this.block)})),e(this,"faiDecl",this.RULE("faiDecl",()=>{this.CONSUME(Ia),this.CONSUME(ga),this.CONSUME(hc),this.OPTION(()=>this.SUBRULE(this.faiParamList)),this.CONSUME(uc),this.CONSUME(Ha),this.SUBRULE(this.faiOutputList),this.SUBRULE(this.block)})),e(this,"exportDecl",this.RULE("exportDecl",()=>{this.CONSUME(La),this.OR([{ALT:()=>this.SUBRULE(this.exportNames)},{ALT:()=>this.SUBRULE(this.funcDecl)},{ALT:()=>this.SUBRULE(this.faiDecl)}])})),e(this,"exportNames",this.RULE("exportNames",()=>{this.OR([{ALT:()=>{this.SUBRULE(this.exportSpec)}},{ALT:()=>{this.CONSUME(ac),this.SUBRULE2(this.exportSpec),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE3(this.exportSpec)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)}}])})),e(this,"exportSpec",this.RULE("exportSpec",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(ya),this.CONSUME2(ga)})})),e(this,"paramList",this.RULE("paramList",()=>{this.SUBRULE(this.param),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.param)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"param",this.RULE("param",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})})),e(this,"faiParamList",this.RULE("faiParamList",()=>{this.SUBRULE(this.faiParam),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.faiParam)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"faiParam",this.RULE("faiParam",()=>{this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})),e(this,"faiOutputList",this.RULE("faiOutputList",()=>{this.SUBRULE(this.faiOutput),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.faiOutput)})})),e(this,"faiOutput",this.RULE("faiOutput",()=>{this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})),e(this,"typeAnnot",this.RULE("typeAnnot",()=>{this.OR([{ALT:()=>this.SUBRULE(this.enumType)},{ALT:()=>this.SUBRULE(this.arrayType)},{ALT:()=>this.SUBRULE(this.objectType)},{ALT:()=>this.SUBRULE(this.scalarType)}])})),e(this,"declTypeAnnot",this.RULE("declTypeAnnot",()=>{this.OR([{ALT:()=>this.SUBRULE(this.enumType)},{ALT:()=>this.SUBRULE(this.declArrayType)},{ALT:()=>this.SUBRULE(this.objectType)},{ALT:()=>this.SUBRULE(this.declScalarType)}])})),e(this,"declScalarType",this.RULE("declScalarType",()=>{this.CONSUME(ga)})),e(this,"declArrayType",this.RULE("declArrayType",()=>{this.CONSUME(Ka),this.CONSUME(pc),this.SUBRULE(this.typeAnnot),this.CONSUME(fc)})),e(this,"scalarType",this.RULE("scalarType",()=>{this.CONSUME(ga),this.OPTION(()=>this.SUBRULE(this.typeConstraint))})),e(this,"enumType",this.RULE("enumType",()=>{this.CONSUME($a),this.CONSUME(Ec),this.CONSUME(ga),this.MANY(()=>{this.CONSUME(Ic),this.CONSUME2(ga)})})),e(this,"arrayType",this.RULE("arrayType",()=>{this.CONSUME(Ka),this.CONSUME(pc),this.SUBRULE(this.typeAnnot),this.CONSUME(fc),this.OPTION(()=>this.SUBRULE(this.namedConstraint))})),e(this,"objectType",this.RULE("objectType",()=>{this.CONSUME(Ga),this.CONSUME(ac),this.SUBRULE(this.objectTypeField),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.objectTypeField)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)})),e(this,"objectTypeField",this.RULE("objectTypeField",()=>{this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})),e(this,"typeConstraint",this.RULE("typeConstraint",()=>{this.OR([{GATE:()=>this.isRangeConstraint(),ALT:()=>this.SUBRULE(this.rangeConstraint)},{ALT:()=>this.SUBRULE(this.namedConstraint)}])})),e(this,"rangeConstraint",this.RULE("rangeConstraint",()=>{this.SUBRULE(this.numberLit),this.CONSUME(yc),this.SUBRULE2(this.numberLit)})),e(this,"namedConstraint",this.RULE("namedConstraint",()=>{this.CONSUME(ga),this.CONSUME(Cc),this.OR([{ALT:()=>this.SUBRULE(this.numberLit)},{ALT:()=>this.CONSUME(Va)}])})),e(this,"numberLit",this.RULE("numberLit",()=>{this.OR([{ALT:()=>this.CONSUME(Wa)},{ALT:()=>this.CONSUME(za)}])})),e(this,"block",this.RULE("block",()=>{this.CONSUME(ac),this.MANY(()=>this.SUBRULE(this.stmt)),this.CONSUME(cc)})),e(this,"stmt",this.RULE("stmt",()=>{this.OR([{ALT:()=>this.SUBRULE(this.letDecl)},{ALT:()=>this.SUBRULE(this.ifStmt)},{ALT:()=>this.SUBRULE(this.forStmt)},{ALT:()=>this.SUBRULE(this.whileStmt)},{ALT:()=>this.SUBRULE(this.tryStmt)},{ALT:()=>this.SUBRULE(this.breakStmt)},{ALT:()=>this.SUBRULE(this.continueStmt)},{ALT:()=>this.SUBRULE(this.returnStmt)},{GATE:()=>this.isAssignment(),ALT:()=>this.SUBRULE(this.assignment)},{ALT:()=>this.SUBRULE(this.exprStmt)}]),this.OPTION(()=>this.CONSUME(gc))})),e(this,"letDecl",this.RULE("letDecl",()=>{this.CONSUME(va),this.SUBRULE(this.letTarget),this.OPTION(()=>{this.CONSUME(Ec),this.SUBRULE(this.declTypeAnnot)}),this.OPTION2(()=>{this.CONSUME(Cc),this.SUBRULE(this.expr)})})),e(this,"letTarget",this.RULE("letTarget",()=>{this.OR([{ALT:()=>this.CONSUME(ga)},{ALT:()=>this.SUBRULE(this.objectDestruct)},{ALT:()=>this.SUBRULE(this.arrayDestruct)}])})),e(this,"objectDestruct",this.RULE("objectDestruct",()=>{this.CONSUME(ac),this.SUBRULE(this.destructField),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.destructField)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)})),e(this,"destructField",this.RULE("destructField",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(Ec),this.CONSUME2(ga)})})),e(this,"arrayDestruct",this.RULE("arrayDestruct",()=>{this.CONSUME(lc),this.CONSUME(ga),this.MANY(()=>{this.CONSUME(mc),this.CONSUME2(ga)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(dc)})),e(this,"assignment",this.RULE("assignment",()=>{this.SUBRULE(this.lvalue),this.SUBRULE(this.assignOp),this.SUBRULE(this.expr)})),e(this,"lvalue",this.RULE("lvalue",()=>{this.CONSUME(ga),this.MANY(()=>this.SUBRULE(this.lvalueSuffix))})),e(this,"lvalueSuffix",this.RULE("lvalueSuffix",()=>{this.OR([{ALT:()=>{this.CONSUME(Tc),this.CONSUME(ga)}},{ALT:()=>{this.CONSUME(lc),this.SUBRULE(this.expr),this.CONSUME(dc)}}])})),e(this,"assignOp",this.RULE("assignOp",()=>{this.OR([{ALT:()=>this.CONSUME(Cc)},{ALT:()=>this.CONSUME(ec)},{ALT:()=>this.CONSUME(nc)},{ALT:()=>this.CONSUME(rc)},{ALT:()=>this.CONSUME(ic)},{ALT:()=>this.CONSUME(sc)}])})),e(this,"ifStmt",this.RULE("ifStmt",()=>{this.CONSUME(xa),this.CONSUME(hc),this.SUBRULE(this.expr),this.CONSUME(uc),this.SUBRULE(this.block),this.MANY({GATE:()=>this.LA(1).tokenType===ka&&this.LA(2).tokenType===xa,DEF:()=>{this.CONSUME(ka),this.CONSUME2(xa),this.CONSUME2(hc),this.SUBRULE2(this.expr),this.CONSUME2(uc),this.SUBRULE2(this.block)}}),this.OPTION(()=>{this.CONSUME3(ka),this.SUBRULE3(this.block)})})),e(this,"forStmt",this.RULE("forStmt",()=>{this.CONSUME(Ua),this.CONSUME(ga),this.CONSUME(_a),this.SUBRULE(this.expr),this.SUBRULE(this.block)})),e(this,"whileStmt",this.RULE("whileStmt",()=>{this.CONSUME(ba),this.CONSUME(hc),this.SUBRULE(this.expr),this.CONSUME(uc),this.SUBRULE(this.block)})),e(this,"tryStmt",this.RULE("tryStmt",()=>{this.CONSUME(wa),this.SUBRULE(this.block),this.AT_LEAST_ONE(()=>this.SUBRULE(this.catchClause))})),e(this,"catchClause",this.RULE("catchClause",()=>{this.CONSUME(Da),this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(ya),this.CONSUME2(ga)}),this.SUBRULE(this.block)})),e(this,"breakStmt",this.RULE("breakStmt",()=>{this.CONSUME(Ma)})),e(this,"continueStmt",this.RULE("continueStmt",()=>{this.CONSUME(Pa)})),e(this,"returnStmt",this.RULE("returnStmt",()=>{this.CONSUME(Ca),this.OPTION({GATE:()=>this.canStartExpression(),DEF:()=>this.SUBRULE(this.expr)})})),e(this,"exprStmt",this.RULE("exprStmt",()=>{this.SUBRULE(this.expr)})),e(this,"expr",this.RULE("expr",()=>{this.SUBRULE(this.ternaryExpr)})),e(this,"ternaryExpr",this.RULE("ternaryExpr",()=>{this.SUBRULE(this.logicalOrExpr),this.OPTION(()=>{this.CONSUME(Sc),this.SUBRULE(this.expr),this.CONSUME(Ec),this.SUBRULE2(this.expr)})})),e(this,"logicalOrExpr",this.RULE("logicalOrExpr",()=>{this.SUBRULE(this.logicalAndExpr),this.MANY(()=>{this.CONSUME(tc),this.SUBRULE2(this.logicalAndExpr)})})),e(this,"logicalAndExpr",this.RULE("logicalAndExpr",()=>{this.SUBRULE(this.equalityExpr),this.MANY(()=>{this.CONSUME(Ja),this.SUBRULE2(this.equalityExpr)})})),e(this,"equalityExpr",this.RULE("equalityExpr",()=>{this.SUBRULE(this.comparisonExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(Xa)},{ALT:()=>this.CONSUME(qa)}]),this.SUBRULE2(this.comparisonExpr)})})),e(this,"comparisonExpr",this.RULE("comparisonExpr",()=>{this.SUBRULE(this.additiveExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(pc)},{ALT:()=>this.CONSUME(Za)},{ALT:()=>this.CONSUME(fc)},{ALT:()=>this.CONSUME(Qa)}]),this.SUBRULE2(this.additiveExpr)})})),e(this,"additiveExpr",this.RULE("additiveExpr",()=>{this.SUBRULE(this.multiplicativeExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(Oc)},{ALT:()=>this.CONSUME(yc)}]),this.SUBRULE2(this.multiplicativeExpr)})})),e(this,"multiplicativeExpr",this.RULE("multiplicativeExpr",()=>{this.SUBRULE(this.unaryExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(Ac)},{ALT:()=>this.CONSUME(Rc)},{ALT:()=>this.CONSUME(vc)}]),this.SUBRULE2(this.unaryExpr)})})),e(this,"unaryExpr",this.RULE("unaryExpr",()=>{this.OPTION(()=>{this.OR([{ALT:()=>this.CONSUME(yc)},{ALT:()=>this.CONSUME(Nc)}])}),this.SUBRULE(this.postfixExpr)})),e(this,"postfixExpr",this.RULE("postfixExpr",()=>{this.SUBRULE(this.primaryExpr),this.MANY(()=>this.SUBRULE(this.postfixSuffix))})),e(this,"postfixSuffix",this.RULE("postfixSuffix",()=>{this.OR([{ALT:()=>{this.CONSUME(Tc),this.CONSUME(ga)}},{ALT:()=>{this.CONSUME(lc),this.SUBRULE(this.expr),this.CONSUME(dc)}},{ALT:()=>{this.CONSUME(hc),this.OPTION(()=>this.SUBRULE(this.argList)),this.CONSUME(uc)}}])})),e(this,"argList",this.RULE("argList",()=>{this.SUBRULE(this.expr),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.expr)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"primaryExpr",this.RULE("primaryExpr",()=>{this.OR([{ALT:()=>this.SUBRULE(this.literal)},{ALT:()=>this.CONSUME(ga)},{ALT:()=>this.SUBRULE(this.arrayLit)},{ALT:()=>this.SUBRULE(this.objectLit)},{ALT:()=>{this.CONSUME(hc),this.SUBRULE(this.expr),this.CONSUME(uc)}}])})),e(this,"literal",this.RULE("literal",()=>{this.OR([{ALT:()=>this.CONSUME(Wa)},{ALT:()=>this.CONSUME(za)},{ALT:()=>this.CONSUME(Va)},{ALT:()=>this.CONSUME(Fa)},{ALT:()=>this.CONSUME(Ba)},{ALT:()=>this.CONSUME(ja)}])})),e(this,"arrayLit",this.RULE("arrayLit",()=>{this.CONSUME(lc),this.OPTION(()=>{this.SUBRULE(this.expr),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.expr)}),this.OPTION2(()=>this.CONSUME2(mc))}),this.CONSUME(dc)})),e(this,"objectLit",this.RULE("objectLit",()=>{this.CONSUME(ac),this.OPTION(()=>{this.SUBRULE(this.objectLitField),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.objectLitField)}),this.OPTION2(()=>this.CONSUME2(mc))}),this.CONSUME(cc)})),e(this,"objectLitField",this.RULE("objectLitField",()=>{this.OR([{GATE:()=>this.LA(1).tokenType===Va,ALT:()=>{this.CONSUME(Va),this.CONSUME(Ec),this.SUBRULE(this.expr)}},{ALT:()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME2(Ec),this.SUBRULE2(this.expr)})}}])})),this.performSelfAnalysis()}isRuntimeAnnotation(){const t=this.LA(1);return t.tokenType===Lc&&"@runtime"===t.image}isAnnotatedFuncOrFai(){let t=1;for(;this.LA(t).tokenType===Lc;)if(t++,this.LA(t).tokenType===hc){let e=1;for(t++;e>0&&this.LA(t).tokenType!==Ms;){const n=this.LA(t).tokenType;n===hc?e++:n===uc&&e--,t++}}const e=this.LA(t).tokenType;return e===Na||e===Ia}isRangeConstraint(){const t=this.LA(1).tokenType;return t===Wa||t===za}isAssignment(){if(this.LA(1).tokenType!==ga)return!1;let t=2,e=0;for(;;){const n=this.LA(t).tokenType;if(n===Ms)return!1;if(0===e){if(n===Cc||n===ec||n===nc||n===rc||n===ic||n===sc)return!0;if(n===gc||n===cc||n===ac||n===mc||n===uc)return!1;if(n===Tc||n===ga){t++;continue}if(n===lc||n===hc){e++,t++;continue}return!1}if(n===lc||n===hc?e++:n!==dc&&n!==uc||e--,t++,e<0)return!1}}canStartExpression(){const t=this.LA(1).tokenType;return t===Wa||t===za||t===Va||t===Fa||t===Ba||t===ja||t===ga||t===hc||t===lc||t===ac||t===yc||t===Nc}};const _c=Uc.getBaseCstVisitorConstructor();function bc(t){return{startLine:t.startLine??0,startColumn:t.startColumn??0,endLine:t.endLine??0,endColumn:t.endColumn??0,startOffset:t.startOffset,endOffset:t.endOffset??t.startOffset}}function Mc(t){const e=t.location;return e?{startLine:e.startLine??0,startColumn:e.startColumn??0,endLine:e.endLine??0,endColumn:e.endColumn??0,startOffset:e.startOffset,endOffset:e.endOffset??e.startOffset}:{startLine:0,startColumn:0,endLine:0,endColumn:0,startOffset:0,endOffset:0}}function Pc(t){return wc(t.slice(1,-1))}function wc(t){return t.replace(/\\(.)/g,(t,e)=>{switch(e){case"n":return"\n";case"t":return"\t";case"r":return"\r";case"\\":return"\\";case'"':return'"';case"'":return"'";case"$":return"$";default:return e}})}function Dc(t){const e=t.image.slice(1,-1),n=bc(t),r=function(t){const e=[];let n="",r=0,i=0;const s=t=>{e.push({kind:"chunk",source:n,startInBody:r,endInBody:t}),n="",r=t};for(;i<t.length;)if("$"===t[i]&&"{"===t[i+1]){s(i);let o=1,a=i+2;for(;a<t.length&&o>0;){const e=t[a];if("{"===e)o++;else if("}"===e&&(o--,0===o))break;a++}if(0!==o){n+=t.slice(i),r=i,i=t.length;break}const c=t.slice(i+2,a);e.push({kind:"expr",source:c,startInBody:i,endInBody:a+1}),r=a+1,i=a+1}else"\\"===t[i]&&i+1<t.length?(n+=t.slice(i,i+2),i+=2):(n+=t[i],i++);return(e.some(t=>"expr"===t.kind)||0===e.length||n.length>0)&&s(t.length),e}(e);if(!r.some(t=>"expr"===t.kind)){return{kind:"StringLit",value:wc(r.map(t=>t.source).join("")),range:n}}const i=t.startOffset+1;return{kind:"TemplateString",parts:r.map(t=>{if("chunk"===t.kind)return{kind:"TemplateChunk",value:wc(t.source),range:Fc(n,i,t.startInBody,t.endInBody)};const e=function(t){const e=kc.tokenize(t);return Uc.input=e.tokens,{cst:Uc.exprEntry(),lexErrors:e.errors,parseErrors:Uc.errors}}(t.source);if(e.lexErrors.length>0||e.parseErrors.length>0||!e.cst)return{kind:"TemplateChunk",value:"${"+t.source+"}",range:Fc(n,i,t.startInBody,t.endInBody)};return{kind:"TemplateExpr",expr:Hc.visit(e.cst),range:Fc(n,i,t.startInBody,t.endInBody)}}),range:n}}function Fc(t,e,n,r){return{startLine:t.startLine,startColumn:t.startColumn,endLine:t.endLine,endColumn:t.endColumn,startOffset:e+n,endOffset:e+r}}function Bc(t){return t.startsWith("@")?t.slice(1):t}function jc(t,e){return{startLine:t.startLine??0,startColumn:t.startColumn??0,endLine:e.endLine??0,endColumn:e.endColumn??0,startOffset:t.startOffset,endOffset:e.endOffset??e.startOffset}}function $c(t,e){return{startLine:t.startLine,startColumn:t.startColumn,endLine:e.endLine,endColumn:e.endColumn,startOffset:t.startOffset,endOffset:e.endOffset}}function Kc(t,e){return{startLine:t.startLine??0,startColumn:t.startColumn??0,endLine:e.endLine,endColumn:e.endColumn,startOffset:t.startOffset,endOffset:e.endOffset}}function Gc(t){if(0===t.length)return{startLine:0,startColumn:0,endLine:0,endColumn:0,startOffset:0,endOffset:0};return $c(t[0].range,t[t.length-1].range)}function zc(t){const e=t.children;let n;for(const r of Object.keys(e)){const t=e[r];for(const e of t){let t;t="image"in e?e:zc(e),t&&(!n||t.startOffset<n.startOffset)&&(n=t)}}return n}function Wc(t,e){let n=t[0];for(let r=0;r<e.length;r++){const i=t[r+1];n={kind:"BinaryExpr",op:e[r],left:n,right:i,range:$c(n.range,i.range)}}return n}function Vc(t,e){const n=[];for(const[r,i]of e){const e=t[r]??[];for(const t of e)n.push({offset:t.startOffset,op:i})}return n.sort((t,e)=>t.offset-e.offset),n.map(t=>t.op)}const Hc=new class extends _c{constructor(){super(),this.validateVisitor()}exprEntry(t){return this.visit(t.expr[0])}program(t,e){const n=t.$cstNode??void 0,r=(t.topLevel??[]).map(t=>this.visit(t));return{kind:"Program",items:r,range:n?Mc(n):Gc(r)}}topLevel(t){if(t.importDecl)return this.visit(t.importDecl[0]);if(t.runtimeAnnotation)return this.visit(t.runtimeAnnotation[0]);if(t.constDecl)return this.visit(t.constDecl[0]);if(t.varDecl)return this.visit(t.varDecl[0]);if(t.annotatedDecl)return this.visit(t.annotatedDecl[0]);if(t.funcDecl)return this.visit(t.funcDecl[0]);if(t.faiDecl)return this.visit(t.faiDecl[0]);if(t.exportDecl)return this.visit(t.exportDecl[0]);throw new Error("unreachable: topLevel had no matching alternative")}importDecl(t){var e;const n=this.visit(t.importClause[0]),r=t.StringLit[0],i=null==(e=t.AtName)?void 0:e[0],s=t.Import[0],o=i??r;return{kind:"Import",clause:n,source:Pc(r.image),version:i?i.image.slice(1):null,range:jc(s,o)}}importClause(t){return t.namedImports?this.visit(t.namedImports[0]):this.visit(t.namespaceImport[0])}namedImports(t){return{kind:"NamedImports",specs:(t.importSpec??[]).map(t=>this.visit(t)),range:jc(t.LCurly[0],t.RCurly[0])}}importSpec(t){const e=t.Identifier;return{kind:"ImportSpec",name:e[0].image,alias:e.length>1?e[1].image:null,range:jc(e[0],e[e.length-1])}}namespaceImport(t){const e=t.Star[0],n=t.Identifier[0];return{kind:"NamespaceImport",alias:n.image,range:jc(e,n)}}runtimeAnnotation(t){var e,n;const r=t.AtName[0],i=null==(e=t.annoArgList)?void 0:e[0],s=i?this.visit(i):[],o=(null==(n=t.RParen)?void 0:n[0])??r;return{kind:"RuntimeAnnotation",name:Bc(r.image),args:s,range:jc(r,o)}}declAnnotation(t){var e,n;const r=t.AtName[0],i=null==(e=t.annoArgList)?void 0:e[0],s=i?this.visit(i):[],o=(null==(n=t.RParen)?void 0:n[0])??r;return{kind:"Annotation",name:Bc(r.image),args:s,range:jc(r,o)}}annoArgList(t){return(t.annoArg??[]).map(t=>this.visit(t))}annoArg(t){var e;const n=null==(e=t.Identifier)?void 0:e[0],r=t.literal[0],i=this.visit(r),s=n??zc(r),o=i.range;return{kind:"AnnotationArg",key:n?n.image:null,value:i,range:{startLine:(null==s?void 0:s.startLine)??o.startLine,startColumn:(null==s?void 0:s.startColumn)??o.startColumn,endLine:o.endLine,endColumn:o.endColumn,startOffset:(null==s?void 0:s.startOffset)??o.startOffset,endOffset:o.endOffset}}}annotatedDecl(t){const e=(t.declAnnotation??[]).map(t=>this.visit(t));let n;return n=t.funcDecl?this.visit(t.funcDecl[0]):this.visit(t.faiDecl[0]),{...n,annotations:e}}constDecl(t){const e=t.Const[0],n=t.Identifier[0],r=this.visit(t.declTypeAnnot[0]),i=this.visit(t.expr[0]);return{kind:"ConstDecl",name:n.image,type:r,value:i,range:Kc(e,i.range)}}varDecl(t){const e=t.Var[0],n=t.Identifier[0],r=this.visit(t.declTypeAnnot[0]),i=t.expr?this.visit(t.expr[0]):null,s=(null==i?void 0:i.range)??r.range;return{kind:"VarDecl",name:n.image,type:r,init:i,range:Kc(e,s)}}funcDecl(t){const e=t.Func[0],n=t.Identifier[0],r=t.paramList?this.visit(t.paramList[0]):[],i=t.typeAnnot?this.visit(t.typeAnnot[0]):null,s=this.visit(t.block[0]);return{kind:"FuncDecl",annotations:[],name:n.image,params:r,returnType:i,body:s,range:Kc(e,s.range)}}faiDecl(t){const e=t.Fai[0],n=t.Identifier[0],r=t.faiParamList?this.visit(t.faiParamList[0]):[],i=this.visit(t.faiOutputList[0]),s=this.visit(t.block[0]);return{kind:"FaiDecl",annotations:[],name:n.image,params:r,outputs:i,body:s,range:Kc(e,s.range)}}exportDecl(t){const e=t.Export[0];let n;return n=t.exportNames?this.visit(t.exportNames[0]):t.funcDecl?this.visit(t.funcDecl[0]):this.visit(t.faiDecl[0]),{kind:"ExportDecl",target:n,range:Kc(e,n.range)}}exportNames(t){const e=(t.exportSpec??[]).map(t=>this.visit(t));if(0===e.length)return{kind:"ExportNames",specs:[],range:Gc([])};return{kind:"ExportNames",specs:e,range:$c(e[0].range,e[e.length-1].range)}}exportSpec(t){const e=t.Identifier;return{kind:"ExportSpec",name:e[0].image,alias:e.length>1?e[1].image:null,range:jc(e[0],e[e.length-1])}}paramList(t){return(t.param??[]).map(t=>this.visit(t))}param(t){const e=t.Identifier[0],n=t.typeAnnot?this.visit(t.typeAnnot[0]):null,r=(null==n?void 0:n.range)??bc(e);return{kind:"Param",name:e.image,type:n,range:Kc(e,r)}}faiParamList(t){return(t.faiParam??[]).map(t=>this.visit(t))}faiParam(t){const e=t.Identifier[0],n=this.visit(t.typeAnnot[0]);return{kind:"FaiParam",name:e.image,type:n,range:Kc(e,n.range)}}faiOutputList(t){return t.faiOutput.map(t=>this.visit(t))}faiOutput(t){const e=t.Identifier[0],n=this.visit(t.typeAnnot[0]);return{kind:"FaiOutput",name:e.image,type:n,range:Kc(e,n.range)}}typeAnnot(t){return t.enumType?this.visit(t.enumType[0]):t.arrayType?this.visit(t.arrayType[0]):t.objectType?this.visit(t.objectType[0]):this.visit(t.scalarType[0])}declTypeAnnot(t){return t.enumType?this.visit(t.enumType[0]):t.declArrayType?this.visit(t.declArrayType[0]):t.objectType?this.visit(t.objectType[0]):this.visit(t.declScalarType[0])}declScalarType(t){const e=t.Identifier[0];return{kind:"ScalarType",name:e.image,constraint:null,range:bc(e)}}declArrayType(t){const e=t.KwArray[0];return{kind:"ArrayType",element:this.visit(t.typeAnnot[0]),constraint:null,range:Kc(e,bc(t.RAngle[0]))}}scalarType(t){const e=t.Identifier[0],n=t.typeConstraint?this.visit(t.typeConstraint[0]):null,r=(null==n?void 0:n.range)??bc(e);return{kind:"ScalarType",name:e.image,constraint:n,range:Kc(e,r)}}enumType(t){const e=t.KwEnum[0];return{kind:"EnumType",variants:t.Identifier.map(t=>t.image),range:jc(e,t.Identifier.at(-1))}}arrayType(t){const e=t.KwArray[0],n=this.visit(t.typeAnnot[0]),r=t.RAngle[0],i=t.namedConstraint?this.visit(t.namedConstraint[0]):null;return{kind:"ArrayType",element:n,constraint:i,range:Kc(e,(null==i?void 0:i.range)??bc(r))}}objectType(t){const e=t.KwObject[0],n=t.RCurly[0];return{kind:"ObjectType",fields:(t.objectTypeField??[]).map(t=>this.visit(t)),range:jc(e,n)}}objectTypeField(t){const e=t.Identifier[0],n=this.visit(t.typeAnnot[0]);return{kind:"ObjectTypeField",name:e.image,type:n,range:Kc(e,n.range)}}typeConstraint(t){return t.rangeConstraint?this.visit(t.rangeConstraint[0]):this.visit(t.namedConstraint[0])}rangeConstraint(t){const e=t.numberLit.map(t=>this.visit(t));return{kind:"RangeConstraint",min:e[0].value,max:e[1].value,range:$c(e[0].range,e[1].range)}}namedConstraint(t){const e=t.Identifier[0];let n,r;if(t.numberLit){const e=this.visit(t.numberLit[0]);n=e.value,r=e.range}else{const e=t.StringLit[0];n=Pc(e.image),r=bc(e)}return{kind:"NamedConstraint",key:e.image,value:n,range:Kc(e,r)}}numberLit(t){if(t.IntLit){const e=t.IntLit[0];return{value:Number.parseInt(e.image,10),range:bc(e)}}const e=t.FloatLit[0];return{value:Number.parseFloat(e.image),range:bc(e)}}block(t){const e=t.LCurly[0],n=t.RCurly[0];return{kind:"Block",stmts:(t.stmt??[]).map(t=>this.visit(t)),range:jc(e,n)}}stmt(t){if(t.letDecl)return this.visit(t.letDecl[0]);if(t.ifStmt)return this.visit(t.ifStmt[0]);if(t.forStmt)return this.visit(t.forStmt[0]);if(t.whileStmt)return this.visit(t.whileStmt[0]);if(t.tryStmt)return this.visit(t.tryStmt[0]);if(t.breakStmt)return this.visit(t.breakStmt[0]);if(t.continueStmt)return this.visit(t.continueStmt[0]);if(t.returnStmt)return this.visit(t.returnStmt[0]);if(t.assignment)return this.visit(t.assignment[0]);if(t.exprStmt)return this.visit(t.exprStmt[0]);throw new Error("unreachable: stmt had no matching alternative")}letDecl(t){const e=t.Let[0],n=this.visit(t.letTarget[0]),r=t.declTypeAnnot?this.visit(t.declTypeAnnot[0]):null,i=t.expr?this.visit(t.expr[0]):null;return{kind:"LetDecl",target:n,type:r,init:i,range:Kc(e,(null==i?void 0:i.range)??(null==r?void 0:r.range)??n.range)}}letTarget(t){if(t.Identifier){const e=t.Identifier[0];return{kind:"IdentTarget",name:e.image,range:bc(e)}}return t.objectDestruct?this.visit(t.objectDestruct[0]):this.visit(t.arrayDestruct[0])}objectDestruct(t){const e=t.LCurly[0],n=t.RCurly[0];return{kind:"ObjectDestruct",fields:(t.destructField??[]).map(t=>this.visit(t)),range:jc(e,n)}}destructField(t){const e=t.Identifier,n=e[0].image;return{kind:"DestructField",source:n,local:e.length>1?e[1].image:n,range:jc(e[0],e[e.length-1])}}arrayDestruct(t){const e=t.LBracket[0],n=t.RBracket[0];return{kind:"ArrayDestruct",names:t.Identifier.map(t=>t.image),range:jc(e,n)}}assignment(t){const e=this.visit(t.lvalue[0]),n=this.visit(t.assignOp[0]),r=this.visit(t.expr[0]);return{kind:"Assignment",target:e,op:n,value:r,range:$c(e.range,r.range)}}lvalue(t){const e=t.Identifier[0],n=(t.lvalueSuffix??[]).map(t=>this.visit(t)),r=n.length>0?n[n.length-1].range:bc(e);return{kind:"LValue",base:e.image,suffixes:n,range:Kc(e,r)}}lvalueSuffix(t){if(t.Dot){const e=t.Dot[0],n=t.Identifier[0];return{kind:"MemberSuffix",name:n.image,range:jc(e,n)}}const e=t.LBracket[0],n=t.RBracket[0];return{kind:"IndexSuffix",index:this.visit(t.expr[0]),range:jc(e,n)}}assignOp(t){return t.Equals?"=":t.PlusEq?"+=":t.MinusEq?"-=":t.StarEq?"*=":t.SlashEq?"/=":"%="}ifStmt(t){var e;const n=t.If[0],r=t.expr,i=t.block,s=this.visit(r[0]),o=this.visit(i[0]),a=[];for(let u=1;u<r.length;u++){const t=this.visit(r[u]),e=this.visit(i[u]);a.push({kind:"ElseIf",cond:t,body:e,range:$c(t.range,e.range)})}let c=null;i.length>r.length&&(c=this.visit(i[i.length-1]));const h=(null==c?void 0:c.range)??(null==(e=a.at(-1))?void 0:e.range)??o.range;return{kind:"IfStmt",cond:s,then:o,elifs:a,otherwise:c,range:Kc(n,h)}}forStmt(t){const e=t.For[0],n=t.Identifier[0].image,r=this.visit(t.expr[0]),i=this.visit(t.block[0]);return{kind:"ForStmt",binding:n,iterable:r,body:i,range:Kc(e,i.range)}}whileStmt(t){const e=t.While[0],n=this.visit(t.expr[0]),r=this.visit(t.block[0]);return{kind:"WhileStmt",cond:n,body:r,range:Kc(e,r.range)}}tryStmt(t){var e;const n=t.Try[0],r=this.visit(t.block[0]),i=t.catchClause.map(t=>this.visit(t)),s=(null==(e=i.at(-1))?void 0:e.range)??r.range;return{kind:"TryStmt",body:r,catches:i,range:Kc(n,s)}}catchClause(t){const e=t.Catch[0],n=t.Identifier,r=n[0].image,i=n.length>1?n[1].image:null,s=this.visit(t.block[0]);return{kind:"CatchClause",errorType:r,binding:i,body:s,range:Kc(e,s.range)}}breakStmt(t){return{kind:"BreakStmt",range:bc(t.Break[0])}}continueStmt(t){return{kind:"ContinueStmt",range:bc(t.Continue[0])}}returnStmt(t){const e=t.Return[0],n=t.expr?this.visit(t.expr[0]):null;return{kind:"ReturnStmt",value:n,range:n?Kc(e,n.range):bc(e)}}exprStmt(t){const e=this.visit(t.expr[0]);return{kind:"ExprStmt",expr:e,range:e.range}}expr(t){return this.visit(t.ternaryExpr[0])}ternaryExpr(t){const e=this.visit(t.logicalOrExpr[0]);if(!t.expr)return e;const[n,r]=t.expr,i=this.visit(n),s=this.visit(r);return{kind:"TernaryExpr",cond:e,then:i,otherwise:s,range:$c(e.range,s.range)}}logicalOrExpr(t){return Wc(t.logicalAndExpr.map(t=>this.visit(t)),(t.OrOr??[]).map(()=>"||"))}logicalAndExpr(t){return Wc(t.equalityExpr.map(t=>this.visit(t)),(t.AndAnd??[]).map(()=>"&&"))}equalityExpr(t){return Wc(t.comparisonExpr.map(t=>this.visit(t)),Vc(t,[["EqEq","=="],["NotEq","!="]]))}comparisonExpr(t){return Wc(t.additiveExpr.map(t=>this.visit(t)),Vc(t,[["LAngle","<"],["LtEq","<="],["RAngle",">"],["GtEq",">="]]))}additiveExpr(t){return Wc(t.multiplicativeExpr.map(t=>this.visit(t)),Vc(t,[["Plus","+"],["Dash","-"]]))}multiplicativeExpr(t){return Wc(t.unaryExpr.map(t=>this.visit(t)),Vc(t,[["Star","*"],["Slash","/"],["Percent","%"]]))}unaryExpr(t){const e=this.visit(t.postfixExpr[0]);if(t.Dash){return{kind:"UnaryExpr",op:"-",operand:e,range:Kc(t.Dash[0],e.range)}}if(t.Bang){return{kind:"UnaryExpr",op:"!",operand:e,range:Kc(t.Bang[0],e.range)}}return e}postfixExpr(t){let e=this.visit(t.primaryExpr[0]);const n=t.postfixSuffix??[];for(const r of n){const t=this.visit(r);e="member"===t.tag?{kind:"MemberExpr",object:e,property:t.name,range:$c(e.range,t.range)}:"index"===t.tag?{kind:"IndexExpr",object:e,index:t.index,range:$c(e.range,t.range)}:{kind:"CallExpr",callee:e,args:t.args,range:$c(e.range,t.range)}}return e}postfixSuffix(t){if(t.Dot){const e=t.Dot[0],n=t.Identifier[0];return{tag:"member",name:n.image,range:jc(e,n)}}if(t.LBracket){const e=t.LBracket[0],n=t.RBracket[0];return{tag:"index",index:this.visit(t.expr[0]),range:jc(e,n)}}const e=t.LParen[0],n=t.RParen[0];return{tag:"call",args:t.argList?this.visit(t.argList[0]):[],range:jc(e,n)}}argList(t){return t.expr.map(t=>this.visit(t))}primaryExpr(t){if(t.literal)return this.visit(t.literal[0]);if(t.Identifier){const e=t.Identifier[0];return{kind:"IdentExpr",name:e.image,range:bc(e)}}return t.arrayLit?this.visit(t.arrayLit[0]):t.objectLit?this.visit(t.objectLit[0]):this.visit(t.expr[0])}literal(t){if(t.IntLit){const e=t.IntLit[0];return{kind:"IntLit",value:Number.parseInt(e.image,10),range:bc(e)}}if(t.FloatLit){const e=t.FloatLit[0];return{kind:"FloatLit",value:Number.parseFloat(e.image),range:bc(e)}}if(t.StringLit){return Dc(t.StringLit[0])}if(t.True){return{kind:"BoolLit",value:!0,range:bc(t.True[0])}}if(t.False){return{kind:"BoolLit",value:!1,range:bc(t.False[0])}}return{kind:"NullLit",range:bc(t.Null[0])}}arrayLit(t){const e=t.LBracket[0],n=t.RBracket[0];return{kind:"ArrayLit",elements:t.expr?t.expr.map(t=>this.visit(t)):[],range:jc(e,n)}}objectLit(t){const e=t.LCurly[0],n=t.RCurly[0];return{kind:"ObjectLit",fields:(t.objectLitField??[]).map(t=>this.visit(t)),range:jc(e,n)}}objectLitField(t){if(t.StringLit){const e=t.StringLit[0],n=this.visit(t.expr[0]);return{kind:"ObjectLitField",key:Pc(e.image),shorthand:!1,value:n,range:Kc(e,n.range)}}const e=t.Identifier[0];if(t.expr){const n=this.visit(t.expr[0]);return{kind:"ObjectLitField",key:e.image,shorthand:!1,value:n,range:Kc(e,n.range)}}return{kind:"ObjectLitField",key:e.image,shorthand:!0,value:{kind:"IdentExpr",name:e.image,range:bc(e)},range:bc(e)}}};function Yc(t){let e;try{e=function(t){const e=kc.tokenize(t);return Uc.input=e.tokens,{cst:Uc.program(),lexErrors:e.errors,parseErrors:Uc.errors}}(t)}catch(i){return{ast:null,lexErrors:[],parseErrors:[{name:i.name??"ParseException",message:i.message??String(i),token:{startLine:1,startColumn:1,image:""}}]}}if(e.lexErrors.length>0||e.parseErrors.length>0||!e.cst)return{ast:null,lexErrors:e.lexErrors,parseErrors:e.parseErrors};let n=null;try{n=(r=e.cst)?Hc.visit(r):null}catch(i){return{ast:null,lexErrors:e.lexErrors,parseErrors:[...e.parseErrors,{name:i.name??"BuildAstException",message:`buildAst crashed: ${i.message??String(i)}`,token:{startLine:1,startColumn:1,image:""}}]}}var r;return{ast:n,lexErrors:e.lexErrors,parseErrors:e.parseErrors}}function Xc(t){return`(${t.params.map(t=>t.name).join(", ")})`}function qc(t){return`(${t.params.map(t=>t.name).join(", ")}) → ${t.outputs.map(t=>t.name).join(", ")}`}function Zc(t){switch(t){case"fai":return i.jsx(s,{className:"h-3.5 w-3.5 text-purple-500 dark:text-purple-400"});case"func":return i.jsx(u,{className:"h-3.5 w-3.5 text-blue-500 dark:text-blue-400"});case"const":return i.jsx(l,{className:"h-3.5 w-3.5 text-emerald-500 dark:text-emerald-400"});case"var":return i.jsx(d,{className:"h-3.5 w-3.5 text-amber-500 dark:text-amber-400"});case"export":return i.jsx(h,{className:"h-3.5 w-3.5 text-pink-500 dark:text-pink-400"});case"import":return i.jsx(h,{className:"h-3.5 w-3.5 rotate-180 text-cyan-500 dark:text-cyan-400"})}}function Qc({source:t,parseResult:e,onJump:n}){const s=r.useMemo(()=>{const n=e??Yc(t);return n.ast&&0===n.lexErrors.length&&0===n.parseErrors.length?function(t){const e=[];for(const n of t.items)switch(n.kind){case"Import":{const t=n;e.push({kind:"import",name:t.source,line:t.range.startLine,column:t.range.startColumn});break}case"ConstDecl":{const t=n;e.push({kind:"const",name:t.name,line:t.range.startLine,column:t.range.startColumn});break}case"VarDecl":{const t=n;e.push({kind:"var",name:t.name,line:t.range.startLine,column:t.range.startColumn});break}case"FuncDecl":{const t=n;e.push({kind:"func",name:t.name,signature:Xc(t),line:t.range.startLine,column:t.range.startColumn});break}case"FaiDecl":{const t=n;e.push({kind:"fai",name:t.name,signature:qc(t),line:t.range.startLine,column:t.range.startColumn});break}case"ExportDecl":{const t=n.target;if("ExportNames"===t.kind)for(const n of t.specs)e.push({kind:"export",name:n.alias??n.name,line:n.range.startLine,column:n.range.startColumn});else if("FuncDecl"===t.kind){const n=t;e.push({kind:"func",name:`export ${n.name}`,signature:Xc(n),line:n.range.startLine,column:n.range.startColumn})}else if("FaiDecl"===t.kind){const n=t;e.push({kind:"fai",name:`export ${n.name}`,signature:qc(n),line:n.range.startLine,column:n.range.startColumn})}break}}return e}(n.ast):function(t){const e=[],n=t.split(/\r?\n/),r=/^(import|export|const|var|fai|func)\s+([A-Za-z_]\w*)/;for(let i=0;i<n.length;i++){const t=r.exec(n[i]??"");if(!t)continue;const s=t[1],o=t[2]??"";o&&e.push({kind:s,name:o,line:i+1,column:1})}return e}(t)},[t,e]);return i.jsxs("div",{className:"h-full flex flex-col bg-muted/30",children:[i.jsxs("div",{className:"px-3 py-1.5 text-xs font-medium text-muted-foreground border-b border-border",children:["大纲 (",s.length,")"]}),i.jsxs("div",{className:"flex-1 min-h-0 overflow-auto",children:[0===s.length&&i.jsx("p",{className:"px-3 py-4 text-xs text-muted-foreground text-center",children:"(空)"}),s.map((t,e)=>i.jsxs("button",{className:"\n w-full flex items-center gap-2 px-3 py-1.5\n text-xs text-left hover:bg-accent\n transition-colors\n ",onClick:()=>n(t.line,t.column),title:`${t.kind} ${t.name}${t.signature??""} (行 ${t.line})`,children:[Zc(t.kind),i.jsxs("span",{className:"font-mono truncate flex-1",children:[t.name,t.signature&&i.jsx("span",{className:"text-muted-foreground ml-1",children:t.signature})]}),i.jsx("span",{className:"text-muted-foreground tabular-nums",children:t.line})]},`${t.kind}-${t.name}-${e}`))]})]})}const Jc=["import","export","from","as","const","var","let","func","fai","return","if","else","for","in","while","break","continue","try","catch"],th=["int","float","bool","string","prompt","any","enum","array","object"],eh=["true","false","null"],nh=["__ccweb_ask_user","len","push","concat","range","log","JSON","math","str"];let rh=!1;const ih=r.lazy(async()=>{const[t,e]=await Promise.all([c(()=>import("./editor.main-DFSVcrOk.js").then(t=>t.e),__vite__mapDeps([0,1,2,3])),c(()=>import("./index-DzZhNsXm.js"),__vite__mapDeps([4,1,2]))]),n=t.default??t;return e.loader.config({monaco:n}),{default:e.default}});function sh(t,e){var n,r,i,s;const o=[];for(const a of t){const t=a,e=t.line??1,n=t.column??1,r=t.length??1;o.push({line:e,column:n,endLine:e,endColumn:n+r,message:t.message??"lex error"})}for(const a of e){const t=a,e=(null==(n=t.token)?void 0:n.startLine)??1,c=(null==(r=t.token)?void 0:r.startColumn)??1,h=(null==(s=null==(i=t.token)?void 0:i.image)?void 0:s.length)??1;o.push({line:e,column:c,endLine:e,endColumn:c+h,message:`${t.name??"ParseError"}: ${t.message??""}`})}return o}function oh({filename:t,initialSource:e,onCancel:n,onSave:s}){const{resolved:c}=o(),[h,u]=r.useState(e),[l,d]=r.useState(!1),[p,f]=r.useState(()=>Yc(e)),m=r.useMemo(()=>sh(p.lexErrors,p.parseErrors),[p]),E=r.useRef(null),g=r.useRef(null),T=r.useRef(null),S=r.useCallback(t=>{try{const e=Yc(t);f(e);const n=sh(e.lexErrors,e.parseErrors),r=g.current,i=E.current;if(r&&i){const t=i.getModel();t&&r.editor.setModelMarkers(t,"train-parser",n.map(t=>({startLineNumber:t.line,startColumn:t.column,endLineNumber:t.endLine,endColumn:t.endColumn,message:t.message,severity:r.MarkerSeverity.Error})))}}catch(e){f({ast:null,lexErrors:[],parseErrors:[{message:`parser crashed: ${e.message}`,name:"ParserCrash",token:{startLine:1,startColumn:1,image:""}}]})}},[]);r.useEffect(()=>(T.current&&clearTimeout(T.current),T.current=setTimeout(()=>S(h),250),()=>{T.current&&clearTimeout(T.current)}),[h,S]);const L=r.useCallback(async()=>{if(!l){d(!0);try{await s(h)}finally{d(!1)}}},[l,h,s]);return i.jsxs("div",{className:"flex flex-col gap-2 h-full",children:[i.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[i.jsx("span",{className:"text-sm font-mono text-muted-foreground truncate flex-1",children:t}),m.length>0?i.jsxs("span",{className:"text-xs text-red-600 dark:text-red-400",children:[m.length," 个问题"]}):i.jsx("span",{className:"text-xs text-emerald-600 dark:text-emerald-400",children:"语法正确"}),i.jsx(a,{onClick:n,variant:"ghost",size:"sm",children:"取消"}),i.jsx(a,{onClick:L,size:"sm",disabled:l,children:l?"保存中…":"保存"})]}),i.jsxs("div",{className:"flex gap-2 flex-1 min-h-0",children:[i.jsx("div",{className:"flex-1 min-w-0 rounded-md border border-border overflow-hidden",children:i.jsx(r.Suspense,{fallback:i.jsx("div",{className:"h-full flex items-center justify-center text-sm text-muted-foreground",children:"加载编辑器…"}),children:i.jsx(ih,{height:"100%",defaultLanguage:"train",language:"train",value:h,onChange:t=>u(t??""),onMount:(t,e)=>{E.current=t,g.current=e,function(t){rh||(rh=!0,t.languages.register({id:"train",extensions:[".tr"],aliases:["train","tr"]}),t.languages.setLanguageConfiguration("train",{comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]}),t.languages.setMonarchTokensProvider("train",{defaultToken:"",keywords:Jc,typeKeywords:th,literals:eh,builtins:nh,operators:["=","==","!=","<=",">=","<",">","&&","||","+","-","*","/","%","!","?","??","->","=>","+=","-=","*=","/=","%="],symbols:/[=<>!?:&|+\-*\/%~^@]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/@[A-Za-z_][\w.\-]*/,"annotation"],[/[A-Za-z_]\w*/,{cases:{"@keywords":"keyword","@typeKeywords":"type","@literals":"keyword.constant","@builtins":"predefined","@default":"identifier"}}],{include:"@whitespace"},[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01_]+/,"number.binary"],[/0[oO][0-7_]+/,"number.octal"],[/\d+([eE][\-+]?\d+)?/,"number"],[/"([^"\\$]|\\.|\$(?!\{))*"/,"string"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/[{}()[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/[,;.]/,"delimiter"]],string:[[/[^\\"$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/\$\{/,{token:"string.interpolation.open",bracket:"@open",next:"@interpolation"}],[/\$/,"string"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],interpolation:[[/\}/,{token:"string.interpolation.close",bracket:"@close",next:"@pop"}],{include:"root"}],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[/*]/,"comment"]]}}))}(e),e.editor.setModelLanguage(t.getModel(),"train"),t.addCommand(e.KeyMod.CtrlCmd|e.KeyCode.KeyS,()=>{L()}),S(h)},theme:"dark"===c?"vs-dark":"vs",options:{minimap:{enabled:!1},fontSize:13,fontFamily:"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",tabSize:2,insertSpaces:!0,wordWrap:"on",scrollBeyondLastLine:!1,automaticLayout:!0}})})}),i.jsx("div",{className:"w-56 flex-shrink-0 rounded-md border border-border overflow-hidden",children:i.jsx(Qc,{parseResult:p,source:h,onJump:(t,e)=>{const n=E.current;n&&(n.revealLineInCenter(t),n.setPosition({lineNumber:t,column:e}),n.focus())}})})]}),i.jsx("p",{className:"text-xs text-muted-foreground flex-shrink-0",children:".tr 源码 · train-lang DSL · Cmd/Ctrl+S 保存 · 实时语法检查 + AST 大纲"})]})}export{oh as TrackEditor};
|
|
14
|
+
*/var p="object"==typeof global&&global&&global.Object===Object&&global,f="object"==typeof self&&self&&self.Object===Object&&self,m=p||f||Function("return this")(),E=m.Symbol,g=Object.prototype,T=g.hasOwnProperty,S=g.toString,L=E?E.toStringTag:void 0;var O=Object.prototype.toString;var y=E?E.toStringTag:void 0;function A(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":y&&y in Object(t)?function(t){var e=T.call(t,L),n=t[L];try{t[L]=void 0;var r=!0}catch(s){}var i=S.call(t);return r&&(e?t[L]=n:delete t[L]),i}(t):function(t){return O.call(t)}(t)}function R(t){return null!=t&&"object"==typeof t}function v(t){return"symbol"==typeof t||R(t)&&"[object Symbol]"==A(t)}function N(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}var I=Array.isArray,C=E?E.prototype:void 0,x=C?C.toString:void 0;function k(t){if("string"==typeof t)return t;if(I(t))return N(t,k)+"";if(v(t))return x?x.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}var U=/\s/;var _=/^\s+/;function b(t){return t?t.slice(0,function(t){for(var e=t.length;e--&&U.test(t.charAt(e)););return e}(t)+1).replace(_,""):t}function M(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}var P=/^[-+]0x[0-9a-f]+$/i,w=/^0b[01]+$/i,D=/^0o[0-7]+$/i,F=parseInt;var B=1/0;function j(t){return t?(t=function(t){if("number"==typeof t)return t;if(v(t))return NaN;if(M(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=M(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=b(t);var n=w.test(t);return n||D.test(t)?F(t.slice(2),n?2:8):P.test(t)?NaN:+t}(t))===B||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function $(t){var e=j(t),n=e%1;return e==e?n?e-n:e:0}function K(t){return t}function G(t){if(!M(t))return!1;var e=A(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}var z,W=m["__core-js_shared__"],V=(z=/[^.]+$/.exec(W&&W.keys&&W.keys.IE_PROTO||""))?"Symbol(src)_1."+z:"";var H=Function.prototype.toString;function Y(t){if(null!=t){try{return H.call(t)}catch(e){}try{return t+""}catch(e){}}return""}var X=/^\[object .+?Constructor\]$/,q=Function.prototype,Z=Object.prototype,Q=q.toString,J=Z.hasOwnProperty,tt=RegExp("^"+Q.call(J).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function et(t){return!(!M(t)||(e=t,V&&V in e))&&(G(t)?tt:X).test(Y(t));var e}function nt(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return et(n)?n:void 0}var rt=nt(m,"WeakMap"),it=Object.create,st=function(){function t(){}return function(e){if(!M(e))return{};if(it)return it(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function ot(){}var at=Date.now;var ct,ht,ut,lt=function(){try{var t=nt(Object,"defineProperty");return t({},"",{}),t}catch(e){}}(),dt=lt?function(t,e){return lt(t,"toString",{configurable:!0,enumerable:!1,value:(n=e,function(){return n}),writable:!0});var n}:K,pt=(ct=dt,ht=0,ut=0,function(){var t=at(),e=16-(t-ut);if(ut=t,e>0){if(++ht>=800)return arguments[0]}else ht=0;return ct.apply(void 0,arguments)});function ft(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function mt(t,e,n,r){for(var i=t.length,s=n+-1;++s<i;)if(e(t[s],s,t))return s;return-1}function Et(t){return t!=t}function gt(t,e,n){return e==e?function(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}(t,e,n):mt(t,Et,n)}function Tt(t,e){return!!(null==t?0:t.length)&>(t,e,0)>-1}var St=/^(?:0|[1-9]\d*)$/;function Lt(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&St.test(t))&&t>-1&&t%1==0&&t<e}function Ot(t,e,n){"__proto__"==e&<?lt(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function yt(t,e){return t===e||t!=t&&e!=e}var At=Object.prototype.hasOwnProperty;function Rt(t,e,n){var r=t[e];At.call(t,e)&&yt(r,n)&&(void 0!==n||e in t)||Ot(t,e,n)}function vt(t,e,n,r){var i=!n;n||(n={});for(var s=-1,o=e.length;++s<o;){var a=e[s],c=void 0;void 0===c&&(c=t[a]),i?Ot(n,a,c):Rt(n,a,c)}return n}var Nt=Math.max;function It(t,e){return pt(function(t,e,n){return e=Nt(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,s=Nt(r.length-e,0),o=Array(s);++i<s;)o[i]=r[e+i];i=-1;for(var a=Array(e+1);++i<e;)a[i]=r[i];return a[e]=n(o),function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}(t,this,a)}}(t,e,K),t+"")}function Ct(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function xt(t){return null!=t&&Ct(t.length)&&!G(t)}function kt(t,e,n){if(!M(n))return!1;var r=typeof e;return!!("number"==r?xt(n)&&Lt(e,n.length):"string"==r&&e in n)&&yt(n[e],t)}var Ut=Object.prototype;function _t(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Ut)}function bt(t){return R(t)&&"[object Arguments]"==A(t)}var Mt=Object.prototype,Pt=Mt.hasOwnProperty,wt=Mt.propertyIsEnumerable,Dt=bt(function(){return arguments}())?bt:function(t){return R(t)&&Pt.call(t,"callee")&&!wt.call(t,"callee")};var Ft="object"==typeof exports&&exports&&!exports.nodeType&&exports,Bt=Ft&&"object"==typeof module&&module&&!module.nodeType&&module,jt=Bt&&Bt.exports===Ft?m.Buffer:void 0,$t=(jt?jt.isBuffer:void 0)||function(){return!1},Kt={};function Gt(t){return function(e){return t(e)}}Kt["[object Float32Array]"]=Kt["[object Float64Array]"]=Kt["[object Int8Array]"]=Kt["[object Int16Array]"]=Kt["[object Int32Array]"]=Kt["[object Uint8Array]"]=Kt["[object Uint8ClampedArray]"]=Kt["[object Uint16Array]"]=Kt["[object Uint32Array]"]=!0,Kt["[object Arguments]"]=Kt["[object Array]"]=Kt["[object ArrayBuffer]"]=Kt["[object Boolean]"]=Kt["[object DataView]"]=Kt["[object Date]"]=Kt["[object Error]"]=Kt["[object Function]"]=Kt["[object Map]"]=Kt["[object Number]"]=Kt["[object Object]"]=Kt["[object RegExp]"]=Kt["[object Set]"]=Kt["[object String]"]=Kt["[object WeakMap]"]=!1;var zt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Wt=zt&&"object"==typeof module&&module&&!module.nodeType&&module,Vt=Wt&&Wt.exports===zt&&p.process,Ht=function(){try{var t=Wt&&Wt.require&&Wt.require("util").types;return t||Vt&&Vt.binding&&Vt.binding("util")}catch(e){}}(),Yt=Ht&&Ht.isTypedArray,Xt=Yt?Gt(Yt):function(t){return R(t)&&Ct(t.length)&&!!Kt[A(t)]},qt=Object.prototype.hasOwnProperty;function Zt(t,e){var n=I(t),r=!n&&Dt(t),i=!n&&!r&&$t(t),s=!n&&!r&&!i&&Xt(t),o=n||r||i||s,a=o?function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}(t.length,String):[],c=a.length;for(var h in t)!e&&!qt.call(t,h)||o&&("length"==h||i&&("offset"==h||"parent"==h)||s&&("buffer"==h||"byteLength"==h||"byteOffset"==h)||Lt(h,c))||a.push(h);return a}function Qt(t,e){return function(n){return t(e(n))}}var Jt=Qt(Object.keys,Object),te=Object.prototype.hasOwnProperty;function ee(t){if(!_t(t))return Jt(t);var e=[];for(var n in Object(t))te.call(t,n)&&"constructor"!=n&&e.push(n);return e}function ne(t){return xt(t)?Zt(t):ee(t)}var re,ie=Object.prototype.hasOwnProperty,se=(re=function(t,e){if(_t(e)||xt(e))vt(e,ne(e),t);else for(var n in e)ie.call(e,n)&&Rt(t,n,e[n])},It(function(t,e){var n=-1,r=e.length,i=r>1?e[r-1]:void 0,s=r>2?e[2]:void 0;for(i=re.length>3&&"function"==typeof i?(r--,i):void 0,s&&kt(e[0],e[1],s)&&(i=r<3?void 0:i,r=1),t=Object(t);++n<r;){var o=e[n];o&&re(t,o,n,i)}return t}));var oe=Object.prototype.hasOwnProperty;function ae(t){if(!M(t))return function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}(t);var e=_t(t),n=[];for(var r in t)("constructor"!=r||!e&&oe.call(t,r))&&n.push(r);return n}function ce(t){return xt(t)?Zt(t,!0):ae(t)}var he=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ue=/^\w*$/;function le(t,e){if(I(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!v(t))||(ue.test(t)||!he.test(t)||null!=e&&t in Object(e))}var de=nt(Object,"create");var pe=Object.prototype.hasOwnProperty;var fe=Object.prototype.hasOwnProperty;function me(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ee(t,e){for(var n=t.length;n--;)if(yt(t[n][0],e))return n;return-1}me.prototype.clear=function(){this.__data__=de?de(null):{},this.size=0},me.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},me.prototype.get=function(t){var e=this.__data__;if(de){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return pe.call(e,t)?e[t]:void 0},me.prototype.has=function(t){var e=this.__data__;return de?void 0!==e[t]:fe.call(e,t)},me.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=de&&void 0===e?"__lodash_hash_undefined__":e,this};var ge=Array.prototype.splice;function Te(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}Te.prototype.clear=function(){this.__data__=[],this.size=0},Te.prototype.delete=function(t){var e=this.__data__,n=Ee(e,t);return!(n<0)&&(n==e.length-1?e.pop():ge.call(e,n,1),--this.size,!0)},Te.prototype.get=function(t){var e=this.__data__,n=Ee(e,t);return n<0?void 0:e[n][1]},Te.prototype.has=function(t){return Ee(this.__data__,t)>-1},Te.prototype.set=function(t,e){var n=this.__data__,r=Ee(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};var Se=nt(m,"Map");function Le(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function Oe(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}Oe.prototype.clear=function(){this.size=0,this.__data__={hash:new me,map:new(Se||Te),string:new me}},Oe.prototype.delete=function(t){var e=Le(this,t).delete(t);return this.size-=e?1:0,e},Oe.prototype.get=function(t){return Le(this,t).get(t)},Oe.prototype.has=function(t){return Le(this,t).has(t)},Oe.prototype.set=function(t,e){var n=Le(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this};function ye(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],s=n.cache;if(s.has(i))return s.get(i);var o=t.apply(this,r);return n.cache=s.set(i,o)||s,o};return n.cache=new(ye.Cache||Oe),n}ye.Cache=Oe;var Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Re=/\\(\\)?/g,ve=function(t){var e=ye(t,function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Ae,function(t,n,r,i){e.push(r?i.replace(Re,"$1"):n||t)}),e});function Ne(t,e){return I(t)?t:le(t,e)?[t]:ve(function(t){return null==t?"":k(t)}(t))}function Ie(t){if("string"==typeof t||v(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Ce(t,e){for(var n=0,r=(e=Ne(e,t)).length;null!=t&&n<r;)t=t[Ie(e[n++])];return n&&n==r?t:void 0}function xe(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}var ke=E?E.isConcatSpreadable:void 0;function Ue(t){return I(t)||Dt(t)||!!(ke&&t&&t[ke])}function _e(t,e,n,r,i){var s=-1,o=t.length;for(n||(n=Ue),i||(i=[]);++s<o;){var a=t[s];n(a)?xe(i,a):r||(i[i.length]=a)}return i}function be(t){return(null==t?0:t.length)?_e(t):[]}var Me=Qt(Object.getPrototypeOf,Object);function Pe(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var s=Array(i);++r<i;)s[r]=t[r+e];return s}function we(t,e,n,r){var i=-1,s=null==t?0:t.length;for(r&&s&&(n=t[++i]);++i<s;)n=e(n,t[i],i,t);return n}function De(t){var e=this.__data__=new Te(t);this.size=e.size}De.prototype.clear=function(){this.__data__=new Te,this.size=0},De.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},De.prototype.get=function(t){return this.__data__.get(t)},De.prototype.has=function(t){return this.__data__.has(t)},De.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Te){var r=n.__data__;if(!Se||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Oe(r)}return n.set(t,e),this.size=n.size,this};var Fe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Be=Fe&&"object"==typeof module&&module&&!module.nodeType&&module,je=Be&&Be.exports===Fe?m.Buffer:void 0,$e=je?je.allocUnsafe:void 0;function Ke(t,e){for(var n=-1,r=null==t?0:t.length,i=0,s=[];++n<r;){var o=t[n];e(o,n,t)&&(s[i++]=o)}return s}function Ge(){return[]}var ze=Object.prototype.propertyIsEnumerable,We=Object.getOwnPropertySymbols,Ve=We?function(t){return null==t?[]:(t=Object(t),Ke(We(t),function(e){return ze.call(t,e)}))}:Ge;var He=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)xe(e,Ve(t)),t=Me(t);return e}:Ge;function Ye(t,e,n){var r=e(t);return I(t)?r:xe(r,n(t))}function Xe(t){return Ye(t,ne,Ve)}var qe=nt(m,"DataView"),Ze=nt(m,"Promise"),Qe=nt(m,"Set"),Je="[object Map]",tn="[object Promise]",en="[object Set]",nn="[object WeakMap]",rn="[object DataView]",sn=Y(qe),on=Y(Se),an=Y(Ze),cn=Y(Qe),hn=Y(rt),un=A;(qe&&un(new qe(new ArrayBuffer(1)))!=rn||Se&&un(new Se)!=Je||Ze&&un(Ze.resolve())!=tn||Qe&&un(new Qe)!=en||rt&&un(new rt)!=nn)&&(un=function(t){var e=A(t),n="[object Object]"==e?t.constructor:void 0,r=n?Y(n):"";if(r)switch(r){case sn:return rn;case on:return Je;case an:return tn;case cn:return en;case hn:return nn}return e});var ln=Object.prototype.hasOwnProperty;var dn=m.Uint8Array;var pn=/\w*$/;var fn=E?E.prototype:void 0,mn=fn?fn.valueOf:void 0;function En(t,e,n){var r,i,s,o,a,c=t.constructor;switch(e){case"[object ArrayBuffer]":return a=new(o=t).constructor(o.byteLength),new dn(a).set(new dn(o)),a;case"[object Boolean]":case"[object Date]":return new c(+t);case"[object DataView]":return s=(i=t).buffer,new i.constructor(s,i.byteOffset,i.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return function(t){var e=t.buffer;return new t.constructor(e,t.byteOffset,t.length)}(t);case"[object Map]":case"[object Set]":return new c;case"[object Number]":case"[object String]":return new c(t);case"[object RegExp]":return function(t){var e=new t.constructor(t.source,pn.exec(t));return e.lastIndex=t.lastIndex,e}(t);case"[object Symbol]":return r=t,mn?Object(mn.call(r)):{}}}var gn=Ht&&Ht.isMap,Tn=gn?Gt(gn):function(t){return R(t)&&"[object Map]"==un(t)};var Sn=Ht&&Ht.isSet,Ln=Sn?Gt(Sn):function(t){return R(t)&&"[object Set]"==un(t)},On="[object Arguments]",yn="[object Function]",An="[object Object]",Rn={};function vn(t,e,n,r,i,s){var o,a=2&e;if(void 0!==o)return o;if(!M(t))return t;var c=I(t);if(c)return o=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&ln.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}(t,o);var h=un(t),u=h==yn||"[object GeneratorFunction]"==h;if($t(t))return function(t){var e=t.length,n=$e?$e(e):new t.constructor(e);return t.copy(n),n}(t);if(h==An||h==On||u&&!i)return o=u?{}:function(t){return"function"!=typeof t.constructor||_t(t)?{}:st(Me(t))}(t),a?function(t,e){return vt(t,He(t),e)}(t,function(t,e){return t&&vt(e,ce(e),t)}(o,t)):function(t,e){return vt(t,Ve(t),e)}(t,function(t,e){return t&&vt(e,ne(e),t)}(o,t));if(!Rn[h])return i?t:{};o=En(t,h),s||(s=new De);var l=s.get(t);if(l)return l;s.set(t,o),Ln(t)?t.forEach(function(r){o.add(vn(r,e,n,r,t,s))}):Tn(t)&&t.forEach(function(r,i){o.set(i,vn(r,e,n,i,t,s))});var d=c?void 0:Xe(t);return ft(d||t,function(r,i){d&&(r=t[i=r]),Rt(o,i,vn(r,e,n,i,t,s))}),o}Rn[On]=Rn["[object Array]"]=Rn["[object ArrayBuffer]"]=Rn["[object DataView]"]=Rn["[object Boolean]"]=Rn["[object Date]"]=Rn["[object Float32Array]"]=Rn["[object Float64Array]"]=Rn["[object Int8Array]"]=Rn["[object Int16Array]"]=Rn["[object Int32Array]"]=Rn["[object Map]"]=Rn["[object Number]"]=Rn[An]=Rn["[object RegExp]"]=Rn["[object Set]"]=Rn["[object String]"]=Rn["[object Symbol]"]=Rn["[object Uint8Array]"]=Rn["[object Uint8ClampedArray]"]=Rn["[object Uint16Array]"]=Rn["[object Uint32Array]"]=!0,Rn["[object Error]"]=Rn[yn]=Rn["[object WeakMap]"]=!1;function Nn(t){return vn(t,4)}function In(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var s=t[e];s&&(i[r++]=s)}return i}function Cn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Oe;++e<n;)this.add(t[e])}function xn(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function kn(t,e){return t.has(e)}Cn.prototype.add=Cn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Cn.prototype.has=function(t){return this.__data__.has(t)};function Un(t,e,n,r,i,s){var o=1&n,a=t.length,c=e.length;if(a!=c&&!(o&&c>a))return!1;var h=s.get(t),u=s.get(e);if(h&&u)return h==e&&u==t;var l=-1,d=!0,p=2&n?new Cn:void 0;for(s.set(t,e),s.set(e,t);++l<a;){var f=t[l],m=e[l];if(r)var E=o?r(m,f,l,e,t,s):r(f,m,l,t,e,s);if(void 0!==E){if(E)continue;d=!1;break}if(p){if(!xn(e,function(t,e){if(!kn(p,e)&&(f===t||i(f,t,n,r,s)))return p.push(e)})){d=!1;break}}else if(f!==m&&!i(f,m,n,r,s)){d=!1;break}}return s.delete(t),s.delete(e),d}function _n(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function bn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}var Mn=E?E.prototype:void 0,Pn=Mn?Mn.valueOf:void 0;var wn=Object.prototype.hasOwnProperty;var Dn="[object Arguments]",Fn="[object Array]",Bn="[object Object]",jn=Object.prototype.hasOwnProperty;function $n(t,e,n,r,i,s){var o=I(t),a=I(e),c=o?Fn:un(t),h=a?Fn:un(e),u=(c=c==Dn?Bn:c)==Bn,l=(h=h==Dn?Bn:h)==Bn,d=c==h;if(d&&$t(t)){if(!$t(e))return!1;o=!0,u=!1}if(d&&!u)return s||(s=new De),o||Xt(t)?Un(t,e,n,r,i,s):function(t,e,n,r,i,s,o){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!s(new dn(t),new dn(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return yt(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var a=_n;case"[object Set]":var c=1&r;if(a||(a=bn),t.size!=e.size&&!c)return!1;var h=o.get(t);if(h)return h==e;r|=2,o.set(t,e);var u=Un(a(t),a(e),r,i,s,o);return o.delete(t),u;case"[object Symbol]":if(Pn)return Pn.call(t)==Pn.call(e)}return!1}(t,e,c,n,r,i,s);if(!(1&n)){var p=u&&jn.call(t,"__wrapped__"),f=l&&jn.call(e,"__wrapped__");if(p||f){var m=p?t.value():t,E=f?e.value():e;return s||(s=new De),i(m,E,n,r,s)}}return!!d&&(s||(s=new De),function(t,e,n,r,i,s){var o=1&n,a=Xe(t),c=a.length;if(c!=Xe(e).length&&!o)return!1;for(var h=c;h--;){var u=a[h];if(!(o?u in e:wn.call(e,u)))return!1}var l=s.get(t),d=s.get(e);if(l&&d)return l==e&&d==t;var p=!0;s.set(t,e),s.set(e,t);for(var f=o;++h<c;){var m=t[u=a[h]],E=e[u];if(r)var g=o?r(E,m,u,e,t,s):r(m,E,u,t,e,s);if(!(void 0===g?m===E||i(m,E,n,r,s):g)){p=!1;break}f||(f="constructor"==u)}if(p&&!f){var T=t.constructor,S=e.constructor;T==S||!("constructor"in t)||!("constructor"in e)||"function"==typeof T&&T instanceof T&&"function"==typeof S&&S instanceof S||(p=!1)}return s.delete(t),s.delete(e),p}(t,e,n,r,i,s))}function Kn(t,e,n,r,i){return t===e||(null==t||null==e||!R(t)&&!R(e)?t!=t&&e!=e:$n(t,e,n,r,Kn,i))}function Gn(t){return t==t&&!M(t)}function zn(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}function Wn(t){var e=function(t){for(var e=ne(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Gn(i)]}return e}(t);return 1==e.length&&e[0][2]?zn(e[0][0],e[0][1]):function(n){return n===t||function(t,e,n,r){var i=n.length,s=i;if(null==t)return!s;for(t=Object(t);i--;){var o=n[i];if(o[2]?o[1]!==t[o[0]]:!(o[0]in t))return!1}for(;++i<s;){var a=(o=n[i])[0],c=t[a],h=o[1];if(o[2]){if(void 0===c&&!(a in t))return!1}else if(!Kn(h,c,3,r,new De))return!1}return!0}(n,0,e)}}function Vn(t,e){return null!=t&&e in Object(t)}function Hn(t,e,n){for(var r=-1,i=(e=Ne(e,t)).length,s=!1;++r<i;){var o=Ie(e[r]);if(!(s=null!=t&&n(t,o)))break;t=t[o]}return s||++r!=i?s:!!(i=null==t?0:t.length)&&Ct(i)&&Lt(o,i)&&(I(t)||Dt(t))}function Yn(t,e){return le(t)&&Gn(e)?zn(Ie(t),e):function(n){var r=function(t,e,n){var r=null==t?void 0:Ce(t,e);return void 0===r?n:r}(n,t);return void 0===r&&r===e?function(t,e){return null!=t&&Hn(t,e,Vn)}(n,t):Kn(e,r,3)}}function Xn(t){return le(t)?(e=Ie(t),function(t){return null==t?void 0:t[e]}):function(t){return function(e){return Ce(e,t)}}(t);var e}function qn(t){return"function"==typeof t?t:null==t?K:"object"==typeof t?I(t)?Yn(t[0],t[1]):Wn(t):Xn(t)}function Zn(t,e,n,r){for(var i=-1,s=null==t?0:t.length;++i<s;){var o=t[i];e(r,o,n(o),t)}return r}var Qn=function(t,e,n){for(var r=-1,i=Object(t),s=n(t),o=s.length;o--;){var a=s[++r];if(!1===e(i[a],a,i))break}return t};var Jn,tr=(Jn=function(t,e){return t&&Qn(t,e,ne)},function(t,e){if(null==t)return t;if(!xt(t))return Jn(t,e);for(var n=t.length,r=-1,i=Object(t);++r<n&&!1!==e(i[r],r,i););return t});function er(t,e,n,r){return tr(t,function(t,i,s){e(r,t,n(t),s)}),r}var nr=Object.prototype,rr=nr.hasOwnProperty,ir=It(function(t,e){t=Object(t);var n=-1,r=e.length,i=r>2?e[2]:void 0;for(i&&kt(e[0],e[1],i)&&(r=1);++n<r;)for(var s=e[n],o=ce(s),a=-1,c=o.length;++a<c;){var h=o[a],u=t[h];(void 0===u||yt(u,nr[h])&&!rr.call(t,h))&&(t[h]=s[h])}return t});function sr(t){return R(t)&&xt(t)}var or=It(function(t,e){return sr(t)?function(t,e,n,r){var i=-1,s=Tt,o=!0,a=t.length,c=[],h=e.length;if(!a)return c;e.length>=200&&(s=kn,o=!1,e=new Cn(e));t:for(;++i<a;){var u=t[i],l=u;if(u=0!==u?u:0,o&&l==l){for(var d=h;d--;)if(e[d]===l)continue t;c.push(u)}else s(e,l,r)||c.push(u)}return c}(t,_e(e,0,sr,!0)):[]});function ar(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}function cr(t,e,n){var r=null==t?0:t.length;return r?Pe(t,(e=void 0===e?1:$(e))<0?0:e,r):[]}function hr(t,e,n){var r=null==t?0:t.length;return r?Pe(t,0,(e=r-(e=void 0===e?1:$(e)))<0?0:e):[]}function ur(t,e){var n;return(I(t)?ft:tr)(t,"function"==typeof(n=e)?n:K)}function lr(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function dr(t,e){var n=!0;return tr(t,function(t,r,i){return n=!!e(t,r,i)}),n}function pr(t,e,n){return(I(t)?lr:dr)(t,qn(e))}function fr(t,e){var n=[];return tr(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function mr(t,e){return(I(t)?Ke:fr)(t,qn(e))}var Er=Math.max;var gr,Tr=(gr=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:$(n);return i<0&&(i=Er(r+i,0)),mt(t,qn(e),i)},function(t,e,n){var r=Object(t);if(!xt(t)){var i=qn(e);t=ne(t),e=function(t){return i(r[t],t,r)}}var s=gr(t,e,n);return s>-1?r[i?t[s]:s]:void 0});function Sr(t){return t&&t.length?t[0]:void 0}function Lr(t,e){var n=-1,r=xt(t)?Array(t.length):[];return tr(t,function(t,i,s){r[++n]=e(t,i,s)}),r}function Or(t,e){return(I(t)?N:Lr)(t,qn(e))}function yr(t,e){return _e(Or(t,e))}var Ar,Rr,vr=Object.prototype.hasOwnProperty,Nr=(Ar=function(t,e,n){vr.call(t,n)?t[n].push(e):Ot(t,n,[e])},function(t,e){var n=I(t)?Zn:er,r=Rr?Rr():{};return n(t,Ar,qn(e),r)}),Ir=Object.prototype.hasOwnProperty;function Cr(t,e){return null!=t&&Ir.call(t,e)}function xr(t,e){return null!=t&&Hn(t,e,Cr)}function kr(t){return"string"==typeof t||!I(t)&&R(t)&&"[object String]"==A(t)}function Ur(t){return null==t?[]:function(t,e){return N(e,function(e){return t[e]})}(t,ne(t))}var _r=Math.max;function br(t,e,n,r){t=xt(t)?t:Ur(t),n=n?$(n):0;var i=t.length;return n<0&&(n=_r(i+n,0)),kr(t)?n<=i&&t.indexOf(e,n)>-1:!!i&>(t,e,n)>-1}function Mr(t,e,n){if(!(null==t?0:t.length))return-1;return gt(t,e,0)}var Pr=Object.prototype.hasOwnProperty;function wr(t){if(null==t)return!0;if(xt(t)&&(I(t)||"string"==typeof t||"function"==typeof t.splice||$t(t)||Xt(t)||Dt(t)))return!t.length;var e=un(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if(_t(t))return!ee(t).length;for(var n in t)if(Pr.call(t,n))return!1;return!0}var Dr=Ht&&Ht.isRegExp,Fr=Dr?Gt(Dr):function(t){return R(t)&&"[object RegExp]"==A(t)};function Br(t){return void 0===t}function jr(t,e,n,r){if(!M(t))return t;for(var i=-1,s=(e=Ne(e,t)).length,o=s-1,a=t;null!=a&&++i<s;){var c=Ie(e[i]),h=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return t;if(i!=o){var u=a[c];void 0===(h=void 0)&&(h=M(u)?u:Lt(e[i+1])?[]:{})}Rt(a,c,h),a=a[c]}return t}function $r(t,e){if(null==t)return{};var n=N(function(t){return Ye(t,ce,He)}(t),function(t){return[t]});return e=qn(e),function(t,e,n){for(var r=-1,i=e.length,s={};++r<i;){var o=e[r],a=Ce(t,o);n(a,o)&&jr(s,Ne(o,t),a)}return s}(t,n,function(t,n){return e(t,n[0])})}function Kr(t,e,n,r,i){return i(t,function(t,i,s){n=r?(r=!1,t):e(n,t,i,s)}),n}function Gr(t,e,n){var r=I(t)?we:Kr,i=arguments.length<3;return r(t,qn(e),n,i,tr)}function zr(t,e){return(I(t)?Ke:fr)(t,function(t){if("function"!=typeof t)throw new TypeError("Expected a function");return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}(qn(e)))}function Wr(t,e){var n;return tr(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function Vr(t,e,n){return(I(t)?xn:Wr)(t,qn(e))}var Hr=Qe&&1/bn(new Qe([,-0]))[1]==1/0?function(t){return new Qe(t)}:ot;function Yr(t){return t&&t.length?function(t,e,n){var r=-1,i=Tt,s=t.length,o=!0,a=[],c=a;if(s>=200){var h=Hr(t);if(h)return bn(h);o=!1,i=kn,c=new Cn}else c=a;t:for(;++r<s;){var u=t[r],l=u;if(u=0!==u?u:0,o&&l==l){for(var d=c.length;d--;)if(c[d]===l)continue t;a.push(u)}else i(c,l,n)||(c!==a&&c.push(l),a.push(u))}return a}(t):[]}function Xr(t){console&&console.error&&console.error(`Error: ${t}`)}function qr(t){console&&console.warn&&console.warn(`Warning: ${t}`)}function Zr(t){const e=(new Date).getTime(),n=t();return{time:(new Date).getTime()-e,value:n}}function Qr(t){function e(){}e.prototype=t;const n=new e;function r(){return typeof n.bar}return r(),r(),t}function Jr(t){return kr((e=t).LABEL)&&""!==e.LABEL?t.LABEL:t.name;var e}class ti{get definition(){return this._definition}set definition(t){this._definition=t}constructor(t){this._definition=t}accept(t){t.visit(this),ur(this.definition,e=>{e.accept(t)})}}class ei extends ti{constructor(t){super([]),this.idx=1,se(this,$r(t,t=>void 0!==t))}set definition(t){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(t){t.visit(this)}}class ni extends ti{constructor(t){super(t.definition),this.orgText="",se(this,$r(t,t=>void 0!==t))}}class ri extends ti{constructor(t){super(t.definition),this.ignoreAmbiguities=!1,se(this,$r(t,t=>void 0!==t))}}class ii extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class si extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class oi extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class ai extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class ci extends ti{constructor(t){super(t.definition),this.idx=1,se(this,$r(t,t=>void 0!==t))}}class hi extends ti{get definition(){return this._definition}set definition(t){this._definition=t}constructor(t){super(t.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,se(this,$r(t,t=>void 0!==t))}}class ui{constructor(t){this.idx=1,se(this,$r(t,t=>void 0!==t))}accept(t){t.visit(this)}}function li(t){function e(t){return Or(t,li)}if(t instanceof ei){const e={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return kr(t.label)&&(e.label=t.label),e}if(t instanceof ri)return{type:"Alternative",definition:e(t.definition)};if(t instanceof ii)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof si)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof oi)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:li(new ui({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ci)return{type:"RepetitionWithSeparator",idx:t.idx,separator:li(new ui({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ai)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof hi)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof ui){const e={type:"Terminal",name:t.terminalType.name,label:Jr(t.terminalType),idx:t.idx};kr(t.label)&&(e.terminalLabel=t.label);const n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(e.pattern=Fr(n)?n.source:n),e}if(t instanceof ni)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}class di{visit(t){const e=t;switch(e.constructor){case ei:return this.visitNonTerminal(e);case ri:return this.visitAlternative(e);case ii:return this.visitOption(e);case si:return this.visitRepetitionMandatory(e);case oi:return this.visitRepetitionMandatoryWithSeparator(e);case ci:return this.visitRepetitionWithSeparator(e);case ai:return this.visitRepetition(e);case hi:return this.visitAlternation(e);case ui:return this.visitTerminal(e);case ni:return this.visitRule(e);default:throw Error("non exhaustive match")}}visitNonTerminal(t){}visitAlternative(t){}visitOption(t){}visitRepetition(t){}visitRepetitionMandatory(t){}visitRepetitionMandatoryWithSeparator(t){}visitRepetitionWithSeparator(t){}visitAlternation(t){}visitTerminal(t){}visitRule(t){}}function pi(t,e=[]){return!!(t instanceof ii||t instanceof ai||t instanceof ci)||(t instanceof hi?Vr(t.definition,t=>pi(t,e)):!(t instanceof ei&&br(e,t))&&(t instanceof ti&&(t instanceof ei&&e.push(t),pr(t.definition,t=>pi(t,e)))))}function fi(t){if(t instanceof ei)return"SUBRULE";if(t instanceof ii)return"OPTION";if(t instanceof hi)return"OR";if(t instanceof si)return"AT_LEAST_ONE";if(t instanceof oi)return"AT_LEAST_ONE_SEP";if(t instanceof ci)return"MANY_SEP";if(t instanceof ai)return"MANY";if(t instanceof ui)return"CONSUME";throw Error("non exhaustive match")}class mi{walk(t,e=[]){ur(t.definition,(n,r)=>{const i=cr(t.definition,r+1);if(n instanceof ei)this.walkProdRef(n,i,e);else if(n instanceof ui)this.walkTerminal(n,i,e);else if(n instanceof ri)this.walkFlat(n,i,e);else if(n instanceof ii)this.walkOption(n,i,e);else if(n instanceof si)this.walkAtLeastOne(n,i,e);else if(n instanceof oi)this.walkAtLeastOneSep(n,i,e);else if(n instanceof ci)this.walkManySep(n,i,e);else if(n instanceof ai)this.walkMany(n,i,e);else{if(!(n instanceof hi))throw Error("non exhaustive match");this.walkOr(n,i,e)}})}walkTerminal(t,e,n){}walkProdRef(t,e,n){}walkFlat(t,e,n){const r=e.concat(n);this.walk(t,r)}walkOption(t,e,n){const r=e.concat(n);this.walk(t,r)}walkAtLeastOne(t,e,n){const r=[new ii({definition:t.definition})].concat(e,n);this.walk(t,r)}walkAtLeastOneSep(t,e,n){const r=Ei(t,e,n);this.walk(t,r)}walkMany(t,e,n){const r=[new ii({definition:t.definition})].concat(e,n);this.walk(t,r)}walkManySep(t,e,n){const r=Ei(t,e,n);this.walk(t,r)}walkOr(t,e,n){const r=e.concat(n);ur(t.definition,t=>{const e=new ri({definition:[t]});this.walk(e,r)})}}function Ei(t,e,n){return[new ii({definition:[new ui({terminalType:t.separator})].concat(t.definition)})].concat(e,n)}function gi(t){if(t instanceof ei)return gi(t.referencedRule);if(t instanceof ui)return[t.terminalType];if(function(t){return t instanceof ri||t instanceof ii||t instanceof ai||t instanceof si||t instanceof oi||t instanceof ci||t instanceof ui||t instanceof ni}(t))return function(t){let e=[];const n=t.definition;let r,i=0,s=n.length>i,o=!0;for(;s&&o;)r=n[i],o=pi(r),e=e.concat(gi(r)),i+=1,s=n.length>i;return Yr(e)}(t);if(function(t){return t instanceof hi}(t))return function(t){const e=Or(t.definition,t=>gi(t));return Yr(be(e))}(t);throw Error("non exhaustive match")}const Ti="_~IN~_";class Si extends mi{constructor(t){super(),this.topProd=t,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(t,e,n){}walkProdRef(t,e,n){const r=(i=t.referencedRule,s=t.idx,i.name+s+Ti+this.topProd.name);var i,s;const o=e.concat(n),a=gi(new ri({definition:o}));this.follows[r]=a}}function Li(t){return t.charCodeAt(0)}function Oi(t,e){Array.isArray(t)?t.forEach(function(t){e.push(t)}):e.push(t)}function yi(t,e){if(!0===t[e])throw"duplicate flag "+e;t[e],t[e]=!0}function Ai(t){if(void 0===t)throw Error("Internal Error - Should never get here!");return!0}function Ri(t){return"Character"===t.type}const vi=[];for(let ah=Li("0");ah<=Li("9");ah++)vi.push(ah);const Ni=[Li("_")].concat(vi);for(let ah=Li("a");ah<=Li("z");ah++)Ni.push(ah);for(let ah=Li("A");ah<=Li("Z");ah++)Ni.push(ah);const Ii=[Li(" "),Li("\f"),Li("\n"),Li("\r"),Li("\t"),Li("\v"),Li("\t"),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li(" "),Li("\u2028"),Li("\u2029"),Li(" "),Li(" "),Li(" "),Li("\ufeff")],Ci=/[0-9a-fA-F]/,xi=/[0-9]/,ki=/[1-9]/;class Ui{visitChildren(t){for(const e in t){const n=t[e];t.hasOwnProperty(e)&&(void 0!==n.type?this.visit(n):Array.isArray(n)&&n.forEach(t=>{this.visit(t)},this))}}visit(t){switch(t.type){case"Pattern":this.visitPattern(t);break;case"Flags":this.visitFlags(t);break;case"Disjunction":this.visitDisjunction(t);break;case"Alternative":this.visitAlternative(t);break;case"StartAnchor":this.visitStartAnchor(t);break;case"EndAnchor":this.visitEndAnchor(t);break;case"WordBoundary":this.visitWordBoundary(t);break;case"NonWordBoundary":this.visitNonWordBoundary(t);break;case"Lookahead":this.visitLookahead(t);break;case"NegativeLookahead":this.visitNegativeLookahead(t);break;case"Lookbehind":this.visitLookbehind(t);break;case"NegativeLookbehind":this.visitNegativeLookbehind(t);break;case"Character":this.visitCharacter(t);break;case"Set":this.visitSet(t);break;case"Group":this.visitGroup(t);break;case"GroupBackReference":this.visitGroupBackReference(t);break;case"Quantifier":this.visitQuantifier(t)}this.visitChildren(t)}visitPattern(t){}visitFlags(t){}visitDisjunction(t){}visitAlternative(t){}visitStartAnchor(t){}visitEndAnchor(t){}visitWordBoundary(t){}visitNonWordBoundary(t){}visitLookahead(t){}visitNegativeLookahead(t){}visitLookbehind(t){}visitNegativeLookbehind(t){}visitCharacter(t){}visitSet(t){}visitGroup(t){}visitGroupBackReference(t){}visitQuantifier(t){}}let _i={};const bi=new class{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(t){this.idx=t.idx,this.input=t.input,this.groupIdx=t.groupIdx}pattern(t){this.idx=0,this.input=t,this.groupIdx=0,this.consumeChar("/");const e=this.disjunction();this.consumeChar("/");const n={type:"Flags",loc:{begin:this.idx,end:t.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":yi(n,"global");break;case"i":yi(n,"ignoreCase");break;case"m":yi(n,"multiLine");break;case"u":yi(n,"unicode");break;case"y":yi(n,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:e,loc:this.loc(0)}}disjunction(){const t=[],e=this.idx;for(t.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),t.push(this.alternative());return{type:"Disjunction",value:t,loc:this.loc(e)}}alternative(){const t=[],e=this.idx;for(;this.isTerm();)t.push(this.term());return{type:"Alternative",value:t,loc:this.loc(e)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const t=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(t)};case"$":return{type:"EndAnchor",loc:this.loc(t)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(t)};case"B":return{type:"NonWordBoundary",loc:this.loc(t)}}throw Error("Invalid Assertion Escape");case"(":let e;switch(this.consumeChar("?"),this.popChar()){case"=":e="Lookahead";break;case"!":e="NegativeLookahead";break;case"<":switch(this.popChar()){case"=":e="Lookbehind";break;case"!":e="NegativeLookbehind"}}Ai(e);const n=this.disjunction();return this.consumeChar(")"),{type:e,value:n,loc:this.loc(t)}}return function(){throw Error("Internal Error - Should never get here!")}()}quantifier(t=!1){let e;const n=this.idx;switch(this.popChar()){case"*":e={atLeast:0,atMost:1/0};break;case"+":e={atLeast:1,atMost:1/0};break;case"?":e={atLeast:0,atMost:1};break;case"{":const n=this.integerIncludingZero();switch(this.popChar()){case"}":e={atLeast:n,atMost:n};break;case",":let t;this.isDigit()?(t=this.integerIncludingZero(),e={atLeast:n,atMost:t}):e={atLeast:n,atMost:1/0},this.consumeChar("}")}if(!0===t&&void 0===e)return;Ai(e)}if(!0!==t||void 0!==e)return Ai(e)?("?"===this.peekChar(0)?(this.consumeChar("?"),e.greedy=!1):e.greedy=!0,e.type="Quantifier",e.loc=this.loc(n),e):void 0}atom(){let t;const e=this.idx;switch(this.peekChar()){case".":t=this.dotAll();break;case"\\":t=this.atomEscape();break;case"[":t=this.characterClass();break;case"(":t=this.group()}if(void 0===t&&this.isPatternCharacter()&&(t=this.patternCharacter()),Ai(t))return t.loc=this.loc(e),this.isQuantifier()&&(t.quantifier=this.quantifier()),t}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Li("\n"),Li("\r"),Li("\u2028"),Li("\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 t,e=!1;switch(this.popChar()){case"d":t=vi;break;case"D":t=vi,e=!0;break;case"s":t=Ii;break;case"S":t=Ii,e=!0;break;case"w":t=Ni;break;case"W":t=Ni,e=!0}if(Ai(t))return{type:"Set",value:t,complement:e}}controlEscapeAtom(){let t;switch(this.popChar()){case"f":t=Li("\f");break;case"n":t=Li("\n");break;case"r":t=Li("\r");break;case"t":t=Li("\t");break;case"v":t=Li("\v")}if(Ai(t))return{type:"Character",value:t}}controlLetterEscapeAtom(){this.consumeChar("c");const t=this.popChar();if(!1===/[a-zA-Z]/.test(t))throw Error("Invalid ");return{type:"Character",value:t.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Li("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:Li(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case"\n":case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:Li(this.popChar())}}}characterClass(){const t=[];let e=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),e=!0);this.isClassAtom();){const e=this.classAtom();if(e.type,Ri(e)&&this.isRangeDash()){this.consumeChar("-");const n=this.classAtom();if(n.type,Ri(n)){if(n.value<e.value)throw Error("Range out of order in character class");t.push({from:e.value,to:n.value})}else Oi(e.value,t),t.push(Li("-")),Oi(n.value,t)}else Oi(e.value,t)}return this.consumeChar("]"),{type:"Set",complement:e,value:t}}classAtom(){switch(this.peekChar()){case"]":case"\n":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:Li("\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 t=!0;if(this.consumeChar("("),"?"===this.peekChar(0))this.consumeChar("?"),this.consumeChar(":"),t=!1;else this.groupIdx++;const e=this.disjunction();this.consumeChar(")");const n={type:"Group",capturing:t,value:e};return t&&(n.idx=this.groupIdx),n}positiveInteger(){let t=this.popChar();if(!1===ki.test(t))throw Error("Expecting a positive integer");for(;xi.test(this.peekChar(0));)t+=this.popChar();return parseInt(t,10)}integerIncludingZero(){let t=this.popChar();if(!1===xi.test(t))throw Error("Expecting an integer");for(;xi.test(this.peekChar(0));)t+=this.popChar();return parseInt(t,10)}patternCharacter(){const t=this.popChar();switch(t){case"\n":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:Li(t)}}}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 xi.test(this.peekChar(0))}isClassAtom(t=0){switch(this.peekChar(t)){case"]":case"\n":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)||"<"===this.peekChar(2)&&("="===this.peekChar(3)||"!"===this.peekChar(3)));default:return!1}}isQuantifier(){const t=this.saveState();try{return void 0!==this.quantifier(!0)}catch(e){return!1}finally{this.restoreState(t)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(t){let e="";for(let n=0;n<t;n++){const t=this.popChar();if(!1===Ci.test(t))throw Error("Expecting a HexDecimal digits");e+=t}return{type:"Character",value:parseInt(e,16)}}peekChar(t=0){return this.input[this.idx+t]}popChar(){const t=this.peekChar(0);return this.consumeChar(void 0),t}consumeChar(t){if(void 0!==t&&this.input[this.idx]!==t)throw Error("Expected: '"+t+"' 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(t){return{begin:t,end:this.idx}}};function Mi(t){const e=t.toString();if(_i.hasOwnProperty(e))return _i[e];{const t=bi.pattern(e);return _i[e]=t,t}}const Pi="Complement Sets are not supported for first char optimization",wi='Unable to use "first char" lexer optimizations:\n';function Di(t,e=!1){try{const e=Mi(t);return Fi(e.value,{},e.flags.ignoreCase)}catch(n){if(n.message===Pi)e&&qr(`${wi}\tUnable to optimize: < ${t.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n="\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."),Xr(`${wi}\n\tFailed parsing: < ${t.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Fi(t,e,n){switch(t.type){case"Disjunction":for(let i=0;i<t.value.length;i++)Fi(t.value[i],e,n);break;case"Alternative":const r=t.value;for(let t=0;t<r.length;t++){const i=r[t];switch(i.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"Lookbehind":case"NegativeLookbehind":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}const s=i;switch(s.type){case"Character":Bi(s.value,e,n);break;case"Set":if(!0===s.complement)throw Error(Pi);ur(s.value,t=>{if("number"==typeof t)Bi(t,e,n);else{const r=t;if(!0===n)for(let t=r.from;t<=r.to;t++)Bi(t,e,n);else{for(let t=r.from;t<=r.to&&t<ss;t++)Bi(t,e,n);if(r.to>=ss){const t=r.from>=ss?r.from:ss,n=r.to,i=as(t),s=as(n);for(let r=i;r<=s;r++)e[r]=r}}}});break;case"Group":Fi(s.value,e,n);break;default:throw Error("Non Exhaustive Match")}const o=void 0!==s.quantifier&&0===s.quantifier.atLeast;if("Group"===s.type&&!1===$i(s)||"Group"!==s.type&&!1===o)break}break;default:throw Error("non exhaustive match!")}return Ur(e)}function Bi(t,e,n){const r=as(t);e[r]=r,!0===n&&function(t,e){const n=String.fromCharCode(t),r=n.toUpperCase();if(r!==n){const t=as(r.charCodeAt(0));e[t]=t}else{const t=n.toLowerCase();if(t!==n){const n=as(t.charCodeAt(0));e[n]=n}}}(t,e)}function ji(t,e){return Tr(t.value,t=>{if("number"==typeof t)return br(e,t);{const n=t;return void 0!==Tr(e,t=>n.from<=t&&t<=n.to)}})}function $i(t){const e=t.quantifier;return!(!e||0!==e.atLeast)||!!t.value&&(I(t.value)?pr(t.value,$i):$i(t.value))}class Ki extends Ui{constructor(t){super(),this.targetCharCodes=t,this.found=!1}visitChildren(t){if(!0!==this.found){switch(t.type){case"Lookahead":return void this.visitLookahead(t);case"NegativeLookahead":return void this.visitNegativeLookahead(t);case"Lookbehind":return void this.visitLookbehind(t);case"NegativeLookbehind":return void this.visitNegativeLookbehind(t)}super.visitChildren(t)}}visitCharacter(t){br(this.targetCharCodes,t.value)&&(this.found=!0)}visitSet(t){t.complement?void 0===ji(t,this.targetCharCodes)&&(this.found=!0):void 0!==ji(t,this.targetCharCodes)&&(this.found=!0)}}function Gi(t,e){if(e instanceof RegExp){const n=Mi(e),r=new Ki(t);return r.visit(n),r.found}return void 0!==Tr(e,e=>br(t,e.charCodeAt(0)))}const zi="PATTERN",Wi="defaultMode",Vi="modes";function Hi(t,e){const n=(e=ir(e,{debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r","\n"],tracer:(t,e)=>e()})).tracer;let r;n("initCharCodeToOptimizedIndexMap",()=>{!function(){if(wr(os)){os=new Array(65536);for(let t=0;t<65536;t++)os[t]=t>255?255+~~(t/255):t}}()}),n("Reject Lexer.NA",()=>{r=zr(t,t=>t[zi]===Os.NA)});let i,s,o,a,c,h,u,l,d,p,f,m=!1;n("Transform Patterns",()=>{m=!1,i=Or(r,t=>{const e=t[zi];if(Fr(e)){const t=e.source;return 1!==t.length||"^"===t||"$"===t||"."===t||e.ignoreCase?2!==t.length||"\\"!==t[0]||br(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],t[1])?Zi(e):t[1]:t}if(G(e))return m=!0,{exec:e};if("object"==typeof e)return m=!0,e;if("string"==typeof e){if(1===e.length)return e;{const t=e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&");return Zi(new RegExp(t))}}throw Error("non exhaustive match")})}),n("misc mapping",()=>{s=Or(r,t=>t.tokenTypeIdx),o=Or(r,t=>{const e=t.GROUP;if(e!==Os.SKIPPED){if(kr(e))return e;if(Br(e))return!1;throw Error("non exhaustive match")}}),a=Or(r,t=>{const e=t.LONGER_ALT;if(e){return I(e)?Or(e,t=>Mr(r,t)):[Mr(r,e)]}}),c=Or(r,t=>t.PUSH_MODE),h=Or(r,t=>xr(t,"POP_MODE"))}),n("Line Terminator Handling",()=>{const t=rs(e.lineTerminatorCharacters);u=Or(r,t=>!1),"onlyOffset"!==e.positionTracking&&(u=Or(r,e=>xr(e,"LINE_BREAKS")?!!e.LINE_BREAKS:!1===ns(e,t)&&Gi(t,e.PATTERN)))}),n("Misc Mapping #2",()=>{l=Or(r,Ji),d=Or(i,ts),p=Gr(r,(t,e)=>{const n=e.GROUP;return kr(n)&&n!==Os.SKIPPED&&(t[n]=[]),t},{}),f=Or(i,(t,e)=>({pattern:i[e],longerAlt:a[e],canLineTerminator:u[e],isCustom:l[e],short:d[e],group:o[e],push:c[e],pop:h[e],tokenTypeIdx:s[e],tokenType:r[e]}))});let E=!0,g=[];return e.safeMode||n("First Char Optimization",()=>{g=Gr(r,(t,n,r)=>{if("string"==typeof n.PATTERN){const e=as(n.PATTERN.charCodeAt(0));is(t,e,f[r])}else if(I(n.START_CHARS_HINT)){let e;ur(n.START_CHARS_HINT,n=>{const i=as("string"==typeof n?n.charCodeAt(0):n);e!==i&&(e=i,is(t,i,f[r]))})}else if(Fr(n.PATTERN))if(n.PATTERN.unicode)E=!1,e.ensureOptimizations&&Xr(`${wi}\tUnable to analyze < ${n.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const i=Di(n.PATTERN,e.ensureOptimizations);wr(i)&&(E=!1),ur(i,e=>{is(t,e,f[r])})}else e.ensureOptimizations&&Xr(`${wi}\tTokenType: <${n.name}> is using a custom token pattern without providing <start_chars_hint> parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),E=!1;return t},[])}),{emptyGroups:p,patternIdxToConfig:f,charCodeToPatternIdxToConfig:g,hasCustom:m,canBeOptimized:E}}function Yi(t,e){let n=[];const r=function(t){const e=mr(t,t=>!xr(t,zi)),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- missing static 'PATTERN' property",type:Ts.MISSING_PATTERN,tokenTypes:[t]})),r=or(t,e);return{errors:n,valid:r}}(t);n=n.concat(r.errors);const i=function(t){const e=mr(t,t=>{const e=t[zi];return!(Fr(e)||G(e)||xr(e,"exec")||kr(e))}),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Ts.INVALID_PATTERN,tokenTypes:[t]})),r=or(t,e);return{errors:n,valid:r}}(r.valid),s=i.valid;return n=n.concat(i.errors),n=n.concat(function(t){let e=[];const n=mr(t,t=>Fr(t[zi]));return e=e.concat(function(t){class e extends Ui{constructor(){super(...arguments),this.found=!1}visitEndAnchor(t){this.found=!0}}const n=mr(t,t=>{const n=t.PATTERN;try{const t=Mi(n),r=new e;return r.visit(t),r.found}catch(r){return Xi.test(n.source)}}),r=Or(n,t=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+t.name+"<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:Ts.EOI_ANCHOR_FOUND,tokenTypes:[t]}));return r}(n)),e=e.concat(function(t){class e extends Ui{constructor(){super(...arguments),this.found=!1}visitStartAnchor(t){this.found=!0}}const n=mr(t,t=>{const n=t.PATTERN;try{const t=Mi(n),r=new e;return r.visit(t),r.found}catch(r){return qi.test(n.source)}}),r=Or(n,t=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+t.name+"<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:Ts.SOI_ANCHOR_FOUND,tokenTypes:[t]}));return r}(n)),e=e.concat(function(t){const e=mr(t,t=>{const e=t[zi];return e instanceof RegExp&&(e.multiline||e.global)}),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Ts.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[t]}));return n}(n)),e=e.concat(function(t){const e=[];let n=Or(t,n=>Gr(t,(t,r)=>(n.PATTERN.source!==r.PATTERN.source||br(e,r)||r.PATTERN===Os.NA||(e.push(r),t.push(r)),t),[]));n=In(n);const r=Or(mr(n,t=>t.length>1),t=>{const e=Or(t,t=>t.name);return{message:`The same RegExp pattern ->${Sr(t).PATTERN}<-has been used in all of the following Token Types: ${e.join(", ")} <-`,type:Ts.DUPLICATE_PATTERNS_FOUND,tokenTypes:t}});return r}(n)),e=e.concat(function(t){const e=mr(t,t=>t.PATTERN.test("")),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'PATTERN' must not match an empty string",type:Ts.EMPTY_MATCH_PATTERN,tokenTypes:[t]}));return n}(n)),e}(s)),n=n.concat(function(t){const e=mr(t,t=>{if(!xr(t,"GROUP"))return!1;const e=t.GROUP;return e!==Os.SKIPPED&&e!==Os.NA&&!kr(e)}),n=Or(e,t=>({message:"Token Type: ->"+t.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Ts.INVALID_GROUP_TYPE_FOUND,tokenTypes:[t]}));return n}(s)),n=n.concat(function(t,e){const n=mr(t,t=>void 0!==t.PUSH_MODE&&!br(e,t.PUSH_MODE)),r=Or(n,t=>({message:`Token Type: ->${t.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${t.PUSH_MODE}<-which does not exist`,type:Ts.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[t]}));return r}(s,e)),n=n.concat(function(t){const e=[],n=Gr(t,(t,e,n)=>{const r=e.PATTERN;return r===Os.NA||(kr(r)?t.push({str:r,idx:n,tokenType:e}):Fr(r)&&(i=r,void 0===Tr([".","\\","[","]","|","^","$","(",")","?","*","+","{"],t=>-1!==i.source.indexOf(t)))&&t.push({str:r.source,idx:n,tokenType:e})),t;var i},[]);return ur(t,(t,r)=>{ur(n,({str:n,idx:i,tokenType:s})=>{if(r<i&&function(t,e){if(Fr(e)){if(/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\?<!)/.test(e.source))return!1;const n=e.exec(t);return null!==n&&0===n.index}if(G(e))return e(t,0,[],{});if(xr(e,"exec"))return e.exec(t,0,[],{});if("string"==typeof e)return e===t;throw Error("non exhaustive match")}(n,t.PATTERN)){const n=`Token: ->${s.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${t.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:n,type:Ts.UNREACHABLE_PATTERN,tokenTypes:[t,s]})}})}),e}(s)),n}const Xi=/[^\\][$]/;const qi=/[^\\[][\^]|^\^/;function Zi(t){const e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function Qi(t,e,n){const r=[];let i=!1;const s=zr(In(be(Ur(t.modes))),t=>t[zi]===Os.NA),o=rs(n);return e&&ur(s,t=>{const e=ns(t,o);if(!1!==e){const n=function(t,e){if(e.issue===Ts.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${t.name}> Token Type\n\t Root cause: ${e.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Ts.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n\tThe problem is in the <${t.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}(t,e),i={message:n,type:e.issue,tokenType:t};r.push(i)}else xr(t,"LINE_BREAKS")?!0===t.LINE_BREAKS&&(i=!0):Gi(o,t.PATTERN)&&(i=!0)}),e&&!i&&r.push({message:"Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",type:Ts.NO_LINE_BREAKS_FLAGS}),r}function Ji(t){const e=t.PATTERN;if(Fr(e))return!1;if(G(e))return!0;if(xr(e,"exec"))return!0;if(kr(e))return!1;throw Error("non exhaustive match")}function ts(t){return!(!kr(t)||1!==t.length)&&t.charCodeAt(0)}const es={test:function(t){const e=t.length;for(let n=this.lastIndex;n<e;n++){const e=t.charCodeAt(n);if(10===e)return this.lastIndex=n+1,!0;if(13===e)return 10===t.charCodeAt(n+1)?this.lastIndex=n+2:this.lastIndex=n+1,!0}return!1},lastIndex:0};function ns(t,e){if(xr(t,"LINE_BREAKS"))return!1;if(Fr(t.PATTERN)){try{Gi(e,t.PATTERN)}catch(n){return{issue:Ts.IDENTIFY_TERMINATOR,errMsg:n.message}}return!1}if(kr(t.PATTERN))return!1;if(Ji(t))return{issue:Ts.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}function rs(t){return Or(t,t=>kr(t)?t.charCodeAt(0):t)}function is(t,e,n){void 0===t[e]?t[e]=[n]:t[e].push(n)}const ss=256;let os=[];function as(t){return t<ss?t:os[t]}function cs(t,e){const n=t.tokenTypeIdx;return n===e.tokenTypeIdx||!0===e.isParent&&!0===e.categoryMatchesMap[n]}function hs(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}let us=1;const ls={};function ds(t){const e=function(t){let e=Nn(t),n=t,r=!0;for(;r;){n=In(be(Or(n,t=>t.CATEGORIES)));const t=or(n,e);e=e.concat(t),wr(t)?r=!1:n=t}return e}(t);!function(t){ur(t,t=>{fs(t)||(ls[us]=t,t.tokenTypeIdx=us++),ms(t)&&!I(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),ms(t)||(t.CATEGORIES=[]),xr(t,"categoryMatches")||(t.categoryMatches=[]),function(t){return xr(t,"categoryMatchesMap")}(t)||(t.categoryMatchesMap={})})}(e),function(t){ur(t,t=>{ps([],t)})}(e),function(t){ur(t,t=>{t.categoryMatches=[],ur(t.categoryMatchesMap,(e,n)=>{t.categoryMatches.push(ls[n].tokenTypeIdx)})})}(e),ur(e,t=>{t.isParent=t.categoryMatches.length>0})}function ps(t,e){ur(t,t=>{e.categoryMatchesMap[t.tokenTypeIdx]=!0}),ur(e.CATEGORIES,n=>{const r=t.concat(e);br(r,n)||ps(r,n)})}function fs(t){return xr(t,"tokenTypeIdx")}function ms(t){return xr(t,"CATEGORIES")}function Es(t){return xr(t,"tokenTypeIdx")}const gs={buildUnableToPopLexerModeMessage:t=>`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`,buildUnexpectedCharactersMessage:(t,e,n,r,i,s)=>`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${n} characters.`};var Ts,Ss;(Ss=Ts||(Ts={}))[Ss.MISSING_PATTERN=0]="MISSING_PATTERN",Ss[Ss.INVALID_PATTERN=1]="INVALID_PATTERN",Ss[Ss.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",Ss[Ss.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",Ss[Ss.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",Ss[Ss.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",Ss[Ss.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",Ss[Ss.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",Ss[Ss.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",Ss[Ss.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",Ss[Ss.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",Ss[Ss.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",Ss[Ss.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",Ss[Ss.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",Ss[Ss.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",Ss[Ss.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",Ss[Ss.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",Ss[Ss.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE";const Ls={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:["\n","\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:gs,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Ls);class Os{constructor(t,e=Ls){if(this.lexerDefinition=t,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=(t,e)=>{if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${t}>`);const{time:r,value:i}=Zr(e),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${t}> time: ${r}ms`),this.traceInitIndent--,i}return e()},"boolean"==typeof e)throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");this.config=se({},Ls,e);const n=this.config.traceInitPerf;!0===n?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof n&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,r=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Ls.lineTerminatorsPattern)this.config.lineTerminatorsPattern=es;else if(this.config.lineTerminatorCharacters===Ls.lineTerminatorCharacters)throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");if(e.safeMode&&e.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),I(t)?n={modes:{defaultMode:Nn(t)},defaultMode:Wi}:(r=!1,n=Nn(t))}),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(function(t){const e=[];return xr(t,Wi)||e.push({message:"A MultiMode Lexer cannot be initialized without a <"+Wi+"> property in its definition\n",type:Ts.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),xr(t,Vi)||e.push({message:"A MultiMode Lexer cannot be initialized without a <modes> property in its definition\n",type:Ts.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),xr(t,Vi)&&xr(t,Wi)&&!xr(t.modes,t.defaultMode)&&e.push({message:`A MultiMode Lexer cannot be initialized with a ${Wi}: <${t.defaultMode}>which does not exist\n`,type:Ts.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),xr(t,Vi)&&ur(t.modes,(t,n)=>{ur(t,(r,i)=>{Br(r)?e.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${n}> at index: <${i}>\n`,type:Ts.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED}):xr(r,"LONGER_ALT")&&ur(I(r.LONGER_ALT)?r.LONGER_ALT:[r.LONGER_ALT],i=>{Br(i)||br(t,i)||e.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${i.name}> on token <${r.name}> outside of mode <${n}>\n`,type:Ts.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})})}),e}(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Qi(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},ur(n.modes,(t,e)=>{n.modes[e]=zr(t,t=>Br(t))});const i=ne(n.modes);if(ur(n.modes,(t,n)=>{this.TRACE_INIT(`Mode: <${n}> processing`,()=>{if(this.modes.push(n),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Yi(t,i))}),wr(this.lexerDefinitionErrors)){let r;ds(t),this.TRACE_INIT("analyzeTokenTypes",()=>{r=Hi(t,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:e.positionTracking,ensureOptimizations:e.ensureOptimizations,safeMode:e.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[n]=r.patternIdxToConfig,this.charCodeToPatternIdxToConfig[n]=r.charCodeToPatternIdxToConfig,this.emptyGroups=se({},this.emptyGroups,r.emptyGroups),this.hasCustom=r.hasCustom||this.hasCustom,this.canModeBeOptimized[n]=r.canBeOptimized}})}),this.defaultMode=n.defaultMode,!wr(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const t=Or(this.lexerDefinitionErrors,t=>t.message).join("-----------------------\n");throw new Error("Errors detected in definition of Lexer:\n"+t)}ur(this.lexerDefinitionWarning,t=>{qr(t.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(r&&(this.handleModes=ot),!1===this.trackStartLines&&(this.computeNewColumn=K),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=ot),/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))throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}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 t=Gr(this.canModeBeOptimized,(t,e,n)=>(!1===e&&t.push(n),t),[]);if(e.ensureOptimizations&&!wr(t))throw Error(`Lexer Modes: < ${t.join(", ")} > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{_i={}}),this.TRACE_INIT("toFastProperties",()=>{Qr(this)})})}tokenize(t,e=this.defaultMode){if(!wr(this.lexerDefinitionErrors)){const t=Or(this.lexerDefinitionErrors,t=>t.message).join("-----------------------\n");throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n"+t)}return this.tokenizeInternal(t,e)}tokenizeInternal(t,e){let n,r,i,s,o,a,c,h,u,l,d,p,f,m,E;const g=t,T=g.length;let S=0,L=0;const O=this.hasCustom?0:Math.floor(t.length/10),y=new Array(O),A=[];let R=this.trackStartLines?1:void 0,v=this.trackStartLines?1:void 0;const N=function(t){const e={};return ur(ne(t),n=>{const r=t[n];if(!I(r))throw Error("non exhaustive match");e[n]=[]}),e}(this.emptyGroups),C=this.trackStartLines,x=this.config.lineTerminatorsPattern;let k=0,U=[],_=[];const b=[],M=[];Object.freeze(M);let P=!1;const w=t=>{if(1===b.length&&void 0===t.tokenType.PUSH_MODE){const e=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(t);A.push({offset:t.startOffset,line:t.startLine,column:t.startColumn,length:t.image.length,message:e})}else{b.pop();const t=ar(b);U=this.patternIdxToConfig[t],_=this.charCodeToPatternIdxToConfig[t],k=U.length;const e=this.canModeBeOptimized[t]&&!1===this.config.safeMode;P=!(!_||!e)}};function D(t){b.push(t),_=this.charCodeToPatternIdxToConfig[t],U=this.patternIdxToConfig[t],k=U.length,k=U.length;const e=this.canModeBeOptimized[t]&&!1===this.config.safeMode;P=!(!_||!e)}let F;D.call(this,e);const B=this.config.recoveryEnabled;for(;S<T;){a=null,u=-1;const e=g.charCodeAt(S);let O;if(P){const t=as(e),n=_[t];O=void 0!==n?n:M}else O=U;const I=O.length;for(n=0;n<I;n++){F=O[n];const r=F.pattern;c=null;const l=F.short;if(!1!==l?e===l&&(u=1,a=r):!0===F.isCustom?(E=r.exec(g,S,y,N),null!==E?(a=E[0],u=a.length,void 0!==E.payload&&(c=E.payload)):a=null):(r.lastIndex=S,u=this.matchLength(r,t,S)),-1!==u){if(o=F.longerAlt,void 0!==o){a=t.substring(S,S+u);const e=o.length;for(i=0;i<e;i++){const e=U[o[i]],n=e.pattern;if(h=null,!0===e.isCustom?(E=n.exec(g,S,y,N),null!==E?(s=E[0],void 0!==E.payload&&(h=E.payload)):s=null):(n.lastIndex=S,s=this.match(n,t,S)),s&&s.length>a.length){a=s,u=s.length,c=h,F=e;break}}}break}}if(-1!==u){if(l=F.group,void 0!==l&&(a=null!==a?a:t.substring(S,S+u),d=F.tokenTypeIdx,p=this.createTokenInstance(a,S,d,F.tokenType,R,v,u),this.handlePayload(p,c),!1===l?L=this.addToken(y,L,p):N[l].push(p)),!0===C&&!0===F.canLineTerminator){let e,n,r=0;x.lastIndex=0;do{a=null!==a?a:t.substring(S,S+u),e=x.test(a),!0===e&&(n=x.lastIndex-1,r++)}while(!0===e);0!==r?(R+=r,v=u-n,this.updateTokenEndLineColumnLocation(p,l,n,r,R,v,u)):v=this.computeNewColumn(v,u)}else v=this.computeNewColumn(v,u);S+=u,this.handleModes(F,w,D,p)}else{const e=S,n=R,i=v;let s=!1===B;for(;!1===s&&S<T;)for(S++,r=0;r<k;r++){const e=U[r],n=e.pattern,i=e.short;if(!1!==i?g.charCodeAt(S)===i&&(s=!0):!0===e.isCustom?s=null!==n.exec(g,S,y,N):(n.lastIndex=S,s=null!==n.exec(t)),!0===s)break}if(f=S-e,v=this.computeNewColumn(v,f),m=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(g,e,f,n,i,ar(b)),A.push({offset:e,line:n,column:i,length:f,message:m}),!1===B)break}}return this.hasCustom||(y.length=L),{tokens:y,groups:N,errors:A}}handleModes(t,e,n,r){if(!0===t.pop){const i=t.push;e(r),void 0!==i&&n.call(this,i)}else void 0!==t.push&&n.call(this,t.push)}updateTokenEndLineColumnLocation(t,e,n,r,i,s,o){let a,c;void 0!==e&&(a=n===o-1,c=a?-1:0,1===r&&!0===a||(t.endLine=i+c,t.endColumn=s-1-c))}computeNewColumn(t,e){return t+e}createOffsetOnlyToken(t,e,n,r){return{image:t,startOffset:e,tokenTypeIdx:n,tokenType:r}}createStartOnlyToken(t,e,n,r,i,s){return{image:t,startOffset:e,startLine:i,startColumn:s,tokenTypeIdx:n,tokenType:r}}createFullToken(t,e,n,r,i,s,o){return{image:t,startOffset:e,endOffset:e+o-1,startLine:i,endLine:i,startColumn:s,endColumn:s+o-1,tokenTypeIdx:n,tokenType:r}}addTokenUsingPush(t,e,n){return t.push(n),e}addTokenUsingMemberAccess(t,e,n){return t[e]=n,++e}handlePayloadNoCustom(t,e){}handlePayloadWithCustom(t,e){null!==e&&(t.payload=e)}match(t,e,n){return!0===t.test(e)?e.substring(n,t.lastIndex):null}matchLength(t,e,n){return!0===t.test(e)?t.lastIndex-n:-1}}function ys(t){return As(t)?t.LABEL:t.name}function As(t){return kr(t.LABEL)&&""!==t.LABEL}Os.SKIPPED="This marks a skipped Token pattern, this means each token identified by it will be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",Os.NA=/NOT_APPLICABLE/;const Rs="parent",vs="categories",Ns="label",Is="group",Cs="push_mode",xs="pop_mode",ks="longer_alt",Us="line_breaks",_s="start_chars_hint";function bs(t){return function(t){const e=t.pattern,n={};n.name=t.name,Br(e)||(n.PATTERN=e);if(xr(t,Rs))throw"The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.";xr(t,vs)&&(n.CATEGORIES=t[vs]);ds([n]),xr(t,Ns)&&(n.LABEL=t[Ns]);xr(t,Is)&&(n.GROUP=t[Is]);xr(t,xs)&&(n.POP_MODE=t[xs]);xr(t,Cs)&&(n.PUSH_MODE=t[Cs]);xr(t,ks)&&(n.LONGER_ALT=t[ks]);xr(t,Us)&&(n.LINE_BREAKS=t[Us]);xr(t,_s)&&(n.START_CHARS_HINT=t[_s]);return n}(t)}const Ms=bs({name:"EOF",pattern:Os.NA});function Ps(t,e,n,r,i,s,o,a){return{image:e,startOffset:n,endOffset:r,startLine:i,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}ds([Ms]);const ws={buildMismatchTokenMessage:({expected:t,actual:e,previous:n,ruleName:r})=>`Expecting ${As(t)?`--\x3e ${ys(t)} <--`:`token of type --\x3e ${t.name} <--`} but found --\x3e '${e.image}' <--`,buildNotAllInputParsedMessage:({firstRedundant:t,ruleName:e})=>"Redundant input, expecting EOF but found: "+t.image,buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:n,customUserDescription:r,ruleName:i}){const s="Expecting: ",o="\nbut found: '"+Sr(e).image+"'";if(r)return s+r+o;{const e=Or(Gr(t,(t,e)=>t.concat(e),[]),t=>`[${Or(t,t=>ys(t)).join(", ")}]`);return s+`one of these possible Token sequences:\n${Or(e,(t,e)=>` ${e+1}. ${t}`).join("\n")}`+o}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:n,ruleName:r}){const i="Expecting: ",s="\nbut found: '"+Sr(e).image+"'";if(n)return i+n+s;return i+`expecting at least one iteration which starts with one of these possible Token sequences::\n <${Or(t,t=>`[${Or(t,t=>ys(t)).join(",")}]`).join(" ,")}>`+s}};Object.freeze(ws);const Ds={buildRuleNotFoundError:(t,e)=>"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+"<-\ninside top level rule: ->"+t.name+"<-"},Fs={buildDuplicateFoundError(t,e){const n=t.name,r=Sr(e),i=r.idx,s=fi(r),o=(a=r)instanceof ui?a.terminalType.name:a instanceof ei?a.nonTerminalName:"";var a;let c=`->${s}${i>0?i:""}<- ${o?`with argument: ->${o}<-`:""}\n appears more than once (${e.length} times) in the top level rule: ->${n}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,"\n"),c},buildNamespaceConflictError:t=>`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`,buildAlternationPrefixAmbiguityError(t){const e=Or(t.prefixPath,t=>ys(t)).join(", "),n=0===t.alternation.idx?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix\nin <OR${n}> inside <${t.topLevelRule.name}> Rule,\n<${e}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`},buildAlternationAmbiguityError(t){const e=0===t.alternation.idx?"":t.alternation.idx,n=0===t.prefixPath.length;let r=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in <OR${e}> inside <${t.topLevelRule.name}> Rule,\n`;if(n)r+="These alternatives are all empty (match no tokens), making them indistinguishable.\nOnly the last alternative may be empty.\n";else{r+=`<${Or(t.prefixPath,t=>ys(t)).join(", ")}> may appears as a prefix path in all these alternatives.\n`}return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r},buildEmptyRepetitionError(t){let e=fi(t.repetition);0!==t.repetition.idx&&(e+=t.repetition.idx);return`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`},buildTokenNameError:t=>"deprecated",buildEmptyAlternationError:t=>`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in <OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`,buildTooManyAlternativesError:t=>`An Alternation cannot have more than 256 alternatives:\n<OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.\n has ${t.alternation.definition.length+1} alternatives.`,buildLeftRecursionError(t){const e=t.topLevelRule.name;return`Left Recursion found in grammar.\nrule: <${e}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${`${e} --\x3e ${Or(t.leftRecursionPath,t=>t.name).concat([e]).join(" --\x3e ")}`}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError:t=>"deprecated",buildDuplicateRuleNameError(t){let e;e=t.topLevelRule instanceof ni?t.topLevelRule.name:t.topLevelRule;return`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}};class Bs extends di{constructor(t,e){super(),this.nameToTopRule=t,this.errMsgProvider=e,this.errors=[]}resolveRefs(){ur(Ur(this.nameToTopRule),t=>{this.currTopLevel=t,t.accept(this)})}visitNonTerminal(t){const e=this.nameToTopRule[t.nonTerminalName];if(e)t.referencedRule=e;else{const e=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:e,type:ha.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}}}class js extends mi{constructor(t,e){super(),this.topProd=t,this.path=e,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=Nn(this.path.ruleStack).reverse(),this.occurrenceStack=Nn(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(t,e=[]){this.found||super.walk(t,e)}walkProdRef(t,e,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){const r=e.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,r)}}updateExpectedNext(){wr(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}}class $s extends js{constructor(t,e){super(t,e),this.path=e,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(t,e,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){const t=e.concat(n),r=new ri({definition:t});this.possibleTokTypes=gi(r),this.found=!0}}}class Ks extends mi{constructor(t,e){super(),this.topRule=t,this.occurrence=e,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}}class Gs extends Ks{walkMany(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkMany(t,e,n)}}class zs extends Ks{walkManySep(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkManySep(t,e,n)}}class Ws extends Ks{walkAtLeastOne(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkAtLeastOne(t,e,n)}}class Vs extends Ks{walkAtLeastOneSep(t,e,n){if(t.idx===this.occurrence){const t=Sr(e.concat(n));this.result.isEndOfRule=void 0===t,t instanceof ui&&(this.result.token=t.terminalType,this.result.occurrence=t.idx)}else super.walkAtLeastOneSep(t,e,n)}}function Hs(t,e,n=[]){n=Nn(n);let r=[],i=0;function s(s){const o=Hs(s.concat(cr(t,i+1)),e,n);return r.concat(o)}for(;n.length<e&&i<t.length;){const e=t[i];if(e instanceof ri)return s(e.definition);if(e instanceof ei)return s(e.definition);if(e instanceof ii)r=s(e.definition);else{if(e instanceof si){return s(e.definition.concat([new ai({definition:e.definition})]))}if(e instanceof oi){return s([new ri({definition:e.definition}),new ai({definition:[new ui({terminalType:e.separator})].concat(e.definition)})])}if(e instanceof ci){const t=e.definition.concat([new ai({definition:[new ui({terminalType:e.separator})].concat(e.definition)})]);r=s(t)}else if(e instanceof ai){const t=e.definition.concat([new ai({definition:e.definition})]);r=s(t)}else{if(e instanceof hi)return ur(e.definition,t=>{!1===wr(t.definition)&&(r=s(t.definition))}),r;if(!(e instanceof ui))throw Error("non exhaustive match");n.push(e.terminalType)}}i++}return r.push({partialPath:n,suffixDef:cr(t,i)}),r}function Ys(t,e,n,r){const i="EXIT_NONE_TERMINAL",s=[i],o="EXIT_ALTERNATIVE";let a=!1;const c=e.length,h=c-r-1,u=[],l=[];for(l.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!wr(l);){const t=l.pop();if(t===o){a&&ar(l).idx<=h&&l.pop();continue}const r=t.def,d=t.idx,p=t.ruleStack,f=t.occurrenceStack;if(wr(r))continue;const m=r[0];if(m===i){const t={idx:d,def:cr(r),ruleStack:hr(p),occurrenceStack:hr(f)};l.push(t)}else if(m instanceof ui)if(d<c-1){const t=d+1;if(n(e[t],m.terminalType)){const e={idx:t,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(e)}}else{if(d!==c-1)throw Error("non exhaustive match");u.push({nextTokenType:m.terminalType,nextTokenOccurrence:m.idx,ruleStack:p,occurrenceStack:f}),a=!0}else if(m instanceof ei){const t=Nn(p);t.push(m.nonTerminalName);const e=Nn(f);e.push(m.idx);const n={idx:d,def:m.definition.concat(s,cr(r)),ruleStack:t,occurrenceStack:e};l.push(n)}else if(m instanceof ii){const t={idx:d,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o);const e={idx:d,def:m.definition.concat(cr(r)),ruleStack:p,occurrenceStack:f};l.push(e)}else if(m instanceof si){const t=new ai({definition:m.definition,idx:m.idx}),e={idx:d,def:m.definition.concat([t],cr(r)),ruleStack:p,occurrenceStack:f};l.push(e)}else if(m instanceof oi){const t=new ui({terminalType:m.separator}),e=new ai({definition:[t].concat(m.definition),idx:m.idx}),n={idx:d,def:m.definition.concat([e],cr(r)),ruleStack:p,occurrenceStack:f};l.push(n)}else if(m instanceof ci){const t={idx:d,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o);const e=new ui({terminalType:m.separator}),n=new ai({definition:[e].concat(m.definition),idx:m.idx}),i={idx:d,def:m.definition.concat([n],cr(r)),ruleStack:p,occurrenceStack:f};l.push(i)}else if(m instanceof ai){const t={idx:d,def:cr(r),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o);const e=new ai({definition:m.definition,idx:m.idx}),n={idx:d,def:m.definition.concat([e],cr(r)),ruleStack:p,occurrenceStack:f};l.push(n)}else if(m instanceof hi)for(let e=m.definition.length-1;e>=0;e--){const t={idx:d,def:m.definition[e].definition.concat(cr(r)),ruleStack:p,occurrenceStack:f};l.push(t),l.push(o)}else if(m instanceof ri)l.push({idx:d,def:m.definition.concat(cr(r)),ruleStack:p,occurrenceStack:f});else{if(!(m instanceof ni))throw Error("non exhaustive match");l.push(Xs(m,d,p,f))}}return u}function Xs(t,e,n,r){const i=Nn(n);i.push(t.name);const s=Nn(r);return s.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:s}}var qs,Zs;function Qs(t){if(t instanceof ii||"Option"===t)return qs.OPTION;if(t instanceof ai||"Repetition"===t)return qs.REPETITION;if(t instanceof si||"RepetitionMandatory"===t)return qs.REPETITION_MANDATORY;if(t instanceof oi||"RepetitionMandatoryWithSeparator"===t)return qs.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof ci||"RepetitionWithSeparator"===t)return qs.REPETITION_WITH_SEPARATOR;if(t instanceof hi||"Alternation"===t)return qs.ALTERNATION;throw Error("non exhaustive match")}function Js(t,e,n,r){const i=t.length,s=pr(t,t=>pr(t,t=>1===t.length));if(e)return function(e){const r=Or(e,t=>t.GATE);for(let s=0;s<i;s++){const e=t[s],i=e.length,o=r[s];if(void 0===o||!1!==o.call(this))t:for(let t=0;t<i;t++){const r=e[t],i=r.length;for(let t=0;t<i;t++){const e=this.LA_FAST(t+1);if(!1===n(e,r[t]))continue t}return s}}};if(s&&!r){const e=Gr(Or(t,t=>be(t)),(t,e,n)=>(ur(e,e=>{xr(t,e.tokenTypeIdx)||(t[e.tokenTypeIdx]=n),ur(e.categoryMatches,e=>{xr(t,e)||(t[e]=n)})}),t),{});return function(){const t=this.LA_FAST(1);return e[t.tokenTypeIdx]}}return function(){for(let e=0;e<i;e++){const r=t[e],i=r.length;t:for(let t=0;t<i;t++){const i=r[t],s=i.length;for(let t=0;t<s;t++){const e=this.LA_FAST(t+1);if(!1===n(e,i[t]))continue t}return e}}}}function to(t,e,n){const r=pr(t,t=>1===t.length),i=t.length;if(r&&!n){const e=be(t);if(1===e.length&&wr(e[0].categoryMatches)){const t=e[0].tokenTypeIdx;return function(){return this.LA_FAST(1).tokenTypeIdx===t}}{const t=Gr(e,(t,e,n)=>(t[e.tokenTypeIdx]=!0,ur(e.categoryMatches,e=>{t[e]=!0}),t),[]);return function(){const e=this.LA_FAST(1);return!0===t[e.tokenTypeIdx]}}}return function(){t:for(let n=0;n<i;n++){const r=t[n],i=r.length;for(let t=0;t<i;t++){const n=this.LA_FAST(t+1);if(!1===e(n,r[t]))continue t}return!0}return!1}}(Zs=qs||(qs={}))[Zs.OPTION=0]="OPTION",Zs[Zs.REPETITION=1]="REPETITION",Zs[Zs.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",Zs[Zs.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",Zs[Zs.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",Zs[Zs.ALTERNATION=5]="ALTERNATION";class eo extends mi{constructor(t,e,n){super(),this.topProd=t,this.targetOccurrence=e,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(t,e,n,r){return t.idx===this.targetOccurrence&&this.targetProdType===e&&(this.restDef=n.concat(r),!0)}walkOption(t,e,n){this.checkIsTarget(t,qs.OPTION,e,n)||super.walkOption(t,e,n)}walkAtLeastOne(t,e,n){this.checkIsTarget(t,qs.REPETITION_MANDATORY,e,n)||super.walkOption(t,e,n)}walkAtLeastOneSep(t,e,n){this.checkIsTarget(t,qs.REPETITION_MANDATORY_WITH_SEPARATOR,e,n)||super.walkOption(t,e,n)}walkMany(t,e,n){this.checkIsTarget(t,qs.REPETITION,e,n)||super.walkOption(t,e,n)}walkManySep(t,e,n){this.checkIsTarget(t,qs.REPETITION_WITH_SEPARATOR,e,n)||super.walkOption(t,e,n)}}class no extends di{constructor(t,e,n){super(),this.targetOccurrence=t,this.targetProdType=e,this.targetRef=n,this.result=[]}checkIsTarget(t,e){t.idx!==this.targetOccurrence||this.targetProdType!==e||void 0!==this.targetRef&&t!==this.targetRef||(this.result=t.definition)}visitOption(t){this.checkIsTarget(t,qs.OPTION)}visitRepetition(t){this.checkIsTarget(t,qs.REPETITION)}visitRepetitionMandatory(t){this.checkIsTarget(t,qs.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(t){this.checkIsTarget(t,qs.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(t){this.checkIsTarget(t,qs.REPETITION_WITH_SEPARATOR)}visitAlternation(t){this.checkIsTarget(t,qs.ALTERNATION)}}function ro(t){const e=new Array(t);for(let n=0;n<t;n++)e[n]=[];return e}function io(t){let e=[""];for(let n=0;n<t.length;n++){const r=t[n],i=[];for(let t=0;t<e.length;t++){const n=e[t];i.push(n+"_"+r.tokenTypeIdx);for(let t=0;t<r.categoryMatches.length;t++){const e="_"+r.categoryMatches[t];i.push(n+e)}}e=i}return e}function so(t,e,n){for(let r=0;r<t.length;r++){if(r===n)continue;const i=t[r];for(let t=0;t<e.length;t++){if(!0===i[e[t]])return!1}}return!0}function oo(t,e){const n=Or(t,t=>Hs([t],1)),r=ro(n.length),i=Or(n,t=>{const e={};return ur(t,t=>{ur(io(t.partialPath),t=>{e[t]=!0})}),e});let s=n;for(let o=1;o<=e;o++){const t=s;s=ro(t.length);for(let n=0;n<t.length;n++){const a=t[n];for(let t=0;t<a.length;t++){const c=a[t].partialPath,h=a[t].suffixDef,u=io(c);if(so(i,u,n)||wr(h)||c.length===e){const t=r[n];if(!1===ho(t,c)){t.push(c);for(let t=0;t<u.length;t++){const e=u[t];i[n][e]=!0}}}else{const t=Hs(h,o+1,c);s[n]=s[n].concat(t),ur(t,t=>{ur(io(t.partialPath),t=>{i[n][t]=!0})})}}}}return r}function ao(t,e,n,r){const i=new no(t,qs.ALTERNATION,r);return e.accept(i),oo(i.result,n)}function co(t,e,n,r){const i=new no(t,n);e.accept(i);const s=i.result,o=new eo(e,t,n).startWalking();return oo([new ri({definition:s}),new ri({definition:o})],r)}function ho(t,e){t:for(let n=0;n<t.length;n++){const r=t[n];if(r.length===e.length){for(let t=0;t<r.length;t++){const n=e[t],i=r[t];if(!1===(n===i||void 0!==i.categoryMatchesMap[n.tokenTypeIdx]))continue t}return!0}}return!1}function uo(t){return pr(t,t=>pr(t,t=>pr(t,t=>wr(t.categoryMatches))))}function lo(t,e,n,r){const i=yr(t,t=>function(t,e){const n=new mo;t.accept(n);const r=n.allProductions,i=Nr(r,po),s=Or(Ur($r(i,t=>t.length>1)),n=>{const r=Sr(n),i=e.buildDuplicateFoundError(t,n),s=fi(r),o={message:i,type:ha.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:s,occurrence:r.idx},a=fo(r);return a&&(o.parameter=a),o});return s}(t,n)),s=function(t,e,n){const r=[],i=Or(e,t=>t.name);return ur(t,t=>{const e=t.name;if(br(i,e)){const i=n.buildNamespaceConflictError(t);r.push({message:i,type:ha.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:e})}}),r}(t,e,n),o=yr(t,t=>function(t,e){const n=new To;t.accept(n);const r=yr(n.alternations,n=>n.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:n}),type:ha.TOO_MANY_ALTS,ruleName:t.name,occurrence:n.idx}]:[]);return r}(t,n)),a=yr(t,e=>function(t,e,n,r){const i=[],s=Gr(e,(e,n)=>n.name===t.name?e+1:e,0);if(s>1){const e=r.buildDuplicateRuleNameError({topLevelRule:t,grammarName:n});i.push({message:e,type:ha.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}(e,t,r,n));return i.concat(s,o,a)}function po(t){return`${fi(t)}_#_${t.idx}_#_${fo(t)}`}function fo(t){return t instanceof ui?t.terminalType.name:t instanceof ei?t.nonTerminalName:""}class mo extends di{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(t){this.allProductions.push(t)}visitOption(t){this.allProductions.push(t)}visitRepetitionWithSeparator(t){this.allProductions.push(t)}visitRepetitionMandatory(t){this.allProductions.push(t)}visitRepetitionMandatoryWithSeparator(t){this.allProductions.push(t)}visitRepetition(t){this.allProductions.push(t)}visitAlternation(t){this.allProductions.push(t)}visitTerminal(t){this.allProductions.push(t)}}function Eo(t,e,n,r=[]){const i=[],s=go(e.definition);if(wr(s))return[];{const e=t.name;br(s,t)&&i.push({message:n.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:r}),type:ha.LEFT_RECURSION,ruleName:e});const o=yr(or(s,r.concat([t])),e=>{const i=Nn(r);return i.push(e),Eo(t,e,n,i)});return i.concat(o)}}function go(t){let e=[];if(wr(t))return e;const n=Sr(t);if(n instanceof ei)e.push(n.referencedRule);else if(n instanceof ri||n instanceof ii||n instanceof si||n instanceof oi||n instanceof ci||n instanceof ai)e=e.concat(go(n.definition));else if(n instanceof hi)e=be(Or(n.definition,t=>go(t.definition)));else if(!(n instanceof ui))throw Error("non exhaustive match");const r=pi(n),i=t.length>1;if(r&&i){const n=cr(t);return e.concat(go(n))}return e}class To extends di{constructor(){super(...arguments),this.alternations=[]}visitAlternation(t){this.alternations.push(t)}}function So(t,e,n){const r=new To;t.accept(r);let i=r.alternations;i=zr(i,t=>!0===t.ignoreAmbiguities);const s=yr(i,r=>{const i=r.idx,s=r.maxLookahead||e,o=ao(i,t,s,r),a=function(t,e,n,r){const i=[],s=Gr(t,(n,r,s)=>(!0===e.definition[s].ignoreAmbiguities||ur(r,r=>{const o=[s];ur(t,(t,n)=>{s!==n&&ho(t,r)&&!0!==e.definition[n].ignoreAmbiguities&&o.push(n)}),o.length>1&&!ho(i,r)&&(i.push(r),n.push({alts:o,path:r}))}),n),[]),o=Or(s,t=>{const i=Or(t.alts,t=>t+1);return{message:r.buildAlternationAmbiguityError({topLevelRule:n,alternation:e,ambiguityIndices:i,prefixPath:t.path}),type:ha.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:e.idx,alternatives:t.alts}});return o}(o,r,t,n),c=function(t,e,n,r){const i=Gr(t,(t,e,n)=>{const r=Or(e,t=>({idx:n,path:t}));return t.concat(r)},[]),s=In(yr(i,t=>{if(!0===e.definition[t.idx].ignoreAmbiguities)return[];const s=t.idx,o=t.path;return Or(mr(i,t=>{return!0!==e.definition[t.idx].ignoreAmbiguities&&t.idx<s&&(n=t.path,r=o,n.length<r.length&&pr(n,(t,e)=>{const n=r[e];return t===n||n.categoryMatchesMap[t.tokenTypeIdx]}));var n,r}),t=>{const i=[t.idx+1,s+1],o=0===e.idx?"":e.idx;return{message:r.buildAlternationPrefixAmbiguityError({topLevelRule:n,alternation:e,ambiguityIndices:i,prefixPath:t.path}),type:ha.AMBIGUOUS_PREFIX_ALTS,ruleName:n.name,occurrence:o,alternatives:i}})}));return s}(o,r,t,n);return a.concat(c)});return s}class Lo extends di{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(t){this.allProductions.push(t)}visitRepetitionMandatory(t){this.allProductions.push(t)}visitRepetitionMandatoryWithSeparator(t){this.allProductions.push(t)}visitRepetition(t){this.allProductions.push(t)}}function Oo(t){const e=ir(t,{errMsgProvider:Ds}),n={};return ur(t.rules,t=>{n[t.name]=t}),function(t,e){const n=new Bs(t,e);return n.resolveRefs(),n.errors}(n,e.errMsgProvider)}const yo="MismatchedTokenException",Ao="NoViableAltException",Ro="EarlyExitException",vo="NotAllInputParsedException",No=[yo,Ao,Ro,vo];function Io(t){return br(No,t.name)}Object.freeze(No);class Co extends Error{constructor(t,e){super(t),this.token=e,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class xo extends Co{constructor(t,e,n){super(t,e),this.previousToken=n,this.name=yo}}class ko extends Co{constructor(t,e,n){super(t,e),this.previousToken=n,this.name=Ao}}class Uo extends Co{constructor(t,e){super(t,e),this.name=vo}}class _o extends Co{constructor(t,e,n){super(t,e),this.previousToken=n,this.name=Ro}}const bo={},Mo="InRuleRecoveryException";class Po extends Error{constructor(t){super(t),this.name=Mo}}function wo(t,e,n,r,i,s,o){const a=this.getKeyForAutomaticLookahead(r,i);let c=this.firstAfterRepMap[a];if(void 0===c){const t=this.getCurrRuleFullName();c=new s(this.getGAstProductions()[t],i).startWalking(),this.firstAfterRepMap[a]=c}let h=c.token,u=c.occurrence;const l=c.isEndOfRule;0===this.RULE_STACK_IDX&&l&&void 0===h&&(h=Ms,u=1),void 0!==h&&void 0!==u&&this.shouldInRepetitionRecoveryBeTried(h,u,o)&&this.tryInRepetitionRecovery(t,e,n,h)}const Do=1024,Fo=1280,Bo=1536;function jo(t,e,n){return n|e|t}class $o{constructor(t){var e;this.maxLookahead=null!==(e=null==t?void 0:t.maxLookahead)&&void 0!==e?e:aa.maxLookahead}validate(t){const e=this.validateNoLeftRecursion(t.rules);if(wr(e)){const n=this.validateEmptyOrAlternatives(t.rules),r=this.validateAmbiguousAlternationAlternatives(t.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(t.rules,this.maxLookahead);return[...e,...n,...r,...i]}return e}validateNoLeftRecursion(t){return yr(t,t=>Eo(t,t,Fs))}validateEmptyOrAlternatives(t){return yr(t,t=>function(t,e){const n=new To;return t.accept(n),yr(n.alternations,n=>yr(hr(n.definition),(r,i)=>wr(Ys([r],[],cs,1))?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:n,emptyChoiceIdx:i}),type:ha.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:n.idx,alternative:i+1}]:[]))}(t,Fs))}validateAmbiguousAlternationAlternatives(t,e){return yr(t,t=>So(t,e,Fs))}validateSomeNonEmptyLookaheadPath(t,e){return function(t,e,n){const r=[];return ur(t,t=>{const i=new Lo;t.accept(i),ur(i.allProductions,i=>{const s=Qs(i),o=i.maxLookahead||e;if(wr(be(co(i.idx,t,s,o)[0]))){const e=n.buildEmptyRepetitionError({topLevelRule:t,repetition:i});r.push({message:e,type:ha.NO_NON_EMPTY_LOOKAHEAD,ruleName:t.name})}})}),r}(t,e,Fs)}buildLookaheadForAlternation(t){return function(t,e,n,r,i,s){const o=ao(t,e,n);return s(o,r,uo(o)?hs:cs,i)}(t.prodOccurrence,t.rule,t.maxLookahead,t.hasPredicates,t.dynamicTokensEnabled,Js)}buildLookaheadForOptional(t){return function(t,e,n,r,i,s){const o=co(t,e,i,n),a=uo(o)?hs:cs;return s(o[0],a,r)}(t.prodOccurrence,t.rule,t.maxLookahead,t.dynamicTokensEnabled,Qs(t.prodType),to)}}const Ko=new class extends di{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(t){this.dslMethods.option.push(t)}visitRepetitionWithSeparator(t){this.dslMethods.repetitionWithSeparator.push(t)}visitRepetitionMandatory(t){this.dslMethods.repetitionMandatory.push(t)}visitRepetitionMandatoryWithSeparator(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)}visitRepetition(t){this.dslMethods.repetition.push(t)}visitAlternation(t){this.dslMethods.alternation.push(t)}};function Go(t,e){!0===isNaN(t.startOffset)?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset<e.endOffset==!0&&(t.endOffset=e.endOffset)}function zo(t,e){!0===isNaN(t.startOffset)?(t.startOffset=e.startOffset,t.startColumn=e.startColumn,t.startLine=e.startLine,t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine):t.endOffset<e.endOffset==!0&&(t.endOffset=e.endOffset,t.endColumn=e.endColumn,t.endLine=e.endLine)}function Wo(t,e){Object.defineProperty(t,"name",{enumerable:!1,configurable:!0,writable:!1,value:e})}function Vo(t,e){const n=ne(t),r=n.length;for(let i=0;i<r;i++){const r=t[n[i]],s=r.length;for(let t=0;t<s;t++){const n=r[t];void 0===n.tokenTypeIdx&&this[n.name](n.children,e)}}}function Ho(t,e){const n=function(){};Wo(n,t+"BaseSemantics");const r={visit:function(t,e){if(I(t)&&(t=t[0]),!Br(t))return this[t.name](t.children,e)},validateVisitor:function(){const t=function(t,e){const n=function(t,e){const n=mr(e,e=>!1===G(t[e])),r=Or(n,e=>({msg:`Missing visitor method: <${e}> on ${t.constructor.name} CST Visitor.`,type:Yo.MISSING_METHOD,methodName:e}));return In(r)}(t,e);return n}(this,e);if(!wr(t)){const e=Or(t,t=>t.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${e.join("\n\n").replace(/\n/g,"\n\t")}`)}}};return(n.prototype=r).constructor=n,n._RULE_NAMES=e,n}var Yo,Xo;(Xo=Yo||(Yo={}))[Xo.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",Xo[Xo.MISSING_METHOD=1]="MISSING_METHOD";const qo={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(qo);const Zo=!0,Qo=Math.pow(2,8)-1,Jo=bs({name:"RECORDING_PHASE_TOKEN",pattern:Os.NA});ds([Jo]);const ta=Ps(Jo,"This IToken indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",-1,-1,-1,-1,-1,-1);Object.freeze(ta);const ea={name:"This CSTNode indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",children:{}};function na(t,e,n,r=!1){sa(n);const i=ar(this.recordingProdStack),s=G(e)?e:e.DEF,o=new t({definition:[],idx:n});return r&&(o.separator=e.SEP),xr(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),i.definition.push(o),this.recordingProdStack.pop(),qo}function ra(t,e){sa(e);const n=ar(this.recordingProdStack),r=!1===I(t),i=!1===r?t:t.DEF,s=new hi({definition:[],idx:e,ignoreAmbiguities:r&&!0===t.IGNORE_AMBIGUITIES});xr(t,"MAX_LOOKAHEAD")&&(s.maxLookahead=t.MAX_LOOKAHEAD);const o=Vr(i,t=>G(t.GATE));return s.hasPredicates=o,n.definition.push(s),ur(i,t=>{const e=new ri({definition:[]});s.definition.push(e),xr(t,"IGNORE_AMBIGUITIES")?e.ignoreAmbiguities=t.IGNORE_AMBIGUITIES:xr(t,"GATE")&&(e.ignoreAmbiguities=!0),this.recordingProdStack.push(e),t.ALT.call(this),this.recordingProdStack.pop()}),qo}function ia(t){return 0===t?"":`${t}`}function sa(t){if(t<0||t>Qo){const e=new Error(`Invalid DSL Method idx value: <${t}>\n\tIdx value must be a none negative value smaller than ${Qo+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}const oa=Ps(Ms,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(oa);const aa=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:ws,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),ca=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var ha,ua,la;(ua=ha||(ha={}))[ua.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",ua[ua.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",ua[ua.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",ua[ua.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",ua[ua.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",ua[ua.LEFT_RECURSION=5]="LEFT_RECURSION",ua[ua.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",ua[ua.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",ua[ua.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",ua[ua.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",ua[ua.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",ua[ua.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",ua[ua.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",ua[ua.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION";class da{static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;const e=this.className;this.TRACE_INIT("toFastProps",()=>{Qr(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),ur(this.definedRulesNames,t=>{const e=this[t].originalGrammarAction;let n;this.TRACE_INIT(`${t} Rule`,()=>{n=this.topLevelRuleRecord(t,e)}),this.gastProductionsCache[t]=n})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Oo({rules:Ur(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(wr(n)&&!1===this.skipValidations){const n=(t={rules:Ur(this.gastProductionsCache),tokenTypes:Ur(this.tokensMap),errMsgProvider:Fs,grammarName:e},lo((t=ir(t,{errMsgProvider:Fs})).rules,t.tokenTypes,t.errMsgProvider,t.grammarName)),r=function(t){return Or(t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName}),t=>Object.assign({type:ha.CUSTOM_LOOKAHEAD_VALIDATION},t))}({lookaheadStrategy:this.lookaheadStrategy,rules:Ur(this.gastProductionsCache),tokenTypes:Ur(this.tokensMap),grammarName:e});this.definitionErrors=this.definitionErrors.concat(n,r)}var t}),wr(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const t=function(t){const e={};return ur(t,t=>{const n=new Si(t).startWalking();se(e,n)}),e}(Ur(this.gastProductionsCache));this.resyncFollows=t}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var t,e;null===(e=(t=this.lookaheadStrategy).initialize)||void 0===e||e.call(t,{rules:Ur(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(Ur(this.gastProductionsCache))})),!da.DEFER_DEFINITION_ERRORS_HANDLING&&!wr(this.definitionErrors))throw t=Or(this.definitionErrors,t=>t.message),new Error(`Parser Definition Errors detected:\n ${t.join("\n-------------------------------\n")}`)})}constructor(t,e){this.definitionErrors=[],this.selfAnalysisDone=!1;const n=this;if(n.initErrorHandler(e),n.initLexerAdapter(),n.initLooksAhead(e),n.initRecognizerEngine(t,e),n.initRecoverable(e),n.initTreeBuilder(e),n.initContentAssist(),n.initGastRecorder(e),n.initPerformanceTracer(e),xr(e,"ignoredIssues"))throw new Error("The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.");this.skipValidations=xr(e,"skipValidations")?e.skipValidations:aa.skipValidations}}da.DEFER_DEFINITION_ERRORS_HANDLING=!1,la=da,[class{initRecoverable(t){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=xr(t,"recoveryEnabled")?t.recoveryEnabled:aa.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=wo)}getTokenToInsert(t){const e=Ps(t,"",NaN,NaN,NaN,NaN,NaN,NaN);return e.isInsertedInRecovery=!0,e}canTokenTypeBeInsertedInRecovery(t){return!0}canTokenTypeBeDeletedInRecovery(t){return!0}tryInRepetitionRecovery(t,e,n,r){const i=this.findReSyncTokenType(),s=this.exportLexerState(),o=[];let a=!1;const c=this.LA_FAST(1);let h=this.LA_FAST(1);const u=()=>{const t=this.LA(0),e=this.errorMessageProvider.buildMismatchTokenMessage({expected:r,actual:c,previous:t,ruleName:this.getCurrRuleFullName()}),n=new xo(e,c,this.LA(0));n.resyncedTokens=hr(o),this.SAVE_ERROR(n)};for(;!a;){if(this.tokenMatcher(h,r))return void u();if(n.call(this))return u(),void t.apply(this,e);this.tokenMatcher(h,i)?a=!0:(h=this.SKIP_TOKEN(),this.addToResyncTokens(h,o))}this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(t,e,n){return!1!==n&&!this.tokenMatcher(this.LA_FAST(1),t)&&!this.isBackTracking()&&!this.canPerformInRuleRecovery(t,this.getFollowsForInRuleRecovery(t,e))}getFollowsForInRuleRecovery(t,e){const n=this.getCurrentGrammarPath(t,e);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(t,e){if(this.canRecoverWithSingleTokenInsertion(t,e))return this.getTokenToInsert(t);if(this.canRecoverWithSingleTokenDeletion(t)){const t=this.SKIP_TOKEN();return this.consumeToken(),t}throw new Po("sad sad panda")}canPerformInRuleRecovery(t,e){return this.canRecoverWithSingleTokenInsertion(t,e)||this.canRecoverWithSingleTokenDeletion(t)}canRecoverWithSingleTokenInsertion(t,e){if(!this.canTokenTypeBeInsertedInRecovery(t))return!1;if(wr(e))return!1;const n=this.LA_FAST(1);return void 0!==Tr(e,t=>this.tokenMatcher(n,t))}canRecoverWithSingleTokenDeletion(t){return!!this.canTokenTypeBeDeletedInRecovery(t)&&this.tokenMatcher(this.LA(2),t)}isInCurrentRuleReSyncSet(t){const e=this.getCurrFollowKey();return br(this.getFollowSetFromFollowKey(e),t)}findReSyncTokenType(){const t=this.flattenFollowSet();let e=this.LA_FAST(1),n=2;for(;;){const r=Tr(t,t=>cs(e,t));if(void 0!==r)return r;e=this.LA(n),n++}}getCurrFollowKey(){if(0===this.RULE_STACK_IDX)return bo;const t=this.currRuleShortName,e=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(t),idxInCallingRule:e,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){const t=this.RULE_STACK,e=this.RULE_OCCURRENCE_STACK,n=this.RULE_STACK_IDX+1,r=new Array(n);for(let i=0;i<n;i++)r[i]=0===i?bo:{ruleName:this.shortRuleNameToFullName(t[i]),idxInCallingRule:e[i],inRule:this.shortRuleNameToFullName(t[i-1])};return r}flattenFollowSet(){return be(Or(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t)))}getFollowSetFromFollowKey(t){if(t===bo)return[Ms];const e=t.ruleName+t.idxInCallingRule+Ti+t.inRule;return this.resyncFollows[e]}addToResyncTokens(t,e){return this.tokenMatcher(t,Ms)||e.push(t),e}reSyncTo(t){const e=[];let n=this.LA_FAST(1);for(;!1===this.tokenMatcher(n,t);)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,e);return hr(e)}attemptInRepetitionRecovery(t,e,n,r,i,s,o){}getCurrentGrammarPath(t,e){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:this.RULE_OCCURRENCE_STACK.slice(0,this.RULE_OCCURRENCE_STACK_IDX+1),lastTok:t,lastTokOccurrence:e}}getHumanReadableRuleStack(){const t=this.RULE_STACK_IDX+1,e=new Array(t);for(let n=0;n<t;n++)e[n]=this.shortRuleNameToFullName(this.RULE_STACK[n]);return e}},class{initLooksAhead(t){this.dynamicTokensEnabled=xr(t,"dynamicTokensEnabled")?t.dynamicTokensEnabled:aa.dynamicTokensEnabled,this.maxLookahead=xr(t,"maxLookahead")?t.maxLookahead:aa.maxLookahead,this.lookaheadStrategy=xr(t,"lookaheadStrategy")?t.lookaheadStrategy:new $o({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(t){ur(t,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{const{alternation:e,repetition:n,option:r,repetitionMandatory:i,repetitionMandatoryWithSeparator:s,repetitionWithSeparator:o}=function(t){Ko.reset(),t.accept(Ko);const e=Ko.dslMethods;return Ko.reset(),e}(t);ur(e,e=>{const n=0===e.idx?"":e.idx;this.TRACE_INIT(`${fi(e)}${n}`,()=>{const n=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:e.idx,rule:t,maxLookahead:e.maxLookahead||this.maxLookahead,hasPredicates:e.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),r=jo(this.fullRuleNameToShort[t.name],256,e.idx);this.setLaFuncCache(r,n)})}),ur(n,e=>{this.computeLookaheadFunc(t,e.idx,768,"Repetition",e.maxLookahead,fi(e))}),ur(r,e=>{this.computeLookaheadFunc(t,e.idx,512,"Option",e.maxLookahead,fi(e))}),ur(i,e=>{this.computeLookaheadFunc(t,e.idx,Do,"RepetitionMandatory",e.maxLookahead,fi(e))}),ur(s,e=>{this.computeLookaheadFunc(t,e.idx,Bo,"RepetitionMandatoryWithSeparator",e.maxLookahead,fi(e))}),ur(o,e=>{this.computeLookaheadFunc(t,e.idx,Fo,"RepetitionWithSeparator",e.maxLookahead,fi(e))})})})}computeLookaheadFunc(t,e,n,r,i,s){this.TRACE_INIT(`${s}${0===e?"":e}`,()=>{const s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:e,rule:t,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:r}),o=jo(this.fullRuleNameToShort[t.name],n,e);this.setLaFuncCache(o,s)})}getKeyForAutomaticLookahead(t,e){return jo(this.currRuleShortName,t,e)}getLaFuncFromCache(t){return this.lookAheadFuncsCache.get(t)}setLaFuncCache(t,e){this.lookAheadFuncsCache.set(t,e)}},class{initTreeBuilder(t){if(this.CST_STACK=[],this.outputCst=t.outputCst,this.nodeLocationTracking=xr(t,"nodeLocationTracking")?t.nodeLocationTracking:aa.nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zo,this.setNodeLocationFromNode=zo,this.cstPostRule=ot,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ot,this.setNodeLocationFromNode=ot,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Go,this.setNodeLocationFromNode=Go,this.cstPostRule=ot,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ot,this.setNodeLocationFromNode=ot,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid <nodeLocationTracking> config option: "${t.nodeLocationTracking}"`);this.setNodeLocationFromToken=ot,this.setNodeLocationFromNode=ot,this.cstPostRule=ot,this.setInitialNodeLocation=ot}else this.cstInvocationStateUpdate=ot,this.cstFinallyStateUpdate=ot,this.cstPostTerminal=ot,this.cstPostNonTerminal=ot,this.cstPostRule=ot}setInitialNodeLocationOnlyOffsetRecovery(t){t.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(t){t.location={startOffset:this.LA_FAST(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(t){t.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(t){const e=this.LA_FAST(1);t.location={startOffset:e.startOffset,startLine:e.startLine,startColumn:e.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(t){const e={name:t,children:Object.create(null)};this.setInitialNodeLocation(e),this.CST_STACK.push(e)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(t){const e=this.LA(0),n=t.location;n.startOffset<=e.startOffset==1?(n.endOffset=e.endOffset,n.endLine=e.endLine,n.endColumn=e.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(t){const e=this.LA(0),n=t.location;n.startOffset<=e.startOffset==1?n.endOffset=e.endOffset:n.startOffset=NaN}cstPostTerminal(t,e){const n=this.CST_STACK[this.CST_STACK.length-1];var r,i,s;i=e,s=t,void 0===(r=n).children[s]?r.children[s]=[i]:r.children[s].push(i),this.setNodeLocationFromToken(n.location,e)}cstPostNonTerminal(t,e){const n=this.CST_STACK[this.CST_STACK.length-1];!function(t,e,n){void 0===t.children[e]?t.children[e]=[n]:t.children[e].push(n)}(n,e,t),this.setNodeLocationFromNode(n.location,t.location)}getBaseCstVisitorConstructor(){if(Br(this.baseCstVisitorConstructor)){const t=Ho(this.className,ne(this.gastProductionsCache));return this.baseCstVisitorConstructor=t,t}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(Br(this.baseCstVisitorWithDefaultsConstructor)){const t=function(t,e,n){const r=function(){};Wo(r,t+"BaseSemanticsWithDefaults");const i=Object.create(n.prototype);return ur(e,t=>{i[t]=Vo}),(r.prototype=i).constructor=r,r}(this.className,ne(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=t,t}return this.baseCstVisitorWithDefaultsConstructor}getPreviousExplicitRuleShortName(){return this.RULE_STACK[this.RULE_STACK_IDX-1]}getLastExplicitRuleOccurrenceIndex(){return this.RULE_OCCURRENCE_STACK[this.RULE_OCCURRENCE_STACK_IDX]}},class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(t){if(!0!==this.selfAnalysisDone)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=t,this.tokVectorLength=t.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVectorLength-2?(this.consumeToken(),this.LA_FAST(1)):oa}LA_FAST(t){const e=this.currIdx+t;return this.tokVector[e]}LA(t){const e=this.currIdx+t;return e<0||this.tokVectorLength<=e?oa:this.tokVector[e]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(t){this.currIdx=t}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVectorLength-1}getLexerPosition(){return this.exportLexerState()}},class{initRecognizerEngine(t,e){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=hs,this.subruleIdx=0,this.currRuleShortName=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_STACK_IDX=-1,this.RULE_OCCURRENCE_STACK=[],this.RULE_OCCURRENCE_STACK_IDX=-1,this.gastProductionsCache={},xr(e,"serializedGrammar"))throw Error("The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.");if(I(t)){if(wr(t))throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");if("number"==typeof t[0].startOffset)throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.")}if(I(t))this.tokensMap=Gr(t,(t,e)=>(t[e.name]=e,t),{});else if(xr(t,"modes")&&pr(be(Ur(t.modes)),Es)){const e=Yr(be(Ur(t.modes)));this.tokensMap=Gr(e,(t,e)=>(t[e.name]=e,t),{})}else{if(!M(t))throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=Nn(t)}this.tokensMap.EOF=Ms;const n=pr(xr(t,"modes")?be(Ur(t.modes)):Ur(t),t=>wr(t.categoryMatches));this.tokenMatcher=n?hs:cs,ds(Ur(this.tokensMap))}defineRule(t,e,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${t}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const r=xr(n,"resyncEnabled")?n.resyncEnabled:ca.resyncEnabled,i=xr(n,"recoveryValueFunc")?n.recoveryValueFunc:ca.recoveryValueFunc,s=this.ruleShortNameIdx<<12;let o;return this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=t,this.fullRuleNameToShort[t]=s,o=!0===this.outputCst?function(...n){try{this.ruleInvocationStateUpdate(s,t,this.subruleIdx),e.apply(this,n);const r=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(r),r}catch(o){return this.invokeRuleCatch(o,r,i)}finally{this.ruleFinallyStateUpdate()}}:function(...n){try{return this.ruleInvocationStateUpdate(s,t,this.subruleIdx),e.apply(this,n)}catch(o){return this.invokeRuleCatch(o,r,i)}finally{this.ruleFinallyStateUpdate()}},Object.assign(function(...e){this.onBeforeParse(t);try{return o.apply(this,e)}finally{this.onAfterParse(t)}},{ruleName:t,originalGrammarAction:e,coreRule:o})}invokeRuleCatch(t,e,n){const r=0===this.RULE_STACK_IDX,i=e&&!this.isBackTracking()&&this.recoveryEnabled;if(Io(t)){const e=t;if(i){const r=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(r)){if(e.resyncedTokens=this.reSyncTo(r),this.outputCst){const t=this.CST_STACK[this.CST_STACK.length-1];return t.recoveredNode=!0,t}return n(t)}if(this.outputCst){const t=this.CST_STACK[this.CST_STACK.length-1];t.recoveredNode=!0,e.partialCstResult=t}throw e}if(r)return this.moveToTerminatedState(),n(t);throw e}throw t}optionInternal(t,e){const n=this.getKeyForAutomaticLookahead(512,e);return this.optionInternalLogic(t,e,n)}optionInternalLogic(t,e,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;if(!0===i.call(this))return r.call(this)}atLeastOneInternal(t,e){const n=this.getKeyForAutomaticLookahead(Do,t);return this.atLeastOneInternalLogic(t,e,n)}atLeastOneInternalLogic(t,e,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;if(!0!==i.call(this))throw this.raiseEarlyExitException(t,qs.REPETITION_MANDATORY,e.ERR_MSG);{let t=this.doSingleRepetition(r);for(;!0===i.call(this)&&!0===t;)t=this.doSingleRepetition(r)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[t,e],i,Do,t,Ws)}atLeastOneSepFirstInternal(t,e){const n=this.getKeyForAutomaticLookahead(Bo,t);this.atLeastOneSepFirstInternalLogic(t,e,n)}atLeastOneSepFirstInternalLogic(t,e,n){const r=e.DEF,i=e.SEP;if(!0!==this.getLaFuncFromCache(n).call(this))throw this.raiseEarlyExitException(t,qs.REPETITION_MANDATORY_WITH_SEPARATOR,e.ERR_MSG);{r.call(this);const e=()=>this.tokenMatcher(this.LA_FAST(1),i);for(;!0===this.tokenMatcher(this.LA_FAST(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,i,e,r,Vs],e,Bo,t,Vs)}}manyInternal(t,e){const n=this.getKeyForAutomaticLookahead(768,t);return this.manyInternalLogic(t,e,n)}manyInternalLogic(t,e,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;let s=!0;for(;!0===i.call(this)&&!0===s;)s=this.doSingleRepetition(r);this.attemptInRepetitionRecovery(this.manyInternal,[t,e],i,768,t,Gs,s)}manySepFirstInternal(t,e){const n=this.getKeyForAutomaticLookahead(Fo,t);this.manySepFirstInternalLogic(t,e,n)}manySepFirstInternalLogic(t,e,n){const r=e.DEF,i=e.SEP;if(!0===this.getLaFuncFromCache(n).call(this)){r.call(this);const e=()=>this.tokenMatcher(this.LA_FAST(1),i);for(;!0===this.tokenMatcher(this.LA_FAST(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,i,e,r,zs],e,Fo,t,zs)}}repetitionSepSecondInternal(t,e,n,r,i){for(;n();)this.CONSUME(e),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[t,e,n,r,i],n,Bo,t,i)}doSingleRepetition(t){const e=this.getLexerPosition();return t.call(this),this.getLexerPosition()>e}orInternal(t,e){const n=this.getKeyForAutomaticLookahead(256,e),r=I(t)?t:t.DEF,i=this.getLaFuncFromCache(n).call(this,r);if(void 0!==i)return r[i].ALT.call(this);this.raiseNoAltException(e,t.ERR_MSG)}ruleFinallyStateUpdate(){this.RULE_STACK_IDX--,this.RULE_OCCURRENCE_STACK_IDX--,this.RULE_STACK_IDX>=0&&(this.currRuleShortName=this.RULE_STACK[this.RULE_STACK_IDX]),this.cstFinallyStateUpdate()}subruleInternal(t,e,n){let r;try{const i=void 0!==n?n.ARGS:void 0;return this.subruleIdx=e,r=t.coreRule.apply(this,i),this.cstPostNonTerminal(r,void 0!==n&&void 0!==n.LABEL?n.LABEL:t.ruleName),r}catch(i){throw this.subruleInternalError(i,n,t.ruleName)}}subruleInternalError(t,e,n){throw Io(t)&&void 0!==t.partialCstResult&&(this.cstPostNonTerminal(t.partialCstResult,void 0!==e&&void 0!==e.LABEL?e.LABEL:n),delete t.partialCstResult),t}consumeInternal(t,e,n){let r;try{const e=this.LA_FAST(1);!0===this.tokenMatcher(e,t)?(this.consumeToken(),r=e):this.consumeInternalError(t,e,n)}catch(i){r=this.consumeInternalRecovery(t,e,i)}return this.cstPostTerminal(void 0!==n&&void 0!==n.LABEL?n.LABEL:t.name,r),r}consumeInternalError(t,e,n){let r;const i=this.LA(0);throw r=void 0!==n&&n.ERR_MSG?n.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:t,actual:e,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new xo(r,e,i))}consumeInternalRecovery(t,e,n){if(!this.recoveryEnabled||"MismatchedTokenException"!==n.name||this.isBackTracking())throw n;{const i=this.getFollowsForInRuleRecovery(t,e);try{return this.tryInRuleRecovery(t,i)}catch(r){throw r.name===Mo?n:r}}}saveRecogState(){const t=this.errors,e=this.RULE_STACK.slice(0,this.RULE_STACK_IDX+1);return{errors:t,lexerState:this.exportLexerState(),RULE_STACK:e,CST_STACK:this.CST_STACK}}reloadRecogState(t){this.errors=t.errors,this.importLexerState(t.lexerState);const e=t.RULE_STACK;for(let n=0;n<e.length;n++)this.RULE_STACK[n]=e[n];this.RULE_STACK_IDX=e.length-1,this.RULE_STACK_IDX>=0&&(this.currRuleShortName=this.RULE_STACK[this.RULE_STACK_IDX])}ruleInvocationStateUpdate(t,e,n){this.RULE_OCCURRENCE_STACK[++this.RULE_OCCURRENCE_STACK_IDX]=n,this.RULE_STACK[++this.RULE_STACK_IDX]=t,this.currRuleShortName=t,this.cstInvocationStateUpdate(e)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){const t=this.currRuleShortName;return this.shortRuleNameToFull[t]}shortRuleNameToFullName(t){return this.shortRuleNameToFull[t]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Ms)}reset(){this.resetLexerState(),this.subruleIdx=0,this.currRuleShortName=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK_IDX=-1,this.RULE_OCCURRENCE_STACK_IDX=-1,this.CST_STACK=[]}onBeforeParse(t){for(let e=0;e<this.maxLookahead+1;e++)this.tokVector.push(oa)}onAfterParse(t){if(!1===this.isAtEndOfInput()){const t=this.LA(1),e=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:t,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Uo(e,t))}for(;this.tokVector.at(-1)===oa;)this.tokVector.pop()}},class{ACTION(t){return t.call(this)}consume(t,e,n){return this.consumeInternal(e,t,n)}subrule(t,e,n){return this.subruleInternal(e,t,n)}option(t,e){return this.optionInternal(e,t)}or(t,e){return this.orInternal(e,t)}many(t,e){return this.manyInternal(t,e)}atLeastOne(t,e){return this.atLeastOneInternal(t,e)}CONSUME(t,e){return this.consumeInternal(t,0,e)}CONSUME1(t,e){return this.consumeInternal(t,1,e)}CONSUME2(t,e){return this.consumeInternal(t,2,e)}CONSUME3(t,e){return this.consumeInternal(t,3,e)}CONSUME4(t,e){return this.consumeInternal(t,4,e)}CONSUME5(t,e){return this.consumeInternal(t,5,e)}CONSUME6(t,e){return this.consumeInternal(t,6,e)}CONSUME7(t,e){return this.consumeInternal(t,7,e)}CONSUME8(t,e){return this.consumeInternal(t,8,e)}CONSUME9(t,e){return this.consumeInternal(t,9,e)}SUBRULE(t,e){return this.subruleInternal(t,0,e)}SUBRULE1(t,e){return this.subruleInternal(t,1,e)}SUBRULE2(t,e){return this.subruleInternal(t,2,e)}SUBRULE3(t,e){return this.subruleInternal(t,3,e)}SUBRULE4(t,e){return this.subruleInternal(t,4,e)}SUBRULE5(t,e){return this.subruleInternal(t,5,e)}SUBRULE6(t,e){return this.subruleInternal(t,6,e)}SUBRULE7(t,e){return this.subruleInternal(t,7,e)}SUBRULE8(t,e){return this.subruleInternal(t,8,e)}SUBRULE9(t,e){return this.subruleInternal(t,9,e)}OPTION(t){return this.optionInternal(t,0)}OPTION1(t){return this.optionInternal(t,1)}OPTION2(t){return this.optionInternal(t,2)}OPTION3(t){return this.optionInternal(t,3)}OPTION4(t){return this.optionInternal(t,4)}OPTION5(t){return this.optionInternal(t,5)}OPTION6(t){return this.optionInternal(t,6)}OPTION7(t){return this.optionInternal(t,7)}OPTION8(t){return this.optionInternal(t,8)}OPTION9(t){return this.optionInternal(t,9)}OR(t){return this.orInternal(t,0)}OR1(t){return this.orInternal(t,1)}OR2(t){return this.orInternal(t,2)}OR3(t){return this.orInternal(t,3)}OR4(t){return this.orInternal(t,4)}OR5(t){return this.orInternal(t,5)}OR6(t){return this.orInternal(t,6)}OR7(t){return this.orInternal(t,7)}OR8(t){return this.orInternal(t,8)}OR9(t){return this.orInternal(t,9)}MANY(t){this.manyInternal(0,t)}MANY1(t){this.manyInternal(1,t)}MANY2(t){this.manyInternal(2,t)}MANY3(t){this.manyInternal(3,t)}MANY4(t){this.manyInternal(4,t)}MANY5(t){this.manyInternal(5,t)}MANY6(t){this.manyInternal(6,t)}MANY7(t){this.manyInternal(7,t)}MANY8(t){this.manyInternal(8,t)}MANY9(t){this.manyInternal(9,t)}MANY_SEP(t){this.manySepFirstInternal(0,t)}MANY_SEP1(t){this.manySepFirstInternal(1,t)}MANY_SEP2(t){this.manySepFirstInternal(2,t)}MANY_SEP3(t){this.manySepFirstInternal(3,t)}MANY_SEP4(t){this.manySepFirstInternal(4,t)}MANY_SEP5(t){this.manySepFirstInternal(5,t)}MANY_SEP6(t){this.manySepFirstInternal(6,t)}MANY_SEP7(t){this.manySepFirstInternal(7,t)}MANY_SEP8(t){this.manySepFirstInternal(8,t)}MANY_SEP9(t){this.manySepFirstInternal(9,t)}AT_LEAST_ONE(t){this.atLeastOneInternal(0,t)}AT_LEAST_ONE1(t){return this.atLeastOneInternal(1,t)}AT_LEAST_ONE2(t){this.atLeastOneInternal(2,t)}AT_LEAST_ONE3(t){this.atLeastOneInternal(3,t)}AT_LEAST_ONE4(t){this.atLeastOneInternal(4,t)}AT_LEAST_ONE5(t){this.atLeastOneInternal(5,t)}AT_LEAST_ONE6(t){this.atLeastOneInternal(6,t)}AT_LEAST_ONE7(t){this.atLeastOneInternal(7,t)}AT_LEAST_ONE8(t){this.atLeastOneInternal(8,t)}AT_LEAST_ONE9(t){this.atLeastOneInternal(9,t)}AT_LEAST_ONE_SEP(t){this.atLeastOneSepFirstInternal(0,t)}AT_LEAST_ONE_SEP1(t){this.atLeastOneSepFirstInternal(1,t)}AT_LEAST_ONE_SEP2(t){this.atLeastOneSepFirstInternal(2,t)}AT_LEAST_ONE_SEP3(t){this.atLeastOneSepFirstInternal(3,t)}AT_LEAST_ONE_SEP4(t){this.atLeastOneSepFirstInternal(4,t)}AT_LEAST_ONE_SEP5(t){this.atLeastOneSepFirstInternal(5,t)}AT_LEAST_ONE_SEP6(t){this.atLeastOneSepFirstInternal(6,t)}AT_LEAST_ONE_SEP7(t){this.atLeastOneSepFirstInternal(7,t)}AT_LEAST_ONE_SEP8(t){this.atLeastOneSepFirstInternal(8,t)}AT_LEAST_ONE_SEP9(t){this.atLeastOneSepFirstInternal(9,t)}RULE(t,e,n=ca){if(br(this.definedRulesNames,t)){const e={message:Fs.buildDuplicateRuleNameError({topLevelRule:t,grammarName:this.className}),type:ha.DUPLICATE_RULE_NAME,ruleName:t};this.definitionErrors.push(e)}this.definedRulesNames.push(t);const r=this.defineRule(t,e,n);return this[t]=r,r}OVERRIDE_RULE(t,e,n=ca){const r=function(t,e,n){const r=[];let i;return br(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${n}<-as it is not defined in any of the super grammars `,r.push({message:i,type:ha.INVALID_RULE_OVERRIDE,ruleName:t})),r}(t,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(r);const i=this.defineRule(t,e,n);return this[t]=i,i}BACKTRACK(t,e){var n;const r=null!==(n=t.coreRule)&&void 0!==n?n:t;return function(){this.isBackTrackingStack.push(1);const t=this.saveRecogState();try{return r.apply(this,e),!0}catch(n){if(Io(n))return!1;throw n}finally{this.reloadRecogState(t),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return Or(Ur(this.gastProductionsCache),li)}},class{initErrorHandler(t){this._errors=[],this.errorMessageProvider=xr(t,"errorMessageProvider")?t.errorMessageProvider:aa.errorMessageProvider}SAVE_ERROR(t){if(Io(t))return t.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:this.RULE_OCCURRENCE_STACK.slice(0,this.RULE_OCCURRENCE_STACK_IDX+1)},this._errors.push(t),t;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return Nn(this._errors)}set errors(t){this._errors=t}raiseEarlyExitException(t,e,n){const r=this.getCurrRuleFullName(),i=co(t,this.getGAstProductions()[r],e,this.maxLookahead)[0],s=[];for(let a=1;a<=this.maxLookahead;a++)s.push(this.LA(a));const o=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:i,actual:s,previous:this.LA(0),customUserDescription:n,ruleName:r});throw this.SAVE_ERROR(new _o(o,this.LA(1),this.LA(0)))}raiseNoAltException(t,e){const n=this.getCurrRuleFullName(),r=ao(t,this.getGAstProductions()[n],this.maxLookahead),i=[];for(let a=1;a<=this.maxLookahead;a++)i.push(this.LA(a));const s=this.LA(0),o=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:r,actual:i,previous:s,customUserDescription:e,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ko(o,this.LA(1),s))}},class{initContentAssist(){}computeContentAssist(t,e){const n=this.gastProductionsCache[t];if(Br(n))throw Error(`Rule ->${t}<- does not exist in this grammar.`);return Ys([n],e,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(t){const e=Sr(t.ruleStack),n=this.getGAstProductions()[e];return new $s(n,t).startWalking()}},class{initGastRecorder(t){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let t=0;t<10;t++){const e=t>0?t:"";this[`CONSUME${e}`]=function(e,n){return this.consumeInternalRecord(e,t,n)},this[`SUBRULE${e}`]=function(e,n){return this.subruleInternalRecord(e,t,n)},this[`OPTION${e}`]=function(e){return this.optionInternalRecord(e,t)},this[`OR${e}`]=function(e){return this.orInternalRecord(e,t)},this[`MANY${e}`]=function(e){this.manyInternalRecord(t,e)},this[`MANY_SEP${e}`]=function(e){this.manySepFirstInternalRecord(t,e)},this[`AT_LEAST_ONE${e}`]=function(e){this.atLeastOneInternalRecord(t,e)},this[`AT_LEAST_ONE_SEP${e}`]=function(e){this.atLeastOneSepFirstInternalRecord(t,e)}}this.consume=function(t,e,n){return this.consumeInternalRecord(e,t,n)},this.subrule=function(t,e,n){return this.subruleInternalRecord(e,t,n)},this.option=function(t,e){return this.optionInternalRecord(e,t)},this.or=function(t,e){return this.orInternalRecord(e,t)},this.many=function(t,e){this.manyInternalRecord(t,e)},this.atLeastOne=function(t,e){this.atLeastOneInternalRecord(t,e)},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 t=this;for(let e=0;e<10;e++){const n=e>0?e:"";delete t[`CONSUME${n}`],delete t[`SUBRULE${n}`],delete t[`OPTION${n}`],delete t[`OR${n}`],delete t[`MANY${n}`],delete t[`MANY_SEP${n}`],delete t[`AT_LEAST_ONE${n}`],delete t[`AT_LEAST_ONE_SEP${n}`]}delete t.consume,delete t.subrule,delete t.option,delete t.or,delete t.many,delete t.atLeastOne,delete t.ACTION,delete t.BACKTRACK,delete t.LA})}ACTION_RECORD(t){}BACKTRACK_RECORD(t,e){return()=>!0}LA_RECORD(t){return oa}topLevelRuleRecord(t,e){try{const n=new ni({definition:[],name:t});return n.name=t,this.recordingProdStack.push(n),e.call(this),this.recordingProdStack.pop(),n}catch(n){if(!0!==n.KNOWN_RECORDER_ERROR)try{n.message=n.message+'\n\t This error was thrown during the "grammar recording phase" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording'}catch(r){throw n}throw n}}optionInternalRecord(t,e){return na.call(this,ii,t,e)}atLeastOneInternalRecord(t,e){na.call(this,si,e,t)}atLeastOneSepFirstInternalRecord(t,e){na.call(this,oi,e,t,Zo)}manyInternalRecord(t,e){na.call(this,ai,e,t)}manySepFirstInternalRecord(t,e){na.call(this,ci,e,t,Zo)}orInternalRecord(t,e){return ra.call(this,t,e)}subruleInternalRecord(t,e,n){if(sa(e),!t||!1===xr(t,"ruleName")){const n=new Error(`<SUBRULE${ia(e)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(t)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=ar(this.recordingProdStack),i=t.ruleName,s=new ei({idx:e,nonTerminalName:i,label:null==n?void 0:n.LABEL,referencedRule:void 0});return r.definition.push(s),this.outputCst?ea:qo}consumeInternalRecord(t,e,n){if(sa(e),!fs(t)){const n=new Error(`<CONSUME${ia(e)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(t)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=ar(this.recordingProdStack),i=new ui({idx:e,terminalType:t,label:null==n?void 0:n.LABEL});return r.definition.push(i),ta}},class{initPerformanceTracer(t){if(xr(t,"traceInitPerf")){const e=t.traceInitPerf,n="number"==typeof e;this.traceInitMaxIdent=n?e:1/0,this.traceInitPerf=n?e>0:e}else this.traceInitMaxIdent=0,this.traceInitPerf=aa.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(t,e){if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${t}>`);const{time:r,value:i}=Zr(e),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${t}> time: ${r}ms`),this.traceInitIndent--,i}return e()}}].forEach(t=>{const e=t.prototype;Object.getOwnPropertyNames(e).forEach(n=>{if("constructor"===n)return;const r=Object.getOwnPropertyDescriptor(e,n);r&&(r.get||r.set)?Object.defineProperty(la.prototype,n,r):la.prototype[n]=t.prototype[n]})});class pa extends da{constructor(t,e=aa){const n=Nn(e);n.outputCst=!0,super(t,n)}}const fa=bs({name:"Whitespace",pattern:/[ \t\r\n]+/,group:Os.SKIPPED}),ma=bs({name:"LineComment",pattern:/\/\/[^\n]*/,group:Os.SKIPPED}),Ea=bs({name:"BlockComment",pattern:/\/\*[\s\S]*?\*\//,group:Os.SKIPPED}),ga=bs({name:"Identifier",pattern:/[A-Za-z_][A-Za-z0-9_]*/}),Ta=(t,e)=>bs({name:t,pattern:new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),longer_alt:ga}),Sa=Ta("Import","import"),La=Ta("Export","export"),Oa=Ta("From","from"),ya=Ta("As","as"),Aa=Ta("Const","const"),Ra=Ta("Var","var"),va=Ta("Let","let"),Na=Ta("Func","func"),Ia=Ta("Fai","fai"),Ca=Ta("Return","return"),xa=Ta("If","if"),ka=Ta("Else","else"),Ua=Ta("For","for"),_a=Ta("In","in"),ba=Ta("While","while"),Ma=Ta("Break","break"),Pa=Ta("Continue","continue"),wa=Ta("Try","try"),Da=Ta("Catch","catch"),Fa=Ta("True","true"),Ba=Ta("False","false"),ja=Ta("Null","null"),$a=Ta("KwEnum","enum"),Ka=Ta("KwArray","array"),Ga=Ta("KwObject","object"),za=bs({name:"FloatLit",pattern:/[0-9]+\.[0-9]+/}),Wa=bs({name:"IntLit",pattern:/[0-9]+/}),Va=bs({name:"StringLit",pattern:/"(?:[^"\\]|\\.)*"/}),Ha=bs({name:"Arrow",pattern:/->/}),Ya=bs({name:"FatArrow",pattern:/=>/}),Xa=bs({name:"EqEq",pattern:/==/}),qa=bs({name:"NotEq",pattern:/!=/}),Za=bs({name:"LtEq",pattern:/<=/}),Qa=bs({name:"GtEq",pattern:/>=/}),Ja=bs({name:"AndAnd",pattern:/&&/}),tc=bs({name:"OrOr",pattern:/\|\|/}),ec=bs({name:"PlusEq",pattern:/\+=/}),nc=bs({name:"MinusEq",pattern:/-=/}),rc=bs({name:"StarEq",pattern:/\*=/}),ic=bs({name:"SlashEq",pattern:/\/=/}),sc=bs({name:"PercentEq",pattern:/%=/}),oc=bs({name:"Spread",pattern:/\.\.\./}),ac=bs({name:"LCurly",pattern:/\{/}),cc=bs({name:"RCurly",pattern:/\}/}),hc=bs({name:"LParen",pattern:/\(/}),uc=bs({name:"RParen",pattern:/\)/}),lc=bs({name:"LBracket",pattern:/\[/}),dc=bs({name:"RBracket",pattern:/\]/}),pc=bs({name:"LAngle",pattern:/</}),fc=bs({name:"RAngle",pattern:/>/}),mc=bs({name:"Comma",pattern:/,/}),Ec=bs({name:"Colon",pattern:/:/}),gc=bs({name:"Semicolon",pattern:/;/}),Tc=bs({name:"Dot",pattern:/\./}),Sc=bs({name:"Question",pattern:/\?/}),Lc=bs({name:"AtName",pattern:/@[A-Za-z_][A-Za-z0-9_.\-]*/}),Oc=bs({name:"Plus",pattern:/\+/}),yc=bs({name:"Dash",pattern:/-/}),Ac=bs({name:"Star",pattern:/\*/}),Rc=bs({name:"Slash",pattern:/\//}),vc=bs({name:"Percent",pattern:/%/}),Nc=bs({name:"Bang",pattern:/!/}),Ic=bs({name:"Pipe",pattern:/\|/}),Cc=bs({name:"Equals",pattern:/=/}),xc=[fa,ma,Ea,Ha,Ya,Xa,qa,Za,Qa,Ja,tc,ec,nc,rc,ic,sc,oc,Sa,La,Oa,ya,Aa,Ra,va,Na,Ia,Ca,xa,ka,Ua,ba,Ma,Pa,wa,Da,Fa,Ba,ja,$a,Ka,Ga,_a,za,Wa,Va,ga,ac,cc,hc,uc,lc,dc,pc,fc,mc,Ec,gc,Tc,Sc,Lc,Oc,yc,Ac,Rc,vc,Nc,Ic,Cc],kc=new Os(xc,{positionTracking:"full",ensureOptimizations:!1});const Uc=new class extends pa{constructor(){super(xc,{recoveryEnabled:!1}),e(this,"program",this.RULE("program",()=>{this.MANY(()=>this.SUBRULE(this.topLevel))})),e(this,"exprEntry",this.RULE("exprEntry",()=>{this.SUBRULE(this.expr)})),e(this,"topLevel",this.RULE("topLevel",()=>{this.OR([{ALT:()=>this.SUBRULE(this.importDecl)},{ALT:()=>this.SUBRULE(this.constDecl)},{ALT:()=>this.SUBRULE(this.varDecl)},{GATE:()=>this.isRuntimeAnnotation(),ALT:()=>this.SUBRULE(this.runtimeAnnotation)},{GATE:()=>this.isAnnotatedFuncOrFai(),ALT:()=>this.SUBRULE(this.annotatedDecl)},{ALT:()=>this.SUBRULE(this.funcDecl)},{ALT:()=>this.SUBRULE(this.faiDecl)},{ALT:()=>this.SUBRULE(this.exportDecl)}])})),e(this,"importDecl",this.RULE("importDecl",()=>{this.CONSUME(Sa),this.SUBRULE(this.importClause),this.CONSUME(Oa),this.CONSUME(Va),this.OPTION(()=>this.CONSUME(Lc))})),e(this,"importClause",this.RULE("importClause",()=>{this.OR([{ALT:()=>this.SUBRULE(this.namedImports)},{ALT:()=>this.SUBRULE(this.namespaceImport)}])})),e(this,"namedImports",this.RULE("namedImports",()=>{this.CONSUME(ac),this.SUBRULE(this.importSpec),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.importSpec)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)})),e(this,"importSpec",this.RULE("importSpec",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(ya),this.CONSUME2(ga)})})),e(this,"namespaceImport",this.RULE("namespaceImport",()=>{this.CONSUME(Ac),this.CONSUME(ya),this.CONSUME(ga)})),e(this,"runtimeAnnotation",this.RULE("runtimeAnnotation",()=>{this.CONSUME(Lc),this.OPTION(()=>{this.CONSUME(hc),this.OPTION2(()=>this.SUBRULE(this.annoArgList)),this.CONSUME(uc)})})),e(this,"declAnnotation",this.RULE("declAnnotation",()=>{this.CONSUME(Lc),this.OPTION(()=>{this.CONSUME(hc),this.OPTION2(()=>this.SUBRULE(this.annoArgList)),this.CONSUME(uc)})})),e(this,"annoArgList",this.RULE("annoArgList",()=>{this.SUBRULE(this.annoArg),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.annoArg)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"annoArg",this.RULE("annoArg",()=>{this.OR([{GATE:()=>this.LA(1).tokenType===ga&&this.LA(2).tokenType===Cc,ALT:()=>{this.CONSUME(ga),this.CONSUME(Cc),this.SUBRULE(this.literal)}},{ALT:()=>this.SUBRULE2(this.literal)}])})),e(this,"annotatedDecl",this.RULE("annotatedDecl",()=>{this.AT_LEAST_ONE(()=>this.SUBRULE(this.declAnnotation)),this.OR([{ALT:()=>this.SUBRULE(this.funcDecl)},{ALT:()=>this.SUBRULE(this.faiDecl)}])})),e(this,"constDecl",this.RULE("constDecl",()=>{this.CONSUME(Aa),this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.declTypeAnnot),this.CONSUME(Cc),this.SUBRULE(this.expr)})),e(this,"varDecl",this.RULE("varDecl",()=>{this.CONSUME(Ra),this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.declTypeAnnot),this.OPTION(()=>{this.CONSUME(Cc),this.SUBRULE(this.expr)})})),e(this,"funcDecl",this.RULE("funcDecl",()=>{this.CONSUME(Na),this.CONSUME(ga),this.CONSUME(hc),this.OPTION(()=>this.SUBRULE(this.paramList)),this.CONSUME(uc),this.OPTION2(()=>{this.CONSUME(Ha),this.SUBRULE(this.typeAnnot)}),this.SUBRULE(this.block)})),e(this,"faiDecl",this.RULE("faiDecl",()=>{this.CONSUME(Ia),this.CONSUME(ga),this.CONSUME(hc),this.OPTION(()=>this.SUBRULE(this.faiParamList)),this.CONSUME(uc),this.CONSUME(Ha),this.SUBRULE(this.faiOutputList),this.SUBRULE(this.block)})),e(this,"exportDecl",this.RULE("exportDecl",()=>{this.CONSUME(La),this.OR([{ALT:()=>this.SUBRULE(this.exportNames)},{ALT:()=>this.SUBRULE(this.funcDecl)},{ALT:()=>this.SUBRULE(this.faiDecl)}])})),e(this,"exportNames",this.RULE("exportNames",()=>{this.OR([{ALT:()=>{this.SUBRULE(this.exportSpec)}},{ALT:()=>{this.CONSUME(ac),this.SUBRULE2(this.exportSpec),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE3(this.exportSpec)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)}}])})),e(this,"exportSpec",this.RULE("exportSpec",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(ya),this.CONSUME2(ga)})})),e(this,"paramList",this.RULE("paramList",()=>{this.SUBRULE(this.param),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.param)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"param",this.RULE("param",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})})),e(this,"faiParamList",this.RULE("faiParamList",()=>{this.SUBRULE(this.faiParam),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.faiParam)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"faiParam",this.RULE("faiParam",()=>{this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})),e(this,"faiOutputList",this.RULE("faiOutputList",()=>{this.SUBRULE(this.faiOutput),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.faiOutput)})})),e(this,"faiOutput",this.RULE("faiOutput",()=>{this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})),e(this,"typeAnnot",this.RULE("typeAnnot",()=>{this.OR([{ALT:()=>this.SUBRULE(this.enumType)},{ALT:()=>this.SUBRULE(this.arrayType)},{ALT:()=>this.SUBRULE(this.objectType)},{ALT:()=>this.SUBRULE(this.scalarType)}])})),e(this,"declTypeAnnot",this.RULE("declTypeAnnot",()=>{this.OR([{ALT:()=>this.SUBRULE(this.enumType)},{ALT:()=>this.SUBRULE(this.declArrayType)},{ALT:()=>this.SUBRULE(this.objectType)},{ALT:()=>this.SUBRULE(this.declScalarType)}])})),e(this,"declScalarType",this.RULE("declScalarType",()=>{this.CONSUME(ga)})),e(this,"declArrayType",this.RULE("declArrayType",()=>{this.CONSUME(Ka),this.CONSUME(pc),this.SUBRULE(this.typeAnnot),this.CONSUME(fc)})),e(this,"scalarType",this.RULE("scalarType",()=>{this.CONSUME(ga),this.OPTION(()=>this.SUBRULE(this.typeConstraint))})),e(this,"enumType",this.RULE("enumType",()=>{this.CONSUME($a),this.CONSUME(Ec),this.CONSUME(ga),this.MANY(()=>{this.CONSUME(Ic),this.CONSUME2(ga)})})),e(this,"arrayType",this.RULE("arrayType",()=>{this.CONSUME(Ka),this.CONSUME(pc),this.SUBRULE(this.typeAnnot),this.CONSUME(fc),this.OPTION(()=>this.SUBRULE(this.namedConstraint))})),e(this,"objectType",this.RULE("objectType",()=>{this.CONSUME(Ga),this.CONSUME(ac),this.SUBRULE(this.objectTypeField),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.objectTypeField)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)})),e(this,"objectTypeField",this.RULE("objectTypeField",()=>{this.CONSUME(ga),this.CONSUME(Ec),this.SUBRULE(this.typeAnnot)})),e(this,"typeConstraint",this.RULE("typeConstraint",()=>{this.OR([{GATE:()=>this.isRangeConstraint(),ALT:()=>this.SUBRULE(this.rangeConstraint)},{ALT:()=>this.SUBRULE(this.namedConstraint)}])})),e(this,"rangeConstraint",this.RULE("rangeConstraint",()=>{this.SUBRULE(this.numberLit),this.CONSUME(yc),this.SUBRULE2(this.numberLit)})),e(this,"namedConstraint",this.RULE("namedConstraint",()=>{this.CONSUME(ga),this.CONSUME(Cc),this.OR([{ALT:()=>this.SUBRULE(this.numberLit)},{ALT:()=>this.CONSUME(Va)}])})),e(this,"numberLit",this.RULE("numberLit",()=>{this.OR([{ALT:()=>this.CONSUME(Wa)},{ALT:()=>this.CONSUME(za)}])})),e(this,"block",this.RULE("block",()=>{this.CONSUME(ac),this.MANY(()=>this.SUBRULE(this.stmt)),this.CONSUME(cc)})),e(this,"stmt",this.RULE("stmt",()=>{this.OR([{ALT:()=>this.SUBRULE(this.letDecl)},{ALT:()=>this.SUBRULE(this.ifStmt)},{ALT:()=>this.SUBRULE(this.forStmt)},{ALT:()=>this.SUBRULE(this.whileStmt)},{ALT:()=>this.SUBRULE(this.tryStmt)},{ALT:()=>this.SUBRULE(this.breakStmt)},{ALT:()=>this.SUBRULE(this.continueStmt)},{ALT:()=>this.SUBRULE(this.returnStmt)},{GATE:()=>this.isAssignment(),ALT:()=>this.SUBRULE(this.assignment)},{ALT:()=>this.SUBRULE(this.exprStmt)}]),this.OPTION(()=>this.CONSUME(gc))})),e(this,"letDecl",this.RULE("letDecl",()=>{this.CONSUME(va),this.SUBRULE(this.letTarget),this.OPTION(()=>{this.CONSUME(Ec),this.SUBRULE(this.declTypeAnnot)}),this.OPTION2(()=>{this.CONSUME(Cc),this.SUBRULE(this.expr)})})),e(this,"letTarget",this.RULE("letTarget",()=>{this.OR([{ALT:()=>this.CONSUME(ga)},{ALT:()=>this.SUBRULE(this.objectDestruct)},{ALT:()=>this.SUBRULE(this.arrayDestruct)}])})),e(this,"objectDestruct",this.RULE("objectDestruct",()=>{this.CONSUME(ac),this.SUBRULE(this.destructField),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.destructField)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(cc)})),e(this,"destructField",this.RULE("destructField",()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(Ec),this.CONSUME2(ga)})})),e(this,"arrayDestruct",this.RULE("arrayDestruct",()=>{this.CONSUME(lc),this.CONSUME(ga),this.MANY(()=>{this.CONSUME(mc),this.CONSUME2(ga)}),this.OPTION(()=>this.CONSUME2(mc)),this.CONSUME(dc)})),e(this,"assignment",this.RULE("assignment",()=>{this.SUBRULE(this.lvalue),this.SUBRULE(this.assignOp),this.SUBRULE(this.expr)})),e(this,"lvalue",this.RULE("lvalue",()=>{this.CONSUME(ga),this.MANY(()=>this.SUBRULE(this.lvalueSuffix))})),e(this,"lvalueSuffix",this.RULE("lvalueSuffix",()=>{this.OR([{ALT:()=>{this.CONSUME(Tc),this.CONSUME(ga)}},{ALT:()=>{this.CONSUME(lc),this.SUBRULE(this.expr),this.CONSUME(dc)}}])})),e(this,"assignOp",this.RULE("assignOp",()=>{this.OR([{ALT:()=>this.CONSUME(Cc)},{ALT:()=>this.CONSUME(ec)},{ALT:()=>this.CONSUME(nc)},{ALT:()=>this.CONSUME(rc)},{ALT:()=>this.CONSUME(ic)},{ALT:()=>this.CONSUME(sc)}])})),e(this,"ifStmt",this.RULE("ifStmt",()=>{this.CONSUME(xa),this.CONSUME(hc),this.SUBRULE(this.expr),this.CONSUME(uc),this.SUBRULE(this.block),this.MANY({GATE:()=>this.LA(1).tokenType===ka&&this.LA(2).tokenType===xa,DEF:()=>{this.CONSUME(ka),this.CONSUME2(xa),this.CONSUME2(hc),this.SUBRULE2(this.expr),this.CONSUME2(uc),this.SUBRULE2(this.block)}}),this.OPTION(()=>{this.CONSUME3(ka),this.SUBRULE3(this.block)})})),e(this,"forStmt",this.RULE("forStmt",()=>{this.CONSUME(Ua),this.CONSUME(ga),this.CONSUME(_a),this.SUBRULE(this.expr),this.SUBRULE(this.block)})),e(this,"whileStmt",this.RULE("whileStmt",()=>{this.CONSUME(ba),this.CONSUME(hc),this.SUBRULE(this.expr),this.CONSUME(uc),this.SUBRULE(this.block)})),e(this,"tryStmt",this.RULE("tryStmt",()=>{this.CONSUME(wa),this.SUBRULE(this.block),this.AT_LEAST_ONE(()=>this.SUBRULE(this.catchClause))})),e(this,"catchClause",this.RULE("catchClause",()=>{this.CONSUME(Da),this.CONSUME(ga),this.OPTION(()=>{this.CONSUME(ya),this.CONSUME2(ga)}),this.SUBRULE(this.block)})),e(this,"breakStmt",this.RULE("breakStmt",()=>{this.CONSUME(Ma)})),e(this,"continueStmt",this.RULE("continueStmt",()=>{this.CONSUME(Pa)})),e(this,"returnStmt",this.RULE("returnStmt",()=>{this.CONSUME(Ca),this.OPTION({GATE:()=>this.canStartExpression(),DEF:()=>this.SUBRULE(this.expr)})})),e(this,"exprStmt",this.RULE("exprStmt",()=>{this.SUBRULE(this.expr)})),e(this,"expr",this.RULE("expr",()=>{this.SUBRULE(this.ternaryExpr)})),e(this,"ternaryExpr",this.RULE("ternaryExpr",()=>{this.SUBRULE(this.logicalOrExpr),this.OPTION(()=>{this.CONSUME(Sc),this.SUBRULE(this.expr),this.CONSUME(Ec),this.SUBRULE2(this.expr)})})),e(this,"logicalOrExpr",this.RULE("logicalOrExpr",()=>{this.SUBRULE(this.logicalAndExpr),this.MANY(()=>{this.CONSUME(tc),this.SUBRULE2(this.logicalAndExpr)})})),e(this,"logicalAndExpr",this.RULE("logicalAndExpr",()=>{this.SUBRULE(this.equalityExpr),this.MANY(()=>{this.CONSUME(Ja),this.SUBRULE2(this.equalityExpr)})})),e(this,"equalityExpr",this.RULE("equalityExpr",()=>{this.SUBRULE(this.comparisonExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(Xa)},{ALT:()=>this.CONSUME(qa)}]),this.SUBRULE2(this.comparisonExpr)})})),e(this,"comparisonExpr",this.RULE("comparisonExpr",()=>{this.SUBRULE(this.additiveExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(pc)},{ALT:()=>this.CONSUME(Za)},{ALT:()=>this.CONSUME(fc)},{ALT:()=>this.CONSUME(Qa)}]),this.SUBRULE2(this.additiveExpr)})})),e(this,"additiveExpr",this.RULE("additiveExpr",()=>{this.SUBRULE(this.multiplicativeExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(Oc)},{ALT:()=>this.CONSUME(yc)}]),this.SUBRULE2(this.multiplicativeExpr)})})),e(this,"multiplicativeExpr",this.RULE("multiplicativeExpr",()=>{this.SUBRULE(this.unaryExpr),this.MANY(()=>{this.OR([{ALT:()=>this.CONSUME(Ac)},{ALT:()=>this.CONSUME(Rc)},{ALT:()=>this.CONSUME(vc)}]),this.SUBRULE2(this.unaryExpr)})})),e(this,"unaryExpr",this.RULE("unaryExpr",()=>{this.OPTION(()=>{this.OR([{ALT:()=>this.CONSUME(yc)},{ALT:()=>this.CONSUME(Nc)}])}),this.SUBRULE(this.postfixExpr)})),e(this,"postfixExpr",this.RULE("postfixExpr",()=>{this.SUBRULE(this.primaryExpr),this.MANY(()=>this.SUBRULE(this.postfixSuffix))})),e(this,"postfixSuffix",this.RULE("postfixSuffix",()=>{this.OR([{ALT:()=>{this.CONSUME(Tc),this.CONSUME(ga)}},{ALT:()=>{this.CONSUME(lc),this.SUBRULE(this.expr),this.CONSUME(dc)}},{ALT:()=>{this.CONSUME(hc),this.OPTION(()=>this.SUBRULE(this.argList)),this.CONSUME(uc)}}])})),e(this,"argList",this.RULE("argList",()=>{this.SUBRULE(this.expr),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.expr)}),this.OPTION(()=>this.CONSUME2(mc))})),e(this,"primaryExpr",this.RULE("primaryExpr",()=>{this.OR([{ALT:()=>this.SUBRULE(this.literal)},{ALT:()=>this.CONSUME(ga)},{ALT:()=>this.SUBRULE(this.arrayLit)},{ALT:()=>this.SUBRULE(this.objectLit)},{ALT:()=>{this.CONSUME(hc),this.SUBRULE(this.expr),this.CONSUME(uc)}}])})),e(this,"literal",this.RULE("literal",()=>{this.OR([{ALT:()=>this.CONSUME(Wa)},{ALT:()=>this.CONSUME(za)},{ALT:()=>this.CONSUME(Va)},{ALT:()=>this.CONSUME(Fa)},{ALT:()=>this.CONSUME(Ba)},{ALT:()=>this.CONSUME(ja)}])})),e(this,"arrayLit",this.RULE("arrayLit",()=>{this.CONSUME(lc),this.OPTION(()=>{this.SUBRULE(this.expr),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.expr)}),this.OPTION2(()=>this.CONSUME2(mc))}),this.CONSUME(dc)})),e(this,"objectLit",this.RULE("objectLit",()=>{this.CONSUME(ac),this.OPTION(()=>{this.SUBRULE(this.objectLitField),this.MANY(()=>{this.CONSUME(mc),this.SUBRULE2(this.objectLitField)}),this.OPTION2(()=>this.CONSUME2(mc))}),this.CONSUME(cc)})),e(this,"objectLitField",this.RULE("objectLitField",()=>{this.OR([{GATE:()=>this.LA(1).tokenType===Va,ALT:()=>{this.CONSUME(Va),this.CONSUME(Ec),this.SUBRULE(this.expr)}},{ALT:()=>{this.CONSUME(ga),this.OPTION(()=>{this.CONSUME2(Ec),this.SUBRULE2(this.expr)})}}])})),this.performSelfAnalysis()}isRuntimeAnnotation(){const t=this.LA(1);return t.tokenType===Lc&&"@runtime"===t.image}isAnnotatedFuncOrFai(){let t=1;for(;this.LA(t).tokenType===Lc;)if(t++,this.LA(t).tokenType===hc){let e=1;for(t++;e>0&&this.LA(t).tokenType!==Ms;){const n=this.LA(t).tokenType;n===hc?e++:n===uc&&e--,t++}}const e=this.LA(t).tokenType;return e===Na||e===Ia}isRangeConstraint(){const t=this.LA(1).tokenType;return t===Wa||t===za}isAssignment(){if(this.LA(1).tokenType!==ga)return!1;let t=2,e=0;for(;;){const n=this.LA(t).tokenType;if(n===Ms)return!1;if(0===e){if(n===Cc||n===ec||n===nc||n===rc||n===ic||n===sc)return!0;if(n===gc||n===cc||n===ac||n===mc||n===uc)return!1;if(n===Tc||n===ga){t++;continue}if(n===lc||n===hc){e++,t++;continue}return!1}if(n===lc||n===hc?e++:n!==dc&&n!==uc||e--,t++,e<0)return!1}}canStartExpression(){const t=this.LA(1).tokenType;return t===Wa||t===za||t===Va||t===Fa||t===Ba||t===ja||t===ga||t===hc||t===lc||t===ac||t===yc||t===Nc}};const _c=Uc.getBaseCstVisitorConstructor();function bc(t){return{startLine:t.startLine??0,startColumn:t.startColumn??0,endLine:t.endLine??0,endColumn:t.endColumn??0,startOffset:t.startOffset,endOffset:t.endOffset??t.startOffset}}function Mc(t){const e=t.location;return e?{startLine:e.startLine??0,startColumn:e.startColumn??0,endLine:e.endLine??0,endColumn:e.endColumn??0,startOffset:e.startOffset,endOffset:e.endOffset??e.startOffset}:{startLine:0,startColumn:0,endLine:0,endColumn:0,startOffset:0,endOffset:0}}function Pc(t){return wc(t.slice(1,-1))}function wc(t){return t.replace(/\\(.)/g,(t,e)=>{switch(e){case"n":return"\n";case"t":return"\t";case"r":return"\r";case"\\":return"\\";case'"':return'"';case"'":return"'";case"$":return"$";default:return e}})}function Dc(t){const e=t.image.slice(1,-1),n=bc(t),r=function(t){const e=[];let n="",r=0,i=0;const s=t=>{e.push({kind:"chunk",source:n,startInBody:r,endInBody:t}),n="",r=t};for(;i<t.length;)if("$"===t[i]&&"{"===t[i+1]){s(i);let o=1,a=i+2;for(;a<t.length&&o>0;){const e=t[a];if("{"===e)o++;else if("}"===e&&(o--,0===o))break;a++}if(0!==o){n+=t.slice(i),r=i,i=t.length;break}const c=t.slice(i+2,a);e.push({kind:"expr",source:c,startInBody:i,endInBody:a+1}),r=a+1,i=a+1}else"\\"===t[i]&&i+1<t.length?(n+=t.slice(i,i+2),i+=2):(n+=t[i],i++);return(e.some(t=>"expr"===t.kind)||0===e.length||n.length>0)&&s(t.length),e}(e);if(!r.some(t=>"expr"===t.kind)){return{kind:"StringLit",value:wc(r.map(t=>t.source).join("")),range:n}}const i=t.startOffset+1;return{kind:"TemplateString",parts:r.map(t=>{if("chunk"===t.kind)return{kind:"TemplateChunk",value:wc(t.source),range:Fc(n,i,t.startInBody,t.endInBody)};const e=function(t){const e=kc.tokenize(t);return Uc.input=e.tokens,{cst:Uc.exprEntry(),lexErrors:e.errors,parseErrors:Uc.errors}}(t.source);if(e.lexErrors.length>0||e.parseErrors.length>0||!e.cst)return{kind:"TemplateChunk",value:"${"+t.source+"}",range:Fc(n,i,t.startInBody,t.endInBody)};return{kind:"TemplateExpr",expr:Hc.visit(e.cst),range:Fc(n,i,t.startInBody,t.endInBody)}}),range:n}}function Fc(t,e,n,r){return{startLine:t.startLine,startColumn:t.startColumn,endLine:t.endLine,endColumn:t.endColumn,startOffset:e+n,endOffset:e+r}}function Bc(t){return t.startsWith("@")?t.slice(1):t}function jc(t,e){return{startLine:t.startLine??0,startColumn:t.startColumn??0,endLine:e.endLine??0,endColumn:e.endColumn??0,startOffset:t.startOffset,endOffset:e.endOffset??e.startOffset}}function $c(t,e){return{startLine:t.startLine,startColumn:t.startColumn,endLine:e.endLine,endColumn:e.endColumn,startOffset:t.startOffset,endOffset:e.endOffset}}function Kc(t,e){return{startLine:t.startLine??0,startColumn:t.startColumn??0,endLine:e.endLine,endColumn:e.endColumn,startOffset:t.startOffset,endOffset:e.endOffset}}function Gc(t){if(0===t.length)return{startLine:0,startColumn:0,endLine:0,endColumn:0,startOffset:0,endOffset:0};return $c(t[0].range,t[t.length-1].range)}function zc(t){const e=t.children;let n;for(const r of Object.keys(e)){const t=e[r];for(const e of t){let t;t="image"in e?e:zc(e),t&&(!n||t.startOffset<n.startOffset)&&(n=t)}}return n}function Wc(t,e){let n=t[0];for(let r=0;r<e.length;r++){const i=t[r+1];n={kind:"BinaryExpr",op:e[r],left:n,right:i,range:$c(n.range,i.range)}}return n}function Vc(t,e){const n=[];for(const[r,i]of e){const e=t[r]??[];for(const t of e)n.push({offset:t.startOffset,op:i})}return n.sort((t,e)=>t.offset-e.offset),n.map(t=>t.op)}const Hc=new class extends _c{constructor(){super(),this.validateVisitor()}exprEntry(t){return this.visit(t.expr[0])}program(t,e){const n=t.$cstNode??void 0,r=(t.topLevel??[]).map(t=>this.visit(t));return{kind:"Program",items:r,range:n?Mc(n):Gc(r)}}topLevel(t){if(t.importDecl)return this.visit(t.importDecl[0]);if(t.runtimeAnnotation)return this.visit(t.runtimeAnnotation[0]);if(t.constDecl)return this.visit(t.constDecl[0]);if(t.varDecl)return this.visit(t.varDecl[0]);if(t.annotatedDecl)return this.visit(t.annotatedDecl[0]);if(t.funcDecl)return this.visit(t.funcDecl[0]);if(t.faiDecl)return this.visit(t.faiDecl[0]);if(t.exportDecl)return this.visit(t.exportDecl[0]);throw new Error("unreachable: topLevel had no matching alternative")}importDecl(t){var e;const n=this.visit(t.importClause[0]),r=t.StringLit[0],i=null==(e=t.AtName)?void 0:e[0],s=t.Import[0],o=i??r;return{kind:"Import",clause:n,source:Pc(r.image),version:i?i.image.slice(1):null,range:jc(s,o)}}importClause(t){return t.namedImports?this.visit(t.namedImports[0]):this.visit(t.namespaceImport[0])}namedImports(t){return{kind:"NamedImports",specs:(t.importSpec??[]).map(t=>this.visit(t)),range:jc(t.LCurly[0],t.RCurly[0])}}importSpec(t){const e=t.Identifier;return{kind:"ImportSpec",name:e[0].image,alias:e.length>1?e[1].image:null,range:jc(e[0],e[e.length-1])}}namespaceImport(t){const e=t.Star[0],n=t.Identifier[0];return{kind:"NamespaceImport",alias:n.image,range:jc(e,n)}}runtimeAnnotation(t){var e,n;const r=t.AtName[0],i=null==(e=t.annoArgList)?void 0:e[0],s=i?this.visit(i):[],o=(null==(n=t.RParen)?void 0:n[0])??r;return{kind:"RuntimeAnnotation",name:Bc(r.image),args:s,range:jc(r,o)}}declAnnotation(t){var e,n;const r=t.AtName[0],i=null==(e=t.annoArgList)?void 0:e[0],s=i?this.visit(i):[],o=(null==(n=t.RParen)?void 0:n[0])??r;return{kind:"Annotation",name:Bc(r.image),args:s,range:jc(r,o)}}annoArgList(t){return(t.annoArg??[]).map(t=>this.visit(t))}annoArg(t){var e;const n=null==(e=t.Identifier)?void 0:e[0],r=t.literal[0],i=this.visit(r),s=n??zc(r),o=i.range;return{kind:"AnnotationArg",key:n?n.image:null,value:i,range:{startLine:(null==s?void 0:s.startLine)??o.startLine,startColumn:(null==s?void 0:s.startColumn)??o.startColumn,endLine:o.endLine,endColumn:o.endColumn,startOffset:(null==s?void 0:s.startOffset)??o.startOffset,endOffset:o.endOffset}}}annotatedDecl(t){const e=(t.declAnnotation??[]).map(t=>this.visit(t));let n;return n=t.funcDecl?this.visit(t.funcDecl[0]):this.visit(t.faiDecl[0]),{...n,annotations:e}}constDecl(t){const e=t.Const[0],n=t.Identifier[0],r=this.visit(t.declTypeAnnot[0]),i=this.visit(t.expr[0]);return{kind:"ConstDecl",name:n.image,type:r,value:i,range:Kc(e,i.range)}}varDecl(t){const e=t.Var[0],n=t.Identifier[0],r=this.visit(t.declTypeAnnot[0]),i=t.expr?this.visit(t.expr[0]):null,s=(null==i?void 0:i.range)??r.range;return{kind:"VarDecl",name:n.image,type:r,init:i,range:Kc(e,s)}}funcDecl(t){const e=t.Func[0],n=t.Identifier[0],r=t.paramList?this.visit(t.paramList[0]):[],i=t.typeAnnot?this.visit(t.typeAnnot[0]):null,s=this.visit(t.block[0]);return{kind:"FuncDecl",annotations:[],name:n.image,params:r,returnType:i,body:s,range:Kc(e,s.range)}}faiDecl(t){const e=t.Fai[0],n=t.Identifier[0],r=t.faiParamList?this.visit(t.faiParamList[0]):[],i=this.visit(t.faiOutputList[0]),s=this.visit(t.block[0]);return{kind:"FaiDecl",annotations:[],name:n.image,params:r,outputs:i,body:s,range:Kc(e,s.range)}}exportDecl(t){const e=t.Export[0];let n;return n=t.exportNames?this.visit(t.exportNames[0]):t.funcDecl?this.visit(t.funcDecl[0]):this.visit(t.faiDecl[0]),{kind:"ExportDecl",target:n,range:Kc(e,n.range)}}exportNames(t){const e=(t.exportSpec??[]).map(t=>this.visit(t));if(0===e.length)return{kind:"ExportNames",specs:[],range:Gc([])};return{kind:"ExportNames",specs:e,range:$c(e[0].range,e[e.length-1].range)}}exportSpec(t){const e=t.Identifier;return{kind:"ExportSpec",name:e[0].image,alias:e.length>1?e[1].image:null,range:jc(e[0],e[e.length-1])}}paramList(t){return(t.param??[]).map(t=>this.visit(t))}param(t){const e=t.Identifier[0],n=t.typeAnnot?this.visit(t.typeAnnot[0]):null,r=(null==n?void 0:n.range)??bc(e);return{kind:"Param",name:e.image,type:n,range:Kc(e,r)}}faiParamList(t){return(t.faiParam??[]).map(t=>this.visit(t))}faiParam(t){const e=t.Identifier[0],n=this.visit(t.typeAnnot[0]);return{kind:"FaiParam",name:e.image,type:n,range:Kc(e,n.range)}}faiOutputList(t){return t.faiOutput.map(t=>this.visit(t))}faiOutput(t){const e=t.Identifier[0],n=this.visit(t.typeAnnot[0]);return{kind:"FaiOutput",name:e.image,type:n,range:Kc(e,n.range)}}typeAnnot(t){return t.enumType?this.visit(t.enumType[0]):t.arrayType?this.visit(t.arrayType[0]):t.objectType?this.visit(t.objectType[0]):this.visit(t.scalarType[0])}declTypeAnnot(t){return t.enumType?this.visit(t.enumType[0]):t.declArrayType?this.visit(t.declArrayType[0]):t.objectType?this.visit(t.objectType[0]):this.visit(t.declScalarType[0])}declScalarType(t){const e=t.Identifier[0];return{kind:"ScalarType",name:e.image,constraint:null,range:bc(e)}}declArrayType(t){const e=t.KwArray[0];return{kind:"ArrayType",element:this.visit(t.typeAnnot[0]),constraint:null,range:Kc(e,bc(t.RAngle[0]))}}scalarType(t){const e=t.Identifier[0],n=t.typeConstraint?this.visit(t.typeConstraint[0]):null,r=(null==n?void 0:n.range)??bc(e);return{kind:"ScalarType",name:e.image,constraint:n,range:Kc(e,r)}}enumType(t){const e=t.KwEnum[0];return{kind:"EnumType",variants:t.Identifier.map(t=>t.image),range:jc(e,t.Identifier.at(-1))}}arrayType(t){const e=t.KwArray[0],n=this.visit(t.typeAnnot[0]),r=t.RAngle[0],i=t.namedConstraint?this.visit(t.namedConstraint[0]):null;return{kind:"ArrayType",element:n,constraint:i,range:Kc(e,(null==i?void 0:i.range)??bc(r))}}objectType(t){const e=t.KwObject[0],n=t.RCurly[0];return{kind:"ObjectType",fields:(t.objectTypeField??[]).map(t=>this.visit(t)),range:jc(e,n)}}objectTypeField(t){const e=t.Identifier[0],n=this.visit(t.typeAnnot[0]);return{kind:"ObjectTypeField",name:e.image,type:n,range:Kc(e,n.range)}}typeConstraint(t){return t.rangeConstraint?this.visit(t.rangeConstraint[0]):this.visit(t.namedConstraint[0])}rangeConstraint(t){const e=t.numberLit.map(t=>this.visit(t));return{kind:"RangeConstraint",min:e[0].value,max:e[1].value,range:$c(e[0].range,e[1].range)}}namedConstraint(t){const e=t.Identifier[0];let n,r;if(t.numberLit){const e=this.visit(t.numberLit[0]);n=e.value,r=e.range}else{const e=t.StringLit[0];n=Pc(e.image),r=bc(e)}return{kind:"NamedConstraint",key:e.image,value:n,range:Kc(e,r)}}numberLit(t){if(t.IntLit){const e=t.IntLit[0];return{value:Number.parseInt(e.image,10),range:bc(e)}}const e=t.FloatLit[0];return{value:Number.parseFloat(e.image),range:bc(e)}}block(t){const e=t.LCurly[0],n=t.RCurly[0];return{kind:"Block",stmts:(t.stmt??[]).map(t=>this.visit(t)),range:jc(e,n)}}stmt(t){if(t.letDecl)return this.visit(t.letDecl[0]);if(t.ifStmt)return this.visit(t.ifStmt[0]);if(t.forStmt)return this.visit(t.forStmt[0]);if(t.whileStmt)return this.visit(t.whileStmt[0]);if(t.tryStmt)return this.visit(t.tryStmt[0]);if(t.breakStmt)return this.visit(t.breakStmt[0]);if(t.continueStmt)return this.visit(t.continueStmt[0]);if(t.returnStmt)return this.visit(t.returnStmt[0]);if(t.assignment)return this.visit(t.assignment[0]);if(t.exprStmt)return this.visit(t.exprStmt[0]);throw new Error("unreachable: stmt had no matching alternative")}letDecl(t){const e=t.Let[0],n=this.visit(t.letTarget[0]),r=t.declTypeAnnot?this.visit(t.declTypeAnnot[0]):null,i=t.expr?this.visit(t.expr[0]):null;return{kind:"LetDecl",target:n,type:r,init:i,range:Kc(e,(null==i?void 0:i.range)??(null==r?void 0:r.range)??n.range)}}letTarget(t){if(t.Identifier){const e=t.Identifier[0];return{kind:"IdentTarget",name:e.image,range:bc(e)}}return t.objectDestruct?this.visit(t.objectDestruct[0]):this.visit(t.arrayDestruct[0])}objectDestruct(t){const e=t.LCurly[0],n=t.RCurly[0];return{kind:"ObjectDestruct",fields:(t.destructField??[]).map(t=>this.visit(t)),range:jc(e,n)}}destructField(t){const e=t.Identifier,n=e[0].image;return{kind:"DestructField",source:n,local:e.length>1?e[1].image:n,range:jc(e[0],e[e.length-1])}}arrayDestruct(t){const e=t.LBracket[0],n=t.RBracket[0];return{kind:"ArrayDestruct",names:t.Identifier.map(t=>t.image),range:jc(e,n)}}assignment(t){const e=this.visit(t.lvalue[0]),n=this.visit(t.assignOp[0]),r=this.visit(t.expr[0]);return{kind:"Assignment",target:e,op:n,value:r,range:$c(e.range,r.range)}}lvalue(t){const e=t.Identifier[0],n=(t.lvalueSuffix??[]).map(t=>this.visit(t)),r=n.length>0?n[n.length-1].range:bc(e);return{kind:"LValue",base:e.image,suffixes:n,range:Kc(e,r)}}lvalueSuffix(t){if(t.Dot){const e=t.Dot[0],n=t.Identifier[0];return{kind:"MemberSuffix",name:n.image,range:jc(e,n)}}const e=t.LBracket[0],n=t.RBracket[0];return{kind:"IndexSuffix",index:this.visit(t.expr[0]),range:jc(e,n)}}assignOp(t){return t.Equals?"=":t.PlusEq?"+=":t.MinusEq?"-=":t.StarEq?"*=":t.SlashEq?"/=":"%="}ifStmt(t){var e;const n=t.If[0],r=t.expr,i=t.block,s=this.visit(r[0]),o=this.visit(i[0]),a=[];for(let u=1;u<r.length;u++){const t=this.visit(r[u]),e=this.visit(i[u]);a.push({kind:"ElseIf",cond:t,body:e,range:$c(t.range,e.range)})}let c=null;i.length>r.length&&(c=this.visit(i[i.length-1]));const h=(null==c?void 0:c.range)??(null==(e=a.at(-1))?void 0:e.range)??o.range;return{kind:"IfStmt",cond:s,then:o,elifs:a,otherwise:c,range:Kc(n,h)}}forStmt(t){const e=t.For[0],n=t.Identifier[0].image,r=this.visit(t.expr[0]),i=this.visit(t.block[0]);return{kind:"ForStmt",binding:n,iterable:r,body:i,range:Kc(e,i.range)}}whileStmt(t){const e=t.While[0],n=this.visit(t.expr[0]),r=this.visit(t.block[0]);return{kind:"WhileStmt",cond:n,body:r,range:Kc(e,r.range)}}tryStmt(t){var e;const n=t.Try[0],r=this.visit(t.block[0]),i=t.catchClause.map(t=>this.visit(t)),s=(null==(e=i.at(-1))?void 0:e.range)??r.range;return{kind:"TryStmt",body:r,catches:i,range:Kc(n,s)}}catchClause(t){const e=t.Catch[0],n=t.Identifier,r=n[0].image,i=n.length>1?n[1].image:null,s=this.visit(t.block[0]);return{kind:"CatchClause",errorType:r,binding:i,body:s,range:Kc(e,s.range)}}breakStmt(t){return{kind:"BreakStmt",range:bc(t.Break[0])}}continueStmt(t){return{kind:"ContinueStmt",range:bc(t.Continue[0])}}returnStmt(t){const e=t.Return[0],n=t.expr?this.visit(t.expr[0]):null;return{kind:"ReturnStmt",value:n,range:n?Kc(e,n.range):bc(e)}}exprStmt(t){const e=this.visit(t.expr[0]);return{kind:"ExprStmt",expr:e,range:e.range}}expr(t){return this.visit(t.ternaryExpr[0])}ternaryExpr(t){const e=this.visit(t.logicalOrExpr[0]);if(!t.expr)return e;const[n,r]=t.expr,i=this.visit(n),s=this.visit(r);return{kind:"TernaryExpr",cond:e,then:i,otherwise:s,range:$c(e.range,s.range)}}logicalOrExpr(t){return Wc(t.logicalAndExpr.map(t=>this.visit(t)),(t.OrOr??[]).map(()=>"||"))}logicalAndExpr(t){return Wc(t.equalityExpr.map(t=>this.visit(t)),(t.AndAnd??[]).map(()=>"&&"))}equalityExpr(t){return Wc(t.comparisonExpr.map(t=>this.visit(t)),Vc(t,[["EqEq","=="],["NotEq","!="]]))}comparisonExpr(t){return Wc(t.additiveExpr.map(t=>this.visit(t)),Vc(t,[["LAngle","<"],["LtEq","<="],["RAngle",">"],["GtEq",">="]]))}additiveExpr(t){return Wc(t.multiplicativeExpr.map(t=>this.visit(t)),Vc(t,[["Plus","+"],["Dash","-"]]))}multiplicativeExpr(t){return Wc(t.unaryExpr.map(t=>this.visit(t)),Vc(t,[["Star","*"],["Slash","/"],["Percent","%"]]))}unaryExpr(t){const e=this.visit(t.postfixExpr[0]);if(t.Dash){return{kind:"UnaryExpr",op:"-",operand:e,range:Kc(t.Dash[0],e.range)}}if(t.Bang){return{kind:"UnaryExpr",op:"!",operand:e,range:Kc(t.Bang[0],e.range)}}return e}postfixExpr(t){let e=this.visit(t.primaryExpr[0]);const n=t.postfixSuffix??[];for(const r of n){const t=this.visit(r);e="member"===t.tag?{kind:"MemberExpr",object:e,property:t.name,range:$c(e.range,t.range)}:"index"===t.tag?{kind:"IndexExpr",object:e,index:t.index,range:$c(e.range,t.range)}:{kind:"CallExpr",callee:e,args:t.args,range:$c(e.range,t.range)}}return e}postfixSuffix(t){if(t.Dot){const e=t.Dot[0],n=t.Identifier[0];return{tag:"member",name:n.image,range:jc(e,n)}}if(t.LBracket){const e=t.LBracket[0],n=t.RBracket[0];return{tag:"index",index:this.visit(t.expr[0]),range:jc(e,n)}}const e=t.LParen[0],n=t.RParen[0];return{tag:"call",args:t.argList?this.visit(t.argList[0]):[],range:jc(e,n)}}argList(t){return t.expr.map(t=>this.visit(t))}primaryExpr(t){if(t.literal)return this.visit(t.literal[0]);if(t.Identifier){const e=t.Identifier[0];return{kind:"IdentExpr",name:e.image,range:bc(e)}}return t.arrayLit?this.visit(t.arrayLit[0]):t.objectLit?this.visit(t.objectLit[0]):this.visit(t.expr[0])}literal(t){if(t.IntLit){const e=t.IntLit[0];return{kind:"IntLit",value:Number.parseInt(e.image,10),range:bc(e)}}if(t.FloatLit){const e=t.FloatLit[0];return{kind:"FloatLit",value:Number.parseFloat(e.image),range:bc(e)}}if(t.StringLit){return Dc(t.StringLit[0])}if(t.True){return{kind:"BoolLit",value:!0,range:bc(t.True[0])}}if(t.False){return{kind:"BoolLit",value:!1,range:bc(t.False[0])}}return{kind:"NullLit",range:bc(t.Null[0])}}arrayLit(t){const e=t.LBracket[0],n=t.RBracket[0];return{kind:"ArrayLit",elements:t.expr?t.expr.map(t=>this.visit(t)):[],range:jc(e,n)}}objectLit(t){const e=t.LCurly[0],n=t.RCurly[0];return{kind:"ObjectLit",fields:(t.objectLitField??[]).map(t=>this.visit(t)),range:jc(e,n)}}objectLitField(t){if(t.StringLit){const e=t.StringLit[0],n=this.visit(t.expr[0]);return{kind:"ObjectLitField",key:Pc(e.image),shorthand:!1,value:n,range:Kc(e,n.range)}}const e=t.Identifier[0];if(t.expr){const n=this.visit(t.expr[0]);return{kind:"ObjectLitField",key:e.image,shorthand:!1,value:n,range:Kc(e,n.range)}}return{kind:"ObjectLitField",key:e.image,shorthand:!0,value:{kind:"IdentExpr",name:e.image,range:bc(e)},range:bc(e)}}};function Yc(t){let e;try{e=function(t){const e=kc.tokenize(t);return Uc.input=e.tokens,{cst:Uc.program(),lexErrors:e.errors,parseErrors:Uc.errors}}(t)}catch(i){return{ast:null,lexErrors:[],parseErrors:[{name:i.name??"ParseException",message:i.message??String(i),token:{startLine:1,startColumn:1,image:""}}]}}if(e.lexErrors.length>0||e.parseErrors.length>0||!e.cst)return{ast:null,lexErrors:e.lexErrors,parseErrors:e.parseErrors};let n=null;try{n=(r=e.cst)?Hc.visit(r):null}catch(i){return{ast:null,lexErrors:e.lexErrors,parseErrors:[...e.parseErrors,{name:i.name??"BuildAstException",message:`buildAst crashed: ${i.message??String(i)}`,token:{startLine:1,startColumn:1,image:""}}]}}var r;return{ast:n,lexErrors:e.lexErrors,parseErrors:e.parseErrors}}function Xc(t){return`(${t.params.map(t=>t.name).join(", ")})`}function qc(t){return`(${t.params.map(t=>t.name).join(", ")}) → ${t.outputs.map(t=>t.name).join(", ")}`}function Zc(t){switch(t){case"fai":return i.jsx(s,{className:"h-3.5 w-3.5 text-purple-500 dark:text-purple-400"});case"func":return i.jsx(u,{className:"h-3.5 w-3.5 text-blue-500 dark:text-blue-400"});case"const":return i.jsx(l,{className:"h-3.5 w-3.5 text-emerald-500 dark:text-emerald-400"});case"var":return i.jsx(d,{className:"h-3.5 w-3.5 text-amber-500 dark:text-amber-400"});case"export":return i.jsx(h,{className:"h-3.5 w-3.5 text-pink-500 dark:text-pink-400"});case"import":return i.jsx(h,{className:"h-3.5 w-3.5 rotate-180 text-cyan-500 dark:text-cyan-400"})}}function Qc({source:t,parseResult:e,onJump:n}){const s=r.useMemo(()=>{const n=e??Yc(t);return n.ast&&0===n.lexErrors.length&&0===n.parseErrors.length?function(t){const e=[];for(const n of t.items)switch(n.kind){case"Import":{const t=n;e.push({kind:"import",name:t.source,line:t.range.startLine,column:t.range.startColumn});break}case"ConstDecl":{const t=n;e.push({kind:"const",name:t.name,line:t.range.startLine,column:t.range.startColumn});break}case"VarDecl":{const t=n;e.push({kind:"var",name:t.name,line:t.range.startLine,column:t.range.startColumn});break}case"FuncDecl":{const t=n;e.push({kind:"func",name:t.name,signature:Xc(t),line:t.range.startLine,column:t.range.startColumn});break}case"FaiDecl":{const t=n;e.push({kind:"fai",name:t.name,signature:qc(t),line:t.range.startLine,column:t.range.startColumn});break}case"ExportDecl":{const t=n.target;if("ExportNames"===t.kind)for(const n of t.specs)e.push({kind:"export",name:n.alias??n.name,line:n.range.startLine,column:n.range.startColumn});else if("FuncDecl"===t.kind){const n=t;e.push({kind:"func",name:`export ${n.name}`,signature:Xc(n),line:n.range.startLine,column:n.range.startColumn})}else if("FaiDecl"===t.kind){const n=t;e.push({kind:"fai",name:`export ${n.name}`,signature:qc(n),line:n.range.startLine,column:n.range.startColumn})}break}}return e}(n.ast):function(t){const e=[],n=t.split(/\r?\n/),r=/^(import|export|const|var|fai|func)\s+([A-Za-z_]\w*)/;for(let i=0;i<n.length;i++){const t=r.exec(n[i]??"");if(!t)continue;const s=t[1],o=t[2]??"";o&&e.push({kind:s,name:o,line:i+1,column:1})}return e}(t)},[t,e]);return i.jsxs("div",{className:"h-full flex flex-col bg-muted/30",children:[i.jsxs("div",{className:"px-3 py-1.5 text-xs font-medium text-muted-foreground border-b border-border",children:["大纲 (",s.length,")"]}),i.jsxs("div",{className:"flex-1 min-h-0 overflow-auto",children:[0===s.length&&i.jsx("p",{className:"px-3 py-4 text-xs text-muted-foreground text-center",children:"(空)"}),s.map((t,e)=>i.jsxs("button",{className:"\n w-full flex items-center gap-2 px-3 py-1.5\n text-xs text-left hover:bg-accent\n transition-colors\n ",onClick:()=>n(t.line,t.column),title:`${t.kind} ${t.name}${t.signature??""} (行 ${t.line})`,children:[Zc(t.kind),i.jsxs("span",{className:"font-mono truncate flex-1",children:[t.name,t.signature&&i.jsx("span",{className:"text-muted-foreground ml-1",children:t.signature})]}),i.jsx("span",{className:"text-muted-foreground tabular-nums",children:t.line})]},`${t.kind}-${t.name}-${e}`))]})]})}const Jc=["import","export","from","as","const","var","let","func","fai","return","if","else","for","in","while","break","continue","try","catch"],th=["int","float","bool","string","prompt","any","enum","array","object"],eh=["true","false","null"],nh=["__ccweb_ask_user","len","push","concat","range","log","JSON","math","str"];let rh=!1;const ih=r.lazy(async()=>{const[t,e]=await Promise.all([c(()=>import("./editor.main-Dv96_EKG.js").then(t=>t.e),__vite__mapDeps([0,1,2,3])),c(()=>import("./index-dHRMoKUn.js"),__vite__mapDeps([4,1,2]))]),n=t.default??t;return e.loader.config({monaco:n}),{default:e.default}});function sh(t,e){var n,r,i,s;const o=[];for(const a of t){const t=a,e=t.line??1,n=t.column??1,r=t.length??1;o.push({line:e,column:n,endLine:e,endColumn:n+r,message:t.message??"lex error"})}for(const a of e){const t=a,e=(null==(n=t.token)?void 0:n.startLine)??1,c=(null==(r=t.token)?void 0:r.startColumn)??1,h=(null==(s=null==(i=t.token)?void 0:i.image)?void 0:s.length)??1;o.push({line:e,column:c,endLine:e,endColumn:c+h,message:`${t.name??"ParseError"}: ${t.message??""}`})}return o}function oh({filename:t,initialSource:e,onCancel:n,onSave:s}){const{resolved:c}=o(),[h,u]=r.useState(e),[l,d]=r.useState(!1),[p,f]=r.useState(()=>Yc(e)),m=r.useMemo(()=>sh(p.lexErrors,p.parseErrors),[p]),E=r.useRef(null),g=r.useRef(null),T=r.useRef(null),S=r.useCallback(t=>{try{const e=Yc(t);f(e);const n=sh(e.lexErrors,e.parseErrors),r=g.current,i=E.current;if(r&&i){const t=i.getModel();t&&r.editor.setModelMarkers(t,"train-parser",n.map(t=>({startLineNumber:t.line,startColumn:t.column,endLineNumber:t.endLine,endColumn:t.endColumn,message:t.message,severity:r.MarkerSeverity.Error})))}}catch(e){f({ast:null,lexErrors:[],parseErrors:[{message:`parser crashed: ${e.message}`,name:"ParserCrash",token:{startLine:1,startColumn:1,image:""}}]})}},[]);r.useEffect(()=>(T.current&&clearTimeout(T.current),T.current=setTimeout(()=>S(h),250),()=>{T.current&&clearTimeout(T.current)}),[h,S]);const L=r.useCallback(async()=>{if(!l){d(!0);try{await s(h)}finally{d(!1)}}},[l,h,s]);return i.jsxs("div",{className:"flex flex-col gap-2 h-full",children:[i.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[i.jsx("span",{className:"text-sm font-mono text-muted-foreground truncate flex-1",children:t}),m.length>0?i.jsxs("span",{className:"text-xs text-red-600 dark:text-red-400",children:[m.length," 个问题"]}):i.jsx("span",{className:"text-xs text-emerald-600 dark:text-emerald-400",children:"语法正确"}),i.jsx(a,{onClick:n,variant:"ghost",size:"sm",children:"取消"}),i.jsx(a,{onClick:L,size:"sm",disabled:l,children:l?"保存中…":"保存"})]}),i.jsxs("div",{className:"flex gap-2 flex-1 min-h-0",children:[i.jsx("div",{className:"flex-1 min-w-0 rounded-md border border-border overflow-hidden",children:i.jsx(r.Suspense,{fallback:i.jsx("div",{className:"h-full flex items-center justify-center text-sm text-muted-foreground",children:"加载编辑器…"}),children:i.jsx(ih,{height:"100%",defaultLanguage:"train",language:"train",value:h,onChange:t=>u(t??""),onMount:(t,e)=>{E.current=t,g.current=e,function(t){rh||(rh=!0,t.languages.register({id:"train",extensions:[".tr"],aliases:["train","tr"]}),t.languages.setLanguageConfiguration("train",{comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]}),t.languages.setMonarchTokensProvider("train",{defaultToken:"",keywords:Jc,typeKeywords:th,literals:eh,builtins:nh,operators:["=","==","!=","<=",">=","<",">","&&","||","+","-","*","/","%","!","?","??","->","=>","+=","-=","*=","/=","%="],symbols:/[=<>!?:&|+\-*\/%~^@]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/@[A-Za-z_][\w.\-]*/,"annotation"],[/[A-Za-z_]\w*/,{cases:{"@keywords":"keyword","@typeKeywords":"type","@literals":"keyword.constant","@builtins":"predefined","@default":"identifier"}}],{include:"@whitespace"},[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01_]+/,"number.binary"],[/0[oO][0-7_]+/,"number.octal"],[/\d+([eE][\-+]?\d+)?/,"number"],[/"([^"\\$]|\\.|\$(?!\{))*"/,"string"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/[{}()[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/[,;.]/,"delimiter"]],string:[[/[^\\"$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/\$\{/,{token:"string.interpolation.open",bracket:"@open",next:"@interpolation"}],[/\$/,"string"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],interpolation:[[/\}/,{token:"string.interpolation.close",bracket:"@close",next:"@pop"}],{include:"root"}],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[/*]/,"comment"]]}}))}(e),e.editor.setModelLanguage(t.getModel(),"train"),t.addCommand(e.KeyMod.CtrlCmd|e.KeyCode.KeyS,()=>{L()}),S(h)},theme:"dark"===c?"vs-dark":"vs",options:{minimap:{enabled:!1},fontSize:13,fontFamily:"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",tabSize:2,insertSpaces:!0,wordWrap:"on",scrollBeyondLastLine:!1,automaticLayout:!0}})})}),i.jsx("div",{className:"w-56 flex-shrink-0 rounded-md border border-border overflow-hidden",children:i.jsx(Qc,{parseResult:p,source:h,onJump:(t,e)=>{const n=E.current;n&&(n.revealLineInCenter(t),n.setPosition({lineNumber:t,column:e}),n.focus())}})})]}),i.jsx("p",{className:"text-xs text-muted-foreground flex-shrink-0",children:".tr 源码 · train-lang DSL · Cmd/Ctrl+S 保存 · 实时语法检查 + AST 大纲"})]})}export{oh as TrackEditor};
|